diff --git a/.ikc3_history b/.ikc3_history
index ca49c99..f905207 100644
--- a/.ikc3_history
+++ b/.ikc3_history
@@ -1,4 +1,3 @@
-a
a = 1
a
to_lisp(quote a = ? <- 1 ; 2)
@@ -97,3 +96,4 @@ a = cow 1 + 1
a
a = cow 1 + 1
a
+Str.split("./fx/README", "/")
diff --git a/Makefile b/Makefile
index ddd12b6..ca9b7bf 100644
--- a/Makefile
+++ b/Makefile
@@ -232,17 +232,20 @@ event_debug:
${MAKE} -C kc3s debug
${MAKE} -C event debug
-fx: httpd
- httpd/.libs/kc3_httpd -C httpd/fx -d
+fx: httpd fx_assets
+ ${PWD}/httpd/.libs/kc3_httpd -C httpd/fx -d
-fx_asan: httpd_asan
- httpd/.libs/kc3_httpd_asan -C httpd/fx -d
+fx_asan: httpd_asan fx_assets
+ ${PWD}/httpd/.libs/kc3_httpd_asan -C httpd/fx -d
-fx_cov: httpd_cov
- httpd/.libs/kc3_httpd_cov -C httpd/fx -d
+fx_assets:
+ ${MAKE} -C httpd/fx/assets
-fx_debug: httpd_debug
- httpd/.libs/kc3_httpd_debug -C httpd/fx -d
+fx_cov: httpd_cov fx_assets
+ ${PWD}/httpd/.libs/kc3_httpd_cov -C httpd/fx -d
+
+fx_debug: httpd_debug fx_assets
+ ${PWD}/httpd/.libs/kc3_httpd_debug -C httpd/fx -d
gcovr:
${MAKE} -C libkc3 gcovr
@@ -1045,6 +1048,7 @@ test_socket_debug:
event_debug \
fx \
fx_asan \
+ fx_assets \
fx_cov \
fx_debug \
gcovr \
diff --git a/httpd/fx/app/controllers/fx_controller.kc3 b/httpd/fx/app/controllers/fx_controller.kc3
index a459425..0519152 100644
--- a/httpd/fx/app/controllers/fx_controller.kc3
+++ b/httpd/fx/app/controllers/fx_controller.kc3
@@ -5,27 +5,24 @@ defmodule FXController do
require Str
def fx_index = fn {
- (path, path_md) { fx_index(path, path_md, path, []) }
- ([], path_md, dir, acc) { List.reverse(acc) }
- ([file | rest], path_md, dir, acc) {
- if (Str.starts_with?(file, ".") ||
- Str.starts_with?(file, "index.") ||
- (Str.rindex_character(file, '.') > 0 &&
- ! Str.ends_with?(file, ".md") &&
- ! Str.ends_with?(file, ".html"))) do
- fx_index(rest, path_md, dir, acc)
+ (path, target) { fx_index(path, target, path, []) }
+ ([], target, dir, acc) { List.reverse(acc) }
+ ([file | rest], target, dir, acc) {
+ if (! Str.starts_with?(dir + file, target)) do
+ fx_index(rest, target, dir, acc)
else
path = dir + file
name = Str.subst(file, "_", " ")
url = Str.slice(path, 1, -1)
if File.is_directory?(path) do
- items = fx_index(List.sort(File.list(path)), path_md,
- path + "/", [])
+ #items = fx_index(List.sort(File.list(path)), target,
+ # path + "/", [])
+ items = []
item = %{type: :dir,
url: url,
name: name,
items: items}
- fx_index(rest, path_md, dir, [item | acc])
+ fx_index(rest, target, dir, [item | acc])
else
end_ = Str.rindex_character(name, '.')
if (end_ > 0) do
@@ -47,13 +44,13 @@ defmodule FXController do
url: url,
name: name,
items: []}
- fx_index(rest, path_md, dir, [item | acc])
+ fx_index(rest, target, dir, [item | acc])
end
end
}
- (path, path_md, dir, acc) {
+ (path, target, dir, acc) {
if (type(path) == Str) do
- fx_index(List.sort(File.list(path)), path_md, dir, acc)
+ fx_index(List.sort(File.list(path)), target, dir, acc)
end
}
}
@@ -62,7 +59,7 @@ defmodule FXController do
index = fx_index("./fx/", path)
menu = FXView.render_menu(index)
page = FXView.render_show_file(menu, path)
- body = LayoutView.render(title, page)
+ body = LayoutView.render(path, page)
%HTTP.Response{body: body}
}
diff --git a/httpd/fx/app/templates/fx/show_file.html.ekc3 b/httpd/fx/app/templates/fx/show_file.html.ekc3
index 0ed8a43..d1bfc96 100644
--- a/httpd/fx/app/templates/fx/show_file.html.ekc3
+++ b/httpd/fx/app/templates/fx/show_file.html.ekc3
@@ -3,7 +3,7 @@
<%= raw menu %>
</div>
<div class="col-12 col-sm-8 col-lg-9">
- <h1><%= FXView.path_links(path) %></h1>
+ <h1><%= raw FXView.path_links(path) %></h1>
<%= path %>
</div>
</div>
diff --git a/httpd/fx/app/templates/nav.html.ekc3 b/httpd/fx/app/templates/nav.html.ekc3
index e02a5f1..3673c94 100644
--- a/httpd/fx/app/templates/nav.html.ekc3
+++ b/httpd/fx/app/templates/nav.html.ekc3
@@ -2,7 +2,7 @@
<div class="container">
<a class="navbar-brand" href="/">
<div class="doc-logo">
- <span><b>⬢</b></span> kc3-lang
+ <i class="far fa-folder-open fa-fw"></i> fx
</div>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
@@ -11,10 +11,10 @@
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
- <a class="navbar-link" href="/release/v0.1.13/">v0.1.13</a>
+ <a class="navbar-link" href="https://kc3-lang.org/release/v0.1.13/">v0.1.13</a>
</li>
<li class="nav-item">
- <a class="navbar-link" href="/doc/">Documentation</a>
+ <a class="navbar-link" href="https://kc3-lang.org/doc/3_FX">Documentation</a>
</li>
</ul>
</div>
diff --git a/httpd/fx/app/views/fx_view.kc3 b/httpd/fx/app/views/fx_view.kc3
index 534b172..a24fee4 100644
--- a/httpd/fx/app/views/fx_view.kc3
+++ b/httpd/fx/app/views/fx_view.kc3
@@ -7,15 +7,15 @@ defmodule FXView do
def path_links = fn {
(path) {
- [_dot, _fx | path_list] = Str.split(path, "/")
+ [_dot | path_list] = Str.split(path, "/")
path_links(path_list, "/", [])
}
- ([], _, acc) { List.join(List.reverse(acc), "\n") }
+ ([], _, acc) { "/" + List.join(List.reverse(acc), "/") }
([first | rest], url, acc) {
a = """
<a href="#{URL.escape(url + first)}">#{HTML.escape(first)}</a>
"""
- path_links(rest, "#{url}/#{first}/", [a | acc])
+ path_links(rest, "#{url}#{first}/", [a | acc])
}
}
diff --git a/httpd/fx/assets/Makefile b/httpd/fx/assets/Makefile
new file mode 100644
index 0000000..9e05f9c
--- /dev/null
+++ b/httpd/fx/assets/Makefile
@@ -0,0 +1,16 @@
+
+all: build
+
+app.css:
+ sass css/app.scss ../static/_assets/app.css
+
+app.js:
+ esbuild js/app.js --bundle --target=es2016 --outdir=../static/_assets --external:/_fonts/* --external:/_images/*
+
+build: app.css app.js
+
+css: app.css
+
+js: app.js
+
+.PHONY: all app.css app.js build css js
diff --git a/httpd/fx/assets/css/app.scss b/httpd/fx/assets/css/app.scss
new file mode 100644
index 0000000..dda8802
--- /dev/null
+++ b/httpd/fx/assets/css/app.scss
@@ -0,0 +1,163 @@
+@import "./kmx_colors.scss";
+$primary: $kmx_blue;
+$danger: $kmx_orange;
+$dark: #242124;
+@import "../node_modules/bootstrap/scss/bootstrap.scss";
+$font-family-sans-serif: "computer_modern", sans-serif;
+$font-family-monospace: "courier_new", "Courier New", monospace;
+@import "./computer_modern.scss";
+@import "./courier_new.scss";
+$code-font-size: $font-size-base * 1.1;
+@import "../node_modules/bootstrap/scss/bootstrap.scss";
+@import "./fontawesome-5.15.4-free.scss";
+@import "./fontawesome-5.15.4-free-v4-shims.scss";
+@import "./fontawesome-5.15.4-free-v4-font-face.scss";
+
+@import "./flash.scss";
+@import "./footer.scss";
+@import "./pixel.scss";
+@import "./pygments.scss";
+
+pre {
+ overflow: visible;
+}
+body {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ div.container {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ max-width: 100%;
+ }
+ font-family: computer_modern;
+ font-size: 1.3em;
+}
+
+.content {
+ margin: 0;
+ padding: 0 2rem 0 1rem;
+ max-width: 80rem;
+}
+
+a {
+ text-decoration: none;
+ color: var(--bs-primary);
+}
+.bg-dark a {
+ color: $gray-400;
+}
+.bg-gray {
+ background: #eef;
+}
+pre.wrap {
+ word-break: break-all;
+ white-space: pre-wrap;
+}
+code {
+ background: #eee;
+}
+
+/* navbar */
+.navbar {
+ padding-top: 0.3rem;
+ & > .container-fluid {
+ align-items: baseline;
+ }
+}
+.navbar-brand {
+ font-size: 1.5rem;
+ padding: 0;
+}
+.navbar-link {
+ display: inline-block;
+ padding: 0.5rem 1rem 0 0;
+}
+.navbar-text {
+ display: inline-block;
+ padding: 0.5rem 1rem 0 0;
+}
+.doc-logo, .doc-logo-lg, .doc-logo-light, .doc-logo-light-lg {
+ & > span {
+ display: inline-block;
+ margin: 0 0.3em;
+ }
+ display: inline-block;
+ padding: 0 0.5em 0 0;
+ color: $gray-200;
+}
+.doc-logo, .doc-logo-lg {
+ &:hover {
+ color: #fff;
+ }
+}
+.doc-logo-light, .doc-logo-light-lg {
+ color: #000;
+ &:hover {
+ color: #000;
+ }
+}
+.doc-logo-lg, .doc-logo-light-lg {
+ font-size: 4em;
+}
+/* misc */
+.avatar-lg {
+ float: left;
+ margin: 0 0.5em 0.5em 0;
+}
+.commit-avatar {
+ float: left;
+ margin-right: 0.5em;
+}
+.clear {
+ clear: both;
+}
+/* user */
+.btn-danger, .btn-danger:hover {
+ color: #fff;
+}
+img.qrcode {
+ width: 50%;
+ min-width: 190px;
+ max-width: 512px;
+ margin: auto;
+ display: block;
+}
+
+li.list-group-item {
+ border: none;
+}
+
+.invalid-feedback {
+ display: inherit;
+}
+h1 {
+ margin-top: 1rem;
+}
+h1,h2,h3,h4,h5,h6 {
+ a {
+ text-decoration: none;
+ color: #103;
+ }
+}
+.break-all {
+ word-break: break-all;
+}
+
+@media only screen and (min-width: 576px) {
+ .left-col {
+ min-height: 100vh;
+ }
+}
+
+.left-col {
+ padding-left: 0.75rem;
+ ul {
+ list-style: none;
+ padding-left: 0.5rem;
+ }
+}
+.left-col > ul > li {
+ padding-top: 0.5rem;
+}
diff --git a/httpd/fx/assets/css/computer_modern.scss b/httpd/fx/assets/css/computer_modern.scss
new file mode 100644
index 0000000..181b2d7
--- /dev/null
+++ b/httpd/fx/assets/css/computer_modern.scss
@@ -0,0 +1,6 @@
+@font-face {
+ font-family: 'computer_modern';
+ src: url('/_fonts/computer_modern.woff') format('woff');
+ font-weight: normal;
+ font-style: normal;
+}
diff --git a/httpd/fx/assets/css/courier_new.scss b/httpd/fx/assets/css/courier_new.scss
new file mode 100644
index 0000000..f12fa2f
--- /dev/null
+++ b/httpd/fx/assets/css/courier_new.scss
@@ -0,0 +1,7 @@
+@font-face {
+ font-family: 'courier_new';
+ src: url('/_fonts/courier_new.woff2') format('woff2'),
+ url('/_fonts/courier_new.woff') format('woff');
+ font-weight: normal;
+ font-style: normal;
+}
diff --git a/httpd/fx/assets/css/flash.scss b/httpd/fx/assets/css/flash.scss
new file mode 100644
index 0000000..35f9501
--- /dev/null
+++ b/httpd/fx/assets/css/flash.scss
@@ -0,0 +1,20 @@
+.flash-error {
+ color: #d00;
+ border: solid 2px;
+ padding: 1em;
+ margin: 0.75em 0;
+}
+
+.flash-warning {
+ color: #c50;
+ border: solid 2px;
+ padding: 1em;
+ margin: 0.75em 0;
+}
+
+.flash-info {
+ color: #05c;
+ border: solid 2px;
+ padding: 1em;
+ margin: 0.75em 0;
+}
diff --git a/httpd/fx/assets/css/fontawesome-5.15.4-free-v4-font-face.scss b/httpd/fx/assets/css/fontawesome-5.15.4-free-v4-font-face.scss
new file mode 100644
index 0000000..4bd1cf3
--- /dev/null
+++ b/httpd/fx/assets/css/fontawesome-5.15.4-free-v4-font-face.scss
@@ -0,0 +1,4 @@
+/*!
+ * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */@font-face{font-family:"FontAwesome";font-display:block;src:url(/_fonts/free-fa-solid-900.eot);src:url(/_fonts/free-fa-solid-900.eot?#iefix) format("embedded-opentype"),url(/_fonts/free-fa-solid-900.woff2) format("woff2"),url(/_fonts/free-fa-solid-900.woff) format("woff"),url(/_fonts/free-fa-solid-900.ttf) format("truetype"),url(/_fonts/free-fa-solid-900.svg#fontawesome) format("svg")}@font-face{font-family:"FontAwesome";font-display:block;src:url(/_fonts/free-fa-brands-400.eot);src:url(/_fonts/free-fa-brands-400.eot?#iefix) format("embedded-opentype"),url(/_fonts/free-fa-brands-400.woff2) format("woff2"),url(/_fonts/free-fa-brands-400.woff) format("woff"),url(/_fonts/free-fa-brands-400.ttf) format("truetype"),url(/_fonts/free-fa-brands-400.svg#fontawesome) format("svg")}@font-face{font-family:"FontAwesome";font-display:block;src:url(/_fonts/free-fa-regular-400.eot);src:url(/_fonts/free-fa-regular-400.eot?#iefix) format("embedded-opentype"),url(/_fonts/free-fa-regular-400.woff2) format("woff2"),url(/_fonts/free-fa-regular-400.woff) format("woff"),url(/_fonts/free-fa-regular-400.ttf) format("truetype"),url(/_fonts/free-fa-regular-400.svg#fontawesome) format("svg");unicode-range:U+f004-f005,U+f007,U+f017,U+f022,U+f024,U+f02e,U+f03e,U+f044,U+f057-f059,U+f06e,U+f070,U+f075,U+f07b-f07c,U+f080,U+f086,U+f089,U+f094,U+f09d,U+f0a0,U+f0a4-f0a7,U+f0c5,U+f0c7-f0c8,U+f0e0,U+f0eb,U+f0f3,U+f0f8,U+f0fe,U+f111,U+f118-f11a,U+f11c,U+f133,U+f144,U+f146,U+f14a,U+f14d-f14e,U+f150-f152,U+f15b-f15c,U+f164-f165,U+f185-f186,U+f191-f192,U+f1ad,U+f1c1-f1c9,U+f1cd,U+f1d8,U+f1e3,U+f1ea,U+f1f6,U+f1f9,U+f20a,U+f247-f249,U+f24d,U+f254-f25b,U+f25d,U+f271-f274,U+f279,U+f28b,U+f28d,U+f2b5-f2b6,U+f2b9,U+f2bb,U+f2bd,U+f2c1-f2c2,U+f2d0,U+f2d2,U+f2dc,U+f2ed,U+f3a5,U+f3d1,U+f410}@font-face{font-family:"FontAwesome";font-display:block;src:url(/_fonts/free-fa-v4deprecations.eot);src:url(/_fonts/free-fa-v4deprecations.eot?#iefix) format("embedded-opentype"),url(/_fonts/free-fa-v4deprecations.woff2) format("woff2"),url(/_fonts/free-fa-v4deprecations.woff) format("woff"),url(/_fonts/free-fa-v4deprecations.ttf) format("truetype"),url(/_fonts/free-fa-v4deprecations.svg#fontawesome) format("svg");unicode-range:U+f003,U+f006,U+f014,U+f016,U+f01a-f01b,U+f01d,U+f040,U+f045-f047,U+f05c-f05d,U+f07d-f07e,U+f087-f088,U+f08a-f08b,U+f08e,U+f090,U+f096-f097,U+f0a2,U+f0e4-f0e6,U+f0ec-f0ee,U+f0f5-f0f7,U+f10c,U+f112,U+f114-f115,U+f11d,U+f123,U+f132,U+f145,U+f147-f149,U+f14c,U+f166,U+f16a,U+f172,U+f175-f178,U+f18e,U+f190,U+f196,U+f1b1,U+f1d9,U+f1db,U+f1f7,U+f20c,U+f219,U+f230,U+f24a,U+f250,U+f278,U+f27b,U+f283,U+f28c,U+f28e,U+f29b-f29c,U+f2b7,U+f2ba,U+f2bc,U+f2be,U+f2c0,U+f2c3,U+f2d3-f2d4}
diff --git a/httpd/fx/assets/css/fontawesome-5.15.4-free-v4-shims.scss b/httpd/fx/assets/css/fontawesome-5.15.4-free-v4-shims.scss
new file mode 100644
index 0000000..d1cefcb
--- /dev/null
+++ b/httpd/fx/assets/css/fontawesome-5.15.4-free-v4-shims.scss
@@ -0,0 +1,4 @@
+/*!
+ * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */.fa.fa-glass:before{content:"\f000"}.fa.fa-meetup{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-star-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-o:before{content:"\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\f00d"}.fa.fa-gear:before{content:"\f013"}.fa.fa-trash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-trash-o:before{content:"\f2ed"}.fa.fa-file-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-o:before{content:"\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-clock-o:before{content:"\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\f01e"}.fa.fa-refresh:before{content:"\f021"}.fa.fa-list-alt{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dedent:before{content:"\f03b"}.fa.fa-video-camera:before{content:"\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-picture-o:before{content:"\f03e"}.fa.fa-photo{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-photo:before{content:"\f03e"}.fa.fa-image{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-image:before{content:"\f03e"}.fa.fa-pencil:before{content:"\f303"}.fa.fa-map-marker:before{content:"\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\f044"}.fa.fa-share-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-share-square-o:before{content:"\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\f14a"}.fa.fa-arrows:before{content:"\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\f058"}.fa.fa-mail-forward:before{content:"\f064"}.fa.fa-expand:before{content:"\f424"}.fa.fa-compress:before{content:"\f422"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-warning:before{content:"\f071"}.fa.fa-calendar:before{content:"\f073"}.fa.fa-arrows-v:before{content:"\f338"}.fa.fa-arrows-h:before{content:"\f337"}.fa.fa-bar-chart{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart:before{content:"\f080"}.fa.fa-bar-chart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart-o:before{content:"\f080"}.fa.fa-facebook-square,.fa.fa-twitter-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gears:before{content:"\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\f165"}.fa.fa-heart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-heart-o:before{content:"\f004"}.fa.fa-sign-out:before{content:"\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\f08c"}.fa.fa-thumb-tack:before{content:"\f08d"}.fa.fa-external-link:before{content:"\f35d"}.fa.fa-sign-in:before{content:"\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-lemon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\f094"}.fa.fa-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-square-o:before{content:"\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook:before{content:"\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\f39e"}.fa.fa-github{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-feed:before{content:"\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\f0a7"}.fa.fa-arrows-alt:before{content:"\f31e"}.fa.fa-group:before{content:"\f0c0"}.fa.fa-chain:before{content:"\f0c1"}.fa.fa-scissors:before{content:"\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-files-o:before{content:"\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\f0c9"}.fa.fa-google-plus,.fa.fa-google-plus-square,.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\f0d5"}.fa.fa-money{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-money:before{content:"\f3d1"}.fa.fa-unsorted:before{content:"\f0dc"}.fa.fa-sort-desc:before{content:"\f0dd"}.fa.fa-sort-asc:before{content:"\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\f0e1"}.fa.fa-rotate-left:before{content:"\f0e2"}.fa.fa-legal:before{content:"\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\f3fd"}.fa.fa-comment-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comment-o:before{content:"\f075"}.fa.fa-comments-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comments-o:before{content:"\f086"}.fa.fa-flash:before{content:"\f0e7"}.fa.fa-clipboard,.fa.fa-paste{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paste:before{content:"\f328"}.fa.fa-lightbulb-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\f0eb"}.fa.fa-exchange:before{content:"\f362"}.fa.fa-cloud-download:before{content:"\f381"}.fa.fa-cloud-upload:before{content:"\f382"}.fa.fa-bell-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-o:before{content:"\f0f3"}.fa.fa-cutlery:before{content:"\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\f15c"}.fa.fa-building-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-building-o:before{content:"\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\f0f8"}.fa.fa-tablet:before{content:"\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-o:before{content:"\f111"}.fa.fa-mail-reply:before{content:"\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-o:before{content:"\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-smile-o:before{content:"\f118"}.fa.fa-frown-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-frown-o:before{content:"\f119"}.fa.fa-meh-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-meh-o:before{content:"\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-flag-o:before{content:"\f024"}.fa.fa-mail-reply-all:before{content:"\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\f089"}.fa.fa-star-half-empty{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\f089"}.fa.fa-star-half-full{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\f089"}.fa.fa-code-fork:before{content:"\f126"}.fa.fa-chain-broken:before{content:"\f127"}.fa.fa-shield:before{content:"\f3ed"}.fa.fa-calendar-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ticket:before{content:"\f3ff"}.fa.fa-minus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\f146"}.fa.fa-level-up:before{content:"\f3bf"}.fa.fa-level-down:before{content:"\f3be"}.fa.fa-pencil-square:before{content:"\f14b"}.fa.fa-external-link-square:before{content:"\f360"}.fa.fa-compass{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\f153"}.fa.fa-gbp:before{content:"\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\f155"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\f156"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\f15a"}.fa.fa-file-text:before{content:"\f15c"}.fa.fa-sort-alpha-asc:before{content:"\f15d"}.fa.fa-sort-alpha-desc:before{content:"\f881"}.fa.fa-sort-amount-asc:before{content:"\f160"}.fa.fa-sort-amount-desc:before{content:"\f884"}.fa.fa-sort-numeric-asc:before{content:"\f162"}.fa.fa-sort-numeric-desc:before{content:"\f886"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube,.fa.fa-youtube-play,.fa.fa-youtube-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-long-arrow-down:before{content:"\f309"}.fa.fa-long-arrow-up:before{content:"\f30c"}.fa.fa-long-arrow-left:before{content:"\f30a"}.fa.fa-long-arrow-right:before{content:"\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gittip:before{content:"\f184"}.fa.fa-sun-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sun-o:before{content:"\f185"}.fa.fa-moon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-moon-o:before{content:"\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\f195"}.fa.fa-plus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\f19c"}.fa.fa-mortar-board:before{content:"\f19d"}.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-google,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle,.fa.fa-yahoo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-spoon:before{content:"\f2e5"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-automobile:before{content:"\f1b9"}.fa.fa-envelope-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\f0e0"}.fa.fa-deviantart,.fa.fa-soundcloud,.fa.fa-spotify{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-life-bouy,.fa.fa-life-ring{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-bouy:before{content:"\f1cd"}.fa.fa-life-buoy{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-buoy:before{content:"\f1cd"}.fa.fa-life-saver{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-saver:before{content:"\f1cd"}.fa.fa-support{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-support:before{content:"\f1cd"}.fa.fa-circle-o-notch:before{content:"\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ra:before{content:"\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-resistance:before{content:"\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ge:before{content:"\f1d1"}.fa.fa-git,.fa.fa-git-square,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wechat:before{content:"\f1d7"}.fa.fa-send:before{content:"\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-send-o:before{content:"\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\f111"}.fa.fa-header:before{content:"\f1dc"}.fa.fa-sliders:before{content:"\f1de"}.fa.fa-futbol-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\f1f6"}.fa.fa-trash:before{content:"\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\f1fb"}.fa.fa-area-chart:before{content:"\f1fe"}.fa.fa-pie-chart:before{content:"\f200"}.fa.fa-line-chart:before{content:"\f201"}.fa.fa-angellist,.fa.fa-ioxhost,.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-cc:before{content:"\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\f20b"}.fa.fa-meanpath{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-meanpath:before{content:"\f2b4"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-diamond:before{content:"\f3a5"}.fa.fa-intersex:before{content:"\f224"}.fa.fa-facebook-official{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-hotel:before{content:"\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc:before{content:"\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\f240"}.fa.fa-battery-3:before{content:"\f241"}.fa.fa-battery-2:before{content:"\f242"}.fa.fa-battery-1:before{content:"\f243"}.fa.fa-battery-0:before{content:"\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-clone,.fa.fa-hourglass-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\f254"}.fa.fa-hourglass-1:before{content:"\f251"}.fa.fa-hourglass-2:before{content:"\f252"}.fa.fa-hourglass-3:before{content:"\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\f25b"}.fa.fa-registered{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-chrome,.fa.fa-creative-commons,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-internet-explorer,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square,.fa.fa-opera,.fa.fa-safari,.fa.fa-wikipedia-w{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-television:before{content:"\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\f274"}.fa.fa-map-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-map-o:before{content:"\f279"}.fa.fa-commenting:before{content:"\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\f059"}.fa.fa-volume-control-phone:before{content:"\f2a0"}.fa.fa-asl-interpreting:before{content:"\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-signing:before{content:"\f2a7"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-snapchat,.fa.fa-snapchat-ghost,.fa.fa-snapchat-square,.fa.fa-themeisle,.fa.fa-viadeo,.fa.fa-viadeo-square,.fa.fa-yoast{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-fa:before{content:"\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\f2b6"}.fa.fa-linode{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\f2b9"}.fa.fa-vcard:before{content:"\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-o:before{content:"\f007"}.fa.fa-id-badge{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\f2c7"}.fa.fa-thermometer-3:before{content:"\f2c8"}.fa.fa-thermometer-2:before{content:"\f2c9"}.fa.fa-thermometer-1:before{content:"\f2ca"}.fa.fa-thermometer-0:before{content:"\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-eercast:before{content:"\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\f2dc"}.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cab:before{content:"\f1ba"}
\ No newline at end of file
diff --git a/httpd/fx/assets/css/fontawesome-5.15.4-free.scss b/httpd/fx/assets/css/fontawesome-5.15.4-free.scss
new file mode 100644
index 0000000..a194127
--- /dev/null
+++ b/httpd/fx/assets/css/fontawesome-5.15.4-free.scss
@@ -0,0 +1,4 @@
+/*!
+ * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(/_fonts/free-fa-brands-400.eot);src:url(/_fonts/free-fa-brands-400.eot?#iefix) format("embedded-opentype"),url(/_fonts/free-fa-brands-400.woff2) format("woff2"),url(/_fonts/free-fa-brands-400.woff) format("woff"),url(/_fonts/free-fa-brands-400.ttf) format("truetype"),url(/_fonts/free-fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(/_fonts/free-fa-regular-400.eot);src:url(/_fonts/free-fa-regular-400.eot?#iefix) format("embedded-opentype"),url(/_fonts/free-fa-regular-400.woff2) format("woff2"),url(/_fonts/free-fa-regular-400.woff) format("woff"),url(/_fonts/free-fa-regular-400.ttf) format("truetype"),url(/_fonts/free-fa-regular-400.svg#fontawesome) format("svg")}@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:400;font-display:block;src:url(/_fonts/free-fa-regular-400.eot);src:url(/_fonts/free-fa-regular-400.eot?#iefix) format("embedded-opentype"),url(/_fonts/free-fa-regular-400.woff2) format("woff2"),url(/_fonts/free-fa-regular-400.woff) format("woff"),url(/_fonts/free-fa-regular-400.ttf) format("truetype"),url(/_fonts/free-fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(/_fonts/free-fa-solid-900.eot);src:url(/_fonts/free-fa-solid-900.eot?#iefix) format("embedded-opentype"),url(/_fonts/free-fa-solid-900.woff2) format("woff2"),url(/_fonts/free-fa-solid-900.woff) format("woff"),url(/_fonts/free-fa-solid-900.ttf) format("truetype"),url(/_fonts/free-fa-solid-900.svg#fontawesome) format("svg")}@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:900;font-display:block;src:url(/_fonts/free-fa-solid-900.eot);src:url(/_fonts/free-fa-solid-900.eot?#iefix) format("embedded-opentype"),url(/_fonts/free-fa-solid-900.woff2) format("woff2"),url(/_fonts/free-fa-solid-900.woff) format("woff"),url(/_fonts/free-fa-solid-900.ttf) format("truetype"),url(/_fonts/free-fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"FontAwesome"}.fa,.fas{font-weight:900}
diff --git a/httpd/fx/assets/css/footer.scss b/httpd/fx/assets/css/footer.scss
new file mode 100644
index 0000000..b0cd8ba
--- /dev/null
+++ b/httpd/fx/assets/css/footer.scss
@@ -0,0 +1,7 @@
+.footer {
+ background: $dark;
+ padding: 1em;
+ a, a:hover {
+ color: $kmx_orange;
+ }
+}
diff --git a/httpd/fx/assets/css/kc3.scss b/httpd/fx/assets/css/kc3.scss
new file mode 100644
index 0000000..5f187ca
--- /dev/null
+++ b/httpd/fx/assets/css/kc3.scss
@@ -0,0 +1,50 @@
+body.KC3 {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ background: url('/_images/iris-kc3-004.jpeg');
+ background-size: 100%;
+ background-position-y: 2.9rem;
+
+ div.container {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ max-width: 100%;
+ }
+
+ h1 {
+ position: relative;
+ display: block;
+ margin: 0 auto;
+ width: 20%;
+ height: 0;
+ padding: 0 0 20% 0;
+ background: url('/_images/kc3.256.png');
+ background-size: 100%;
+ }
+
+ .KC3-1 {
+ position: relative;
+ display: block;
+ margin: 10% 0 33% 4%;
+ padding: 0 0 40% 0;
+ width: 45%;
+ height: 0;
+ border-radius: 1rem;
+ background: #fff;
+ font-size: 1.8vw;
+
+ & > div {
+ margin: 0;
+ padding: 3vw;
+ }
+ }
+
+ div.pixels-5-15 {
+ div.container {
+ margin: 0 auto;
+ max-width: 540px;
+ }
+ }
+}
diff --git a/httpd/fx/assets/css/kmx_colors.scss b/httpd/fx/assets/css/kmx_colors.scss
new file mode 100644
index 0000000..95e88be
--- /dev/null
+++ b/httpd/fx/assets/css/kmx_colors.scss
@@ -0,0 +1,15 @@
+$kmx-black: #1e1f1d;
+$kmx-blue: #5a60f9;
+$kmx-blue1: #6f72f9;
+$kmx-blue2: #9c99fd;
+$kmx-cyan: #d4f3f6;
+$kmx-green: #c4ed3a;
+$kmx-orange: #f8681c;
+$kmx-orange1: #fa7734;
+$kmx-orange2: #ffa532;
+$kmx-pink: #fc9ef9;
+$kmx-white: #f5f8f4;
+$kmx-white1: #fff9f2;
+$kmx-white2: #ffffff;
+$kmx-yellow: #ecfe49;
+$kmx-yellow1: #fff43e;
diff --git a/httpd/fx/assets/css/pixel.scss b/httpd/fx/assets/css/pixel.scss
new file mode 100644
index 0000000..365621c
--- /dev/null
+++ b/httpd/fx/assets/css/pixel.scss
@@ -0,0 +1,24 @@
+.pixels-5-15 {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ background: #fff;
+
+ .container {
+ margin: 0 auto;
+ width: 100%;
+ max-width: 540px;
+ }
+}
+.pixel {
+ display: inline-block;
+ width: 30px;
+ height: 30px;
+ border: solid 1px #fff;
+}
+.pixel-0 {
+ background: #000;
+}
+.pixel-1 {
+ background: #fff;
+}
diff --git a/httpd/fx/assets/css/pygments.scss b/httpd/fx/assets/css/pygments.scss
new file mode 100644
index 0000000..bd8c63f
--- /dev/null
+++ b/httpd/fx/assets/css/pygments.scss
@@ -0,0 +1,69 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #008800; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #AA22FF; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #008800 } /* Comment.Preproc */
+.highlight .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #008800; font-weight: bold } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #AA22FF; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #AA22FF; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #AA22FF; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #AA22FF } /* Keyword.Pseudo */
+.highlight .kr { color: #AA22FF; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #00BB00; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #666666 } /* Literal.Number */
+.highlight .s { color: #BB4444 } /* Literal.String */
+.highlight .na { color: #BB4444 } /* Name.Attribute */
+.highlight .nb { color: #AA22FF } /* Name.Builtin */
+.highlight .nc { color: #0000FF } /* Name.Class */
+.highlight .no { color: #880000 } /* Name.Constant */
+.highlight .nd { color: #AA22FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #00A000 } /* Name.Function */
+.highlight .nl { color: #A0A000 } /* Name.Label */
+.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #B8860B } /* Name.Variable */
+.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #666666 } /* Literal.Number.Bin */
+.highlight .mf { color: #666666 } /* Literal.Number.Float */
+.highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.highlight .sa { color: #BB4444 } /* Literal.String.Affix */
+.highlight .sb { color: #BB4444 } /* Literal.String.Backtick */
+.highlight .sc { color: #BB4444 } /* Literal.String.Char */
+.highlight .dl { color: #BB4444 } /* Literal.String.Delimiter */
+.highlight .sd { color: #BB4444; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #BB4444 } /* Literal.String.Double */
+.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #BB4444 } /* Literal.String.Heredoc */
+.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.highlight .sx { color: #008000 } /* Literal.String.Other */
+.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.highlight .s1 { color: #BB4444 } /* Literal.String.Single */
+.highlight .ss { color: #B8860B } /* Literal.String.Symbol */
+.highlight .bp { color: #AA22FF } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #00A000 } /* Name.Function.Magic */
+.highlight .vc { color: #B8860B } /* Name.Variable.Class */
+.highlight .vg { color: #B8860B } /* Name.Variable.Global */
+.highlight .vi { color: #B8860B } /* Name.Variable.Instance */
+.highlight .vm { color: #B8860B } /* Name.Variable.Magic */
+.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
diff --git a/httpd/fx/assets/js/app.js b/httpd/fx/assets/js/app.js
new file mode 100644
index 0000000..fb07041
--- /dev/null
+++ b/httpd/fx/assets/js/app.js
@@ -0,0 +1,8 @@
+import $ from "jquery"
+window.$ = $;
+window.jQuery = $;
+
+import "bootstrap"
+
+import "./kmx_anim"
+import "./pixel"
diff --git a/httpd/fx/assets/js/kmx_anim.js b/httpd/fx/assets/js/kmx_anim.js
new file mode 100644
index 0000000..c2de5db
--- /dev/null
+++ b/httpd/fx/assets/js/kmx_anim.js
@@ -0,0 +1,17 @@
+import $ from "jquery";
+import kmx_colors from "./kmx_colors";
+
+function getRandomInt(max) {
+ return Math.floor(Math.random() * max);
+}
+
+$(function() {
+ setInterval(function() {
+ const i = getRandomInt(kmx_colors.index.length);
+ const name = kmx_colors.index[i];
+ const color = kmx_colors[name];
+ const x = (getRandomInt(99) - 48) * 0.002;
+ $("a").css("text-shadow", "0 0 0");
+ $("a:hover").css("text-shadow", x + "em 0 0 " + color);
+ }, 200);
+});
diff --git a/httpd/fx/assets/js/kmx_colors.js b/httpd/fx/assets/js/kmx_colors.js
new file mode 100644
index 0000000..ee17a7c
--- /dev/null
+++ b/httpd/fx/assets/js/kmx_colors.js
@@ -0,0 +1,49 @@
+const kmx_colors = {
+ "kmx-black": "#1e1f1d",
+ "kmx-blue": "#5a60f9",
+ "kmx-blue1": "#6f72f9",
+ "kmx-blue2": "#9c99fd",
+ "kmx-blue3": "#5a60f9",
+ "kmx-blue4": "#6f72f9",
+ "kmx-blue5": "#9c99fd",
+ "index": [
+ "kmx-black",
+ "kmx-blue",
+ "kmx-blue1",
+ "kmx-blue2",
+ "kmx-blue3",
+ "kmx-blue4",
+ "kmx-blue5",
+ "kmx-cyan",
+ "kmx-cyan1",
+ "kmx-green",
+ "kmx-green1",
+ "kmx-orange",
+ "kmx-orange1",
+ "kmx-orange2",
+ "kmx-pink",
+ "kmx-white",
+ "kmx-white1",
+ "kmx-white2",
+ "kmx-yellow",
+ "kmx-yellow1",
+ "kmx-yellow2",
+ "kmx-yellow3"
+ ],
+ "kmx-cyan": "#d4f3f6",
+ "kmx-cyan1": "#d4f3f6",
+ "kmx-green": "#c4ed3a",
+ "kmx-green1": "#c4ed3a",
+ "kmx-orange": "#f8681c",
+ "kmx-orange1": "#fa7734",
+ "kmx-orange2": "#ffa532",
+ "kmx-pink": "#fc9ef9",
+ "kmx-white": "#f5f8f4",
+ "kmx-white1": "#fff9f2",
+ "kmx-white2": "#ffffff",
+ "kmx-yellow": "#ecfe49",
+ "kmx-yellow1": "#fff43e",
+ "kmx-yellow2": "#ecfe49",
+ "kmx-yellow3": "#fff43e"
+};
+export default kmx_colors;
diff --git a/httpd/fx/assets/js/pixel.js b/httpd/fx/assets/js/pixel.js
new file mode 100644
index 0000000..6513f3b
--- /dev/null
+++ b/httpd/fx/assets/js/pixel.js
@@ -0,0 +1,15 @@
+import $ from 'jquery';
+
+$(function () {
+ $('.pixel').click(function (event) {
+ const el = event.target;
+ if (el.classList.contains('pixel-0')) {
+ el.classList.remove('pixel-0');
+ el.classList.add('pixel-1');
+ }
+ else if (el.classList.contains('pixel-1')) {
+ el.classList.remove('pixel-1');
+ el.classList.add('pixel-0');
+ }
+ });
+});
diff --git a/httpd/fx/assets/package-lock.json b/httpd/fx/assets/package-lock.json
new file mode 100644
index 0000000..e297371
--- /dev/null
+++ b/httpd/fx/assets/package-lock.json
@@ -0,0 +1,49 @@
+{
+ "name": "assets",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "dependencies": {
+ "bootstrap": "^5.3.3",
+ "jquery": "^3.7.1"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "license": "MIT",
+ "peer": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/bootstrap": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
+ "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/twbs"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/bootstrap"
+ }
+ ],
+ "license": "MIT",
+ "peerDependencies": {
+ "@popperjs/core": "^2.11.8"
+ }
+ },
+ "node_modules/jquery": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
+ "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
+ "license": "MIT"
+ }
+ }
+}
diff --git a/httpd/fx/assets/package.json b/httpd/fx/assets/package.json
new file mode 100644
index 0000000..6721387
--- /dev/null
+++ b/httpd/fx/assets/package.json
@@ -0,0 +1,6 @@
+{
+ "dependencies": {
+ "bootstrap": "^5.3.3",
+ "jquery": "^3.7.1"
+ }
+}
diff --git a/httpd/fx/static/_assets/app.css.map b/httpd/fx/static/_assets/app.css.map
new file mode 100644
index 0000000..a6ec64b
--- /dev/null
+++ b/httpd/fx/static/_assets/app.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["../../assets/node_modules/bootstrap/scss/mixins/_banner.scss","../../assets/node_modules/bootstrap/scss/_root.scss","../../assets/node_modules/bootstrap/scss/vendor/_rfs.scss","../../assets/node_modules/bootstrap/scss/mixins/_color-mode.scss","../../assets/node_modules/bootstrap/scss/_reboot.scss","../../assets/node_modules/bootstrap/scss/_variables.scss","../../assets/node_modules/bootstrap/scss/mixins/_border-radius.scss","../../assets/node_modules/bootstrap/scss/_type.scss","../../assets/node_modules/bootstrap/scss/mixins/_lists.scss","../../assets/node_modules/bootstrap/scss/_images.scss","../../assets/node_modules/bootstrap/scss/mixins/_image.scss","../../assets/node_modules/bootstrap/scss/_containers.scss","../../assets/node_modules/bootstrap/scss/mixins/_container.scss","../../assets/node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../assets/node_modules/bootstrap/scss/_grid.scss","../../assets/node_modules/bootstrap/scss/mixins/_grid.scss","../../assets/node_modules/bootstrap/scss/_tables.scss","../../assets/node_modules/bootstrap/scss/mixins/_table-variants.scss","../../assets/node_modules/bootstrap/scss/forms/_labels.scss","../../assets/node_modules/bootstrap/scss/forms/_form-text.scss","../../assets/node_modules/bootstrap/scss/forms/_form-control.scss","../../assets/node_modules/bootstrap/scss/mixins/_transition.scss","../../assets/node_modules/bootstrap/scss/mixins/_gradients.scss","../../assets/node_modules/bootstrap/scss/forms/_form-select.scss","../../assets/node_modules/bootstrap/scss/forms/_form-check.scss","../../assets/css/kmx_colors.scss","../../assets/node_modules/bootstrap/scss/forms/_form-range.scss","../../assets/node_modules/bootstrap/scss/forms/_floating-labels.scss","../../assets/node_modules/bootstrap/scss/forms/_input-group.scss","../../assets/node_modules/bootstrap/scss/mixins/_forms.scss","../../assets/node_modules/bootstrap/scss/_buttons.scss","../../assets/node_modules/bootstrap/scss/mixins/_buttons.scss","../../assets/node_modules/bootstrap/scss/_transitions.scss","../../assets/node_modules/bootstrap/scss/_dropdown.scss","../../assets/node_modules/bootstrap/scss/mixins/_caret.scss","../../assets/node_modules/bootstrap/scss/_button-group.scss","../../assets/node_modules/bootstrap/scss/_nav.scss","../../assets/node_modules/bootstrap/scss/_navbar.scss","../../assets/node_modules/bootstrap/scss/_card.scss","../../assets/node_modules/bootstrap/scss/_accordion.scss","../../assets/node_modules/bootstrap/scss/_breadcrumb.scss","../../assets/node_modules/bootstrap/scss/_pagination.scss","../../assets/node_modules/bootstrap/scss/mixins/_pagination.scss","../../assets/node_modules/bootstrap/scss/_badge.scss","../../assets/node_modules/bootstrap/scss/_alert.scss","../../assets/node_modules/bootstrap/scss/_progress.scss","../../assets/node_modules/bootstrap/scss/_list-group.scss","../../assets/node_modules/bootstrap/scss/_close.scss","../../assets/node_modules/bootstrap/scss/_toasts.scss","../../assets/node_modules/bootstrap/scss/_modal.scss","../../assets/node_modules/bootstrap/scss/mixins/_backdrop.scss","../../assets/node_modules/bootstrap/scss/_tooltip.scss","../../assets/node_modules/bootstrap/scss/mixins/_reset-text.scss","../../assets/node_modules/bootstrap/scss/_popover.scss","../../assets/node_modules/bootstrap/scss/_carousel.scss","../../assets/node_modules/bootstrap/scss/mixins/_clearfix.scss","../../assets/node_modules/bootstrap/scss/_spinners.scss","../../assets/node_modules/bootstrap/scss/_offcanvas.scss","../../assets/node_modules/bootstrap/scss/_placeholders.scss","../../assets/node_modules/bootstrap/scss/helpers/_color-bg.scss","../../assets/node_modules/bootstrap/scss/helpers/_colored-links.scss","../../assets/node_modules/bootstrap/scss/helpers/_focus-ring.scss","../../assets/node_modules/bootstrap/scss/helpers/_icon-link.scss","../../assets/node_modules/bootstrap/scss/helpers/_ratio.scss","../../assets/node_modules/bootstrap/scss/helpers/_position.scss","../../assets/node_modules/bootstrap/scss/helpers/_stacks.scss","../../assets/node_modules/bootstrap/scss/helpers/_visually-hidden.scss","../../assets/node_modules/bootstrap/scss/mixins/_visually-hidden.scss","../../assets/node_modules/bootstrap/scss/helpers/_stretched-link.scss","../../assets/node_modules/bootstrap/scss/helpers/_text-truncation.scss","../../assets/node_modules/bootstrap/scss/mixins/_text-truncate.scss","../../assets/node_modules/bootstrap/scss/helpers/_vr.scss","../../assets/node_modules/bootstrap/scss/mixins/_utilities.scss","../../assets/node_modules/bootstrap/scss/utilities/_api.scss","../../assets/css/computer_modern.scss","../../assets/css/courier_new.scss","../../assets/css/fontawesome-5.15.4-free.scss","../../assets/css/fontawesome-5.15.4-free-v4-shims.scss","../../assets/css/fontawesome-5.15.4-free-v4-font-face.scss","../../assets/css/flash.scss","../../assets/css/footer.scss","../../assets/css/app.scss","../../assets/css/pixel.scss","../../assets/css/pygments.scss"],"names":[],"mappings":"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E;EEyWJ;IFtMQ;;;AE+MN;EACE;;;AAOJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOE;;;AAGF;EACE;;;AASF;EACE;EACA;;;AAQF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;EACE;;;AAKF;EACE;;;AAOF;EACE;EACA;;;AAKF;EACE;;;AAKF;EACE;;;AAOF;EACE;EACA;;;AAQF;EACE;;;AAQF;EACE;;;AGrkBF;ELmQM,WALI;EK5PR,aFwoB4B;;;AEnoB5B;ELgQM;EK5PJ,aFynBkB;EExnBlB,aFwmB0B;;AHzgB1B;EKpGF;ILuQM;;;;AKvQN;ELgQM;EK5PJ,aFynBkB;EExnBlB,aFwmB0B;;AHzgB1B;EKpGF;ILuQM;;;;AKvQN;ELgQM;EK5PJ,aFynBkB;EExnBlB,aFwmB0B;;AHzgB1B;EKpGF;ILuQM;;;;AKvQN;ELgQM;EK5PJ,aFynBkB;EExnBlB,aFwmB0B;;AHzgB1B;EKpGF;ILuQM;;;;AKvQN;ELgQM;EK5PJ,aFynBkB;EExnBlB,aFwmB0B;;AHzgB1B;EKpGF;ILuQM;;;;AKvQN;ELgQM;EK5PJ,aFynBkB;EExnBlB,aFwmB0B;;AHzgB1B;EKpGF;ILuQM;;;;AK/OR;ECvDE;EACA;;;AD2DF;EC5DE;EACA;;;AD8DF;EACE;;AAEA;EACE,cFsoB0B;;;AE5nB9B;EL8MM,WALI;EKvMR;;;AAIF;EACE,eFiUO;EH1HH,WALI;;AK/LR;EACE;;;AAIJ;EACE;EACA,eFuTO;EH1HH,WALI;EKtLR,OFtFS;;AEwFT;EACE;;;AEhGJ;ECIE;EAGA;;;ADDF;EACE,SJ+jDkC;EI9jDlC,kBJ+jDkC;EI9jDlC;EHGE;EIRF;EAGA;;;ADcF;EAEE;;;AAGF;EACE;EACA;;;AAGF;EPyPM,WALI;EOlPR,OJkjDkC;;;AMplDlC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ECHA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACsDE;EF5CE;IACE,WNkee;;;AQvbnB;EF5CE;IACE,WNkee;;;AQvbnB;EF5CE;IACE,WNkee;;;AQvbnB;EF5CE;IACE,WNkee;;;AQvbnB;EF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;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;ADiJA;EACE;EACA;;;AH3FF;EGyFA;IACE;IACA;;;AH3FF;EGyFA;IACE;IACA;;;AH3FF;EGyFA;IACE;IACA;;;AH3FF;EGyFA;IACE;IACA;;;AH3FF;EGyFA;IACE;IACA;;;AEnKN;EACE,ebu2BsC;;;Aa91BxC;EACE;EACA;EACA;EhB8QI,WALI;EgBrQR,ab+lB4B;;;Aa3lB9B;EACE;EACA;EhBoQI,WALI;;;AgB3PV;EACE;EACA;EhB8PI,WALI;;;AiBtRV;EACE,Yd+1BsC;EHrkBlC,WALI;EiBjRR,Od+1BsC;;;Aep2BxC;EACE;EACA;EACA;ElBwRI,WALI;EkBhRR,afkmB4B;EejmB5B,afymB4B;EexmB5B,Of43BsC;Ee33BtC;EACA,kBfq3BsC;Eep3BtC;EACA;EdGE;EeHE,YDMJ;;ACFI;EDhBN;ICiBQ;;;ADGN;EACE;;AAEA;EACE;;AAKJ;EACE,Ofs2BoC;Eer2BpC,kBfg2BoC;Ee/1BpC,cf82BoC;Ee72BpC;EAKE,YfkhBkB;;Ae9gBtB;EAME;EAMA;EAKA;;AAKF;EACE;EACA;;AAIF;EACE,Of40BoC;Ee10BpC;;AAQF;EAEE,kBf8yBoC;Ee3yBpC;;AAIF;EACE;EACA;EACA,mBforB0B;EenrB1B,OfsyBoC;EiBp4BtC,kBjBqiCgC;Eer8B9B;EACA;EACA;EACA;EACA,yBfgsB0B;Ee/rB1B;ECzFE,YD0FF;;ACtFE;ED0EJ;ICzEM;;;ADwFN;EACE,kBf47B8B;;;Aen7BlC;EACE;EACA;EACA;EACA;EACA,afwf4B;Eevf5B,Of2xBsC;Ee1xBtC;EACA;EACA;;AAEA;EACE;;AAGF;EAEE;EACA;;;AAWJ;EACE,Yf4wBsC;Ee3wBtC;ElByII,WALI;EIvQN;;AcuIF;EACE;EACA;EACA,mBfooB0B;;;AehoB9B;EACE,YfgwBsC;Ee/vBtC;ElB4HI,WALI;EIvQN;;AcoJF;EACE;EACA;EACA,mBf2nB0B;;;AennB5B;EACE,Yf6uBoC;;Ae1uBtC;EACE,Yf0uBoC;;AevuBtC;EACE,YfuuBoC;;;AeluBxC;EACE,OfquBsC;EepuBtC,Qf8tBsC;Ee7tBtC,SfilB4B;;Ae/kB5B;EACE;;AAGF;EACE;EdvLA;;Ac2LF;EACE;Ed5LA;;AcgMF;EAAoB,Qf8sBkB;;Ae7sBtC;EAAoB,Qf8sBkB;;;AkB75BxC;EACE;EAEA;EACA;EACA;ErBqRI,WALI;EqB7QR,alB+lB4B;EkB9lB5B,alBsmB4B;EkBrmB5B,OlBy3BsC;EkBx3BtC;EACA,kBlBk3BsC;EkBj3BtC;EACA;EACA,qBlB+9BkC;EkB99BlC,iBlB+9BkC;EkB99BlC;EjBHE;EeHE,YESJ;;AFLI;EEfN;IFgBQ;;;AEMN;EACE,clBs3BoC;EkBr3BpC;EAKE,YlBi+B4B;;AkB79BhC;EAEE,elB6uB0B;EkB5uB1B;;AAGF;EAEE,kBlBu1BoC;;AkBl1BtC;EACE;EACA;;;AAIJ;EACE,alBsuB4B;EkBruB5B,gBlBquB4B;EkBpuB5B,clBquB4B;EHlgBxB,WALI;EIvQN;;;AiB8CJ;EACE,alBkuB4B;EkBjuB5B,gBlBiuB4B;EkBhuB5B,clBiuB4B;EHtgBxB,WALI;EIvQN;;;AiBwDA;EACE;;;ACxEN;EACE;EACA,YnBq6BwC;EmBp6BxC,cnBq6BwC;EmBp6BxC,enBq6BwC;;AmBn6BxC;EACE;EACA;;;AAIJ;EACE,enB25BwC;EmB15BxC;EACA;;AAEA;EACE;EACA;EACA;;;AAIJ;EACE;EAEA;EACA,OnB04BwC;EmBz4BxC,QnBy4BwC;EmBx4BxC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QnB24BwC;EmB14BxC;;AAGA;ElB3BE;;AkB+BF;EAEE,enBm4BsC;;AmBh4BxC;EACE,QnB03BsC;;AmBv3BxC;EACE,cnBs1BoC;EmBr1BpC;EACA,YnB8foB;;AmB3ftB;EACE,kBCjEU;EDkEV,cClEU;;ADoEV;EAII;;AAIJ;EAII;;AAKN;EACE,kBCtFU;EDuFV,cCvFU;ED4FR;;AAIJ;EACE;EACA;EACA,SnBk2BuC;;AmB31BvC;EACE;EACA,SnBy1BqC;;;AmB30B3C;EACE,cnBo1BgC;;AmBl1BhC;EACE;EAEA,OnB80B8B;EmB70B9B;EACA;EACA;ElBjHA;EeHE,YGsHF;;AHlHE;EG0GJ;IHzGM;;;AGmHJ;EACE;;AAGF;EACE,qBnB60B4B;EmBx0B1B;;AAKN;EACE,enBwzB8B;EmBvzB9B;;AAEA;EACE;EACA;;;AAKN;EACE;EACA,cnBsyBgC;;;AmBnyBlC;EACE;EACA;EACA;;AAIE;EACE;EACA;EACA,SnBspBwB;;;AmB/oB1B;EACE;;;AEnLN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIA;EAA0B,YrB8gCa;;AqB7gCvC;EAA0B,YrB6gCa;;AqB1gCzC;EACE;;AAGF;EACE,OrB+/BuC;EqB9/BvC,QrB8/BuC;EqB7/BvC;EACA;EJ1BF,kBGHY;EC+BV,QrB6/BuC;EC1gCvC;EeHE,YKmBF;;ALfE;EKMJ;ILLM;;;AKgBJ;EJjCF,kBjB8hCyC;;AqBx/BzC;EACE,OrBw+B8B;EqBv+B9B,QrBw+B8B;EqBv+B9B;EACA,QrBu+B8B;EqBt+B9B,kBrBu+B8B;EqBt+B9B;EpB7BA;;AoBkCF;EACE,OrBo+BuC;EqBn+BvC,QrBm+BuC;EqBl+BvC;EJpDF,kBGHY;ECyDV,QrBm+BuC;EC1gCvC;EeHE,YK6CF;;ALzCE;EKiCJ;ILhCM;;;AK0CJ;EJ3DF,kBjB8hCyC;;AqB99BzC;EACE,OrB88B8B;EqB78B9B,QrB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oBALI;E4BhRR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;E5BsQI,WALI;E4B/PR;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;ExBjBE;EgBfF,kBQkCqB;ETtBjB,YSwBJ;;ATpBI;EShBN;ITiBQ;;;ASqBN;EACE;EAEA;EACA;;AAGF;EAEE;EACA;EACA;;AAGF;EACE;ERrDF,kBQsDuB;EACrB;EACA;EAKE;;AAIJ;EACE;EACA;EAKE;;AAIJ;EAKE;EACA;EAGA;;AAGA;EAKI;;AAKN;EAKI;;AAIJ;EAGE;EACA;EACA;EAEA;EACA;;;AAYF;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AD4HA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AD+GF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,iBzB8QwC;;AyBpQxC;EACE;;AAGF;EACE;;;AAWJ;ECjJE;EACA;E7B8NI,oBALI;E6BvNR;;;ADkJF;ECrJE;EACA;E7B8NI,oBALI;E6BvNR;;;ACnEF;EXgBM,YWfJ;;AXmBI;EWpBN;IXqBQ;;;AWlBN;EACE;;;AAMF;EACE;;;AAIJ;EACE;EACA;EXDI,YWEJ;;AXEI;EWLN;IXMQ;;;AWDN;EACE;EACA;EXNE,YWOF;;AXHE;EWAJ;IXCM;;;;AYpBR;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;;;AAGF;EACE;;ACwBE;EACE;EACA,a7B6hBwB;E6B5hBxB,gB7B2hBwB;E6B1hBxB;EArCJ;EACA;EACA;EACA;;AA0DE;EACE;;;AD9CN;EAEE;EACA;EACA;EACA;EACA;E/BuQI,yBALI;E+BhQR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;E/B0OI,WALI;E+BnOR;EACA;EACA;EACA;EACA;EACA;E3BzCE;;A2B6CF;EACE;EACA;EACA;;;AAwBA;EACE;;AAEA;EACE;EACA;;;AAIJ;EACE;;AA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;EAEA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;;AAGE;EAEE;;AAIJ;EACE;;;AASJ;EACE,ahC8gCkC;EgC7gClC,gBhC6gCkC;EgC5gClC;;AAEA;AAAA;AAAA;EAGE;;;AAaJ;EACE;EACA;EAGA;;;AAIF;EACE;EnCyII,WALI;EmClIR;EACA;EACA;EACA;E/BxIE;EeHE,YgB6IJ;;AhBzII;EgBiIN;IhBhIQ;;;AgB0IN;EACE;;AAGF;EACE;EACA;EACA;;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AxB1HE;EwBsIA;IAEI;IACA;;EAEA;IACE;;EAEA;IACE;;EAGF;IACE;IACA;;EAIJ;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IhB9NJ,YgBgOI;;EAGA;IACE;;EAGF;IACE;IACA;IACA;IACA;;;AxB5LR;EwBsIA;IAEI;IACA;;EAEA;IACE;;EAEA;IACE;;EAGF;IACE;IACA;;EAIJ;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IhB9NJ,YgBgOI;;EAGA;IACE;;EAGF;IACE;IACA;IACA;IACA;;;AxB5LR;EwBsIA;IAEI;IACA;;EAEA;IACE;;EAEA;IACE;;EAGF;IACE;IACA;;EAIJ;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IhB9NJ,YgBgOI;;EAGA;IACE;;EAGF;IACE;IACA;IACA;IACA;;;AxB5LR;EwBsIA;IAEI;IACA;;EAEA;IACE;;EAEA;IACE;;EAGF;IACE;IACA;;EAIJ;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IhB9NJ,YgBgOI;;EAGA;IACE;;EAGF;IACE;IACA;IACA;IACA;;;AxB5LR;EwBsIA;IAEI;IACA;;EAEA;IACE;;EAEA;IACE;;EAGF;IACE;IACA;;EAIJ;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IhB9NJ,YgBgOI;;EAGA;IACE;;EAGF;IACE;IACA;IACA;IACA;;;AAtDR;EAEI;EACA;;AAEA;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EhB9NJ,YgBgOI;;AAGA;EACE;;AAGF;EACE;EACA;EACA;EACA;;;AAiBZ;AAAA;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAME;EACE;;;ACzRN;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EhCjBE;;AgCqBF;EACE;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EhCtBF;EACA;;AgCyBA;EACE;EhCbF;EACA;;AgCmBF;AAAA;EAEE;;;AAIJ;EAGE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAQA;EACE;;;AAQJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EhC7FE;;;AgCkGJ;EACE;EACA;EACA;EACA;;AAEA;EhCxGE;;;AgCkHJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EhC1IE;;;AgC8IJ;AAAA;AAAA;EAGE;;;AAGF;AAAA;EhC3II;EACA;;;AgC+IJ;AAAA;EhClII;EACA;;;AgC8IF;EACE;;AzB3HA;EyBuHJ;IAQI;IACA;;EAGA;IAEE;IACA;;EAEA;IACE;IACA;;EAKA;IhC3KJ;IACA;;EgC6KM;AAAA;IAGE;;EAEF;AAAA;IAGE;;EAIJ;IhC5KJ;IACA;;EgC8KM;AAAA;IAGE;;EAEF;AAAA;IAGE;;;;ACpOZ;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;ErC4PI,WALI;EqCrPR;EACA;EACA;EACA;EjCrBE;EiCuBF;ElB1BI,YkB2BJ;;AlBvBI;EkBUN;IlBTQ;;;AkBwBN;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ElBjDE,YkBkDF;;AlB9CE;EkBqCJ;IlBpCM;;;AkBgDN;EACE;;AAGF;EACE;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;EACA;;AAEA;EjC7DE;EACA;;AiC+DA;EjChEA;EACA;;AiCoEF;EACE;;AAIF;EjC5DE;EACA;;AiC+DE;EjChEF;EACA;;AiCoEA;EjCrEA;EACA;;;AiC0EJ;EACE;;;AASA;EACE;EACA;EjC9GA;;AiCiHA;EAAgB;;AAChB;EAAe;;AAIb;EjCtHF;;AiC6HA;EjC7HA;;;AiCqIA;EACE;EACA;;;AC1JN;EAEE;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EtC+QI,WALI;EsCxQR;EACA;ElCAE;;;AkCMF;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;;;ACrCJ;EAEE;EACA;EvC4RI,2BALI;EuCrRR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EjCpBA;EACA;;;AiCuBF;EACE;EACA;EACA;EvCgQI,WALI;EuCzPR;EACA;EACA;EACA;EpBpBI,YoBqBJ;;ApBjBI;EoBQN;IpBPQ;;;AoBkBN;EACE;EACA;EAEA;EACA;;AAGF;EACE;EACA;EACA;EACA,SpC2uCgC;EoC1uChC;;AAGF;EAEE;EACA;EnBtDF,kBmBuDuB;EACrB;;AAGF;EAEE;EACA;EACA;EACA;;;AAKF;EACE,apC8sCgC;;AoCzsC9B;EnC9BF;EACA;;AmCmCE;EnClDF;EACA;;;AmCkEJ;EClGE;EACA;ExC0RI,2BALI;EwCnRR;;;ADmGF;ECtGE;EACA;ExC0RI,2BALI;EwCnRR;;;ACFF;EAEE;EACA;EzCuRI,sBALI;EyChRR;EACA;EACA;EAGA;EACA;EzC+QI,WALI;EyCxQR;EACA;EACA;EACA;EACA;EACA;ErCJE;;AqCSF;EACE;;;AAKJ;EACE;EACA;;;AChCF;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EtCHE;;;AsCQJ;EAEE;;;AAIF;EACE,avC6kB4B;EuC5kB5B;;;AAQF;EACE,evCs+C8B;;AuCn+C9B;EACE;EACA;EACA;EACA;EACA;;;AAQF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AC5DF;EACE;IAAK,uBxCyhD2B;;;AwCphDpC;AAAA;EAGE;E3CkRI,yBALI;E2C3QR;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;E3CsQI,WALI;E2C/PR;EvCRE;;;AuCaJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ExBxBI,YwByBJ;;AxBrBI;EwBYN;IxBXQ;;;;AwBuBR;EvBAE;EuBEA;;;AAGF;EACE;;;AAGF;EACE;;;AAIA;EACE;;AAGE;EAJJ;IAKM;;;;AC3DR;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EAGA;EACA;ExCXE;;;AwCeJ;EACE;EACA;;AAEA;EAEE;EACA;;;AASJ;EACE;EACA;EACA;;AAGA;EAEE;EACA;EACA;EACA;;AAGF;EACE;EACA;;;AAQJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;ExCvDE;EACA;;AwC0DF;ExC7CE;EACA;;AwCgDF;EAEE;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;;AAIF;EACE;;AAEA;EACE;EACA;;;AAaF;EACE;;AAGE;ExCvDJ;EAZA;;AwCwEI;ExCxEJ;EAYA;;AwCiEI;EACE;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;;AjCtFR;EiC8DA;IACE;;EAGE;IxCvDJ;IAZA;;EwCwEI;IxCxEJ;IAYA;;EwCiEI;IACE;;EAGF;IACE;IACA;;EAEA;IACE;IACA;;;AjCtFR;EiC8DA;IACE;;EAGE;IxCvDJ;IAZA;;EwCwEI;IxCxEJ;IAYA;;EwCiEI;IACE;;EAGF;IACE;IACA;;EAEA;IACE;IACA;;;AjCtFR;EiC8DA;IACE;;EAGE;IxCvDJ;IAZA;;EwCwEI;IxCxEJ;IAYA;;EwCiEI;IACE;;EAGF;IACE;IACA;;EAEA;IACE;IACA;;;AjCtFR;EiC8DA;IACE;;EAGE;IxCvDJ;IAZA;;EwCwEI;IxCxEJ;IAYA;;EwCiEI;IACE;;EAGF;IACE;IACA;;EAEA;IACE;IACA;;;AjCtFR;EiC8DA;IACE;;EAGE;IxCvDJ;IAZA;;EwCwEI;IxCxEJ;IAYA;;EwCiEI;IACE;;EAGF;IACE;IACA;;EAEA;IACE;IACA;;;AAcZ;ExChJI;;AwCmJF;EACE;;AAEA;EACE;;;AAaJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC5LJ;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA,O1CqpD2B;E0CppD3B,Q1CopD2B;E0CnpD3B;EACA;EACA;EACA;EzCJE;EyCMF;;AAGA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EAEE;EACA;EACA;;;AAQJ;EAHE;;;AASE;EATF;;;ACjDF;EAEE;EACA;EACA;EACA;EACA;E9CyRI,sBALI;E8ClRR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;E9C2QI,WALI;E8CpQR;EACA;EACA;EACA;EACA;EACA;E1CRE;;A0CWF;EACE;;AAGF;EACE;;;AAIJ;EACE;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;E1ChCE;EACA;;A0CkCF;EACE;EACA;;;AAIJ;EACE;EACA;;;AC9DF;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;;;AAOF;EACE;EACA;EACA;EAEA;;AAGA;E5B5CI,Y4B6CF;EACA,W5Ck8CgC;;AgB5+C9B;E4BwCJ;I5BvCM;;;A4B2CN;EACE,W5Cg8CgC;;A4C57ClC;EACE,W5C67CgC;;;A4Cz7CpC;EACE;;AAEA;EACE;EACA;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;E3CrFE;E2CyFF;;;AAIF;EAEE;EACA;EACA;EClHA;EACA;EACA;EACA,SDkH0B;ECjH1B;EACA;EACA,kBD+G4D;;AC5G5D;EAAS;;AACT;EAAS,SD2GiF;;;AAK5F;EACE;EACA;EACA;EACA;EACA;E3CrGE;EACA;;A2CuGF;EACE;EACA;;;AAKJ;EACE;EACA;;;AAKF;EACE;EAGA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;E3CzHE;EACA;;A2C8HF;EACE;;;ApC3GA;EoCiHF;IACE;IACA;;EAIF;IACE;IACA;IACA;;EAGF;IACE;;;ApC9HA;EoCmIF;AAAA;IAEE;;;ApCrIA;EoC0IF;IACE;;;AAUA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;E3CzMJ;;A2C6ME;AAAA;E3C7MF;;A2CkNE;EACE;;;ApC1JJ;EoCwIA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I3CzMJ;;E2C6ME;AAAA;I3C7MF;;E2CkNE;IACE;;;ApC1JJ;EoCwIA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I3CzMJ;;E2C6ME;AAAA;I3C7MF;;E2CkNE;IACE;;;ApC1JJ;EoCwIA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I3CzMJ;;E2C6ME;AAAA;I3C7MF;;E2CkNE;IACE;;;ApC1JJ;EoCwIA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I3CzMJ;;E2C6ME;AAAA;I3C7MF;;E2CkNE;IACE;;;ApC1JJ;EoCwIA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I3CzMJ;;E2C6ME;AAAA;I3C7MF;;E2CkNE;IACE;;;AErOR;EAEE;EACA;EACA;EACA;EACA;EjDwRI,wBALI;EiDjRR;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EClBA,a/C+lB4B;E+C7lB5B;EACA,a/CwmB4B;E+CvmB5B,a/C+mB4B;E+C9mB5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ElDgRI,WALI;EiDhQR;EACA;;AAEA;EAAS;;AAET;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;;AAKN;EACE;;AAEA;EACE;EACA;EACA;;;AAIJ;AACA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAIJ;AAEA;EACE;;AAEA;EACE;EACA;EACA;;;AAIJ;AACA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAIJ;AAkBA;EACE;EACA;EACA;EACA;EACA;E7CjGE;;;A+CnBJ;EAEE;EACA;EnD4RI,wBALI;EmDrRR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EnDmRI,+BALI;EmD5QR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EDzBA,a/C+lB4B;E+C7lB5B;EACA,a/CwmB4B;E+CvmB5B,a/C+mB4B;E+C9mB5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ElDgRI,WALI;EmD1PR;EACA;EACA;EACA;E/ChBE;;A+CoBF;EACE;EACA;EACA;;AAEA;EAEE;EACA;EACA;EACA;EACA;EACA;;;AAMJ;EACE;;AAEA;EAEE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAKN;AAEE;EACE;EACA;EACA;;AAEA;EAEE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAKN;AAGE;EACE;;AAEA;EAEE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;AAEE;EACE;EACA;EACA;;AAEA;EAEE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAKN;AAkBA;EACE;EACA;EnD2GI,WALI;EmDpGR;EACA;EACA;E/C5JE;EACA;;A+C8JF;EACE;;;AAIJ;EACE;EACA;;;ACrLF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;ACtBA;EACE;EACA;EACA;;;ADuBJ;EACE;EACA;EACA;EACA;EACA;EACA;EjClBI,YiCmBJ;;AjCfI;EiCQN;IjCPQ;;;;AiCiBR;AAAA;AAAA;EAGE;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AASA;EACE;EACA;EACA;;AAGF;AAAA;AAAA;EAGE;EACA;;AAGF;AAAA;EAEE;EACA;EjC5DE,YiC6DF;;AjCzDE;EiCqDJ;AAAA;IjCpDM;;;;AiCiER;AAAA;EAEE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA,OjDkhDmC;EiDjhDnC;EACA,OjD1FS;EiD2FT;EACA;EACA;EACA,SjD6gDmC;EgBnmD/B,YiCuFJ;;AjCnFI;EiCkEN;AAAA;IjCjEQ;;;AiCqFN;AAAA;AAAA;EAEE,OjDpGO;EiDqGP;EACA;EACA,SjDqgDiC;;;AiDlgDrC;EACE;;;AAGF;EACE;;;AAKF;AAAA;EAEE;EACA,OjDsgDmC;EiDrgDnC,QjDqgDmC;EiDpgDnC;EACA;EACA;;;AAGF;EACE;;;AAEF;EACE;;;AAQF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,cjDs9CmC;EiDr9CnC;EACA,ajDo9CmC;;AiDl9CnC;EACE;EACA;EACA,OjDo9CiC;EiDn9CjC,QjDo9CiC;EiDn9CjC;EACA,cjDo9CiC;EiDn9CjC,ajDm9CiC;EiDl9CjC;EACA;EACA,kBjDlKO;EiDmKP;EACA;EAEA;EACA;EACA,SjD28CiC;EgB3mD/B,YiCiKF;;AjC7JE;EiC4IJ;IjC3IM;;;AiC+JN;EACE,SjDw8CiC;;;AiD/7CrC;EACE;EACA;EACA,QjDk8CmC;EiDj8CnC;EACA,ajD+7CmC;EiD97CnC,gBjD87CmC;EiD77CnC,OjD7LS;EiD8LT;;;AAMA;AAAA;EAEE,QjDm8CiC;;AiDh8CnC;EACE,kBjDhMO;;AiDmMT;EACE,OjDpMO;;;AiD0LT;AAAA;AAAA;EAEE,QjDm8CiC;;AiDh8CnC;EACE,kBjDhMO;;AiDmMT;EACE,OjDpMO;;;AmDdX;AAAA;EAEE;EACA;EACA;EACA;EAEA;EACA;;;AAIF;EACE;IAAK;;;AAIP;EAEE;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;;;AAGF;EAEE;EACA;EACA;;;AASF;EACE;IACE;;EAEF;IACE;IACA;;;AAKJ;EAEE;EACA;EACA;EACA;EACA;EAGA;EACA;;;AAGF;EACE;EACA;;;AAIA;EACE;AAAA;IAEE;;;AC/EN;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;A5C6DE;E4C5CF;IAEI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IpC5BA,YoC8BA;;;ApC1BA;EoCYJ;IpCXM;;;ARuDJ;E4C5BE;IACE;IACA;IACA;IACA;IACA;;;A5CuBJ;E4CpBE;IACE;IACA;IACA;IACA;IACA;;;A5CeJ;E4CZE;IACE;IACA;IACA;IACA;IACA;IACA;IACA;;;A5CKJ;E4CFE;IACE;IACA;IACA;IACA;IACA;IACA;;;A5CJJ;E4COE;IAEE;;;A5CTJ;E4CYE;IAGE;;;A5C5BJ;E4C/BF;IAiEM;IACA;IACA;;EAEA;IACE;;EAGF;IACE;IACA;IACA;IACA;IAEA;;;;A5CnCN;E4C5CF;IAEI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IpC5BA,YoC8BA;;;ApC1BA;EoCYJ;IpCXM;;;ARuDJ;E4C5BE;IACE;IACA;IACA;IACA;IACA;;;A5CuBJ;E4CpBE;IACE;IACA;IACA;IACA;IACA;;;A5CeJ;E4CZE;IACE;IACA;IACA;IACA;IACA;IACA;IACA;;;A5CKJ;E4CFE;IACE;IACA;IACA;IACA;IACA;IACA;;;A5CJJ;E4COE;IAEE;;;A5CTJ;E4CYE;IAGE;;;A5C5BJ;E4C/BF;IAiEM;IACA;IACA;;EAEA;IACE;;EAGF;IACE;IACA;IACA;IACA;IAEA;;;;A5CnCN;E4C5CF;IAEI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IpC5BA,YoC8BA;;;ApC1BA;EoCYJ;IpCXM;;;ARuDJ;E4C5BE;IACE;IACA;IACA;IACA;IACA;;;A5CuBJ;E4CpBE;IACE;IACA;IACA;IACA;IACA;;;A5CeJ;E4CZE;IACE;IACA;IACA;IACA;IACA;IACA;IACA;;;A5CKJ;E4CFE;IACE;IACA;IACA;IACA;IACA;IACA;;;A5CJJ;E4COE;IAEE;;;A5CTJ;E4CYE;IAGE;;;A5C5BJ;E4C/BF;IAiEM;IACA;IACA;;EAEA;IACE;;EAGF;IACE;IACA;IACA;IACA;IAEA;;;;A5CnCN;E4C5CF;IAEI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IpC5BA,YoC8BA;;;ApC1BA;EoCYJ;IpCXM;;;ARuDJ;E4C5BE;IACE;IACA;IACA;IACA;IACA;;;A5CuBJ;E4CpBE;IACE;IACA;IACA;IACA;IACA;;;A5CeJ;E4CZE;IACE;IACA;IACA;IACA;IACA;IACA;IACA;;;A5CKJ;E4CFE;IACE;IACA;IACA;IACA;IACA;IACA;;;A5CJJ;E4COE;IAEE;;;A5CTJ;E4CYE;IAGE;;;A5C5BJ;E4C/BF;IAiEM;IACA;IACA;;EAEA;IACE;;EAGF;IACE;IACA;IACA;IACA;IAEA;;;;A5CnCN;E4C5CF;IAEI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IpC5BA,YoC8BA;;;ApC1BA;EoCYJ;IpCXM;;;ARuDJ;E4C5BE;IACE;IACA;IACA;IACA;IACA;;;A5CuBJ;E4CpBE;IACE;IACA;IACA;IACA;IACA;;;A5CeJ;E4CZE;IACE;IACA;IACA;IACA;IACA;IACA;IACA;;;A5CKJ;E4CFE;IACE;IACA;IACA;IACA;IACA;IACA;;;A5CJJ;E4COE;IAEE;;;A5CTJ;E4CYE;IAGE;;;A5C5BJ;E4C/BF;IAiEM;IACA;IACA;;EAEA;IACE;;EAGF;IACE;IACA;IACA;IACA;IAEA;;;;AA/ER;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EpC5BA,YoC8BA;;ApC1BA;EoCYJ;IpCXM;;;AoC2BF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EAEE;;AAGF;EAGE;;;AA2BR;EPpHE;EACA;EACA;EACA,S7C0mCkC;E6CzmClC;EACA;EACA,kB7CUS;;A6CPT;EAAS;;AACT;EAAS,S7Cm+CyB;;;AoDr3CpC;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AC7IF;EACE;EACA;EACA;EACA;EACA;EACA,SrDgzCkC;;AqD9yClC;EACE;EACA;;;AAKJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKA;EACE;;;AAIJ;EACE;IACE,SrDmxCgC;;;AqD/wCpC;EACE;EACA;EACA;;;AAGF;EACE;IACE;;;AH9CF;EACE;EACA;EACA;;;AIHF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;ACFF;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AAOR;EACE;EACA;;AAGE;EAEE;EACA;;;AC1BN;EACE;EAEA;;;ACHF;EACE;EACA,KzD6c4B;EyD5c5B;EACA;EACA,uBzD2c4B;EyD1c5B;;AAEA;EACE;EACA,OzDuc0B;EyDtc1B,QzDsc0B;EyDrc1B;EzCIE,YyCHF;;AzCOE;EyCZJ;IzCaM;;;;AyCDJ;EACE;;;ACnBN;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAKF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;ACrBJ;EACE;EACA;EACA;EACA;EACA,S3DumCkC;;;A2DpmCpC;EACE;EACA;EACA;EACA;EACA,S3D+lCkC;;;A2DvlChC;EACE;EACA;EACA,S3DmlC8B;;;A2DhlChC;EACE;EACA;EACA,S3D6kC8B;;;AQ9iChC;EmDxCA;IACE;IACA;IACA,S3DmlC8B;;E2DhlChC;IACE;IACA;IACA,S3D6kC8B;;;AQ9iChC;EmDxCA;IACE;IACA;IACA,S3DmlC8B;;E2DhlChC;IACE;IACA;IACA,S3D6kC8B;;;AQ9iChC;EmDxCA;IACE;IACA;IACA,S3DmlC8B;;E2DhlChC;IACE;IACA;IACA,S3D6kC8B;;;AQ9iChC;EmDxCA;IACE;IACA;IACA,S3DmlC8B;;E2DhlChC;IACE;IACA;IACA,S3D6kC8B;;;AQ9iChC;EmDxCA;IACE;IACA;IACA,S3DmlC8B;;E2DhlChC;IACE;IACA;IACA,S3D6kC8B;;;A4D5mCpC;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;ACRF;AAAA;ECIE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;EACE;;;ACdF;EACE;EACA;EACA;EACA;EACA;EACA,S/DgcsC;E+D/btC;;;ACRJ;ECAE;EACA;EACA;;;ACNF;EACE;EACA;EACA,OlEisB4B;EkEhsB5B;EACA;EACA,SlE2rB4B;;;AmE/nBtB;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAjBJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AASF;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAjBJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AASF;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;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AAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;A3DVR;E2DGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;A3DVR;E2DGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;A3DVR;E2DGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;A3DVR;E2DGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;A3DVR;E2DGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;ACtDZ;ED+CQ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;ACnCZ;ED4BQ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;AEzEZ;EACI;EACA;EACA;EACA;;ACJJ;EACI;EACA;EAEA;EACA;;A3EJF;AAAA;AAAA;AAAA;AAAA;ACDF;AAAA;EASI;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAGF;EACA;EAMA;EACA;EACA;EAOA;EC2OI,qBALI;EDpOR;EACA;EAKA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAGA;EAEA;EACA;EACA;EAEA;EACA;EAMA;EACA;EACA;EAGA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EAIA;EACA;EACA;EAIA;EACA;EACA;EACA;;;AEhHE;EFsHA;EAGA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAGE;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAGF;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;;AGxKJ;AAAA;AAAA;EAGE;;;AAeE;EANJ;IAOM;;;;AAcN;EACE;EACA;EF6OI,WALI;EEtOR;EACA;EACA;EACA;EACA;EACA;EACA;;;AASF;EACE;EACA,OCmnB4B;EDlnB5B;EACA;EACA,SCynB4B;;;AD/mB9B;EACE;EACA,eCwjB4B;EDrjB5B,aCwjB4B;EDvjB5B,aCwjB4B;EDvjB5B;;;AAGF;EFuMQ;;AA5JJ;EE3CJ;IF8MQ;;;;AEzMR;EFkMQ;;AA5JJ;EEtCJ;IFyMQ;;;;AEpMR;EF6LQ;;AA5JJ;EEjCJ;IFoMQ;;;;AE/LR;EFwLQ;;AA5JJ;EE5BJ;IF+LQ;;;;AE1LR;EF+KM,WALI;;;AErKV;EF0KM,WALI;;;AE1JV;EACE;EACA,eCwV0B;;;AD9U5B;EACE;EACA;EACA;;;AAMF;EACE;EACA;EACA;;;AAMF;AAAA;EAEE;;;AAGF;AAAA;AAAA;EAGE;EACA;;;AAGF;AAAA;AAAA;AAAA;EAIE;;;AAGF;EACE,aC6b4B;;;ADxb9B;EACE;EACA;;;AAMF;EACE;;;AAQF;AAAA;EAEE,aCsa4B;;;AD9Z9B;EF6EM,WALI;;;AEjEV;EACE,SCqf4B;EDpf5B;EACA;;;AASF;AAAA;EAEE;EFwDI,WALI;EEjDR;EACA;;;AAGF;EAAM;;;AACN;EAAM;;;AAKN;EACE;EACA,iBCgNwC;;AD9MxC;EACE;;;AAWF;EAEE;EACA;;;AAOJ;AAAA;AAAA;AAAA;EAIE,aCgV4B;EHlUxB,WALI;;;AEDV;EACE;EACA;EACA;EACA;EFEI,WALI;;AEQR;EFHI,WALI;EEUN;EACA;;;AAIJ;EFVM,WALI;EEiBR;EACA;;AAGA;EACE;;;AAIJ;EACE;EFtBI,WALI;EE6BR,OCy5CkC;EDx5ClC,kBCy5CkC;EC9rDhC;;AFwSF;EACE;EF7BE,WALI;;;AE6CV;EACE;;;AAMF;AAAA;EAEE;;;AAQF;EACE;EACA;;;AAGF;EACE,aC4X4B;ED3X5B,gBC2X4B;ED1X5B,OC4Z4B;ED3Z5B;;;AAOF;EAEE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;;;AAQF;EACE;;;AAMF;EAEE;;;AAQF;EACE;;;AAKF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EF5HI,WALI;EEmIR;;;AAIF;AAAA;EAEE;;;AAKF;EACE;;;AAGF;EAGE;;AAGA;EACE;;;AAOJ;EACE;;;AAQF;AAAA;AAAA;AAAA;EAIE;;AAGE;AAAA;AAAA;AAAA;EACE;;;AAON;EACE;EACA;;;AAKF;EACE;;;AAUF;EACE;EACA;EACA;EACA;;;AAQF;EACE;EACA;EACA;EACA,eCmN4B;EHpatB;EEoNN;;AFhXE;EEyWJ;IFtMQ;;;AE+MN;EACE;;;AAOJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOE;;;AAGF;EACE;;;AASF;EACE;EACA;;;AAQF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;EACE;;;AAKF;EACE;;;AAOF;EACE;EACA;;;AAKF;EACE;;;AAKF;EACE;;;AAOF;EACE;EACA;;;AAQF;EACE;;;AAQF;EACE;;;AGrkBF;ELmQM,WALI;EK5PR,aFwoB4B;;;AEnoB5B;ELgQM;EK5PJ,aFynBkB;EExnBlB,aFwmB0B;;AHzgB1B;EKpGF;ILuQM;;;;AKvQN;ELgQM;EK5PJ,aFynBkB;EExnBlB,aFwmB0B;;AHzgB1B;EKpGF;ILuQM;;;;AKvQN;ELgQM;EK5PJ,aFynBkB;EExnBlB,aFwmB0B;;AHzgB1B;EKpGF;ILuQM;;;;AKvQN;ELgQM;EK5PJ,aFynBkB;EExnBlB,aFwmB0B;;AHzgB1B;EKpGF;ILuQM;;;;AKvQN;ELgQM;EK5PJ,aFynBkB;EExnBlB,aFwmB0B;;AHzgB1B;EKpGF;ILuQM;;;;AKvQN;ELgQM;EK5PJ,aFynBkB;EExnBlB,aFwmB0B;;AHzgB1B;EKpGF;ILuQM;;;;AK/OR;ECvDE;EACA;;;AD2DF;EC5DE;EACA;;;AD8DF;EACE;;AAEA;EACE,cFsoB0B;;;AE5nB9B;EL8MM,WALI;EKvMR;;;AAIF;EACE,eFiUO;EH1HH,WALI;;AK/LR;EACE;;;AAIJ;EACE;EACA,eFuTO;EH1HH,WALI;EKtLR,OFtFS;;AEwFT;EACE;;;AEhGJ;ECIE;EAGA;;;ADDF;EACE,SJ+jDkC;EI9jDlC,kBJ+jDkC;EI9jDlC;EHGE;EIRF;EAGA;;;ADcF;EAEE;;;AAGF;EACE;EACA;;;AAGF;EPyPM,WALI;EOlPR,OJkjDkC;;;AMplDlC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ECHA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACsDE;EF5CE;IACE,WNkee;;;AQvbnB;EF5CE;IACE,WNkee;;;AQvbnB;EF5CE;IACE,WNkee;;;AQvbnB;EF5CE;IACE,WNkee;;;AQvbnB;EF5CE;IACE,WNkee;;;ASlfvB;EAEI;EAAA;EAAA;EAAA;EAAA;EAAA;;;AAKF;ECNA;EACA;EACA;EACA;EAEA;EACA;EACA;;ADEE;ECOF;EACA;EACA;EACA;EACA;EACA;;;AA+CI;EACE;;;AAGF;EApCJ;EACA;;;AAcA;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AA+BE;EAhDJ;EACA;;;AAqDQ;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AAuEQ;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAwDU;EAxDV;;;AAmEM;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAPF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAPF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAPF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAPF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAPF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AF1DN;EEUE;IACE;;EAGF;IApCJ;IACA;;EAcA;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EA+BE;IAhDJ;IACA;;EAqDQ;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EAuEQ;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAmEM;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;;AF1DN;EEUE;IACE;;EAGF;IApCJ;IACA;;EAcA;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EA+BE;IAhDJ;IACA;;EAqDQ;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EAuEQ;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAmEM;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;;AF1DN;EEUE;IACE;;EAGF;IApCJ;IACA;;EAcA;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EA+BE;IAhDJ;IACA;;EAqDQ;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EAuEQ;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAmEM;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;;AF1DN;EEUE;IACE;;EAGF;IApCJ;IACA;;EAcA;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EA+BE;IAhDJ;IACA;;EAqDQ;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EAuEQ;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAmEM;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;;AF1DN;EEUE;IACE;;EAGF;IApCJ;IACA;;EAcA;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EAFF;IACE;IACA;;EA+BE;IAhDJ;IACA;;EAqDQ;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EA+DM;IAhEN;IACA;;EAuEQ;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAwDU;IAxDV;;EAmEM;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;EAPF;AAAA;IAEE;;EAGF;AAAA;IAEE;;;ACrHV;EAEE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA,eXkYO;EWjYP,gBXusB4B;EWtsB5B;;AAOA;EACE;EAEA;EACA;EACA,qBX+sB0B;EW9sB1B;;AAGF;EACE;;AAGF;EACE;;;AAIJ;EACE;;;AAOF;EACE;;;AAUA;EACE;;;AAeF;EACE;;AAGA;EACE;;;AAOJ;EACE;;AAGF;EACE;;;AAUF;EACE;EACA;;;AAMF;EACE;EACA;;;AAQJ;EACE;EACA;;;AAQA;EACE;EACA;;;AC5IF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAlBF;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;ADiJA;EACE;EACA;;;AH3FF;EGyFA;IACE;IACA;;;AH3FF;EGyFA;IACE;IACA;;;AH3FF;EGyFA;IACE;IACA;;;AH3FF;EGyFA;IACE;IACA;;;AH3FF;EGyFA;IACE;IACA;;;AEnKN;EACE,ebu2BsC;;;Aa91BxC;EACE;EACA;EACA;EhB8QI,WALI;EgBrQR,ab+lB4B;;;Aa3lB9B;EACE;EACA;EhBoQI,WALI;;;AgB3PV;EACE;EACA;EhB8PI,WALI;;;AiBtRV;EACE,Yd+1BsC;EHrkBlC,WALI;EiBjRR,Od+1BsC;;;Aep2BxC;EACE;EACA;EACA;ElBwRI,WALI;EkBhRR,afkmB4B;EejmB5B,afymB4B;EexmB5B,Of43BsC;Ee33BtC;EACA,kBfq3BsC;Eep3BtC;EACA;EdGE;EeHE,YDMJ;;ACFI;EDhBN;ICiBQ;;;ADGN;EACE;;AAEA;EACE;;AAKJ;EACE,Ofs2BoC;Eer2BpC,kBfg2BoC;Ee/1BpC,cf82BoC;Ee72BpC;EAKE,YfkhBkB;;Ae9gBtB;EAME;EAMA;EAKA;;AAKF;EACE;EACA;;AAIF;EACE,Of40BoC;Ee10BpC;;AAQF;EAEE,kBf8yBoC;Ee3yBpC;;AAIF;EACE;EACA;EACA,mBforB0B;EenrB1B,OfsyBoC;EiBp4BtC,kBjBqiCgC;Eer8B9B;EACA;EACA;EACA;EACA,yBfgsB0B;Ee/rB1B;ECzFE,YD0FF;;ACtFE;ED0EJ;ICzEM;;;ADwFN;EACE,kBf47B8B;;;Aen7BlC;EACE;EACA;EACA;EACA;EACA,afwf4B;Eevf5B,Of2xBsC;Ee1xBtC;EACA;EACA;;AAEA;EACE;;AAGF;EAEE;EACA;;;AAWJ;EACE,Yf4wBsC;Ee3wBtC;ElByII,WALI;EIvQN;;AcuIF;EACE;EACA;EACA,mBfooB0B;;;AehoB9B;EACE,YfgwBsC;Ee/vBtC;ElB4HI,WALI;EIvQN;;AcoJF;EACE;EACA;EACA,mBf2nB0B;;;AennB5B;EACE,Yf6uBoC;;Ae1uBtC;EACE,Yf0uBoC;;AevuBtC;EACE,YfuuBoC;;;AeluBxC;EACE,OfquBsC;EepuBtC,Qf8tBsC;Ee7tBtC,SfilB4B;;Ae/kB5B;EACE;;AAGF;EACE;EdvLA;;Ac2LF;EACE;Ed5LA;;AcgMF;EAAoB,Qf8sBkB;;Ae7sBtC;EAAoB,Qf8sBkB;;;AkB75BxC;EACE;EAEA;EACA;EACA;ErBqRI,WALI;EqB7QR,alB+lB4B;EkB9lB5B,alBsmB4B;EkBrmB5B,OlBy3BsC;EkBx3BtC;EACA,kBlBk3BsC;EkBj3BtC;EACA;EACA,qBlB+9BkC;EkB99BlC,iBlB+9BkC;EkB99BlC;EjBHE;EeHE,YESJ;;AFLI;EEfN;IFgBQ;;;AEMN;EACE,clBs3BoC;EkBr3BpC;EAKE,YlBi+B4B;;AkB79BhC;EAEE,elB6uB0B;EkB5uB1B;;AAGF;EAEE,kBlBu1BoC;;AkBl1BtC;EACE;EACA;;;AAIJ;EACE,alBsuB4B;EkBruB5B,gBlBquB4B;EkBpuB5B,clBquB4B;EHlgBxB,WALI;EIvQN;;;AiB8CJ;EACE,alBkuB4B;EkBjuB5B,gBlBiuB4B;EkBhuB5B,clBiuB4B;EHtgBxB,WALI;EIvQN;;;AiBwDA;EACE;;;ACxEN;EACE;EACA,YnBq6BwC;EmBp6BxC,cnBq6BwC;EmBp6BxC,enBq6BwC;;AmBn6BxC;EACE;EACA;;;AAIJ;EACE,enB25BwC;EmB15BxC;EACA;;AAEA;EACE;EACA;EACA;;;AAIJ;EACE;EAEA;EACA,OnB04BwC;EmBz4BxC,QnBy4BwC;EmBx4BxC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QnB24BwC;EmB14BxC;;AAGA;ElB3BE;;AkB+BF;EAEE,enBm4BsC;;AmBh4BxC;EACE,QnB03BsC;;AmBv3BxC;EACE,cnBs1BoC;EmBr1BpC;EACA,YnB8foB;;AmB3ftB;EACE,kBCjEU;EDkEV,cClEU;;ADoEV;EAII;;AAIJ;EAII;;AAKN;EACE,kBCtFU;EDuFV,cCvFU;ED4FR;;AAIJ;EACE;EACA;EACA,SnBk2BuC;;AmB31BvC;EACE;EACA,SnBy1BqC;;;AmB30B3C;EACE,cnBo1BgC;;AmBl1BhC;EACE;EAEA,OnB80B8B;EmB70B9B;EACA;EACA;ElBjHA;EeHE,YGsHF;;AHlHE;EG0GJ;IHzGM;;;AGmHJ;EACE;;AAGF;EACE,qBnB60B4B;EmBx0B1B;;AAKN;EACE,enBwzB8B;EmBvzB9B;;AAEA;EACE;EACA;;;AAKN;EACE;EACA,cnBsyBgC;;;AmBnyBlC;EACE;EACA;EACA;;AAIE;EACE;EACA;EACA,SnBspBwB;;;AmB/oB1B;EACE;;;AEnLN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIA;EAA0B,YrB8gCa;;AqB7gCvC;EAA0B,YrB6gCa;;AqB1gCzC;EACE;;AAGF;EACE,OrB+/BuC;EqB9/BvC,QrB8/BuC;EqB7/BvC;EACA;EJ1BF,kBGHY;EC+BV,QrB6/BuC;EC1gCvC;EeHE,YKmBF;;ALfE;EKMJ;ILLM;;;AKgBJ;EJjCF,kBjB8hCyC;;AqBx/BzC;EACE,OrBw+B8B;EqBv+B9B,QrBw+B8B;EqBv+B9B;EACA,QrBu+B8B;EqBt+B9B,kBrBu+B8B;EqBt+B9B;EpB7BA;;AoBkCF;EACE,OrBo+BuC;EqBn+BvC,QrBm+BuC;EqBl+BvC;EJpDF,kBGHY;ECyDV,QrBm+BuC;EC1gCvC;EeHE,YK6CF;;ALzCE;EKiCJ;ILhCM;;;AK0CJ;EJ3DF,kBjB8hCyC;;AqB99BzC;EACE,OrB88B8B;EqB78B9B,QrB88B8B;EqB78B9B;EACA,QrB68B8B;EqB58B9B,kBrB68B8B;EqB58B9B;EpBvDA;;AoB4DF;EACE;;AAEA;EACE,kBrBg9BqC;;AqB78BvC;EACE,kBrB48BqC;;;AsBniC3C;EACE;;AAEA;AAAA;AAAA;EAGE,QtBwiCoC;EsBviCpC,YtBuiCoC;EsBtiCpC,atBuiCoC;;AsBpiCtC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ENRE,YMSF;;ANLE;EMTJ;INUM;;;AMON;AAAA;EAEE;;AAEA;AAAA;EACE;;AAGF;AAAA;AAAA;EAEE,atB4gCkC;EsB3gClC,gBtB4gCkC;;AsBzgCpC;AAAA;EACE,atBugCkC;EsBtgClC,gBtBugCkC;;AsBngCtC;EACE,atBigCoC;EsBhgCpC,gBtBigCoC;;AsB1/BpC;AAAA;AAAA;AAAA;EACE;EACA,WtB2/BkC;;AsBz/BlC;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA,QtBm/BgC;EsBl/BhC;EACA,kBtBg0BgC;ECh3BpC;;AqBuDA;EACE;EACA,WtB0+BkC;;AsBr+BpC;EACE;;AAIJ;AAAA;EAEE,OtB1EO;;AsB4EP;AAAA;EACE,kBtB0yBkC;;;AuBj4BxC;EACE;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGE;EACA;EACA;EACA;;AAIF;AAAA;AAAA;EAGE;;AAMF;EACE;EACA;;AAEA;EACE;;;AAWN;EACE;EACA;EACA;E1B8OI,WALI;E0BvOR,avByjB4B;EuBxjB5B,avBgkB4B;EuB/jB5B,OvBm1BsC;EuBl1BtC;EACA;EACA,kBvB06BsC;EuBz6BtC;EtBtCE;;;AsBgDJ;AAAA;AAAA;AAAA;EAIE;E1BwNI,WALI;EIvQN;;;AsByDJ;AAAA;AAAA;AAAA;EAIE;E1B+MI,WALI;EIvQN;;;AsBkEJ;AAAA;EAEE;;;AAaE;AAAA;AAAA;AAAA;EtBjEA;EACA;;AsByEA;AAAA;AAAA;AAAA;EtB1EA;EACA;;AsBsFF;EACE;EtB1EA;EACA;;AsB6EF;AAAA;EtB9EE;EACA;;;AuBxBF;EACE;EACA;EACA,YxBu0BoC;EHrkBlC,WALI;E2B1PN,OxBkjCqB;;;AwB/iCvB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;E3BqPE,WALI;E2B7ON,OxBqiCqB;EwBpiCrB,kBxBoiCqB;EC/jCrB;;;AuBgCA;AAAA;AAAA;AAAA;EAEE;;;AA/CF;EAqDE,cxBuhCmB;EwBphCjB,exB81BgC;EwB71BhC;EACA;EACA;EACA;;AAGF;EACE,cxB4gCiB;EwBvgCf,YxBugCe;;;AwB5kCrB;EA+EI,exBu0BgC;EwBt0BhC;;;AAhFJ;EAuFE,cxBq/BmB;;AwBl/BjB;EAEE;EACA,exBq5B8B;EwBp5B9B;EACA;;AAIJ;EACE,cxBw+BiB;EwBn+Bf,YxBm+Be;;;AwB5kCrB;EAkHI;;;AAlHJ;EAyHE,cxBm9BmB;;AwBj9BnB;EACE,kBxBg9BiB;;AwB78BnB;EACE,YxB48BiB;;AwBz8BnB;EACE,OxBw8BiB;;;AwBn8BrB;EACE;;;AA1IF;AAAA;AAAA;AAAA;AAAA;EAoJM;;;AAhIR;EACE;EACA;EACA,YxBu0BoC;EHrkBlC,WALI;E2B1PN,OxBkjCqB;;;AwB/iCvB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;E3BqPE,WALI;E2B7ON,OxBqiCqB;EwBpiCrB,kBxBoiCqB;EC/jCrB;;;AuBgCA;AAAA;AAAA;AAAA;EAEE;;;AA/CF;EAqDE,cxBuhCmB;EwBphCjB,exB81BgC;EwB71BhC;EACA;EACA;EACA;;AAGF;EACE,cxB4gCiB;EwBvgCf,YxBugCe;;;AwB5kCrB;EA+EI,exBu0BgC;EwBt0BhC;;;AAhFJ;EAuFE,cxBq/BmB;;AwBl/BjB;EAEE;EACA,exBq5B8B;EwBp5B9B;EACA;;AAIJ;EACE,cxBw+BiB;EwBn+Bf,YxBm+Be;;;AwB5kCrB;EAkHI;;;AAlHJ;EAyHE,cxBm9BmB;;AwBj9BnB;EACE,kBxBg9BiB;;AwB78BnB;EACE,YxB48BiB;;AwBz8BnB;EACE,OxBw8BiB;;;AwBn8BrB;EACE;;;AA1IF;AAAA;AAAA;AAAA;AAAA;EAsJM;;;ACxJV;EAEE;EACA;EACA;E5BuRI,oBALI;E4BhRR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;E5BsQI,WALI;E4B/PR;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;ExBjBE;EgBfF,kBQkCqB;ETtBjB,YSwBJ;;ATpBI;EShBN;ITiBQ;;;ASqBN;EACE;EAEA;EACA;;AAGF;EAEE;EACA;EACA;;AAGF;EACE;ERrDF,kBQsDuB;EACrB;EACA;EAKE;;AAIJ;EACE;EACA;EAKE;;AAIJ;EAKE;EACA;EAGA;;AAGA;EAKI;;AAKN;EAKI;;AAIJ;EAGE;EACA;EACA;EAEA;EACA;;;AAYF;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADkGA;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AD4HA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADmGA;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AD+GF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,iBzB8QwC;;AyBpQxC;EACE;;AAGF;EACE;;;AAWJ;ECjJE;EACA;E7B8NI,oBALI;E6BvNR;;;ADkJF;ECrJE;EACA;E7B8NI,oBALI;E6BvNR;;;ACnEF;EXgBM,YWfJ;;AXmBI;EWpBN;IXqBQ;;;AWlBN;EACE;;;AAMF;EACE;;;AAIJ;EACE;EACA;EXDI,YWEJ;;AXEI;EWLN;IXMQ;;;AWDN;EACE;EACA;EXNE,YWOF;;AXHE;EWAJ;IXCM;;;;AYpBR;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;;;AAGF;EACE;;ACwBE;EACE;EACA,a7B6hBwB;E6B5hBxB,gB7B2hBwB;E6B1hBxB;EArCJ;EACA;EACA;EACA;;AA0DE;EACE;;;AD9CN;EAEE;EACA;EACA;EACA;EACA;E/BuQI,yBALI;E+BhQR;EACA;EACA;EACA;EA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A;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAoBJ;EACE;EACA;EACA;EnC4NI,WALI;EmCrNR;EACA;EACA;;AAEA;EAEE;;;AAUJ;EAEE;EACA;EAEA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;;AAGE;EAEE;;AAIJ;EACE;;;AASJ;EACE,ahC8gCkC;EgC7gClC,gBhC6gCkC;EgC5gClC;;AAEA;AAAA;AAAA;EAGE;;;AAaJ;EACE;EACA;EAGA;;;AAIF;EACE;EnCyII,WALI;EmClIR;EACA;EACA;EACA;E/BxIE;EeHE,YgB6IJ;;AhBzII;EgBiIN;IhBhIQ;;;AgB0IN;EACE;;AAGF;EACE;EACA;EACA;;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AxB1HE;EwBsIA;IAEI;IACA;;EAEA;IACE;;EAEA;IACE;;EAGF;IACE;IACA;;EAIJ;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IhB9NJ,YgBgOI;;EAGA;IACE;;EAGF;IACE;IACA;IACA;IACA;;;AxB5LR;EwBsIA;IAEI;IACA;;EAEA;IACE;;EAEA;IACE;;EAGF;IACE;IACA;;EAIJ;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IhB9NJ,YgBgOI;;EAGA;IACE;;EAGF;IACE;IACA;IACA;IACA;;;AxB5LR;EwBsIA;IAEI;IACA;;EAEA;IACE;;EAEA;IACE;;EAGF;IACE;IACA;;EAIJ;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IhB9NJ,YgBgOI;;EAGA;IACE;;EAGF;IACE;IACA;IACA;IACA;;;AxB5LR;EwBsIA;IAEI;IACA;;EAEA;IACE;;EAEA;IACE;;EAGF;IACE;IACA;;EAIJ;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IhB9NJ,YgBgOI;;EAGA;IACE;;EAGF;IACE;IACA;IACA;IACA;;;AxB5LR;EwBsIA;IAEI;IACA;;EAEA;IACE;;EAEA;IACE;;EAGF;IACE;IACA;;EAIJ;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IhB9NJ,YgBgOI;;EAGA;IACE;;EAGF;IACE;IACA;IACA;IACA;;;AAtDR;EAEI;EACA;;AAEA;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EhB9NJ,YgBgOI;;AAGA;EACE;;AAGF;EACE;EACA;EACA;EACA;;;AAiBZ;AAAA;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAME;EACE;;;ACzRN;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EhCjBE;;AgCqBF;EACE;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EhCtBF;EACA;;AgCyBA;EACE;EhCbF;EACA;;AgCmBF;AAAA;EAEE;;;AAIJ;EAGE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAQA;EACE;;;AAQJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EhC7FE;;;AgCkGJ;EACE;EACA;EACA;EACA;;AAEA;EhCxGE;;;AgCkHJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EhC1IE;;;AgC8IJ;AAAA;AAAA;EAGE;;;AAGF;AAAA;EhC3II;EACA;;;AgC+IJ;AAAA;EhClII;EACA;;;AgC8IF;EACE;;AzB3HA;EyBuHJ;IAQI;IACA;;EAGA;IAEE;IACA;;EAEA;IACE;IACA;;EAKA;IhC3KJ;IACA;;EgC6KM;AAAA;IAGE;;EAEF;AAAA;IAGE;;EAIJ;IhC5KJ;IACA;;EgC8KM;AAAA;IAGE;;EAEF;AAAA;IAGE;;;;ACpOZ;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;ErC4PI,WALI;EqCrPR;EACA;EACA;EACA;EjCrBE;EiCuBF;ElB1BI,YkB2BJ;;AlBvBI;EkBUN;IlBTQ;;;AkBwBN;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ElBjDE,YkBkDF;;AlB9CE;EkBqCJ;IlBpCM;;;AkBgDN;EACE;;AAGF;EACE;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;EACA;;AAEA;EjC7DE;EACA;;AiC+DA;EjChEA;EACA;;AiCoEF;EACE;;AAIF;EjC5DE;EACA;;AiC+DE;EjChEF;EACA;;AiCoEA;EjCrEA;EACA;;;AiC0EJ;EACE;;;AASA;EACE;EACA;EjC9GA;;AiCiHA;EAAgB;;AAChB;EAAe;;AAIb;EjCtHF;;AiC6HA;EjC7HA;;;AiCqIA;EACE;EACA;;;AC1JN;EAEE;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EtC+QI,WALI;EsCxQR;EACA;ElCAE;;;AkCMF;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;;;ACrCJ;EAEE;EACA;EvC4RI,2BALI;EuCrRR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EjCpBA;EACA;;;AiCuBF;EACE;EACA;EACA;EvCgQI,WALI;EuCzPR;EACA;EACA;EACA;EpBpBI,YoBqBJ;;ApBjBI;EoBQN;IpBPQ;;;AoBkBN;EACE;EACA;EAEA;EACA;;AAGF;EACE;EACA;EACA;EACA,SpC2uCgC;EoC1uChC;;AAGF;EAEE;EACA;EnBtDF,kBmBuDuB;EACrB;;AAGF;EAEE;EACA;EACA;EACA;;;AAKF;EACE,apC8sCgC;;AoCzsC9B;EnC9BF;EACA;;AmCmCE;EnClDF;EACA;;;AmCkEJ;EClGE;EACA;ExC0RI,2BALI;EwCnRR;;;ADmGF;ECtGE;EACA;ExC0RI,2BALI;EwCnRR;;;ACFF;EAEE;EACA;EzCuRI,sBALI;EyChRR;EACA;EACA;EAGA;EACA;EzC+QI,WALI;EyCxQR;EACA;EACA;EACA;EACA;EACA;ErCJE;;AqCSF;EACE;;;AAKJ;EACE;EACA;;;AChCF;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EtCHE;;;AsCQJ;EAEE;;;AAIF;EACE,avC6kB4B;EuC5kB5B;;;AAQF;EACE,evCs+C8B;;AuCn+C9B;EACE;EACA;EACA;EACA;EACA;;;AAQF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AAJF;EACE;EACA;EACA;EACA;;;AC5DF;EACE;IAAK,uBxCyhD2B;;;AwCphDpC;AAAA;EAGE;E3CkRI,yBALI;E2C3QR;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;E3CsQI,WALI;E2C/PR;EvCRE;;;AuCaJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ExBxBI,YwByBJ;;AxBrBI;EwBYN;IxBXQ;;;;AwBuBR;EvBAE;EuBEA;;;AAGF;EACE;;;AAGF;EACE;;;AAIA;EACE;;AAGE;EAJJ;IAKM;;;;AC3DR;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EAGA;EACA;ExCXE;;;AwCeJ;EACE;EACA;;AAEA;EAEE;EACA;;;AASJ;EACE;EACA;EACA;;AAGA;EAEE;EACA;EACA;EACA;;AAGF;EACE;EACA;;;AAQJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;ExCvDE;EACA;;AwC0DF;ExC7CE;EACA;;AwCgDF;EAEE;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;;AAIF;EACE;;AAEA;EACE;EACA;;;AAaF;EACE;;AAGE;ExCvDJ;EAZA;;AwCwEI;ExCxEJ;EAYA;;AwCiEI;EACE;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;;AjCtFR;EiC8DA;IACE;;EAGE;IxCvDJ;IAZA;;EwCwEI;IxCxEJ;IAYA;;EwCiEI;IACE;;EAGF;IACE;IACA;;EAEA;IACE;IACA;;;AjCtFR;EiC8DA;IACE;;EAGE;IxCvDJ;IAZA;;EwCwEI;IxCxEJ;IAYA;;EwCiEI;IACE;;EAGF;IACE;IACA;;EAEA;IACE;IACA;;;AjCtFR;EiC8DA;IACE;;EAGE;IxCvDJ;IAZA;;EwCwEI;IxCxEJ;IAYA;;EwCiEI;IACE;;EAGF;IACE;IACA;;EAEA;IACE;IACA;;;AjCtFR;EiC8DA;IACE;;EAGE;IxCvDJ;IAZA;;EwCwEI;IxCxEJ;IAYA;;EwCiEI;IACE;;EAGF;IACE;IACA;;EAEA;IACE;IACA;;;AjCtFR;EiC8DA;IACE;;EAGE;IxCvDJ;IAZA;;EwCwEI;IxCxEJ;IAYA;;EwCiEI;IACE;;EAGF;IACE;IACA;;EAEA;IACE;IACA;;;AAcZ;ExChJI;;AwCmJF;EACE;;AAEA;EACE;;;AAaJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAVF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC5LJ;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA,O1CqpD2B;E0CppD3B,Q1CopD2B;E0CnpD3B;EACA;EACA;EACA;EzCJE;EyCMF;;AAGA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EAEE;EACA;EACA;;;AAQJ;EAHE;;;AASE;EATF;;;ACjDF;EAEE;EACA;EACA;EACA;EACA;E9CyRI,sBALI;E8ClRR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;E9C2QI,WALI;E8CpQR;EACA;EACA;EACA;EACA;EACA;E1CRE;;A0CWF;EACE;;AAGF;EACE;;;AAIJ;EACE;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;E1ChCE;EACA;;A0CkCF;EACE;EACA;;;AAIJ;EACE;EACA;;;AC9DF;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;;;AAOF;EACE;EACA;EACA;EAEA;;AAGA;E5B5CI,Y4B6CF;EACA,W5Ck8CgC;;AgB5+C9B;E4BwCJ;I5BvCM;;;A4B2CN;EACE,W5Cg8CgC;;A4C57ClC;EACE,W5C67CgC;;;A4Cz7CpC;EACE;;AAEA;EACE;EACA;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;E3CrFE;E2CyFF;;;AAIF;EAEE;EACA;EACA;EClHA;EACA;EACA;EACA,SDkH0B;ECjH1B;EACA;EACA,kBD+G4D;;AC5G5D;EAAS;;AACT;EAAS,SD2GiF;;;AAK5F;EACE;EACA;EACA;EACA;EACA;E3CrGE;EACA;;A2CuGF;EACE;EACA;;;AAKJ;EACE;EACA;;;AAKF;EACE;EAGA;EACA;;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;E3CzHE;EACA;;A2C8HF;EACE;;;ApC3GA;EoCiHF;IACE;IACA;;EAIF;IACE;IACA;IACA;;EAGF;IACE;;;ApC9HA;EoCmIF;AAAA;IAEE;;;ApCrIA;EoC0IF;IACE;;;AAUA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;E3CzMJ;;A2C6ME;AAAA;E3C7MF;;A2CkNE;EACE;;;ApC1JJ;EoCwIA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I3CzMJ;;E2C6ME;AAAA;I3C7MF;;E2CkNE;IACE;;;ApC1JJ;EoCwIA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I3CzMJ;;E2C6ME;AAAA;I3C7MF;;E2CkNE;IACE;;;ApC1JJ;EoCwIA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I3CzMJ;;E2C6ME;AAAA;I3C7MF;;E2CkNE;IACE;;;ApC1JJ;EoCwIA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I3CzMJ;;E2C6ME;AAAA;I3C7MF;;E2CkNE;IACE;;;ApC1JJ;EoCwIA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I3CzMJ;;E2C6ME;AAAA;I3C7MF;;E2CkNE;IACE;;;AErOR;EAEE;EACA;EACA;EACA;EACA;EjDwRI,wBALI;EiDjRR;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EClBA,a/C+lB4B;E+C7lB5B;EACA,a/CwmB4B;E+CvmB5B,a/C+mB4B;E+C9mB5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ElDgRI,WALI;EiDhQR;EACA;;AAEA;EAAS;;AAET;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;;AAKN;EACE;;AAEA;EACE;EACA;EACA;;;AAIJ;AACA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAIJ;AAEA;EACE;;AAEA;EACE;EACA;EACA;;;AAIJ;AACA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAIJ;AAkBA;EACE;EACA;EACA;EACA;EACA;E7CjGE;;;A+CnBJ;EAEE;EACA;EnD4RI,wBALI;EmDrRR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EnDmRI,+BALI;EmD5QR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EDzBA,a/C+lB4B;E+C7lB5B;EACA,a/CwmB4B;E+CvmB5B,a/C+mB4B;E+C9mB5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ElDgRI,WALI;EmD1PR;EACA;EACA;EACA;E/ChBE;;A+CoBF;EACE;EACA;EACA;;AAEA;EAEE;EACA;EACA;EACA;EACA;EACA;;;AAMJ;EACE;;AAEA;EAEE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAKN;AAEE;EACE;EACA;EACA;;AAEA;EAEE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAKN;AAGE;EACE;;AAEA;EAEE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;AAEE;EACE;EACA;EACA;;AAEA;EAEE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AAKN;AAkBA;EACE;EACA;EnD2GI,WALI;EmDpGR;EACA;EACA;E/C5JE;EACA;;A+C8JF;EACE;;;AAIJ;EACE;EACA;;;ACrLF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;ACtBA;EACE;EACA;EACA;;;ADuBJ;EACE;EACA;EACA;EACA;EACA;EACA;EjClBI,YiCmBJ;;AjCfI;EiCQN;IjCPQ;;;;AiCiBR;AAAA;AAAA;EAGE;;;AAGF;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AASA;EACE;EACA;EACA;;AAGF;AAAA;AA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;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AC7IF;EACE;EACA;EACA;EACA;EACA;EACA,SrDgzCkC;;AqD9yClC;EACE;EACA;;;AAKJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKA;EACE;;;AAIJ;EACE;IACE,SrDmxCgC;;;AqD/wCpC;EACE;EACA;EACA;;;AAGF;EACE;IACE;;;AH9CF;EACE;EACA;EACA;;;AIHF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;ACFF;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AATN;EACE;EACA;;AAGE;EAGE;EACA;;;AAOR;EACE;EACA;;AAGE;EAEE;EACA;;;AC1BN;EACE;EAEA;;;ACHF;EACE;EACA,KzD6c4B;EyD5c5B;EACA;EACA,uBzD2c4B;EyD1c5B;;AAEA;EACE;EACA,OzDuc0B;EyDtc1B,QzDsc0B;EyDrc1B;EzCIE,YyCHF;;AzCOE;EyCZJ;IzCaM;;;;AyCDJ;EACE;;;ACnBN;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAKF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;ACrBJ;EACE;EACA;EACA;EACA;EACA,S3DumCkC;;;A2DpmCpC;EACE;EACA;EACA;EACA;EACA,S3D+lCkC;;;A2DvlChC;EACE;EACA;EACA,S3DmlC8B;;;A2DhlChC;EACE;EACA;EACA,S3D6kC8B;;;AQ9iChC;EmDxCA;IACE;IACA;IACA,S3DmlC8B;;E2DhlChC;IACE;IACA;IACA,S3D6kC8B;;;AQ9iChC;EmDxCA;IACE;IACA;IACA,S3DmlC8B;;E2DhlChC;IACE;IACA;IACA,S3D6kC8B;;;AQ9iChC;EmDxCA;IACE;IACA;IACA,S3DmlC8B;;E2DhlChC;IACE;IACA;IACA,S3D6kC8B;;;AQ9iChC;EmDxCA;IACE;IACA;IACA,S3DmlC8B;;E2DhlChC;IACE;IACA;IACA,S3D6kC8B;;;AQ9iChC;EmDxCA;IACE;IACA;IACA,S3DmlC8B;;E2DhlChC;IACE;IACA;IACA,S3D6kC8B;;;A4D5mCpC;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;ACRF;AAAA;ECIE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;EACE;;;ACdF;EACE;EACA;EACA;EACA;EACA;EACA,S/DgcsC;E+D/btC;;;ACRJ;ECAE;EACA;EACA;;;ACNF;EACE;EACA;EACA,OlEisB4B;EkEhsB5B;EACA;EACA,SlE2rB4B;;;AmE/nBtB;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAjBJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AASF;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAjBJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AASF;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AArBJ;AAcA;EAOI;EAAA;;;AAmBJ;AA1BA;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAjBJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AASF;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAjBJ;EACE;;;AAIA;EACE;;;AANJ;EACE;;;AAIA;EACE;;;AANJ;EACE;;;AAIA;EACE;;;AANJ;EACE;;;AAIA;EACE;;;AANJ;EACE;;;AAIA;EACE;;;AAIJ;EAOI;;;AAKF;EAOI;;;AAnBN;EAOI;;;AAKF;EAOI;;;AAnBN;EAOI;;;AAKF;EAOI;;;AAnBN;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAjBJ;EACE;;;AAIA;EACE;;;AANJ;EACE;;;AAIA;EACE;;;AANJ;EACE;;;AAIA;EACE;;;AANJ;EACE;;;AAIA;EACE;;;AANJ;EACE;;;AAIA;EACE;;;AANJ;EACE;;;AAIA;EACE;;;AAIJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAjBJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AASF;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;A3DVR;E2DGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;A3DVR;E2DGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;A3DVR;E2DGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;A3DVR;E2DGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;A3DVR;E2DGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAP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","file":"app.css"}
\ No newline at end of file
diff --git a/httpd/fx/static/_assets/app.js b/httpd/fx/static/_assets/app.js
new file mode 100644
index 0000000..7a0e5c9
--- /dev/null
+++ b/httpd/fx/static/_assets/app.js
@@ -0,0 +1,11649 @@
+(() => {
+ var __create = Object.create;
+ var __defProp = Object.defineProperty;
+ var __defProps = Object.defineProperties;
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
+ var __getOwnPropNames = Object.getOwnPropertyNames;
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
+ var __getProtoOf = Object.getPrototypeOf;
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+ var __spreadValues = (a, b) => {
+ for (var prop in b || (b = {}))
+ if (__hasOwnProp.call(b, prop))
+ __defNormalProp(a, prop, b[prop]);
+ if (__getOwnPropSymbols)
+ for (var prop of __getOwnPropSymbols(b)) {
+ if (__propIsEnum.call(b, prop))
+ __defNormalProp(a, prop, b[prop]);
+ }
+ return a;
+ };
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
+ var __commonJS = (cb, mod) => function __require() {
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+ };
+ var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+ };
+ var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+ };
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+ ));
+
+ // node_modules/jquery/dist/jquery.js
+ var require_jquery = __commonJS({
+ "node_modules/jquery/dist/jquery.js"(exports, module) {
+ (function(global, factory) {
+ "use strict";
+ if (typeof module === "object" && typeof module.exports === "object") {
+ module.exports = global.document ? factory(global, true) : function(w) {
+ if (!w.document) {
+ throw new Error("jQuery requires a window with a document");
+ }
+ return factory(w);
+ };
+ } else {
+ factory(global);
+ }
+ })(typeof window !== "undefined" ? window : exports, function(window2, noGlobal) {
+ "use strict";
+ var arr = [];
+ var getProto = Object.getPrototypeOf;
+ var slice = arr.slice;
+ var flat = arr.flat ? function(array) {
+ return arr.flat.call(array);
+ } : function(array) {
+ return arr.concat.apply([], array);
+ };
+ var push = arr.push;
+ var indexOf = arr.indexOf;
+ var class2type = {};
+ var toString = class2type.toString;
+ var hasOwn = class2type.hasOwnProperty;
+ var fnToString = hasOwn.toString;
+ var ObjectFunctionString = fnToString.call(Object);
+ var support = {};
+ var isFunction = function isFunction2(obj) {
+ return typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function";
+ };
+ var isWindow = function isWindow2(obj) {
+ return obj != null && obj === obj.window;
+ };
+ var document2 = window2.document;
+ var preservedScriptAttributes = {
+ type: true,
+ src: true,
+ nonce: true,
+ noModule: true
+ };
+ function DOMEval(code, node, doc) {
+ doc = doc || document2;
+ var i, val, script = doc.createElement("script");
+ script.text = code;
+ if (node) {
+ for (i in preservedScriptAttributes) {
+ val = node[i] || node.getAttribute && node.getAttribute(i);
+ if (val) {
+ script.setAttribute(i, val);
+ }
+ }
+ }
+ doc.head.appendChild(script).parentNode.removeChild(script);
+ }
+ function toType2(obj) {
+ if (obj == null) {
+ return obj + "";
+ }
+ return typeof obj === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : typeof obj;
+ }
+ var version = "3.7.1", rhtmlSuffix = /HTML$/i, jQuery = function(selector, context) {
+ return new jQuery.fn.init(selector, context);
+ };
+ jQuery.fn = jQuery.prototype = {
+ // The current version of jQuery being used
+ jquery: version,
+ constructor: jQuery,
+ // The default length of a jQuery object is 0
+ length: 0,
+ toArray: function() {
+ return slice.call(this);
+ },
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function(num) {
+ if (num == null) {
+ return slice.call(this);
+ }
+ return num < 0 ? this[num + this.length] : this[num];
+ },
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function(elems) {
+ var ret = jQuery.merge(this.constructor(), elems);
+ ret.prevObject = this;
+ return ret;
+ },
+ // Execute a callback for every element in the matched set.
+ each: function(callback) {
+ return jQuery.each(this, callback);
+ },
+ map: function(callback) {
+ return this.pushStack(jQuery.map(this, function(elem, i) {
+ return callback.call(elem, i, elem);
+ }));
+ },
+ slice: function() {
+ return this.pushStack(slice.apply(this, arguments));
+ },
+ first: function() {
+ return this.eq(0);
+ },
+ last: function() {
+ return this.eq(-1);
+ },
+ even: function() {
+ return this.pushStack(jQuery.grep(this, function(_elem, i) {
+ return (i + 1) % 2;
+ }));
+ },
+ odd: function() {
+ return this.pushStack(jQuery.grep(this, function(_elem, i) {
+ return i % 2;
+ }));
+ },
+ eq: function(i) {
+ var len = this.length, j = +i + (i < 0 ? len : 0);
+ return this.pushStack(j >= 0 && j < len ? [this[j]] : []);
+ },
+ end: function() {
+ return this.prevObject || this.constructor();
+ },
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push,
+ sort: arr.sort,
+ splice: arr.splice
+ };
+ jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false;
+ if (typeof target === "boolean") {
+ deep = target;
+ target = arguments[i] || {};
+ i++;
+ }
+ if (typeof target !== "object" && !isFunction(target)) {
+ target = {};
+ }
+ if (i === length) {
+ target = this;
+ i--;
+ }
+ for (; i < length; i++) {
+ if ((options = arguments[i]) != null) {
+ for (name in options) {
+ copy = options[name];
+ if (name === "__proto__" || target === copy) {
+ continue;
+ }
+ if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
+ src = target[name];
+ if (copyIsArray && !Array.isArray(src)) {
+ clone = [];
+ } else if (!copyIsArray && !jQuery.isPlainObject(src)) {
+ clone = {};
+ } else {
+ clone = src;
+ }
+ copyIsArray = false;
+ target[name] = jQuery.extend(deep, clone, copy);
+ } else if (copy !== void 0) {
+ target[name] = copy;
+ }
+ }
+ }
+ }
+ return target;
+ };
+ jQuery.extend({
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+ error: function(msg) {
+ throw new Error(msg);
+ },
+ noop: function() {
+ },
+ isPlainObject: function(obj) {
+ var proto, Ctor;
+ if (!obj || toString.call(obj) !== "[object Object]") {
+ return false;
+ }
+ proto = getProto(obj);
+ if (!proto) {
+ return true;
+ }
+ Ctor = hasOwn.call(proto, "constructor") && proto.constructor;
+ return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString;
+ },
+ isEmptyObject: function(obj) {
+ var name;
+ for (name in obj) {
+ return false;
+ }
+ return true;
+ },
+ // Evaluates a script in a provided context; falls back to the global one
+ // if not specified.
+ globalEval: function(code, options, doc) {
+ DOMEval(code, { nonce: options && options.nonce }, doc);
+ },
+ each: function(obj, callback) {
+ var length, i = 0;
+ if (isArrayLike(obj)) {
+ length = obj.length;
+ for (; i < length; i++) {
+ if (callback.call(obj[i], i, obj[i]) === false) {
+ break;
+ }
+ }
+ } else {
+ for (i in obj) {
+ if (callback.call(obj[i], i, obj[i]) === false) {
+ break;
+ }
+ }
+ }
+ return obj;
+ },
+ // Retrieve the text value of an array of DOM nodes
+ text: function(elem) {
+ var node, ret = "", i = 0, nodeType = elem.nodeType;
+ if (!nodeType) {
+ while (node = elem[i++]) {
+ ret += jQuery.text(node);
+ }
+ }
+ if (nodeType === 1 || nodeType === 11) {
+ return elem.textContent;
+ }
+ if (nodeType === 9) {
+ return elem.documentElement.textContent;
+ }
+ if (nodeType === 3 || nodeType === 4) {
+ return elem.nodeValue;
+ }
+ return ret;
+ },
+ // results is for internal usage only
+ makeArray: function(arr2, results) {
+ var ret = results || [];
+ if (arr2 != null) {
+ if (isArrayLike(Object(arr2))) {
+ jQuery.merge(
+ ret,
+ typeof arr2 === "string" ? [arr2] : arr2
+ );
+ } else {
+ push.call(ret, arr2);
+ }
+ }
+ return ret;
+ },
+ inArray: function(elem, arr2, i) {
+ return arr2 == null ? -1 : indexOf.call(arr2, elem, i);
+ },
+ isXMLDoc: function(elem) {
+ var namespace = elem && elem.namespaceURI, docElem = elem && (elem.ownerDocument || elem).documentElement;
+ return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || "HTML");
+ },
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ merge: function(first, second) {
+ var len = +second.length, j = 0, i = first.length;
+ for (; j < len; j++) {
+ first[i++] = second[j];
+ }
+ first.length = i;
+ return first;
+ },
+ grep: function(elems, callback, invert) {
+ var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert;
+ for (; i < length; i++) {
+ callbackInverse = !callback(elems[i], i);
+ if (callbackInverse !== callbackExpect) {
+ matches.push(elems[i]);
+ }
+ }
+ return matches;
+ },
+ // arg is for internal usage only
+ map: function(elems, callback, arg) {
+ var length, value, i = 0, ret = [];
+ if (isArrayLike(elems)) {
+ length = elems.length;
+ for (; i < length; i++) {
+ value = callback(elems[i], i, arg);
+ if (value != null) {
+ ret.push(value);
+ }
+ }
+ } else {
+ for (i in elems) {
+ value = callback(elems[i], i, arg);
+ if (value != null) {
+ ret.push(value);
+ }
+ }
+ }
+ return flat(ret);
+ },
+ // A global GUID counter for objects
+ guid: 1,
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support
+ });
+ if (typeof Symbol === "function") {
+ jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];
+ }
+ jQuery.each(
+ "Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),
+ function(_i, name) {
+ class2type["[object " + name + "]"] = name.toLowerCase();
+ }
+ );
+ function isArrayLike(obj) {
+ var length = !!obj && "length" in obj && obj.length, type = toType2(obj);
+ if (isFunction(obj) || isWindow(obj)) {
+ return false;
+ }
+ return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj;
+ }
+ function nodeName(elem, name) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ }
+ var pop = arr.pop;
+ var sort = arr.sort;
+ var splice = arr.splice;
+ var whitespace = "[\\x20\\t\\r\\n\\f]";
+ var rtrimCSS = new RegExp(
+ "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
+ "g"
+ );
+ jQuery.contains = function(a, b) {
+ var bup = b && b.parentNode;
+ return a === bup || !!(bup && bup.nodeType === 1 && // Support: IE 9 - 11+
+ // IE doesn't have `contains` on SVG.
+ (a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));
+ };
+ var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
+ function fcssescape(ch, asCodePoint) {
+ if (asCodePoint) {
+ if (ch === "\0") {
+ return "\uFFFD";
+ }
+ return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " ";
+ }
+ return "\\" + ch;
+ }
+ jQuery.escapeSelector = function(sel) {
+ return (sel + "").replace(rcssescape, fcssescape);
+ };
+ var preferredDoc = document2, pushNative = push;
+ (function() {
+ var i, Expr, outermostContext, sortInput, hasDuplicate, push2 = pushNative, document3, documentElement2, documentIsHTML, rbuggyQSA, matches, expando = jQuery.expando, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), nonnativeSelectorCache = createCache(), sortOrder = function(a, b) {
+ if (a === b) {
+ hasDuplicate = true;
+ }
+ return 0;
+ }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ `*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(` + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + `)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|` + attributes + ")*)|.*)\\)|)", rwhitespace = new RegExp(whitespace + "+", "g"), rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), rleadingCombinator = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"), rdescend = new RegExp(whitespace + "|>"), rpseudo = new RegExp(pseudos), ridentifier = new RegExp("^" + identifier + "$"), matchExpr = {
+ ID: new RegExp("^#(" + identifier + ")"),
+ CLASS: new RegExp("^\\.(" + identifier + ")"),
+ TAG: new RegExp("^(" + identifier + "|[*])"),
+ ATTR: new RegExp("^" + attributes),
+ PSEUDO: new RegExp("^" + pseudos),
+ CHILD: new RegExp(
+ "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)",
+ "i"
+ ),
+ bool: new RegExp("^(?:" + booleans + ")$", "i"),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
+ }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rquickExpr2 = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, runescape = new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g"), funescape = function(escape, nonHex) {
+ var high = "0x" + escape.slice(1) - 65536;
+ if (nonHex) {
+ return nonHex;
+ }
+ return high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320);
+ }, unloadHandler = function() {
+ setDocument();
+ }, inDisabledFieldset = addCombinator(
+ function(elem) {
+ return elem.disabled === true && nodeName(elem, "fieldset");
+ },
+ { dir: "parentNode", next: "legend" }
+ );
+ function safeActiveElement() {
+ try {
+ return document3.activeElement;
+ } catch (err) {
+ }
+ }
+ try {
+ push2.apply(
+ arr = slice.call(preferredDoc.childNodes),
+ preferredDoc.childNodes
+ );
+ arr[preferredDoc.childNodes.length].nodeType;
+ } catch (e) {
+ push2 = {
+ apply: function(target, els) {
+ pushNative.apply(target, slice.call(els));
+ },
+ call: function(target) {
+ pushNative.apply(target, slice.call(arguments, 1));
+ }
+ };
+ }
+ function find(selector, context, results, seed) {
+ var m, i2, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, nodeType = context ? context.nodeType : 9;
+ results = results || [];
+ if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {
+ return results;
+ }
+ if (!seed) {
+ setDocument(context);
+ context = context || document3;
+ if (documentIsHTML) {
+ if (nodeType !== 11 && (match = rquickExpr2.exec(selector))) {
+ if (m = match[1]) {
+ if (nodeType === 9) {
+ if (elem = context.getElementById(m)) {
+ if (elem.id === m) {
+ push2.call(results, elem);
+ return results;
+ }
+ } else {
+ return results;
+ }
+ } else {
+ if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) {
+ push2.call(results, elem);
+ return results;
+ }
+ }
+ } else if (match[2]) {
+ push2.apply(results, context.getElementsByTagName(selector));
+ return results;
+ } else if ((m = match[3]) && context.getElementsByClassName) {
+ push2.apply(results, context.getElementsByClassName(m));
+ return results;
+ }
+ }
+ if (!nonnativeSelectorCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {
+ newSelector = selector;
+ newContext = context;
+ if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) {
+ newContext = rsibling.test(selector) && testContext(context.parentNode) || context;
+ if (newContext != context || !support.scope) {
+ if (nid = context.getAttribute("id")) {
+ nid = jQuery.escapeSelector(nid);
+ } else {
+ context.setAttribute("id", nid = expando);
+ }
+ }
+ groups = tokenize(selector);
+ i2 = groups.length;
+ while (i2--) {
+ groups[i2] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i2]);
+ }
+ newSelector = groups.join(",");
+ }
+ try {
+ push2.apply(
+ results,
+ newContext.querySelectorAll(newSelector)
+ );
+ return results;
+ } catch (qsaError) {
+ nonnativeSelectorCache(selector, true);
+ } finally {
+ if (nid === expando) {
+ context.removeAttribute("id");
+ }
+ }
+ }
+ }
+ }
+ return select(selector.replace(rtrimCSS, "$1"), context, results, seed);
+ }
+ function createCache() {
+ var keys = [];
+ function cache(key, value) {
+ if (keys.push(key + " ") > Expr.cacheLength) {
+ delete cache[keys.shift()];
+ }
+ return cache[key + " "] = value;
+ }
+ return cache;
+ }
+ function markFunction(fn2) {
+ fn2[expando] = true;
+ return fn2;
+ }
+ function assert(fn2) {
+ var el = document3.createElement("fieldset");
+ try {
+ return !!fn2(el);
+ } catch (e) {
+ return false;
+ } finally {
+ if (el.parentNode) {
+ el.parentNode.removeChild(el);
+ }
+ el = null;
+ }
+ }
+ function createInputPseudo(type) {
+ return function(elem) {
+ return nodeName(elem, "input") && elem.type === type;
+ };
+ }
+ function createButtonPseudo(type) {
+ return function(elem) {
+ return (nodeName(elem, "input") || nodeName(elem, "button")) && elem.type === type;
+ };
+ }
+ function createDisabledPseudo(disabled) {
+ return function(elem) {
+ if ("form" in elem) {
+ if (elem.parentNode && elem.disabled === false) {
+ if ("label" in elem) {
+ if ("label" in elem.parentNode) {
+ return elem.parentNode.disabled === disabled;
+ } else {
+ return elem.disabled === disabled;
+ }
+ }
+ return elem.isDisabled === disabled || // Where there is no isDisabled, check manually
+ elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;
+ }
+ return elem.disabled === disabled;
+ } else if ("label" in elem) {
+ return elem.disabled === disabled;
+ }
+ return false;
+ };
+ }
+ function createPositionalPseudo(fn2) {
+ return markFunction(function(argument) {
+ argument = +argument;
+ return markFunction(function(seed, matches2) {
+ var j, matchIndexes = fn2([], seed.length, argument), i2 = matchIndexes.length;
+ while (i2--) {
+ if (seed[j = matchIndexes[i2]]) {
+ seed[j] = !(matches2[j] = seed[j]);
+ }
+ }
+ });
+ });
+ }
+ function testContext(context) {
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
+ }
+ function setDocument(node) {
+ var subWindow, doc = node ? node.ownerDocument || node : preferredDoc;
+ if (doc == document3 || doc.nodeType !== 9 || !doc.documentElement) {
+ return document3;
+ }
+ document3 = doc;
+ documentElement2 = document3.documentElement;
+ documentIsHTML = !jQuery.isXMLDoc(document3);
+ matches = documentElement2.matches || documentElement2.webkitMatchesSelector || documentElement2.msMatchesSelector;
+ if (documentElement2.msMatchesSelector && // Support: IE 11+, Edge 17 - 18+
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
+ // two documents; shallow comparisons work.
+ // eslint-disable-next-line eqeqeq
+ preferredDoc != document3 && (subWindow = document3.defaultView) && subWindow.top !== subWindow) {
+ subWindow.addEventListener("unload", unloadHandler);
+ }
+ support.getById = assert(function(el) {
+ documentElement2.appendChild(el).id = jQuery.expando;
+ return !document3.getElementsByName || !document3.getElementsByName(jQuery.expando).length;
+ });
+ support.disconnectedMatch = assert(function(el) {
+ return matches.call(el, "*");
+ });
+ support.scope = assert(function() {
+ return document3.querySelectorAll(":scope");
+ });
+ support.cssHas = assert(function() {
+ try {
+ document3.querySelector(":has(*,:jqfake)");
+ return false;
+ } catch (e) {
+ return true;
+ }
+ });
+ if (support.getById) {
+ Expr.filter.ID = function(id) {
+ var attrId = id.replace(runescape, funescape);
+ return function(elem) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ Expr.find.ID = function(id, context) {
+ if (typeof context.getElementById !== "undefined" && documentIsHTML) {
+ var elem = context.getElementById(id);
+ return elem ? [elem] : [];
+ }
+ };
+ } else {
+ Expr.filter.ID = function(id) {
+ var attrId = id.replace(runescape, funescape);
+ return function(elem) {
+ var node2 = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+ return node2 && node2.value === attrId;
+ };
+ };
+ Expr.find.ID = function(id, context) {
+ if (typeof context.getElementById !== "undefined" && documentIsHTML) {
+ var node2, i2, elems, elem = context.getElementById(id);
+ if (elem) {
+ node2 = elem.getAttributeNode("id");
+ if (node2 && node2.value === id) {
+ return [elem];
+ }
+ elems = context.getElementsByName(id);
+ i2 = 0;
+ while (elem = elems[i2++]) {
+ node2 = elem.getAttributeNode("id");
+ if (node2 && node2.value === id) {
+ return [elem];
+ }
+ }
+ }
+ return [];
+ }
+ };
+ }
+ Expr.find.TAG = function(tag, context) {
+ if (typeof context.getElementsByTagName !== "undefined") {
+ return context.getElementsByTagName(tag);
+ } else {
+ return context.querySelectorAll(tag);
+ }
+ };
+ Expr.find.CLASS = function(className, context) {
+ if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) {
+ return context.getElementsByClassName(className);
+ }
+ };
+ rbuggyQSA = [];
+ assert(function(el) {
+ var input;
+ documentElement2.appendChild(el).innerHTML = "<a id='" + expando + "' href='' disabled='disabled'></a><select id='" + expando + "-\r\\' disabled='disabled'><option selected=''></option></select>";
+ if (!el.querySelectorAll("[selected]").length) {
+ rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")");
+ }
+ if (!el.querySelectorAll("[id~=" + expando + "-]").length) {
+ rbuggyQSA.push("~=");
+ }
+ if (!el.querySelectorAll("a#" + expando + "+*").length) {
+ rbuggyQSA.push(".#.+[+~]");
+ }
+ if (!el.querySelectorAll(":checked").length) {
+ rbuggyQSA.push(":checked");
+ }
+ input = document3.createElement("input");
+ input.setAttribute("type", "hidden");
+ el.appendChild(input).setAttribute("name", "D");
+ documentElement2.appendChild(el).disabled = true;
+ if (el.querySelectorAll(":disabled").length !== 2) {
+ rbuggyQSA.push(":enabled", ":disabled");
+ }
+ input = document3.createElement("input");
+ input.setAttribute("name", "");
+ el.appendChild(input);
+ if (!el.querySelectorAll("[name='']").length) {
+ rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + `*(?:''|"")`);
+ }
+ });
+ if (!support.cssHas) {
+ rbuggyQSA.push(":has");
+ }
+ rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|"));
+ sortOrder = function(a, b) {
+ if (a === b) {
+ hasDuplicate = true;
+ return 0;
+ }
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if (compare) {
+ return compare;
+ }
+ compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : (
+ // Otherwise we know they are disconnected
+ 1
+ );
+ if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {
+ if (a === document3 || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) {
+ return -1;
+ }
+ if (b === document3 || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) {
+ return 1;
+ }
+ return sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0;
+ }
+ return compare & 4 ? -1 : 1;
+ };
+ return document3;
+ }
+ find.matches = function(expr, elements) {
+ return find(expr, null, null, elements);
+ };
+ find.matchesSelector = function(elem, expr) {
+ setDocument(elem);
+ if (documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyQSA || !rbuggyQSA.test(expr))) {
+ try {
+ var ret = matches.call(elem, expr);
+ if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11) {
+ return ret;
+ }
+ } catch (e) {
+ nonnativeSelectorCache(expr, true);
+ }
+ }
+ return find(expr, document3, null, [elem]).length > 0;
+ };
+ find.contains = function(context, elem) {
+ if ((context.ownerDocument || context) != document3) {
+ setDocument(context);
+ }
+ return jQuery.contains(context, elem);
+ };
+ find.attr = function(elem, name) {
+ if ((elem.ownerDocument || elem) != document3) {
+ setDocument(elem);
+ }
+ var fn2 = Expr.attrHandle[name.toLowerCase()], val = fn2 && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn2(elem, name, !documentIsHTML) : void 0;
+ if (val !== void 0) {
+ return val;
+ }
+ return elem.getAttribute(name);
+ };
+ find.error = function(msg) {
+ throw new Error("Syntax error, unrecognized expression: " + msg);
+ };
+ jQuery.uniqueSort = function(results) {
+ var elem, duplicates = [], j = 0, i2 = 0;
+ hasDuplicate = !support.sortStable;
+ sortInput = !support.sortStable && slice.call(results, 0);
+ sort.call(results, sortOrder);
+ if (hasDuplicate) {
+ while (elem = results[i2++]) {
+ if (elem === results[i2]) {
+ j = duplicates.push(i2);
+ }
+ }
+ while (j--) {
+ splice.call(results, duplicates[j], 1);
+ }
+ }
+ sortInput = null;
+ return results;
+ };
+ jQuery.fn.uniqueSort = function() {
+ return this.pushStack(jQuery.uniqueSort(slice.apply(this)));
+ };
+ Expr = jQuery.expr = {
+ // Can be adjusted by the user
+ cacheLength: 50,
+ createPseudo: markFunction,
+ match: matchExpr,
+ attrHandle: {},
+ find: {},
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+ preFilter: {
+ ATTR: function(match) {
+ match[1] = match[1].replace(runescape, funescape);
+ match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape);
+ if (match[2] === "~=") {
+ match[3] = " " + match[3] + " ";
+ }
+ return match.slice(0, 4);
+ },
+ CHILD: function(match) {
+ match[1] = match[1].toLowerCase();
+ if (match[1].slice(0, 3) === "nth") {
+ if (!match[3]) {
+ find.error(match[0]);
+ }
+ match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd"));
+ match[5] = +(match[7] + match[8] || match[3] === "odd");
+ } else if (match[3]) {
+ find.error(match[0]);
+ }
+ return match;
+ },
+ PSEUDO: function(match) {
+ var excess, unquoted = !match[6] && match[2];
+ if (matchExpr.CHILD.test(match[0])) {
+ return null;
+ }
+ if (match[3]) {
+ match[2] = match[4] || match[5] || "";
+ } else if (unquoted && rpseudo.test(unquoted) && // Get excess from tokenize (recursively)
+ (excess = tokenize(unquoted, true)) && // advance to the next closing parenthesis
+ (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) {
+ match[0] = match[0].slice(0, excess);
+ match[2] = unquoted.slice(0, excess);
+ }
+ return match.slice(0, 3);
+ }
+ },
+ filter: {
+ TAG: function(nodeNameSelector) {
+ var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
+ return nodeNameSelector === "*" ? function() {
+ return true;
+ } : function(elem) {
+ return nodeName(elem, expectedNodeName);
+ };
+ },
+ CLASS: function(className) {
+ var pattern = classCache[className + " "];
+ return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function(elem) {
+ return pattern.test(
+ typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || ""
+ );
+ });
+ },
+ ATTR: function(name, operator, check) {
+ return function(elem) {
+ var result = find.attr(elem, name);
+ if (result == null) {
+ return operator === "!=";
+ }
+ if (!operator) {
+ return true;
+ }
+ result += "";
+ if (operator === "=") {
+ return result === check;
+ }
+ if (operator === "!=") {
+ return result !== check;
+ }
+ if (operator === "^=") {
+ return check && result.indexOf(check) === 0;
+ }
+ if (operator === "*=") {
+ return check && result.indexOf(check) > -1;
+ }
+ if (operator === "$=") {
+ return check && result.slice(-check.length) === check;
+ }
+ if (operator === "~=") {
+ return (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1;
+ }
+ if (operator === "|=") {
+ return result === check || result.slice(0, check.length + 1) === check + "-";
+ }
+ return false;
+ };
+ },
+ CHILD: function(type, what, _argument, first, last) {
+ var simple = type.slice(0, 3) !== "nth", forward = type.slice(-4) !== "last", ofType = what === "of-type";
+ return first === 1 && last === 0 ? (
+ // Shortcut for :nth-*(n)
+ function(elem) {
+ return !!elem.parentNode;
+ }
+ ) : function(elem, _context, xml) {
+ var cache, outerCache, node, nodeIndex, start2, dir2 = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false;
+ if (parent) {
+ if (simple) {
+ while (dir2) {
+ node = elem;
+ while (node = node[dir2]) {
+ if (ofType ? nodeName(node, name) : node.nodeType === 1) {
+ return false;
+ }
+ }
+ start2 = dir2 = type === "only" && !start2 && "nextSibling";
+ }
+ return true;
+ }
+ start2 = [forward ? parent.firstChild : parent.lastChild];
+ if (forward && useCache) {
+ outerCache = parent[expando] || (parent[expando] = {});
+ cache = outerCache[type] || [];
+ nodeIndex = cache[0] === dirruns && cache[1];
+ diff = nodeIndex && cache[2];
+ node = nodeIndex && parent.childNodes[nodeIndex];
+ while (node = ++nodeIndex && node && node[dir2] || // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start2.pop()) {
+ if (node.nodeType === 1 && ++diff && node === elem) {
+ outerCache[type] = [dirruns, nodeIndex, diff];
+ break;
+ }
+ }
+ } else {
+ if (useCache) {
+ outerCache = elem[expando] || (elem[expando] = {});
+ cache = outerCache[type] || [];
+ nodeIndex = cache[0] === dirruns && cache[1];
+ diff = nodeIndex;
+ }
+ if (diff === false) {
+ while (node = ++nodeIndex && node && node[dir2] || (diff = nodeIndex = 0) || start2.pop()) {
+ if ((ofType ? nodeName(node, name) : node.nodeType === 1) && ++diff) {
+ if (useCache) {
+ outerCache = node[expando] || (node[expando] = {});
+ outerCache[type] = [dirruns, diff];
+ }
+ if (node === elem) {
+ break;
+ }
+ }
+ }
+ }
+ }
+ diff -= last;
+ return diff === first || diff % first === 0 && diff / first >= 0;
+ }
+ };
+ },
+ PSEUDO: function(pseudo, argument) {
+ var args, fn2 = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error("unsupported pseudo: " + pseudo);
+ if (fn2[expando]) {
+ return fn2(argument);
+ }
+ if (fn2.length > 1) {
+ args = [pseudo, pseudo, "", argument];
+ return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed, matches2) {
+ var idx, matched = fn2(seed, argument), i2 = matched.length;
+ while (i2--) {
+ idx = indexOf.call(seed, matched[i2]);
+ seed[idx] = !(matches2[idx] = matched[i2]);
+ }
+ }) : function(elem) {
+ return fn2(elem, 0, args);
+ };
+ }
+ return fn2;
+ }
+ },
+ pseudos: {
+ // Potentially complex pseudos
+ not: markFunction(function(selector) {
+ var input = [], results = [], matcher = compile(selector.replace(rtrimCSS, "$1"));
+ return matcher[expando] ? markFunction(function(seed, matches2, _context, xml) {
+ var elem, unmatched = matcher(seed, null, xml, []), i2 = seed.length;
+ while (i2--) {
+ if (elem = unmatched[i2]) {
+ seed[i2] = !(matches2[i2] = elem);
+ }
+ }
+ }) : function(elem, _context, xml) {
+ input[0] = elem;
+ matcher(input, null, xml, results);
+ input[0] = null;
+ return !results.pop();
+ };
+ }),
+ has: markFunction(function(selector) {
+ return function(elem) {
+ return find(selector, elem).length > 0;
+ };
+ }),
+ contains: markFunction(function(text) {
+ text = text.replace(runescape, funescape);
+ return function(elem) {
+ return (elem.textContent || jQuery.text(elem)).indexOf(text) > -1;
+ };
+ }),
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // https://www.w3.org/TR/selectors/#lang-pseudo
+ lang: markFunction(function(lang) {
+ if (!ridentifier.test(lang || "")) {
+ find.error("unsupported lang: " + lang);
+ }
+ lang = lang.replace(runescape, funescape).toLowerCase();
+ return function(elem) {
+ var elemLang;
+ do {
+ if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) {
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf(lang + "-") === 0;
+ }
+ } while ((elem = elem.parentNode) && elem.nodeType === 1);
+ return false;
+ };
+ }),
+ // Miscellaneous
+ target: function(elem) {
+ var hash3 = window2.location && window2.location.hash;
+ return hash3 && hash3.slice(1) === elem.id;
+ },
+ root: function(elem) {
+ return elem === documentElement2;
+ },
+ focus: function(elem) {
+ return elem === safeActiveElement() && document3.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+ // Boolean properties
+ enabled: createDisabledPseudo(false),
+ disabled: createDisabledPseudo(true),
+ checked: function(elem) {
+ return nodeName(elem, "input") && !!elem.checked || nodeName(elem, "option") && !!elem.selected;
+ },
+ selected: function(elem) {
+ if (elem.parentNode) {
+ elem.parentNode.selectedIndex;
+ }
+ return elem.selected === true;
+ },
+ // Contents
+ empty: function(elem) {
+ for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
+ if (elem.nodeType < 6) {
+ return false;
+ }
+ }
+ return true;
+ },
+ parent: function(elem) {
+ return !Expr.pseudos.empty(elem);
+ },
+ // Element/input types
+ header: function(elem) {
+ return rheader.test(elem.nodeName);
+ },
+ input: function(elem) {
+ return rinputs.test(elem.nodeName);
+ },
+ button: function(elem) {
+ return nodeName(elem, "input") && elem.type === "button" || nodeName(elem, "button");
+ },
+ text: function(elem) {
+ var attr;
+ return nodeName(elem, "input") && elem.type === "text" && // Support: IE <10 only
+ // New HTML5 attribute values (e.g., "search") appear
+ // with elem.type === "text"
+ ((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text");
+ },
+ // Position-in-collection
+ first: createPositionalPseudo(function() {
+ return [0];
+ }),
+ last: createPositionalPseudo(function(_matchIndexes, length) {
+ return [length - 1];
+ }),
+ eq: createPositionalPseudo(function(_matchIndexes, length, argument) {
+ return [argument < 0 ? argument + length : argument];
+ }),
+ even: createPositionalPseudo(function(matchIndexes, length) {
+ var i2 = 0;
+ for (; i2 < length; i2 += 2) {
+ matchIndexes.push(i2);
+ }
+ return matchIndexes;
+ }),
+ odd: createPositionalPseudo(function(matchIndexes, length) {
+ var i2 = 1;
+ for (; i2 < length; i2 += 2) {
+ matchIndexes.push(i2);
+ }
+ return matchIndexes;
+ }),
+ lt: createPositionalPseudo(function(matchIndexes, length, argument) {
+ var i2;
+ if (argument < 0) {
+ i2 = argument + length;
+ } else if (argument > length) {
+ i2 = length;
+ } else {
+ i2 = argument;
+ }
+ for (; --i2 >= 0; ) {
+ matchIndexes.push(i2);
+ }
+ return matchIndexes;
+ }),
+ gt: createPositionalPseudo(function(matchIndexes, length, argument) {
+ var i2 = argument < 0 ? argument + length : argument;
+ for (; ++i2 < length; ) {
+ matchIndexes.push(i2);
+ }
+ return matchIndexes;
+ })
+ }
+ };
+ Expr.pseudos.nth = Expr.pseudos.eq;
+ for (i in { radio: true, checkbox: true, file: true, password: true, image: true }) {
+ Expr.pseudos[i] = createInputPseudo(i);
+ }
+ for (i in { submit: true, reset: true }) {
+ Expr.pseudos[i] = createButtonPseudo(i);
+ }
+ function setFilters() {
+ }
+ setFilters.prototype = Expr.filters = Expr.pseudos;
+ Expr.setFilters = new setFilters();
+ function tokenize(selector, parseOnly) {
+ var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + " "];
+ if (cached) {
+ return parseOnly ? 0 : cached.slice(0);
+ }
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+ while (soFar) {
+ if (!matched || (match = rcomma.exec(soFar))) {
+ if (match) {
+ soFar = soFar.slice(match[0].length) || soFar;
+ }
+ groups.push(tokens = []);
+ }
+ matched = false;
+ if (match = rleadingCombinator.exec(soFar)) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace(rtrimCSS, " ")
+ });
+ soFar = soFar.slice(matched.length);
+ }
+ for (type in Expr.filter) {
+ if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type,
+ matches: match
+ });
+ soFar = soFar.slice(matched.length);
+ }
+ }
+ if (!matched) {
+ break;
+ }
+ }
+ if (parseOnly) {
+ return soFar.length;
+ }
+ return soFar ? find.error(selector) : (
+ // Cache the tokens
+ tokenCache(selector, groups).slice(0)
+ );
+ }
+ function toSelector(tokens) {
+ var i2 = 0, len = tokens.length, selector = "";
+ for (; i2 < len; i2++) {
+ selector += tokens[i2].value;
+ }
+ return selector;
+ }
+ function addCombinator(matcher, combinator, base) {
+ var dir2 = combinator.dir, skip = combinator.next, key = skip || dir2, checkNonElements = base && key === "parentNode", doneName = done++;
+ return combinator.first ? (
+ // Check against closest ancestor/preceding element
+ function(elem, context, xml) {
+ while (elem = elem[dir2]) {
+ if (elem.nodeType === 1 || checkNonElements) {
+ return matcher(elem, context, xml);
+ }
+ }
+ return false;
+ }
+ ) : (
+ // Check against all ancestor/preceding elements
+ function(elem, context, xml) {
+ var oldCache, outerCache, newCache = [dirruns, doneName];
+ if (xml) {
+ while (elem = elem[dir2]) {
+ if (elem.nodeType === 1 || checkNonElements) {
+ if (matcher(elem, context, xml)) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while (elem = elem[dir2]) {
+ if (elem.nodeType === 1 || checkNonElements) {
+ outerCache = elem[expando] || (elem[expando] = {});
+ if (skip && nodeName(elem, skip)) {
+ elem = elem[dir2] || elem;
+ } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {
+ return newCache[2] = oldCache[2];
+ } else {
+ outerCache[key] = newCache;
+ if (newCache[2] = matcher(elem, context, xml)) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+ );
+ }
+ function elementMatcher(matchers) {
+ return matchers.length > 1 ? function(elem, context, xml) {
+ var i2 = matchers.length;
+ while (i2--) {
+ if (!matchers[i2](elem, context, xml)) {
+ return false;
+ }
+ }
+ return true;
+ } : matchers[0];
+ }
+ function multipleContexts(selector, contexts, results) {
+ var i2 = 0, len = contexts.length;
+ for (; i2 < len; i2++) {
+ find(selector, contexts[i2], results);
+ }
+ return results;
+ }
+ function condense(unmatched, map, filter, context, xml) {
+ var elem, newUnmatched = [], i2 = 0, len = unmatched.length, mapped = map != null;
+ for (; i2 < len; i2++) {
+ if (elem = unmatched[i2]) {
+ if (!filter || filter(elem, context, xml)) {
+ newUnmatched.push(elem);
+ if (mapped) {
+ map.push(i2);
+ }
+ }
+ }
+ }
+ return newUnmatched;
+ }
+ function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
+ if (postFilter && !postFilter[expando]) {
+ postFilter = setMatcher(postFilter);
+ }
+ if (postFinder && !postFinder[expando]) {
+ postFinder = setMatcher(postFinder, postSelector);
+ }
+ return markFunction(function(seed, results, context, xml) {
+ var temp, i2, elem, matcherOut, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(
+ selector || "*",
+ context.nodeType ? [context] : context,
+ []
+ ), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems;
+ if (matcher) {
+ matcherOut = postFinder || (seed ? preFilter : preexisting || postFilter) ? (
+ // ...intermediate processing is necessary
+ []
+ ) : (
+ // ...otherwise use results directly
+ results
+ );
+ matcher(matcherIn, matcherOut, context, xml);
+ } else {
+ matcherOut = matcherIn;
+ }
+ if (postFilter) {
+ temp = condense(matcherOut, postMap);
+ postFilter(temp, [], context, xml);
+ i2 = temp.length;
+ while (i2--) {
+ if (elem = temp[i2]) {
+ matcherOut[postMap[i2]] = !(matcherIn[postMap[i2]] = elem);
+ }
+ }
+ }
+ if (seed) {
+ if (postFinder || preFilter) {
+ if (postFinder) {
+ temp = [];
+ i2 = matcherOut.length;
+ while (i2--) {
+ if (elem = matcherOut[i2]) {
+ temp.push(matcherIn[i2] = elem);
+ }
+ }
+ postFinder(null, matcherOut = [], temp, xml);
+ }
+ i2 = matcherOut.length;
+ while (i2--) {
+ if ((elem = matcherOut[i2]) && (temp = postFinder ? indexOf.call(seed, elem) : preMap[i2]) > -1) {
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+ } else {
+ matcherOut = condense(
+ matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut
+ );
+ if (postFinder) {
+ postFinder(null, results, matcherOut, xml);
+ } else {
+ push2.apply(results, matcherOut);
+ }
+ }
+ });
+ }
+ function matcherFromTokens(tokens) {
+ var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i2 = leadingRelative ? 1 : 0, matchContext = addCombinator(function(elem) {
+ return elem === checkContext;
+ }, implicitRelative, true), matchAnyContext = addCombinator(function(elem) {
+ return indexOf.call(checkContext, elem) > -1;
+ }, implicitRelative, true), matchers = [function(elem, context, xml) {
+ var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
+ checkContext = null;
+ return ret;
+ }];
+ for (; i2 < len; i2++) {
+ if (matcher = Expr.relative[tokens[i2].type]) {
+ matchers = [addCombinator(elementMatcher(matchers), matcher)];
+ } else {
+ matcher = Expr.filter[tokens[i2].type].apply(null, tokens[i2].matches);
+ if (matcher[expando]) {
+ j = ++i2;
+ for (; j < len; j++) {
+ if (Expr.relative[tokens[j].type]) {
+ break;
+ }
+ }
+ return setMatcher(
+ i2 > 1 && elementMatcher(matchers),
+ i2 > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice(0, i2 - 1).concat({ value: tokens[i2 - 2].type === " " ? "*" : "" })
+ ).replace(rtrimCSS, "$1"),
+ matcher,
+ i2 < j && matcherFromTokens(tokens.slice(i2, j)),
+ j < len && matcherFromTokens(tokens = tokens.slice(j)),
+ j < len && toSelector(tokens)
+ );
+ }
+ matchers.push(matcher);
+ }
+ }
+ return elementMatcher(matchers);
+ }
+ function matcherFromGroupMatchers(elementMatchers, setMatchers) {
+ var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function(seed, context, xml, results, outermost) {
+ var elem, j, matcher, matchedCount = 0, i2 = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG("*", outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;
+ if (outermost) {
+ outermostContext = context == document3 || context || outermost;
+ }
+ for (; i2 !== len && (elem = elems[i2]) != null; i2++) {
+ if (byElement && elem) {
+ j = 0;
+ if (!context && elem.ownerDocument != document3) {
+ setDocument(elem);
+ xml = !documentIsHTML;
+ }
+ while (matcher = elementMatchers[j++]) {
+ if (matcher(elem, context || document3, xml)) {
+ push2.call(results, elem);
+ break;
+ }
+ }
+ if (outermost) {
+ dirruns = dirrunsUnique;
+ }
+ }
+ if (bySet) {
+ if (elem = !matcher && elem) {
+ matchedCount--;
+ }
+ if (seed) {
+ unmatched.push(elem);
+ }
+ }
+ }
+ matchedCount += i2;
+ if (bySet && i2 !== matchedCount) {
+ j = 0;
+ while (matcher = setMatchers[j++]) {
+ matcher(unmatched, setMatched, context, xml);
+ }
+ if (seed) {
+ if (matchedCount > 0) {
+ while (i2--) {
+ if (!(unmatched[i2] || setMatched[i2])) {
+ setMatched[i2] = pop.call(results);
+ }
+ }
+ }
+ setMatched = condense(setMatched);
+ }
+ push2.apply(results, setMatched);
+ if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {
+ jQuery.uniqueSort(results);
+ }
+ }
+ if (outermost) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+ return unmatched;
+ };
+ return bySet ? markFunction(superMatcher) : superMatcher;
+ }
+ function compile(selector, match) {
+ var i2, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + " "];
+ if (!cached) {
+ if (!match) {
+ match = tokenize(selector);
+ }
+ i2 = match.length;
+ while (i2--) {
+ cached = matcherFromTokens(match[i2]);
+ if (cached[expando]) {
+ setMatchers.push(cached);
+ } else {
+ elementMatchers.push(cached);
+ }
+ }
+ cached = compilerCache(
+ selector,
+ matcherFromGroupMatchers(elementMatchers, setMatchers)
+ );
+ cached.selector = selector;
+ }
+ return cached;
+ }
+ function select(selector, context, results, seed) {
+ var i2, tokens, token, type, find2, compiled = typeof selector === "function" && selector, match = !seed && tokenize(selector = compiled.selector || selector);
+ results = results || [];
+ if (match.length === 1) {
+ tokens = match[0] = match[0].slice(0);
+ if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {
+ context = (Expr.find.ID(
+ token.matches[0].replace(runescape, funescape),
+ context
+ ) || [])[0];
+ if (!context) {
+ return results;
+ } else if (compiled) {
+ context = context.parentNode;
+ }
+ selector = selector.slice(tokens.shift().value.length);
+ }
+ i2 = matchExpr.needsContext.test(selector) ? 0 : tokens.length;
+ while (i2--) {
+ token = tokens[i2];
+ if (Expr.relative[type = token.type]) {
+ break;
+ }
+ if (find2 = Expr.find[type]) {
+ if (seed = find2(
+ token.matches[0].replace(runescape, funescape),
+ rsibling.test(tokens[0].type) && testContext(context.parentNode) || context
+ )) {
+ tokens.splice(i2, 1);
+ selector = seed.length && toSelector(tokens);
+ if (!selector) {
+ push2.apply(results, seed);
+ return results;
+ }
+ break;
+ }
+ }
+ }
+ }
+ (compiled || compile(selector, match))(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ !context || rsibling.test(selector) && testContext(context.parentNode) || context
+ );
+ return results;
+ }
+ support.sortStable = expando.split("").sort(sortOrder).join("") === expando;
+ setDocument();
+ support.sortDetached = assert(function(el) {
+ return el.compareDocumentPosition(document3.createElement("fieldset")) & 1;
+ });
+ jQuery.find = find;
+ jQuery.expr[":"] = jQuery.expr.pseudos;
+ jQuery.unique = jQuery.uniqueSort;
+ find.compile = compile;
+ find.select = select;
+ find.setDocument = setDocument;
+ find.tokenize = tokenize;
+ find.escape = jQuery.escapeSelector;
+ find.getText = jQuery.text;
+ find.isXML = jQuery.isXMLDoc;
+ find.selectors = jQuery.expr;
+ find.support = jQuery.support;
+ find.uniqueSort = jQuery.uniqueSort;
+ })();
+ var dir = function(elem, dir2, until) {
+ var matched = [], truncate = until !== void 0;
+ while ((elem = elem[dir2]) && elem.nodeType !== 9) {
+ if (elem.nodeType === 1) {
+ if (truncate && jQuery(elem).is(until)) {
+ break;
+ }
+ matched.push(elem);
+ }
+ }
+ return matched;
+ };
+ var siblings = function(n, elem) {
+ var matched = [];
+ for (; n; n = n.nextSibling) {
+ if (n.nodeType === 1 && n !== elem) {
+ matched.push(n);
+ }
+ }
+ return matched;
+ };
+ var rneedsContext = jQuery.expr.match.needsContext;
+ var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
+ function winnow(elements, qualifier, not) {
+ if (isFunction(qualifier)) {
+ return jQuery.grep(elements, function(elem, i) {
+ return !!qualifier.call(elem, i, elem) !== not;
+ });
+ }
+ if (qualifier.nodeType) {
+ return jQuery.grep(elements, function(elem) {
+ return elem === qualifier !== not;
+ });
+ }
+ if (typeof qualifier !== "string") {
+ return jQuery.grep(elements, function(elem) {
+ return indexOf.call(qualifier, elem) > -1 !== not;
+ });
+ }
+ return jQuery.filter(qualifier, elements, not);
+ }
+ jQuery.filter = function(expr, elems, not) {
+ var elem = elems[0];
+ if (not) {
+ expr = ":not(" + expr + ")";
+ }
+ if (elems.length === 1 && elem.nodeType === 1) {
+ return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];
+ }
+ return jQuery.find.matches(expr, jQuery.grep(elems, function(elem2) {
+ return elem2.nodeType === 1;
+ }));
+ };
+ jQuery.fn.extend({
+ find: function(selector) {
+ var i, ret, len = this.length, self = this;
+ if (typeof selector !== "string") {
+ return this.pushStack(jQuery(selector).filter(function() {
+ for (i = 0; i < len; i++) {
+ if (jQuery.contains(self[i], this)) {
+ return true;
+ }
+ }
+ }));
+ }
+ ret = this.pushStack([]);
+ for (i = 0; i < len; i++) {
+ jQuery.find(selector, self[i], ret);
+ }
+ return len > 1 ? jQuery.uniqueSort(ret) : ret;
+ },
+ filter: function(selector) {
+ return this.pushStack(winnow(this, selector || [], false));
+ },
+ not: function(selector) {
+ return this.pushStack(winnow(this, selector || [], true));
+ },
+ is: function(selector) {
+ return !!winnow(
+ this,
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test(selector) ? jQuery(selector) : selector || [],
+ false
+ ).length;
+ }
+ });
+ var rootjQuery, rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, init = jQuery.fn.init = function(selector, context, root) {
+ var match, elem;
+ if (!selector) {
+ return this;
+ }
+ root = root || rootjQuery;
+ if (typeof selector === "string") {
+ if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) {
+ match = [null, selector, null];
+ } else {
+ match = rquickExpr.exec(selector);
+ }
+ if (match && (match[1] || !context)) {
+ if (match[1]) {
+ context = context instanceof jQuery ? context[0] : context;
+ jQuery.merge(this, jQuery.parseHTML(
+ match[1],
+ context && context.nodeType ? context.ownerDocument || context : document2,
+ true
+ ));
+ if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {
+ for (match in context) {
+ if (isFunction(this[match])) {
+ this[match](context[match]);
+ } else {
+ this.attr(match, context[match]);
+ }
+ }
+ }
+ return this;
+ } else {
+ elem = document2.getElementById(match[2]);
+ if (elem) {
+ this[0] = elem;
+ this.length = 1;
+ }
+ return this;
+ }
+ } else if (!context || context.jquery) {
+ return (context || root).find(selector);
+ } else {
+ return this.constructor(context).find(selector);
+ }
+ } else if (selector.nodeType) {
+ this[0] = selector;
+ this.length = 1;
+ return this;
+ } else if (isFunction(selector)) {
+ return root.ready !== void 0 ? root.ready(selector) : (
+ // Execute immediately if ready is not present
+ selector(jQuery)
+ );
+ }
+ return jQuery.makeArray(selector, this);
+ };
+ init.prototype = jQuery.fn;
+ rootjQuery = jQuery(document2);
+ var rparentsprev = /^(?:parents|prev(?:Until|All))/, guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+ jQuery.fn.extend({
+ has: function(target) {
+ var targets = jQuery(target, this), l = targets.length;
+ return this.filter(function() {
+ var i = 0;
+ for (; i < l; i++) {
+ if (jQuery.contains(this, targets[i])) {
+ return true;
+ }
+ }
+ });
+ },
+ closest: function(selectors, context) {
+ var cur, i = 0, l = this.length, matched = [], targets = typeof selectors !== "string" && jQuery(selectors);
+ if (!rneedsContext.test(selectors)) {
+ for (; i < l; i++) {
+ for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {
+ if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : (
+ // Don't pass non-elements to jQuery#find
+ cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors)
+ ))) {
+ matched.push(cur);
+ break;
+ }
+ }
+ }
+ }
+ return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);
+ },
+ // Determine the position of an element within the set
+ index: function(elem) {
+ if (!elem) {
+ return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
+ }
+ if (typeof elem === "string") {
+ return indexOf.call(jQuery(elem), this[0]);
+ }
+ return indexOf.call(
+ this,
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem
+ );
+ },
+ add: function(selector, context) {
+ return this.pushStack(
+ jQuery.uniqueSort(
+ jQuery.merge(this.get(), jQuery(selector, context))
+ )
+ );
+ },
+ addBack: function(selector) {
+ return this.add(
+ selector == null ? this.prevObject : this.prevObject.filter(selector)
+ );
+ }
+ });
+ function sibling(cur, dir2) {
+ while ((cur = cur[dir2]) && cur.nodeType !== 1) {
+ }
+ return cur;
+ }
+ jQuery.each({
+ parent: function(elem) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function(elem) {
+ return dir(elem, "parentNode");
+ },
+ parentsUntil: function(elem, _i, until) {
+ return dir(elem, "parentNode", until);
+ },
+ next: function(elem) {
+ return sibling(elem, "nextSibling");
+ },
+ prev: function(elem) {
+ return sibling(elem, "previousSibling");
+ },
+ nextAll: function(elem) {
+ return dir(elem, "nextSibling");
+ },
+ prevAll: function(elem) {
+ return dir(elem, "previousSibling");
+ },
+ nextUntil: function(elem, _i, until) {
+ return dir(elem, "nextSibling", until);
+ },
+ prevUntil: function(elem, _i, until) {
+ return dir(elem, "previousSibling", until);
+ },
+ siblings: function(elem) {
+ return siblings((elem.parentNode || {}).firstChild, elem);
+ },
+ children: function(elem) {
+ return siblings(elem.firstChild);
+ },
+ contents: function(elem) {
+ if (elem.contentDocument != null && // Support: IE 11+
+ // <object> elements with no `data` attribute has an object
+ // `contentDocument` with a `null` prototype.
+ getProto(elem.contentDocument)) {
+ return elem.contentDocument;
+ }
+ if (nodeName(elem, "template")) {
+ elem = elem.content || elem;
+ }
+ return jQuery.merge([], elem.childNodes);
+ }
+ }, function(name, fn2) {
+ jQuery.fn[name] = function(until, selector) {
+ var matched = jQuery.map(this, fn2, until);
+ if (name.slice(-5) !== "Until") {
+ selector = until;
+ }
+ if (selector && typeof selector === "string") {
+ matched = jQuery.filter(selector, matched);
+ }
+ if (this.length > 1) {
+ if (!guaranteedUnique[name]) {
+ jQuery.uniqueSort(matched);
+ }
+ if (rparentsprev.test(name)) {
+ matched.reverse();
+ }
+ }
+ return this.pushStack(matched);
+ };
+ });
+ var rnothtmlwhite = /[^\x20\t\r\n\f]+/g;
+ function createOptions(options) {
+ var object = {};
+ jQuery.each(options.match(rnothtmlwhite) || [], function(_, flag) {
+ object[flag] = true;
+ });
+ return object;
+ }
+ jQuery.Callbacks = function(options) {
+ options = typeof options === "string" ? createOptions(options) : jQuery.extend({}, options);
+ var firing, memory, fired, locked, list = [], queue = [], firingIndex = -1, fire = function() {
+ locked = locked || options.once;
+ fired = firing = true;
+ for (; queue.length; firingIndex = -1) {
+ memory = queue.shift();
+ while (++firingIndex < list.length) {
+ if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {
+ firingIndex = list.length;
+ memory = false;
+ }
+ }
+ }
+ if (!options.memory) {
+ memory = false;
+ }
+ firing = false;
+ if (locked) {
+ if (memory) {
+ list = [];
+ } else {
+ list = "";
+ }
+ }
+ }, self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if (list) {
+ if (memory && !firing) {
+ firingIndex = list.length - 1;
+ queue.push(memory);
+ }
+ (function add(args) {
+ jQuery.each(args, function(_, arg) {
+ if (isFunction(arg)) {
+ if (!options.unique || !self.has(arg)) {
+ list.push(arg);
+ }
+ } else if (arg && arg.length && toType2(arg) !== "string") {
+ add(arg);
+ }
+ });
+ })(arguments);
+ if (memory && !firing) {
+ fire();
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ jQuery.each(arguments, function(_, arg) {
+ var index;
+ while ((index = jQuery.inArray(arg, list, index)) > -1) {
+ list.splice(index, 1);
+ if (index <= firingIndex) {
+ firingIndex--;
+ }
+ }
+ });
+ return this;
+ },
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function(fn2) {
+ return fn2 ? jQuery.inArray(fn2, list) > -1 : list.length > 0;
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ if (list) {
+ list = [];
+ }
+ return this;
+ },
+ // Disable .fire and .add
+ // Abort any current/pending executions
+ // Clear all callbacks and values
+ disable: function() {
+ locked = queue = [];
+ list = memory = "";
+ return this;
+ },
+ disabled: function() {
+ return !list;
+ },
+ // Disable .fire
+ // Also disable .add unless we have memory (since it would have no effect)
+ // Abort any pending executions
+ lock: function() {
+ locked = queue = [];
+ if (!memory && !firing) {
+ list = memory = "";
+ }
+ return this;
+ },
+ locked: function() {
+ return !!locked;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function(context, args) {
+ if (!locked) {
+ args = args || [];
+ args = [context, args.slice ? args.slice() : args];
+ queue.push(args);
+ if (!firing) {
+ fire();
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith(this, arguments);
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+ return self;
+ };
+ function Identity(v) {
+ return v;
+ }
+ function Thrower(ex) {
+ throw ex;
+ }
+ function adoptValue(value, resolve, reject, noValue) {
+ var method;
+ try {
+ if (value && isFunction(method = value.promise)) {
+ method.call(value).done(resolve).fail(reject);
+ } else if (value && isFunction(method = value.then)) {
+ method.call(value, resolve, reject);
+ } else {
+ resolve.apply(void 0, [value].slice(noValue));
+ }
+ } catch (value2) {
+ reject.apply(void 0, [value2]);
+ }
+ }
+ jQuery.extend({
+ Deferred: function(func) {
+ var tuples = [
+ // action, add listener, callbacks,
+ // ... .then handlers, argument index, [final state]
+ [
+ "notify",
+ "progress",
+ jQuery.Callbacks("memory"),
+ jQuery.Callbacks("memory"),
+ 2
+ ],
+ [
+ "resolve",
+ "done",
+ jQuery.Callbacks("once memory"),
+ jQuery.Callbacks("once memory"),
+ 0,
+ "resolved"
+ ],
+ [
+ "reject",
+ "fail",
+ jQuery.Callbacks("once memory"),
+ jQuery.Callbacks("once memory"),
+ 1,
+ "rejected"
+ ]
+ ], state = "pending", promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done(arguments).fail(arguments);
+ return this;
+ },
+ "catch": function(fn2) {
+ return promise.then(null, fn2);
+ },
+ // Keep pipe for back-compat
+ pipe: function() {
+ var fns = arguments;
+ return jQuery.Deferred(function(newDefer) {
+ jQuery.each(tuples, function(_i, tuple) {
+ var fn2 = isFunction(fns[tuple[4]]) && fns[tuple[4]];
+ deferred[tuple[1]](function() {
+ var returned = fn2 && fn2.apply(this, arguments);
+ if (returned && isFunction(returned.promise)) {
+ returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);
+ } else {
+ newDefer[tuple[0] + "With"](
+ this,
+ fn2 ? [returned] : arguments
+ );
+ }
+ });
+ });
+ fns = null;
+ }).promise();
+ },
+ then: function(onFulfilled, onRejected, onProgress) {
+ var maxDepth = 0;
+ function resolve(depth, deferred2, handler, special) {
+ return function() {
+ var that = this, args = arguments, mightThrow = function() {
+ var returned, then;
+ if (depth < maxDepth) {
+ return;
+ }
+ returned = handler.apply(that, args);
+ if (returned === deferred2.promise()) {
+ throw new TypeError("Thenable self-resolution");
+ }
+ then = returned && // Support: Promises/A+ section 2.3.4
+ // https://promisesaplus.com/#point-64
+ // Only check objects and functions for thenability
+ (typeof returned === "object" || typeof returned === "function") && returned.then;
+ if (isFunction(then)) {
+ if (special) {
+ then.call(
+ returned,
+ resolve(maxDepth, deferred2, Identity, special),
+ resolve(maxDepth, deferred2, Thrower, special)
+ );
+ } else {
+ maxDepth++;
+ then.call(
+ returned,
+ resolve(maxDepth, deferred2, Identity, special),
+ resolve(maxDepth, deferred2, Thrower, special),
+ resolve(
+ maxDepth,
+ deferred2,
+ Identity,
+ deferred2.notifyWith
+ )
+ );
+ }
+ } else {
+ if (handler !== Identity) {
+ that = void 0;
+ args = [returned];
+ }
+ (special || deferred2.resolveWith)(that, args);
+ }
+ }, process = special ? mightThrow : function() {
+ try {
+ mightThrow();
+ } catch (e) {
+ if (jQuery.Deferred.exceptionHook) {
+ jQuery.Deferred.exceptionHook(
+ e,
+ process.error
+ );
+ }
+ if (depth + 1 >= maxDepth) {
+ if (handler !== Thrower) {
+ that = void 0;
+ args = [e];
+ }
+ deferred2.rejectWith(that, args);
+ }
+ }
+ };
+ if (depth) {
+ process();
+ } else {
+ if (jQuery.Deferred.getErrorHook) {
+ process.error = jQuery.Deferred.getErrorHook();
+ } else if (jQuery.Deferred.getStackHook) {
+ process.error = jQuery.Deferred.getStackHook();
+ }
+ window2.setTimeout(process);
+ }
+ };
+ }
+ return jQuery.Deferred(function(newDefer) {
+ tuples[0][3].add(
+ resolve(
+ 0,
+ newDefer,
+ isFunction(onProgress) ? onProgress : Identity,
+ newDefer.notifyWith
+ )
+ );
+ tuples[1][3].add(
+ resolve(
+ 0,
+ newDefer,
+ isFunction(onFulfilled) ? onFulfilled : Identity
+ )
+ );
+ tuples[2][3].add(
+ resolve(
+ 0,
+ newDefer,
+ isFunction(onRejected) ? onRejected : Thrower
+ )
+ );
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function(obj) {
+ return obj != null ? jQuery.extend(obj, promise) : promise;
+ }
+ }, deferred = {};
+ jQuery.each(tuples, function(i, tuple) {
+ var list = tuple[2], stateString = tuple[5];
+ promise[tuple[1]] = list.add;
+ if (stateString) {
+ list.add(
+ function() {
+ state = stateString;
+ },
+ // rejected_callbacks.disable
+ // fulfilled_callbacks.disable
+ tuples[3 - i][2].disable,
+ // rejected_handlers.disable
+ // fulfilled_handlers.disable
+ tuples[3 - i][3].disable,
+ // progress_callbacks.lock
+ tuples[0][2].lock,
+ // progress_handlers.lock
+ tuples[0][3].lock
+ );
+ }
+ list.add(tuple[3].fire);
+ deferred[tuple[0]] = function() {
+ deferred[tuple[0] + "With"](this === deferred ? void 0 : this, arguments);
+ return this;
+ };
+ deferred[tuple[0] + "With"] = list.fireWith;
+ });
+ promise.promise(deferred);
+ if (func) {
+ func.call(deferred, deferred);
+ }
+ return deferred;
+ },
+ // Deferred helper
+ when: function(singleValue) {
+ var remaining = arguments.length, i = remaining, resolveContexts = Array(i), resolveValues = slice.call(arguments), primary = jQuery.Deferred(), updateFunc = function(i2) {
+ return function(value) {
+ resolveContexts[i2] = this;
+ resolveValues[i2] = arguments.length > 1 ? slice.call(arguments) : value;
+ if (!--remaining) {
+ primary.resolveWith(resolveContexts, resolveValues);
+ }
+ };
+ };
+ if (remaining <= 1) {
+ adoptValue(
+ singleValue,
+ primary.done(updateFunc(i)).resolve,
+ primary.reject,
+ !remaining
+ );
+ if (primary.state() === "pending" || isFunction(resolveValues[i] && resolveValues[i].then)) {
+ return primary.then();
+ }
+ }
+ while (i--) {
+ adoptValue(resolveValues[i], updateFunc(i), primary.reject);
+ }
+ return primary.promise();
+ }
+ });
+ var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+ jQuery.Deferred.exceptionHook = function(error, asyncError) {
+ if (window2.console && window2.console.warn && error && rerrorNames.test(error.name)) {
+ window2.console.warn(
+ "jQuery.Deferred exception: " + error.message,
+ error.stack,
+ asyncError
+ );
+ }
+ };
+ jQuery.readyException = function(error) {
+ window2.setTimeout(function() {
+ throw error;
+ });
+ };
+ var readyList = jQuery.Deferred();
+ jQuery.fn.ready = function(fn2) {
+ readyList.then(fn2).catch(function(error) {
+ jQuery.readyException(error);
+ });
+ return this;
+ };
+ jQuery.extend({
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+ // A counter to track how many items to wait for before
+ // the ready event fires. See trac-6781
+ readyWait: 1,
+ // Handle when the DOM is ready
+ ready: function(wait) {
+ if (wait === true ? --jQuery.readyWait : jQuery.isReady) {
+ return;
+ }
+ jQuery.isReady = true;
+ if (wait !== true && --jQuery.readyWait > 0) {
+ return;
+ }
+ readyList.resolveWith(document2, [jQuery]);
+ }
+ });
+ jQuery.ready.then = readyList.then;
+ function completed() {
+ document2.removeEventListener("DOMContentLoaded", completed);
+ window2.removeEventListener("load", completed);
+ jQuery.ready();
+ }
+ if (document2.readyState === "complete" || document2.readyState !== "loading" && !document2.documentElement.doScroll) {
+ window2.setTimeout(jQuery.ready);
+ } else {
+ document2.addEventListener("DOMContentLoaded", completed);
+ window2.addEventListener("load", completed);
+ }
+ var access = function(elems, fn2, key, value, chainable, emptyGet, raw) {
+ var i = 0, len = elems.length, bulk = key == null;
+ if (toType2(key) === "object") {
+ chainable = true;
+ for (i in key) {
+ access(elems, fn2, i, key[i], true, emptyGet, raw);
+ }
+ } else if (value !== void 0) {
+ chainable = true;
+ if (!isFunction(value)) {
+ raw = true;
+ }
+ if (bulk) {
+ if (raw) {
+ fn2.call(elems, value);
+ fn2 = null;
+ } else {
+ bulk = fn2;
+ fn2 = function(elem, _key, value2) {
+ return bulk.call(jQuery(elem), value2);
+ };
+ }
+ }
+ if (fn2) {
+ for (; i < len; i++) {
+ fn2(
+ elems[i],
+ key,
+ raw ? value : value.call(elems[i], i, fn2(elems[i], key))
+ );
+ }
+ }
+ }
+ if (chainable) {
+ return elems;
+ }
+ if (bulk) {
+ return fn2.call(elems);
+ }
+ return len ? fn2(elems[0], key) : emptyGet;
+ };
+ var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g;
+ function fcamelCase(_all, letter) {
+ return letter.toUpperCase();
+ }
+ function camelCase(string) {
+ return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
+ }
+ var acceptData = function(owner) {
+ return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;
+ };
+ function Data2() {
+ this.expando = jQuery.expando + Data2.uid++;
+ }
+ Data2.uid = 1;
+ Data2.prototype = {
+ cache: function(owner) {
+ var value = owner[this.expando];
+ if (!value) {
+ value = {};
+ if (acceptData(owner)) {
+ if (owner.nodeType) {
+ owner[this.expando] = value;
+ } else {
+ Object.defineProperty(owner, this.expando, {
+ value,
+ configurable: true
+ });
+ }
+ }
+ }
+ return value;
+ },
+ set: function(owner, data, value) {
+ var prop, cache = this.cache(owner);
+ if (typeof data === "string") {
+ cache[camelCase(data)] = value;
+ } else {
+ for (prop in data) {
+ cache[camelCase(prop)] = data[prop];
+ }
+ }
+ return cache;
+ },
+ get: function(owner, key) {
+ return key === void 0 ? this.cache(owner) : (
+ // Always use camelCase key (gh-2257)
+ owner[this.expando] && owner[this.expando][camelCase(key)]
+ );
+ },
+ access: function(owner, key, value) {
+ if (key === void 0 || key && typeof key === "string" && value === void 0) {
+ return this.get(owner, key);
+ }
+ this.set(owner, key, value);
+ return value !== void 0 ? value : key;
+ },
+ remove: function(owner, key) {
+ var i, cache = owner[this.expando];
+ if (cache === void 0) {
+ return;
+ }
+ if (key !== void 0) {
+ if (Array.isArray(key)) {
+ key = key.map(camelCase);
+ } else {
+ key = camelCase(key);
+ key = key in cache ? [key] : key.match(rnothtmlwhite) || [];
+ }
+ i = key.length;
+ while (i--) {
+ delete cache[key[i]];
+ }
+ }
+ if (key === void 0 || jQuery.isEmptyObject(cache)) {
+ if (owner.nodeType) {
+ owner[this.expando] = void 0;
+ } else {
+ delete owner[this.expando];
+ }
+ }
+ },
+ hasData: function(owner) {
+ var cache = owner[this.expando];
+ return cache !== void 0 && !jQuery.isEmptyObject(cache);
+ }
+ };
+ var dataPriv = new Data2();
+ var dataUser = new Data2();
+ var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g;
+ function getData(data) {
+ if (data === "true") {
+ return true;
+ }
+ if (data === "false") {
+ return false;
+ }
+ if (data === "null") {
+ return null;
+ }
+ if (data === +data + "") {
+ return +data;
+ }
+ if (rbrace.test(data)) {
+ return JSON.parse(data);
+ }
+ return data;
+ }
+ function dataAttr(elem, key, data) {
+ var name;
+ if (data === void 0 && elem.nodeType === 1) {
+ name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase();
+ data = elem.getAttribute(name);
+ if (typeof data === "string") {
+ try {
+ data = getData(data);
+ } catch (e) {
+ }
+ dataUser.set(elem, key, data);
+ } else {
+ data = void 0;
+ }
+ }
+ return data;
+ }
+ jQuery.extend({
+ hasData: function(elem) {
+ return dataUser.hasData(elem) || dataPriv.hasData(elem);
+ },
+ data: function(elem, name, data) {
+ return dataUser.access(elem, name, data);
+ },
+ removeData: function(elem, name) {
+ dataUser.remove(elem, name);
+ },
+ // TODO: Now that all calls to _data and _removeData have been replaced
+ // with direct calls to dataPriv methods, these can be deprecated.
+ _data: function(elem, name, data) {
+ return dataPriv.access(elem, name, data);
+ },
+ _removeData: function(elem, name) {
+ dataPriv.remove(elem, name);
+ }
+ });
+ jQuery.fn.extend({
+ data: function(key, value) {
+ var i, name, data, elem = this[0], attrs = elem && elem.attributes;
+ if (key === void 0) {
+ if (this.length) {
+ data = dataUser.get(elem);
+ if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) {
+ i = attrs.length;
+ while (i--) {
+ if (attrs[i]) {
+ name = attrs[i].name;
+ if (name.indexOf("data-") === 0) {
+ name = camelCase(name.slice(5));
+ dataAttr(elem, name, data[name]);
+ }
+ }
+ }
+ dataPriv.set(elem, "hasDataAttrs", true);
+ }
+ }
+ return data;
+ }
+ if (typeof key === "object") {
+ return this.each(function() {
+ dataUser.set(this, key);
+ });
+ }
+ return access(this, function(value2) {
+ var data2;
+ if (elem && value2 === void 0) {
+ data2 = dataUser.get(elem, key);
+ if (data2 !== void 0) {
+ return data2;
+ }
+ data2 = dataAttr(elem, key);
+ if (data2 !== void 0) {
+ return data2;
+ }
+ return;
+ }
+ this.each(function() {
+ dataUser.set(this, key, value2);
+ });
+ }, null, value, arguments.length > 1, null, true);
+ },
+ removeData: function(key) {
+ return this.each(function() {
+ dataUser.remove(this, key);
+ });
+ }
+ });
+ jQuery.extend({
+ queue: function(elem, type, data) {
+ var queue;
+ if (elem) {
+ type = (type || "fx") + "queue";
+ queue = dataPriv.get(elem, type);
+ if (data) {
+ if (!queue || Array.isArray(data)) {
+ queue = dataPriv.access(elem, type, jQuery.makeArray(data));
+ } else {
+ queue.push(data);
+ }
+ }
+ return queue || [];
+ }
+ },
+ dequeue: function(elem, type) {
+ type = type || "fx";
+ var queue = jQuery.queue(elem, type), startLength = queue.length, fn2 = queue.shift(), hooks = jQuery._queueHooks(elem, type), next = function() {
+ jQuery.dequeue(elem, type);
+ };
+ if (fn2 === "inprogress") {
+ fn2 = queue.shift();
+ startLength--;
+ }
+ if (fn2) {
+ if (type === "fx") {
+ queue.unshift("inprogress");
+ }
+ delete hooks.stop;
+ fn2.call(elem, next, hooks);
+ }
+ if (!startLength && hooks) {
+ hooks.empty.fire();
+ }
+ },
+ // Not public - generate a queueHooks object, or return the current one
+ _queueHooks: function(elem, type) {
+ var key = type + "queueHooks";
+ return dataPriv.get(elem, key) || dataPriv.access(elem, key, {
+ empty: jQuery.Callbacks("once memory").add(function() {
+ dataPriv.remove(elem, [type + "queue", key]);
+ })
+ });
+ }
+ });
+ jQuery.fn.extend({
+ queue: function(type, data) {
+ var setter = 2;
+ if (typeof type !== "string") {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+ if (arguments.length < setter) {
+ return jQuery.queue(this[0], type);
+ }
+ return data === void 0 ? this : this.each(function() {
+ var queue = jQuery.queue(this, type, data);
+ jQuery._queueHooks(this, type);
+ if (type === "fx" && queue[0] !== "inprogress") {
+ jQuery.dequeue(this, type);
+ }
+ });
+ },
+ dequeue: function(type) {
+ return this.each(function() {
+ jQuery.dequeue(this, type);
+ });
+ },
+ clearQueue: function(type) {
+ return this.queue(type || "fx", []);
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function(type, obj) {
+ var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() {
+ if (!--count) {
+ defer.resolveWith(elements, [elements]);
+ }
+ };
+ if (typeof type !== "string") {
+ obj = type;
+ type = void 0;
+ }
+ type = type || "fx";
+ while (i--) {
+ tmp = dataPriv.get(elements[i], type + "queueHooks");
+ if (tmp && tmp.empty) {
+ count++;
+ tmp.empty.add(resolve);
+ }
+ }
+ resolve();
+ return defer.promise(obj);
+ }
+ });
+ var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;
+ var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i");
+ var cssExpand = ["Top", "Right", "Bottom", "Left"];
+ var documentElement = document2.documentElement;
+ var isAttached = function(elem) {
+ return jQuery.contains(elem.ownerDocument, elem);
+ }, composed = { composed: true };
+ if (documentElement.getRootNode) {
+ isAttached = function(elem) {
+ return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;
+ };
+ }
+ var isHiddenWithinTree = function(elem, el) {
+ elem = el || elem;
+ return elem.style.display === "none" || elem.style.display === "" && // Otherwise, check computed style
+ // Support: Firefox <=43 - 45
+ // Disconnected elements can have computed display: none, so first confirm that elem is
+ // in the document.
+ isAttached(elem) && jQuery.css(elem, "display") === "none";
+ };
+ function adjustCSS(elem, prop, valueParts, tween) {
+ var adjusted, scale, maxIterations = 20, currentValue = tween ? function() {
+ return tween.cur();
+ } : function() {
+ return jQuery.css(elem, prop, "");
+ }, initial = currentValue(), unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? "" : "px"), initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(jQuery.css(elem, prop));
+ if (initialInUnit && initialInUnit[3] !== unit) {
+ initial = initial / 2;
+ unit = unit || initialInUnit[3];
+ initialInUnit = +initial || 1;
+ while (maxIterations--) {
+ jQuery.style(elem, prop, initialInUnit + unit);
+ if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {
+ maxIterations = 0;
+ }
+ initialInUnit = initialInUnit / scale;
+ }
+ initialInUnit = initialInUnit * 2;
+ jQuery.style(elem, prop, initialInUnit + unit);
+ valueParts = valueParts || [];
+ }
+ if (valueParts) {
+ initialInUnit = +initialInUnit || +initial || 0;
+ adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];
+ if (tween) {
+ tween.unit = unit;
+ tween.start = initialInUnit;
+ tween.end = adjusted;
+ }
+ }
+ return adjusted;
+ }
+ var defaultDisplayMap = {};
+ function getDefaultDisplay(elem) {
+ var temp, doc = elem.ownerDocument, nodeName2 = elem.nodeName, display = defaultDisplayMap[nodeName2];
+ if (display) {
+ return display;
+ }
+ temp = doc.body.appendChild(doc.createElement(nodeName2));
+ display = jQuery.css(temp, "display");
+ temp.parentNode.removeChild(temp);
+ if (display === "none") {
+ display = "block";
+ }
+ defaultDisplayMap[nodeName2] = display;
+ return display;
+ }
+ function showHide(elements, show) {
+ var display, elem, values = [], index = 0, length = elements.length;
+ for (; index < length; index++) {
+ elem = elements[index];
+ if (!elem.style) {
+ continue;
+ }
+ display = elem.style.display;
+ if (show) {
+ if (display === "none") {
+ values[index] = dataPriv.get(elem, "display") || null;
+ if (!values[index]) {
+ elem.style.display = "";
+ }
+ }
+ if (elem.style.display === "" && isHiddenWithinTree(elem)) {
+ values[index] = getDefaultDisplay(elem);
+ }
+ } else {
+ if (display !== "none") {
+ values[index] = "none";
+ dataPriv.set(elem, "display", display);
+ }
+ }
+ }
+ for (index = 0; index < length; index++) {
+ if (values[index] != null) {
+ elements[index].style.display = values[index];
+ }
+ }
+ return elements;
+ }
+ jQuery.fn.extend({
+ show: function() {
+ return showHide(this, true);
+ },
+ hide: function() {
+ return showHide(this);
+ },
+ toggle: function(state) {
+ if (typeof state === "boolean") {
+ return state ? this.show() : this.hide();
+ }
+ return this.each(function() {
+ if (isHiddenWithinTree(this)) {
+ jQuery(this).show();
+ } else {
+ jQuery(this).hide();
+ }
+ });
+ }
+ });
+ var rcheckableType = /^(?:checkbox|radio)$/i;
+ var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i;
+ var rscriptType = /^$|^module$|\/(?:java|ecma)script/i;
+ (function() {
+ var fragment = document2.createDocumentFragment(), div = fragment.appendChild(document2.createElement("div")), input = document2.createElement("input");
+ input.setAttribute("type", "radio");
+ input.setAttribute("checked", "checked");
+ input.setAttribute("name", "t");
+ div.appendChild(input);
+ support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;
+ div.innerHTML = "<textarea>x</textarea>";
+ support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;
+ div.innerHTML = "<option></option>";
+ support.option = !!div.lastChild;
+ })();
+ var wrapMap = {
+ // XHTML parsers do not magically insert elements in the
+ // same way that tag soup parsers do. So we cannot shorten
+ // this by omitting <tbody> or other required elements.
+ thead: [1, "<table>", "</table>"],
+ col: [2, "<table><colgroup>", "</colgroup></table>"],
+ tr: [2, "<table><tbody>", "</tbody></table>"],
+ td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
+ _default: [0, "", ""]
+ };
+ wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+ wrapMap.th = wrapMap.td;
+ if (!support.option) {
+ wrapMap.optgroup = wrapMap.option = [1, "<select multiple='multiple'>", "</select>"];
+ }
+ function getAll(context, tag) {
+ var ret;
+ if (typeof context.getElementsByTagName !== "undefined") {
+ ret = context.getElementsByTagName(tag || "*");
+ } else if (typeof context.querySelectorAll !== "undefined") {
+ ret = context.querySelectorAll(tag || "*");
+ } else {
+ ret = [];
+ }
+ if (tag === void 0 || tag && nodeName(context, tag)) {
+ return jQuery.merge([context], ret);
+ }
+ return ret;
+ }
+ function setGlobalEval(elems, refElements) {
+ var i = 0, l = elems.length;
+ for (; i < l; i++) {
+ dataPriv.set(
+ elems[i],
+ "globalEval",
+ !refElements || dataPriv.get(refElements[i], "globalEval")
+ );
+ }
+ }
+ var rhtml = /<|&#?\w+;/;
+ function buildFragment(elems, context, scripts, selection, ignored) {
+ var elem, tmp, tag, wrap, attached, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length;
+ for (; i < l; i++) {
+ elem = elems[i];
+ if (elem || elem === 0) {
+ if (toType2(elem) === "object") {
+ jQuery.merge(nodes, elem.nodeType ? [elem] : elem);
+ } else if (!rhtml.test(elem)) {
+ nodes.push(context.createTextNode(elem));
+ } else {
+ tmp = tmp || fragment.appendChild(context.createElement("div"));
+ tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase();
+ wrap = wrapMap[tag] || wrapMap._default;
+ tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];
+ j = wrap[0];
+ while (j--) {
+ tmp = tmp.lastChild;
+ }
+ jQuery.merge(nodes, tmp.childNodes);
+ tmp = fragment.firstChild;
+ tmp.textContent = "";
+ }
+ }
+ }
+ fragment.textContent = "";
+ i = 0;
+ while (elem = nodes[i++]) {
+ if (selection && jQuery.inArray(elem, selection) > -1) {
+ if (ignored) {
+ ignored.push(elem);
+ }
+ continue;
+ }
+ attached = isAttached(elem);
+ tmp = getAll(fragment.appendChild(elem), "script");
+ if (attached) {
+ setGlobalEval(tmp);
+ }
+ if (scripts) {
+ j = 0;
+ while (elem = tmp[j++]) {
+ if (rscriptType.test(elem.type || "")) {
+ scripts.push(elem);
+ }
+ }
+ }
+ }
+ return fragment;
+ }
+ var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+ function returnTrue() {
+ return true;
+ }
+ function returnFalse() {
+ return false;
+ }
+ function on(elem, types, selector, data, fn2, one) {
+ var origFn, type;
+ if (typeof types === "object") {
+ if (typeof selector !== "string") {
+ data = data || selector;
+ selector = void 0;
+ }
+ for (type in types) {
+ on(elem, type, selector, data, types[type], one);
+ }
+ return elem;
+ }
+ if (data == null && fn2 == null) {
+ fn2 = selector;
+ data = selector = void 0;
+ } else if (fn2 == null) {
+ if (typeof selector === "string") {
+ fn2 = data;
+ data = void 0;
+ } else {
+ fn2 = data;
+ data = selector;
+ selector = void 0;
+ }
+ }
+ if (fn2 === false) {
+ fn2 = returnFalse;
+ } else if (!fn2) {
+ return elem;
+ }
+ if (one === 1) {
+ origFn = fn2;
+ fn2 = function(event) {
+ jQuery().off(event);
+ return origFn.apply(this, arguments);
+ };
+ fn2.guid = origFn.guid || (origFn.guid = jQuery.guid++);
+ }
+ return elem.each(function() {
+ jQuery.event.add(this, types, fn2, data, selector);
+ });
+ }
+ jQuery.event = {
+ global: {},
+ add: function(elem, types, handler, data, selector) {
+ var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.get(elem);
+ if (!acceptData(elem)) {
+ return;
+ }
+ if (handler.handler) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+ if (selector) {
+ jQuery.find.matchesSelector(documentElement, selector);
+ }
+ if (!handler.guid) {
+ handler.guid = jQuery.guid++;
+ }
+ if (!(events = elemData.events)) {
+ events = elemData.events = /* @__PURE__ */ Object.create(null);
+ }
+ if (!(eventHandle = elemData.handle)) {
+ eventHandle = elemData.handle = function(e) {
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : void 0;
+ };
+ }
+ types = (types || "").match(rnothtmlwhite) || [""];
+ t = types.length;
+ while (t--) {
+ tmp = rtypenamespace.exec(types[t]) || [];
+ type = origType = tmp[1];
+ namespaces = (tmp[2] || "").split(".").sort();
+ if (!type) {
+ continue;
+ }
+ special = jQuery.event.special[type] || {};
+ type = (selector ? special.delegateType : special.bindType) || type;
+ special = jQuery.event.special[type] || {};
+ handleObj = jQuery.extend({
+ type,
+ origType,
+ data,
+ handler,
+ guid: handler.guid,
+ selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test(selector),
+ namespace: namespaces.join(".")
+ }, handleObjIn);
+ if (!(handlers = events[type])) {
+ handlers = events[type] = [];
+ handlers.delegateCount = 0;
+ if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {
+ if (elem.addEventListener) {
+ elem.addEventListener(type, eventHandle);
+ }
+ }
+ }
+ if (special.add) {
+ special.add.call(elem, handleObj);
+ if (!handleObj.handler.guid) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+ if (selector) {
+ handlers.splice(handlers.delegateCount++, 0, handleObj);
+ } else {
+ handlers.push(handleObj);
+ }
+ jQuery.event.global[type] = true;
+ }
+ },
+ // Detach an event or set of events from an element
+ remove: function(elem, types, handler, selector, mappedTypes) {
+ var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
+ if (!elemData || !(events = elemData.events)) {
+ return;
+ }
+ types = (types || "").match(rnothtmlwhite) || [""];
+ t = types.length;
+ while (t--) {
+ tmp = rtypenamespace.exec(types[t]) || [];
+ type = origType = tmp[1];
+ namespaces = (tmp[2] || "").split(".").sort();
+ if (!type) {
+ for (type in events) {
+ jQuery.event.remove(elem, type + types[t], handler, selector, true);
+ }
+ continue;
+ }
+ special = jQuery.event.special[type] || {};
+ type = (selector ? special.delegateType : special.bindType) || type;
+ handlers = events[type] || [];
+ tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)");
+ origCount = j = handlers.length;
+ while (j--) {
+ handleObj = handlers[j];
+ if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) {
+ handlers.splice(j, 1);
+ if (handleObj.selector) {
+ handlers.delegateCount--;
+ }
+ if (special.remove) {
+ special.remove.call(elem, handleObj);
+ }
+ }
+ }
+ if (origCount && !handlers.length) {
+ if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {
+ jQuery.removeEvent(elem, type, elemData.handle);
+ }
+ delete events[type];
+ }
+ }
+ if (jQuery.isEmptyObject(events)) {
+ dataPriv.remove(elem, "handle events");
+ }
+ },
+ dispatch: function(nativeEvent) {
+ var i, j, ret, matched, handleObj, handlerQueue, args = new Array(arguments.length), event = jQuery.event.fix(nativeEvent), handlers = (dataPriv.get(this, "events") || /* @__PURE__ */ Object.create(null))[event.type] || [], special = jQuery.event.special[event.type] || {};
+ args[0] = event;
+ for (i = 1; i < arguments.length; i++) {
+ args[i] = arguments[i];
+ }
+ event.delegateTarget = this;
+ if (special.preDispatch && special.preDispatch.call(this, event) === false) {
+ return;
+ }
+ handlerQueue = jQuery.event.handlers.call(this, event, handlers);
+ i = 0;
+ while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {
+ event.currentTarget = matched.elem;
+ j = 0;
+ while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {
+ if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+ ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);
+ if (ret !== void 0) {
+ if ((event.result = ret) === false) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+ if (special.postDispatch) {
+ special.postDispatch.call(this, event);
+ }
+ return event.result;
+ },
+ handlers: function(event, handlers) {
+ var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target;
+ if (delegateCount && // Support: IE <=9
+ // Black-hole SVG <use> instance trees (trac-13180)
+ cur.nodeType && // Support: Firefox <=42
+ // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+ // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+ // Support: IE 11 only
+ // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+ !(event.type === "click" && event.button >= 1)) {
+ for (; cur !== this; cur = cur.parentNode || this) {
+ if (cur.nodeType === 1 && !(event.type === "click" && cur.disabled === true)) {
+ matchedHandlers = [];
+ matchedSelectors = {};
+ for (i = 0; i < delegateCount; i++) {
+ handleObj = handlers[i];
+ sel = handleObj.selector + " ";
+ if (matchedSelectors[sel] === void 0) {
+ matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;
+ }
+ if (matchedSelectors[sel]) {
+ matchedHandlers.push(handleObj);
+ }
+ }
+ if (matchedHandlers.length) {
+ handlerQueue.push({ elem: cur, handlers: matchedHandlers });
+ }
+ }
+ }
+ }
+ cur = this;
+ if (delegateCount < handlers.length) {
+ handlerQueue.push({ elem: cur, handlers: handlers.slice(delegateCount) });
+ }
+ return handlerQueue;
+ },
+ addProp: function(name, hook) {
+ Object.defineProperty(jQuery.Event.prototype, name, {
+ enumerable: true,
+ configurable: true,
+ get: isFunction(hook) ? function() {
+ if (this.originalEvent) {
+ return hook(this.originalEvent);
+ }
+ } : function() {
+ if (this.originalEvent) {
+ return this.originalEvent[name];
+ }
+ },
+ set: function(value) {
+ Object.defineProperty(this, name, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value
+ });
+ }
+ });
+ },
+ fix: function(originalEvent) {
+ return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);
+ },
+ special: {
+ load: {
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ click: {
+ // Utilize native event to ensure correct state for checkable inputs
+ setup: function(data) {
+ var el = this || data;
+ if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
+ leverageNative(el, "click", true);
+ }
+ return false;
+ },
+ trigger: function(data) {
+ var el = this || data;
+ if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
+ leverageNative(el, "click");
+ }
+ return true;
+ },
+ // For cross-browser consistency, suppress native .click() on links
+ // Also prevent it if we're currently inside a leveraged native-event stack
+ _default: function(event) {
+ var target = event.target;
+ return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a");
+ }
+ },
+ beforeunload: {
+ postDispatch: function(event) {
+ if (event.result !== void 0 && event.originalEvent) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ }
+ };
+ function leverageNative(el, type, isSetup) {
+ if (!isSetup) {
+ if (dataPriv.get(el, type) === void 0) {
+ jQuery.event.add(el, type, returnTrue);
+ }
+ return;
+ }
+ dataPriv.set(el, type, false);
+ jQuery.event.add(el, type, {
+ namespace: false,
+ handler: function(event) {
+ var result, saved = dataPriv.get(this, type);
+ if (event.isTrigger & 1 && this[type]) {
+ if (!saved) {
+ saved = slice.call(arguments);
+ dataPriv.set(this, type, saved);
+ this[type]();
+ result = dataPriv.get(this, type);
+ dataPriv.set(this, type, false);
+ if (saved !== result) {
+ event.stopImmediatePropagation();
+ event.preventDefault();
+ return result;
+ }
+ } else if ((jQuery.event.special[type] || {}).delegateType) {
+ event.stopPropagation();
+ }
+ } else if (saved) {
+ dataPriv.set(this, type, jQuery.event.trigger(
+ saved[0],
+ saved.slice(1),
+ this
+ ));
+ event.stopPropagation();
+ event.isImmediatePropagationStopped = returnTrue;
+ }
+ }
+ });
+ }
+ jQuery.removeEvent = function(elem, type, handle) {
+ if (elem.removeEventListener) {
+ elem.removeEventListener(type, handle);
+ }
+ };
+ jQuery.Event = function(src, props) {
+ if (!(this instanceof jQuery.Event)) {
+ return new jQuery.Event(src, props);
+ }
+ if (src && src.type) {
+ this.originalEvent = src;
+ this.type = src.type;
+ this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === void 0 && // Support: Android <=2.3 only
+ src.returnValue === false ? returnTrue : returnFalse;
+ this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;
+ this.currentTarget = src.currentTarget;
+ this.relatedTarget = src.relatedTarget;
+ } else {
+ this.type = src;
+ }
+ if (props) {
+ jQuery.extend(this, props);
+ }
+ this.timeStamp = src && src.timeStamp || Date.now();
+ this[jQuery.expando] = true;
+ };
+ jQuery.Event.prototype = {
+ constructor: jQuery.Event,
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+ isSimulated: false,
+ preventDefault: function() {
+ var e = this.originalEvent;
+ this.isDefaultPrevented = returnTrue;
+ if (e && !this.isSimulated) {
+ e.preventDefault();
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+ this.isPropagationStopped = returnTrue;
+ if (e && !this.isSimulated) {
+ e.stopPropagation();
+ }
+ },
+ stopImmediatePropagation: function() {
+ var e = this.originalEvent;
+ this.isImmediatePropagationStopped = returnTrue;
+ if (e && !this.isSimulated) {
+ e.stopImmediatePropagation();
+ }
+ this.stopPropagation();
+ }
+ };
+ jQuery.each({
+ altKey: true,
+ bubbles: true,
+ cancelable: true,
+ changedTouches: true,
+ ctrlKey: true,
+ detail: true,
+ eventPhase: true,
+ metaKey: true,
+ pageX: true,
+ pageY: true,
+ shiftKey: true,
+ view: true,
+ "char": true,
+ code: true,
+ charCode: true,
+ key: true,
+ keyCode: true,
+ button: true,
+ buttons: true,
+ clientX: true,
+ clientY: true,
+ offsetX: true,
+ offsetY: true,
+ pointerId: true,
+ pointerType: true,
+ screenX: true,
+ screenY: true,
+ targetTouches: true,
+ toElement: true,
+ touches: true,
+ which: true
+ }, jQuery.event.addProp);
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function(type, delegateType) {
+ function focusMappedHandler(nativeEvent) {
+ if (document2.documentMode) {
+ var handle = dataPriv.get(this, "handle"), event = jQuery.event.fix(nativeEvent);
+ event.type = nativeEvent.type === "focusin" ? "focus" : "blur";
+ event.isSimulated = true;
+ handle(nativeEvent);
+ if (event.target === event.currentTarget) {
+ handle(event);
+ }
+ } else {
+ jQuery.event.simulate(
+ delegateType,
+ nativeEvent.target,
+ jQuery.event.fix(nativeEvent)
+ );
+ }
+ }
+ jQuery.event.special[type] = {
+ // Utilize native event if possible so blur/focus sequence is correct
+ setup: function() {
+ var attaches;
+ leverageNative(this, type, true);
+ if (document2.documentMode) {
+ attaches = dataPriv.get(this, delegateType);
+ if (!attaches) {
+ this.addEventListener(delegateType, focusMappedHandler);
+ }
+ dataPriv.set(this, delegateType, (attaches || 0) + 1);
+ } else {
+ return false;
+ }
+ },
+ trigger: function() {
+ leverageNative(this, type);
+ return true;
+ },
+ teardown: function() {
+ var attaches;
+ if (document2.documentMode) {
+ attaches = dataPriv.get(this, delegateType) - 1;
+ if (!attaches) {
+ this.removeEventListener(delegateType, focusMappedHandler);
+ dataPriv.remove(this, delegateType);
+ } else {
+ dataPriv.set(this, delegateType, attaches);
+ }
+ } else {
+ return false;
+ }
+ },
+ // Suppress native focus or blur if we're currently inside
+ // a leveraged native-event stack
+ _default: function(event) {
+ return dataPriv.get(event.target, type);
+ },
+ delegateType
+ };
+ jQuery.event.special[delegateType] = {
+ setup: function() {
+ var doc = this.ownerDocument || this.document || this, dataHolder = document2.documentMode ? this : doc, attaches = dataPriv.get(dataHolder, delegateType);
+ if (!attaches) {
+ if (document2.documentMode) {
+ this.addEventListener(delegateType, focusMappedHandler);
+ } else {
+ doc.addEventListener(type, focusMappedHandler, true);
+ }
+ }
+ dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1);
+ },
+ teardown: function() {
+ var doc = this.ownerDocument || this.document || this, dataHolder = document2.documentMode ? this : doc, attaches = dataPriv.get(dataHolder, delegateType) - 1;
+ if (!attaches) {
+ if (document2.documentMode) {
+ this.removeEventListener(delegateType, focusMappedHandler);
+ } else {
+ doc.removeEventListener(type, focusMappedHandler, true);
+ }
+ dataPriv.remove(dataHolder, delegateType);
+ } else {
+ dataPriv.set(dataHolder, delegateType, attaches);
+ }
+ }
+ };
+ });
+ jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout",
+ pointerenter: "pointerover",
+ pointerleave: "pointerout"
+ }, function(orig, fix) {
+ jQuery.event.special[orig] = {
+ delegateType: fix,
+ bindType: fix,
+ handle: function(event) {
+ var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj;
+ if (!related || related !== target && !jQuery.contains(target, related)) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply(this, arguments);
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+ });
+ jQuery.fn.extend({
+ on: function(types, selector, data, fn2) {
+ return on(this, types, selector, data, fn2);
+ },
+ one: function(types, selector, data, fn2) {
+ return on(this, types, selector, data, fn2, 1);
+ },
+ off: function(types, selector, fn2) {
+ var handleObj, type;
+ if (types && types.preventDefault && types.handleObj) {
+ handleObj = types.handleObj;
+ jQuery(types.delegateTarget).off(
+ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if (typeof types === "object") {
+ for (type in types) {
+ this.off(type, selector, types[type]);
+ }
+ return this;
+ }
+ if (selector === false || typeof selector === "function") {
+ fn2 = selector;
+ selector = void 0;
+ }
+ if (fn2 === false) {
+ fn2 = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove(this, types, fn2, selector);
+ });
+ }
+ });
+ var rnoInnerhtml = /<script|<style|<link/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
+ function manipulationTarget(elem, content) {
+ if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) {
+ return jQuery(elem).children("tbody")[0] || elem;
+ }
+ return elem;
+ }
+ function disableScript(elem) {
+ elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
+ return elem;
+ }
+ function restoreScript(elem) {
+ if ((elem.type || "").slice(0, 5) === "true/") {
+ elem.type = elem.type.slice(5);
+ } else {
+ elem.removeAttribute("type");
+ }
+ return elem;
+ }
+ function cloneCopyEvent(src, dest) {
+ var i, l, type, pdataOld, udataOld, udataCur, events;
+ if (dest.nodeType !== 1) {
+ return;
+ }
+ if (dataPriv.hasData(src)) {
+ pdataOld = dataPriv.get(src);
+ events = pdataOld.events;
+ if (events) {
+ dataPriv.remove(dest, "handle events");
+ for (type in events) {
+ for (i = 0, l = events[type].length; i < l; i++) {
+ jQuery.event.add(dest, type, events[type][i]);
+ }
+ }
+ }
+ }
+ if (dataUser.hasData(src)) {
+ udataOld = dataUser.access(src);
+ udataCur = jQuery.extend({}, udataOld);
+ dataUser.set(dest, udataCur);
+ }
+ }
+ function fixInput(src, dest) {
+ var nodeName2 = dest.nodeName.toLowerCase();
+ if (nodeName2 === "input" && rcheckableType.test(src.type)) {
+ dest.checked = src.checked;
+ } else if (nodeName2 === "input" || nodeName2 === "textarea") {
+ dest.defaultValue = src.defaultValue;
+ }
+ }
+ function domManip(collection, args, callback, ignored) {
+ args = flat(args);
+ var fragment, first, scripts, hasScripts, node, doc, i = 0, l = collection.length, iNoClone = l - 1, value = args[0], valueIsFunction = isFunction(value);
+ if (valueIsFunction || l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value)) {
+ return collection.each(function(index) {
+ var self = collection.eq(index);
+ if (valueIsFunction) {
+ args[0] = value.call(this, index, self.html());
+ }
+ domManip(self, args, callback, ignored);
+ });
+ }
+ if (l) {
+ fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);
+ first = fragment.firstChild;
+ if (fragment.childNodes.length === 1) {
+ fragment = first;
+ }
+ if (first || ignored) {
+ scripts = jQuery.map(getAll(fragment, "script"), disableScript);
+ hasScripts = scripts.length;
+ for (; i < l; i++) {
+ node = fragment;
+ if (i !== iNoClone) {
+ node = jQuery.clone(node, true, true);
+ if (hasScripts) {
+ jQuery.merge(scripts, getAll(node, "script"));
+ }
+ }
+ callback.call(collection[i], node, i);
+ }
+ if (hasScripts) {
+ doc = scripts[scripts.length - 1].ownerDocument;
+ jQuery.map(scripts, restoreScript);
+ for (i = 0; i < hasScripts; i++) {
+ node = scripts[i];
+ if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery.contains(doc, node)) {
+ if (node.src && (node.type || "").toLowerCase() !== "module") {
+ if (jQuery._evalUrl && !node.noModule) {
+ jQuery._evalUrl(node.src, {
+ nonce: node.nonce || node.getAttribute("nonce")
+ }, doc);
+ }
+ } else {
+ DOMEval(node.textContent.replace(rcleanScript, ""), node, doc);
+ }
+ }
+ }
+ }
+ }
+ }
+ return collection;
+ }
+ function remove(elem, selector, keepData) {
+ var node, nodes = selector ? jQuery.filter(selector, elem) : elem, i = 0;
+ for (; (node = nodes[i]) != null; i++) {
+ if (!keepData && node.nodeType === 1) {
+ jQuery.cleanData(getAll(node));
+ }
+ if (node.parentNode) {
+ if (keepData && isAttached(node)) {
+ setGlobalEval(getAll(node, "script"));
+ }
+ node.parentNode.removeChild(node);
+ }
+ }
+ return elem;
+ }
+ jQuery.extend({
+ htmlPrefilter: function(html) {
+ return html;
+ },
+ clone: function(elem, dataAndEvents, deepDataAndEvents) {
+ var i, l, srcElements, destElements, clone = elem.cloneNode(true), inPage = isAttached(elem);
+ if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {
+ destElements = getAll(clone);
+ srcElements = getAll(elem);
+ for (i = 0, l = srcElements.length; i < l; i++) {
+ fixInput(srcElements[i], destElements[i]);
+ }
+ }
+ if (dataAndEvents) {
+ if (deepDataAndEvents) {
+ srcElements = srcElements || getAll(elem);
+ destElements = destElements || getAll(clone);
+ for (i = 0, l = srcElements.length; i < l; i++) {
+ cloneCopyEvent(srcElements[i], destElements[i]);
+ }
+ } else {
+ cloneCopyEvent(elem, clone);
+ }
+ }
+ destElements = getAll(clone, "script");
+ if (destElements.length > 0) {
+ setGlobalEval(destElements, !inPage && getAll(elem, "script"));
+ }
+ return clone;
+ },
+ cleanData: function(elems) {
+ var data, elem, type, special = jQuery.event.special, i = 0;
+ for (; (elem = elems[i]) !== void 0; i++) {
+ if (acceptData(elem)) {
+ if (data = elem[dataPriv.expando]) {
+ if (data.events) {
+ for (type in data.events) {
+ if (special[type]) {
+ jQuery.event.remove(elem, type);
+ } else {
+ jQuery.removeEvent(elem, type, data.handle);
+ }
+ }
+ }
+ elem[dataPriv.expando] = void 0;
+ }
+ if (elem[dataUser.expando]) {
+ elem[dataUser.expando] = void 0;
+ }
+ }
+ }
+ }
+ });
+ jQuery.fn.extend({
+ detach: function(selector) {
+ return remove(this, selector, true);
+ },
+ remove: function(selector) {
+ return remove(this, selector);
+ },
+ text: function(value) {
+ return access(this, function(value2) {
+ return value2 === void 0 ? jQuery.text(this) : this.empty().each(function() {
+ if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
+ this.textContent = value2;
+ }
+ });
+ }, null, value, arguments.length);
+ },
+ append: function() {
+ return domManip(this, arguments, function(elem) {
+ if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
+ var target = manipulationTarget(this, elem);
+ target.appendChild(elem);
+ }
+ });
+ },
+ prepend: function() {
+ return domManip(this, arguments, function(elem) {
+ if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
+ var target = manipulationTarget(this, elem);
+ target.insertBefore(elem, target.firstChild);
+ }
+ });
+ },
+ before: function() {
+ return domManip(this, arguments, function(elem) {
+ if (this.parentNode) {
+ this.parentNode.insertBefore(elem, this);
+ }
+ });
+ },
+ after: function() {
+ return domManip(this, arguments, function(elem) {
+ if (this.parentNode) {
+ this.parentNode.insertBefore(elem, this.nextSibling);
+ }
+ });
+ },
+ empty: function() {
+ var elem, i = 0;
+ for (; (elem = this[i]) != null; i++) {
+ if (elem.nodeType === 1) {
+ jQuery.cleanData(getAll(elem, false));
+ elem.textContent = "";
+ }
+ }
+ return this;
+ },
+ clone: function(dataAndEvents, deepDataAndEvents) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+ return this.map(function() {
+ return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
+ });
+ },
+ html: function(value) {
+ return access(this, function(value2) {
+ var elem = this[0] || {}, i = 0, l = this.length;
+ if (value2 === void 0 && elem.nodeType === 1) {
+ return elem.innerHTML;
+ }
+ if (typeof value2 === "string" && !rnoInnerhtml.test(value2) && !wrapMap[(rtagName.exec(value2) || ["", ""])[1].toLowerCase()]) {
+ value2 = jQuery.htmlPrefilter(value2);
+ try {
+ for (; i < l; i++) {
+ elem = this[i] || {};
+ if (elem.nodeType === 1) {
+ jQuery.cleanData(getAll(elem, false));
+ elem.innerHTML = value2;
+ }
+ }
+ elem = 0;
+ } catch (e) {
+ }
+ }
+ if (elem) {
+ this.empty().append(value2);
+ }
+ }, null, value, arguments.length);
+ },
+ replaceWith: function() {
+ var ignored = [];
+ return domManip(this, arguments, function(elem) {
+ var parent = this.parentNode;
+ if (jQuery.inArray(this, ignored) < 0) {
+ jQuery.cleanData(getAll(this));
+ if (parent) {
+ parent.replaceChild(elem, this);
+ }
+ }
+ }, ignored);
+ }
+ });
+ jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+ }, function(name, original) {
+ jQuery.fn[name] = function(selector) {
+ var elems, ret = [], insert = jQuery(selector), last = insert.length - 1, i = 0;
+ for (; i <= last; i++) {
+ elems = i === last ? this : this.clone(true);
+ jQuery(insert[i])[original](elems);
+ push.apply(ret, elems.get());
+ }
+ return this.pushStack(ret);
+ };
+ });
+ var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i");
+ var rcustomProp = /^--/;
+ var getStyles = function(elem) {
+ var view = elem.ownerDocument.defaultView;
+ if (!view || !view.opener) {
+ view = window2;
+ }
+ return view.getComputedStyle(elem);
+ };
+ var swap = function(elem, options, callback) {
+ var ret, name, old = {};
+ for (name in options) {
+ old[name] = elem.style[name];
+ elem.style[name] = options[name];
+ }
+ ret = callback.call(elem);
+ for (name in options) {
+ elem.style[name] = old[name];
+ }
+ return ret;
+ };
+ var rboxStyle = new RegExp(cssExpand.join("|"), "i");
+ (function() {
+ function computeStyleTests() {
+ if (!div) {
+ return;
+ }
+ container.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0";
+ div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%";
+ documentElement.appendChild(container).appendChild(div);
+ var divStyle = window2.getComputedStyle(div);
+ pixelPositionVal = divStyle.top !== "1%";
+ reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12;
+ div.style.right = "60%";
+ pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36;
+ boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36;
+ div.style.position = "absolute";
+ scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;
+ documentElement.removeChild(container);
+ div = null;
+ }
+ function roundPixelMeasures(measure) {
+ return Math.round(parseFloat(measure));
+ }
+ var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, reliableTrDimensionsVal, reliableMarginLeftVal, container = document2.createElement("div"), div = document2.createElement("div");
+ if (!div.style) {
+ return;
+ }
+ div.style.backgroundClip = "content-box";
+ div.cloneNode(true).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+ jQuery.extend(support, {
+ boxSizingReliable: function() {
+ computeStyleTests();
+ return boxSizingReliableVal;
+ },
+ pixelBoxStyles: function() {
+ computeStyleTests();
+ return pixelBoxStylesVal;
+ },
+ pixelPosition: function() {
+ computeStyleTests();
+ return pixelPositionVal;
+ },
+ reliableMarginLeft: function() {
+ computeStyleTests();
+ return reliableMarginLeftVal;
+ },
+ scrollboxSize: function() {
+ computeStyleTests();
+ return scrollboxSizeVal;
+ },
+ // Support: IE 9 - 11+, Edge 15 - 18+
+ // IE/Edge misreport `getComputedStyle` of table rows with width/height
+ // set in CSS while `offset*` properties report correct values.
+ // Behavior in IE 9 is more subtle than in newer versions & it passes
+ // some versions of this test; make sure not to make it pass there!
+ //
+ // Support: Firefox 70+
+ // Only Firefox includes border widths
+ // in computed dimensions. (gh-4529)
+ reliableTrDimensions: function() {
+ var table, tr, trChild, trStyle;
+ if (reliableTrDimensionsVal == null) {
+ table = document2.createElement("table");
+ tr = document2.createElement("tr");
+ trChild = document2.createElement("div");
+ table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
+ tr.style.cssText = "box-sizing:content-box;border:1px solid";
+ tr.style.height = "1px";
+ trChild.style.height = "9px";
+ trChild.style.display = "block";
+ documentElement.appendChild(table).appendChild(tr).appendChild(trChild);
+ trStyle = window2.getComputedStyle(tr);
+ reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;
+ documentElement.removeChild(table);
+ }
+ return reliableTrDimensionsVal;
+ }
+ });
+ })();
+ function curCSS(elem, name, computed) {
+ var width, minWidth, maxWidth, ret, isCustomProp = rcustomProp.test(name), style = elem.style;
+ computed = computed || getStyles(elem);
+ if (computed) {
+ ret = computed.getPropertyValue(name) || computed[name];
+ if (isCustomProp && ret) {
+ ret = ret.replace(rtrimCSS, "$1") || void 0;
+ }
+ if (ret === "" && !isAttached(elem)) {
+ ret = jQuery.style(elem, name);
+ }
+ if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+ return ret !== void 0 ? (
+ // Support: IE <=9 - 11 only
+ // IE returns zIndex value as an integer.
+ ret + ""
+ ) : ret;
+ }
+ function addGetHookIf(conditionFn, hookFn) {
+ return {
+ get: function() {
+ if (conditionFn()) {
+ delete this.get;
+ return;
+ }
+ return (this.get = hookFn).apply(this, arguments);
+ }
+ };
+ }
+ var cssPrefixes = ["Webkit", "Moz", "ms"], emptyStyle = document2.createElement("div").style, vendorProps = {};
+ function vendorPropName(name) {
+ var capName = name[0].toUpperCase() + name.slice(1), i = cssPrefixes.length;
+ while (i--) {
+ name = cssPrefixes[i] + capName;
+ if (name in emptyStyle) {
+ return name;
+ }
+ }
+ }
+ function finalPropName(name) {
+ var final = jQuery.cssProps[name] || vendorProps[name];
+ if (final) {
+ return final;
+ }
+ if (name in emptyStyle) {
+ return name;
+ }
+ return vendorProps[name] = vendorPropName(name) || name;
+ }
+ var rdisplayswap = /^(none|table(?!-c[ea]).+)/, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = {
+ letterSpacing: "0",
+ fontWeight: "400"
+ };
+ function setPositiveNumber(_elem, value, subtract) {
+ var matches = rcssNum.exec(value);
+ return matches ? (
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px")
+ ) : value;
+ }
+ function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {
+ var i = dimension === "width" ? 1 : 0, extra = 0, delta = 0, marginDelta = 0;
+ if (box === (isBorderBox ? "border" : "content")) {
+ return 0;
+ }
+ for (; i < 4; i += 2) {
+ if (box === "margin") {
+ marginDelta += jQuery.css(elem, box + cssExpand[i], true, styles);
+ }
+ if (!isBorderBox) {
+ delta += jQuery.css(elem, "padding" + cssExpand[i], true, styles);
+ if (box !== "padding") {
+ delta += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
+ } else {
+ extra += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
+ }
+ } else {
+ if (box === "content") {
+ delta -= jQuery.css(elem, "padding" + cssExpand[i], true, styles);
+ }
+ if (box !== "margin") {
+ delta -= jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
+ }
+ }
+ }
+ if (!isBorderBox && computedVal >= 0) {
+ delta += Math.max(0, Math.ceil(
+ elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5
+ // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
+ // Use an explicit zero to avoid NaN (gh-3964)
+ )) || 0;
+ }
+ return delta + marginDelta;
+ }
+ function getWidthOrHeight(elem, dimension, extra) {
+ var styles = getStyles(elem), boxSizingNeeded = !support.boxSizingReliable() || extra, isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box", valueIsBorderBox = isBorderBox, val = curCSS(elem, dimension, styles), offsetProp = "offset" + dimension[0].toUpperCase() + dimension.slice(1);
+ if (rnumnonpx.test(val)) {
+ if (!extra) {
+ return val;
+ }
+ val = "auto";
+ }
+ if ((!support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+
+ // IE/Edge misreport `getComputedStyle` of table rows with width/height
+ // set in CSS while `offset*` properties report correct values.
+ // Interestingly, in some cases IE 9 doesn't suffer from this issue.
+ !support.reliableTrDimensions() && nodeName(elem, "tr") || // Fall back to offsetWidth/offsetHeight when value is "auto"
+ // This happens for inline elements with no explicit setting (gh-3571)
+ val === "auto" || // Support: Android <=4.1 - 4.3 only
+ // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
+ !parseFloat(val) && jQuery.css(elem, "display", false, styles) === "inline") && // Make sure the element is visible & connected
+ elem.getClientRects().length) {
+ isBorderBox = jQuery.css(elem, "boxSizing", false, styles) === "border-box";
+ valueIsBorderBox = offsetProp in elem;
+ if (valueIsBorderBox) {
+ val = elem[offsetProp];
+ }
+ }
+ val = parseFloat(val) || 0;
+ return val + boxModelAdjustment(
+ elem,
+ dimension,
+ extra || (isBorderBox ? "border" : "content"),
+ valueIsBorderBox,
+ styles,
+ // Provide the current computed size to request scroll gutter calculation (gh-3589)
+ val
+ ) + "px";
+ }
+ jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function(elem, computed) {
+ if (computed) {
+ var ret = curCSS(elem, "opacity");
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ animationIterationCount: true,
+ aspectRatio: true,
+ borderImageSlice: true,
+ columnCount: true,
+ flexGrow: true,
+ flexShrink: true,
+ fontWeight: true,
+ gridArea: true,
+ gridColumn: true,
+ gridColumnEnd: true,
+ gridColumnStart: true,
+ gridRow: true,
+ gridRowEnd: true,
+ gridRowStart: true,
+ lineHeight: true,
+ opacity: true,
+ order: true,
+ orphans: true,
+ scale: true,
+ widows: true,
+ zIndex: true,
+ zoom: true,
+ // SVG-related
+ fillOpacity: true,
+ floodOpacity: true,
+ stopOpacity: true,
+ strokeMiterlimit: true,
+ strokeOpacity: true
+ },
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {},
+ // Get and set the style property on a DOM Node
+ style: function(elem, name, value, extra) {
+ if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {
+ return;
+ }
+ var ret, type, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name), style = elem.style;
+ if (!isCustomProp) {
+ name = finalPropName(origName);
+ }
+ hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];
+ if (value !== void 0) {
+ type = typeof value;
+ if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) {
+ value = adjustCSS(elem, name, ret);
+ type = "number";
+ }
+ if (value == null || value !== value) {
+ return;
+ }
+ if (type === "number" && !isCustomProp) {
+ value += ret && ret[3] || (jQuery.cssNumber[origName] ? "" : "px");
+ }
+ if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) {
+ style[name] = "inherit";
+ }
+ if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== void 0) {
+ if (isCustomProp) {
+ style.setProperty(name, value);
+ } else {
+ style[name] = value;
+ }
+ }
+ } else {
+ if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== void 0) {
+ return ret;
+ }
+ return style[name];
+ }
+ },
+ css: function(elem, name, extra, styles) {
+ var val, num, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name);
+ if (!isCustomProp) {
+ name = finalPropName(origName);
+ }
+ hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];
+ if (hooks && "get" in hooks) {
+ val = hooks.get(elem, true, extra);
+ }
+ if (val === void 0) {
+ val = curCSS(elem, name, styles);
+ }
+ if (val === "normal" && name in cssNormalTransform) {
+ val = cssNormalTransform[name];
+ }
+ if (extra === "" || extra) {
+ num = parseFloat(val);
+ return extra === true || isFinite(num) ? num || 0 : val;
+ }
+ return val;
+ }
+ });
+ jQuery.each(["height", "width"], function(_i, dimension) {
+ jQuery.cssHooks[dimension] = {
+ get: function(elem, computed, extra) {
+ if (computed) {
+ return rdisplayswap.test(jQuery.css(elem, "display")) && // Support: Safari 8+
+ // Table columns in Safari have non-zero offsetWidth & zero
+ // getBoundingClientRect().width unless display is changed.
+ // Support: IE <=11 only
+ // Running getBoundingClientRect on a disconnected node
+ // in IE throws an error.
+ (!elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function() {
+ return getWidthOrHeight(elem, dimension, extra);
+ }) : getWidthOrHeight(elem, dimension, extra);
+ }
+ },
+ set: function(elem, value, extra) {
+ var matches, styles = getStyles(elem), scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute", boxSizingNeeded = scrollboxSizeBuggy || extra, isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box", subtract = extra ? boxModelAdjustment(
+ elem,
+ dimension,
+ extra,
+ isBorderBox,
+ styles
+ ) : 0;
+ if (isBorderBox && scrollboxSizeBuggy) {
+ subtract -= Math.ceil(
+ elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - 0.5
+ );
+ }
+ if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || "px") !== "px") {
+ elem.style[dimension] = value;
+ value = jQuery.css(elem, dimension);
+ }
+ return setPositiveNumber(elem, value, subtract);
+ }
+ };
+ });
+ jQuery.cssHooks.marginLeft = addGetHookIf(
+ support.reliableMarginLeft,
+ function(elem, computed) {
+ if (computed) {
+ return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, { marginLeft: 0 }, function() {
+ return elem.getBoundingClientRect().left;
+ })) + "px";
+ }
+ }
+ );
+ jQuery.each({
+ margin: "",
+ padding: "",
+ border: "Width"
+ }, function(prefix, suffix) {
+ jQuery.cssHooks[prefix + suffix] = {
+ expand: function(value) {
+ var i = 0, expanded = {}, parts = typeof value === "string" ? value.split(" ") : [value];
+ for (; i < 4; i++) {
+ expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];
+ }
+ return expanded;
+ }
+ };
+ if (prefix !== "margin") {
+ jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;
+ }
+ });
+ jQuery.fn.extend({
+ css: function(name, value) {
+ return access(this, function(elem, name2, value2) {
+ var styles, len, map = {}, i = 0;
+ if (Array.isArray(name2)) {
+ styles = getStyles(elem);
+ len = name2.length;
+ for (; i < len; i++) {
+ map[name2[i]] = jQuery.css(elem, name2[i], false, styles);
+ }
+ return map;
+ }
+ return value2 !== void 0 ? jQuery.style(elem, name2, value2) : jQuery.css(elem, name2);
+ }, name, value, arguments.length > 1);
+ }
+ });
+ function Tween(elem, options, prop, end2, easing) {
+ return new Tween.prototype.init(elem, options, prop, end2, easing);
+ }
+ jQuery.Tween = Tween;
+ Tween.prototype = {
+ constructor: Tween,
+ init: function(elem, options, prop, end2, easing, unit) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || jQuery.easing._default;
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end2;
+ this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px");
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[this.prop];
+ return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
+ },
+ run: function(percent) {
+ var eased, hooks = Tween.propHooks[this.prop];
+ if (this.options.duration) {
+ this.pos = eased = jQuery.easing[this.easing](
+ percent,
+ this.options.duration * percent,
+ 0,
+ 1,
+ this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = (this.end - this.start) * eased + this.start;
+ if (this.options.step) {
+ this.options.step.call(this.elem, this.now, this);
+ }
+ if (hooks && hooks.set) {
+ hooks.set(this);
+ } else {
+ Tween.propHooks._default.set(this);
+ }
+ return this;
+ }
+ };
+ Tween.prototype.init.prototype = Tween.prototype;
+ Tween.propHooks = {
+ _default: {
+ get: function(tween) {
+ var result;
+ if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {
+ return tween.elem[tween.prop];
+ }
+ result = jQuery.css(tween.elem, tween.prop, "");
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function(tween) {
+ if (jQuery.fx.step[tween.prop]) {
+ jQuery.fx.step[tween.prop](tween);
+ } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {
+ jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);
+ } else {
+ tween.elem[tween.prop] = tween.now;
+ }
+ }
+ }
+ };
+ Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function(tween) {
+ if (tween.elem.nodeType && tween.elem.parentNode) {
+ tween.elem[tween.prop] = tween.now;
+ }
+ }
+ };
+ jQuery.easing = {
+ linear: function(p) {
+ return p;
+ },
+ swing: function(p) {
+ return 0.5 - Math.cos(p * Math.PI) / 2;
+ },
+ _default: "swing"
+ };
+ jQuery.fx = Tween.prototype.init;
+ jQuery.fx.step = {};
+ var fxNow, inProgress, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/;
+ function schedule() {
+ if (inProgress) {
+ if (document2.hidden === false && window2.requestAnimationFrame) {
+ window2.requestAnimationFrame(schedule);
+ } else {
+ window2.setTimeout(schedule, jQuery.fx.interval);
+ }
+ jQuery.fx.tick();
+ }
+ }
+ function createFxNow() {
+ window2.setTimeout(function() {
+ fxNow = void 0;
+ });
+ return fxNow = Date.now();
+ }
+ function genFx(type, includeWidth) {
+ var which, i = 0, attrs = { height: type };
+ includeWidth = includeWidth ? 1 : 0;
+ for (; i < 4; i += 2 - includeWidth) {
+ which = cssExpand[i];
+ attrs["margin" + which] = attrs["padding" + which] = type;
+ }
+ if (includeWidth) {
+ attrs.opacity = attrs.width = type;
+ }
+ return attrs;
+ }
+ function createTween(value, prop, animation) {
+ var tween, collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]), index = 0, length = collection.length;
+ for (; index < length; index++) {
+ if (tween = collection[index].call(animation, prop, value)) {
+ return tween;
+ }
+ }
+ }
+ function defaultPrefilter(elem, props, opts) {
+ var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props, anim = this, orig = {}, style = elem.style, hidden = elem.nodeType && isHiddenWithinTree(elem), dataShow = dataPriv.get(elem, "fxshow");
+ if (!opts.queue) {
+ hooks = jQuery._queueHooks(elem, "fx");
+ if (hooks.unqueued == null) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if (!hooks.unqueued) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+ anim.always(function() {
+ anim.always(function() {
+ hooks.unqueued--;
+ if (!jQuery.queue(elem, "fx").length) {
+ hooks.empty.fire();
+ }
+ });
+ });
+ }
+ for (prop in props) {
+ value = props[prop];
+ if (rfxtypes.test(value)) {
+ delete props[prop];
+ toggle = toggle || value === "toggle";
+ if (value === (hidden ? "hide" : "show")) {
+ if (value === "show" && dataShow && dataShow[prop] !== void 0) {
+ hidden = true;
+ } else {
+ continue;
+ }
+ }
+ orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);
+ }
+ }
+ propTween = !jQuery.isEmptyObject(props);
+ if (!propTween && jQuery.isEmptyObject(orig)) {
+ return;
+ }
+ if (isBox && elem.nodeType === 1) {
+ opts.overflow = [style.overflow, style.overflowX, style.overflowY];
+ restoreDisplay = dataShow && dataShow.display;
+ if (restoreDisplay == null) {
+ restoreDisplay = dataPriv.get(elem, "display");
+ }
+ display = jQuery.css(elem, "display");
+ if (display === "none") {
+ if (restoreDisplay) {
+ display = restoreDisplay;
+ } else {
+ showHide([elem], true);
+ restoreDisplay = elem.style.display || restoreDisplay;
+ display = jQuery.css(elem, "display");
+ showHide([elem]);
+ }
+ }
+ if (display === "inline" || display === "inline-block" && restoreDisplay != null) {
+ if (jQuery.css(elem, "float") === "none") {
+ if (!propTween) {
+ anim.done(function() {
+ style.display = restoreDisplay;
+ });
+ if (restoreDisplay == null) {
+ display = style.display;
+ restoreDisplay = display === "none" ? "" : display;
+ }
+ }
+ style.display = "inline-block";
+ }
+ }
+ }
+ if (opts.overflow) {
+ style.overflow = "hidden";
+ anim.always(function() {
+ style.overflow = opts.overflow[0];
+ style.overflowX = opts.overflow[1];
+ style.overflowY = opts.overflow[2];
+ });
+ }
+ propTween = false;
+ for (prop in orig) {
+ if (!propTween) {
+ if (dataShow) {
+ if ("hidden" in dataShow) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = dataPriv.access(elem, "fxshow", { display: restoreDisplay });
+ }
+ if (toggle) {
+ dataShow.hidden = !hidden;
+ }
+ if (hidden) {
+ showHide([elem], true);
+ }
+ anim.done(function() {
+ if (!hidden) {
+ showHide([elem]);
+ }
+ dataPriv.remove(elem, "fxshow");
+ for (prop in orig) {
+ jQuery.style(elem, prop, orig[prop]);
+ }
+ });
+ }
+ propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
+ if (!(prop in dataShow)) {
+ dataShow[prop] = propTween.start;
+ if (hidden) {
+ propTween.end = propTween.start;
+ propTween.start = 0;
+ }
+ }
+ }
+ }
+ function propFilter(props, specialEasing) {
+ var index, name, easing, value, hooks;
+ for (index in props) {
+ name = camelCase(index);
+ easing = specialEasing[name];
+ value = props[index];
+ if (Array.isArray(value)) {
+ easing = value[1];
+ value = props[index] = value[0];
+ }
+ if (index !== name) {
+ props[name] = value;
+ delete props[index];
+ }
+ hooks = jQuery.cssHooks[name];
+ if (hooks && "expand" in hooks) {
+ value = hooks.expand(value);
+ delete props[name];
+ for (index in value) {
+ if (!(index in props)) {
+ props[index] = value[index];
+ specialEasing[index] = easing;
+ }
+ }
+ } else {
+ specialEasing[name] = easing;
+ }
+ }
+ }
+ function Animation(elem, properties, options) {
+ var result, stopped, index = 0, length = Animation.prefilters.length, deferred = jQuery.Deferred().always(function() {
+ delete tick.elem;
+ }), tick = function() {
+ if (stopped) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index2 = 0, length2 = animation.tweens.length;
+ for (; index2 < length2; index2++) {
+ animation.tweens[index2].run(percent);
+ }
+ deferred.notifyWith(elem, [animation, percent, remaining]);
+ if (percent < 1 && length2) {
+ return remaining;
+ }
+ if (!length2) {
+ deferred.notifyWith(elem, [animation, 1, 0]);
+ }
+ deferred.resolveWith(elem, [animation]);
+ return false;
+ }, animation = deferred.promise({
+ elem,
+ props: jQuery.extend({}, properties),
+ opts: jQuery.extend(true, {
+ specialEasing: {},
+ easing: jQuery.easing._default
+ }, options),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function(prop, end2) {
+ var tween = jQuery.Tween(
+ elem,
+ animation.opts,
+ prop,
+ end2,
+ animation.opts.specialEasing[prop] || animation.opts.easing
+ );
+ animation.tweens.push(tween);
+ return tween;
+ },
+ stop: function(gotoEnd) {
+ var index2 = 0, length2 = gotoEnd ? animation.tweens.length : 0;
+ if (stopped) {
+ return this;
+ }
+ stopped = true;
+ for (; index2 < length2; index2++) {
+ animation.tweens[index2].run(1);
+ }
+ if (gotoEnd) {
+ deferred.notifyWith(elem, [animation, 1, 0]);
+ deferred.resolveWith(elem, [animation, gotoEnd]);
+ } else {
+ deferred.rejectWith(elem, [animation, gotoEnd]);
+ }
+ return this;
+ }
+ }), props = animation.props;
+ propFilter(props, animation.opts.specialEasing);
+ for (; index < length; index++) {
+ result = Animation.prefilters[index].call(animation, elem, props, animation.opts);
+ if (result) {
+ if (isFunction(result.stop)) {
+ jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);
+ }
+ return result;
+ }
+ }
+ jQuery.map(props, createTween, animation);
+ if (isFunction(animation.opts.start)) {
+ animation.opts.start.call(elem, animation);
+ }
+ animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
+ jQuery.fx.timer(
+ jQuery.extend(tick, {
+ elem,
+ anim: animation,
+ queue: animation.opts.queue
+ })
+ );
+ return animation;
+ }
+ jQuery.Animation = jQuery.extend(Animation, {
+ tweeners: {
+ "*": [function(prop, value) {
+ var tween = this.createTween(prop, value);
+ adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);
+ return tween;
+ }]
+ },
+ tweener: function(props, callback) {
+ if (isFunction(props)) {
+ callback = props;
+ props = ["*"];
+ } else {
+ props = props.match(rnothtmlwhite);
+ }
+ var prop, index = 0, length = props.length;
+ for (; index < length; index++) {
+ prop = props[index];
+ Animation.tweeners[prop] = Animation.tweeners[prop] || [];
+ Animation.tweeners[prop].unshift(callback);
+ }
+ },
+ prefilters: [defaultPrefilter],
+ prefilter: function(callback, prepend) {
+ if (prepend) {
+ Animation.prefilters.unshift(callback);
+ } else {
+ Animation.prefilters.push(callback);
+ }
+ }
+ });
+ jQuery.speed = function(speed, easing, fn2) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
+ complete: fn2 || !fn2 && easing || isFunction(speed) && speed,
+ duration: speed,
+ easing: fn2 && easing || easing && !isFunction(easing) && easing
+ };
+ if (jQuery.fx.off) {
+ opt.duration = 0;
+ } else {
+ if (typeof opt.duration !== "number") {
+ if (opt.duration in jQuery.fx.speeds) {
+ opt.duration = jQuery.fx.speeds[opt.duration];
+ } else {
+ opt.duration = jQuery.fx.speeds._default;
+ }
+ }
+ }
+ if (opt.queue == null || opt.queue === true) {
+ opt.queue = "fx";
+ }
+ opt.old = opt.complete;
+ opt.complete = function() {
+ if (isFunction(opt.old)) {
+ opt.old.call(this);
+ }
+ if (opt.queue) {
+ jQuery.dequeue(this, opt.queue);
+ }
+ };
+ return opt;
+ };
+ jQuery.fn.extend({
+ fadeTo: function(speed, to, easing, callback) {
+ return this.filter(isHiddenWithinTree).css("opacity", 0).show().end().animate({ opacity: to }, speed, easing, callback);
+ },
+ animate: function(prop, speed, easing, callback) {
+ var empty = jQuery.isEmptyObject(prop), optall = jQuery.speed(speed, easing, callback), doAnimation = function() {
+ var anim = Animation(this, jQuery.extend({}, prop), optall);
+ if (empty || dataPriv.get(this, "finish")) {
+ anim.stop(true);
+ }
+ };
+ doAnimation.finish = doAnimation;
+ return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
+ },
+ stop: function(type, clearQueue, gotoEnd) {
+ var stopQueue = function(hooks) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop(gotoEnd);
+ };
+ if (typeof type !== "string") {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = void 0;
+ }
+ if (clearQueue) {
+ this.queue(type || "fx", []);
+ }
+ return this.each(function() {
+ var dequeue = true, index = type != null && type + "queueHooks", timers = jQuery.timers, data = dataPriv.get(this);
+ if (index) {
+ if (data[index] && data[index].stop) {
+ stopQueue(data[index]);
+ }
+ } else {
+ for (index in data) {
+ if (data[index] && data[index].stop && rrun.test(index)) {
+ stopQueue(data[index]);
+ }
+ }
+ }
+ for (index = timers.length; index--; ) {
+ if (timers[index].elem === this && (type == null || timers[index].queue === type)) {
+ timers[index].anim.stop(gotoEnd);
+ dequeue = false;
+ timers.splice(index, 1);
+ }
+ }
+ if (dequeue || !gotoEnd) {
+ jQuery.dequeue(this, type);
+ }
+ });
+ },
+ finish: function(type) {
+ if (type !== false) {
+ type = type || "fx";
+ }
+ return this.each(function() {
+ var index, data = dataPriv.get(this), queue = data[type + "queue"], hooks = data[type + "queueHooks"], timers = jQuery.timers, length = queue ? queue.length : 0;
+ data.finish = true;
+ jQuery.queue(this, type, []);
+ if (hooks && hooks.stop) {
+ hooks.stop.call(this, true);
+ }
+ for (index = timers.length; index--; ) {
+ if (timers[index].elem === this && timers[index].queue === type) {
+ timers[index].anim.stop(true);
+ timers.splice(index, 1);
+ }
+ }
+ for (index = 0; index < length; index++) {
+ if (queue[index] && queue[index].finish) {
+ queue[index].finish.call(this);
+ }
+ }
+ delete data.finish;
+ });
+ }
+ });
+ jQuery.each(["toggle", "show", "hide"], function(_i, name) {
+ var cssFn = jQuery.fn[name];
+ jQuery.fn[name] = function(speed, easing, callback) {
+ return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);
+ };
+ });
+ jQuery.each({
+ slideDown: genFx("show"),
+ slideUp: genFx("hide"),
+ slideToggle: genFx("toggle"),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+ }, function(name, props) {
+ jQuery.fn[name] = function(speed, easing, callback) {
+ return this.animate(props, speed, easing, callback);
+ };
+ });
+ jQuery.timers = [];
+ jQuery.fx.tick = function() {
+ var timer, i = 0, timers = jQuery.timers;
+ fxNow = Date.now();
+ for (; i < timers.length; i++) {
+ timer = timers[i];
+ if (!timer() && timers[i] === timer) {
+ timers.splice(i--, 1);
+ }
+ }
+ if (!timers.length) {
+ jQuery.fx.stop();
+ }
+ fxNow = void 0;
+ };
+ jQuery.fx.timer = function(timer) {
+ jQuery.timers.push(timer);
+ jQuery.fx.start();
+ };
+ jQuery.fx.interval = 13;
+ jQuery.fx.start = function() {
+ if (inProgress) {
+ return;
+ }
+ inProgress = true;
+ schedule();
+ };
+ jQuery.fx.stop = function() {
+ inProgress = null;
+ };
+ jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ };
+ jQuery.fn.delay = function(time, type) {
+ time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+ type = type || "fx";
+ return this.queue(type, function(next, hooks) {
+ var timeout = window2.setTimeout(next, time);
+ hooks.stop = function() {
+ window2.clearTimeout(timeout);
+ };
+ });
+ };
+ (function() {
+ var input = document2.createElement("input"), select = document2.createElement("select"), opt = select.appendChild(document2.createElement("option"));
+ input.type = "checkbox";
+ support.checkOn = input.value !== "";
+ support.optSelected = opt.selected;
+ input = document2.createElement("input");
+ input.value = "t";
+ input.type = "radio";
+ support.radioValue = input.value === "t";
+ })();
+ var boolHook, attrHandle = jQuery.expr.attrHandle;
+ jQuery.fn.extend({
+ attr: function(name, value) {
+ return access(this, jQuery.attr, name, value, arguments.length > 1);
+ },
+ removeAttr: function(name) {
+ return this.each(function() {
+ jQuery.removeAttr(this, name);
+ });
+ }
+ });
+ jQuery.extend({
+ attr: function(elem, name, value) {
+ var ret, hooks, nType = elem.nodeType;
+ if (nType === 3 || nType === 8 || nType === 2) {
+ return;
+ }
+ if (typeof elem.getAttribute === "undefined") {
+ return jQuery.prop(elem, name, value);
+ }
+ if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
+ hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : void 0);
+ }
+ if (value !== void 0) {
+ if (value === null) {
+ jQuery.removeAttr(elem, name);
+ return;
+ }
+ if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== void 0) {
+ return ret;
+ }
+ elem.setAttribute(name, value + "");
+ return value;
+ }
+ if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
+ return ret;
+ }
+ ret = jQuery.find.attr(elem, name);
+ return ret == null ? void 0 : ret;
+ },
+ attrHooks: {
+ type: {
+ set: function(elem, value) {
+ if (!support.radioValue && value === "radio" && nodeName(elem, "input")) {
+ var val = elem.value;
+ elem.setAttribute("type", value);
+ if (val) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ },
+ removeAttr: function(elem, value) {
+ var name, i = 0, attrNames = value && value.match(rnothtmlwhite);
+ if (attrNames && elem.nodeType === 1) {
+ while (name = attrNames[i++]) {
+ elem.removeAttribute(name);
+ }
+ }
+ }
+ });
+ boolHook = {
+ set: function(elem, value, name) {
+ if (value === false) {
+ jQuery.removeAttr(elem, name);
+ } else {
+ elem.setAttribute(name, name);
+ }
+ return name;
+ }
+ };
+ jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function(_i, name) {
+ var getter = attrHandle[name] || jQuery.find.attr;
+ attrHandle[name] = function(elem, name2, isXML) {
+ var ret, handle, lowercaseName = name2.toLowerCase();
+ if (!isXML) {
+ handle = attrHandle[lowercaseName];
+ attrHandle[lowercaseName] = ret;
+ ret = getter(elem, name2, isXML) != null ? lowercaseName : null;
+ attrHandle[lowercaseName] = handle;
+ }
+ return ret;
+ };
+ });
+ var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i;
+ jQuery.fn.extend({
+ prop: function(name, value) {
+ return access(this, jQuery.prop, name, value, arguments.length > 1);
+ },
+ removeProp: function(name) {
+ return this.each(function() {
+ delete this[jQuery.propFix[name] || name];
+ });
+ }
+ });
+ jQuery.extend({
+ prop: function(elem, name, value) {
+ var ret, hooks, nType = elem.nodeType;
+ if (nType === 3 || nType === 8 || nType === 2) {
+ return;
+ }
+ if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
+ name = jQuery.propFix[name] || name;
+ hooks = jQuery.propHooks[name];
+ }
+ if (value !== void 0) {
+ if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== void 0) {
+ return ret;
+ }
+ return elem[name] = value;
+ }
+ if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
+ return ret;
+ }
+ return elem[name];
+ },
+ propHooks: {
+ tabIndex: {
+ get: function(elem) {
+ var tabindex = jQuery.find.attr(elem, "tabindex");
+ if (tabindex) {
+ return parseInt(tabindex, 10);
+ }
+ if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {
+ return 0;
+ }
+ return -1;
+ }
+ }
+ },
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ }
+ });
+ if (!support.optSelected) {
+ jQuery.propHooks.selected = {
+ get: function(elem) {
+ var parent = elem.parentNode;
+ if (parent && parent.parentNode) {
+ parent.parentNode.selectedIndex;
+ }
+ return null;
+ },
+ set: function(elem) {
+ var parent = elem.parentNode;
+ if (parent) {
+ parent.selectedIndex;
+ if (parent.parentNode) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+ };
+ }
+ jQuery.each([
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+ ], function() {
+ jQuery.propFix[this.toLowerCase()] = this;
+ });
+ function stripAndCollapse(value) {
+ var tokens = value.match(rnothtmlwhite) || [];
+ return tokens.join(" ");
+ }
+ function getClass(elem) {
+ return elem.getAttribute && elem.getAttribute("class") || "";
+ }
+ function classesToArray(value) {
+ if (Array.isArray(value)) {
+ return value;
+ }
+ if (typeof value === "string") {
+ return value.match(rnothtmlwhite) || [];
+ }
+ return [];
+ }
+ jQuery.fn.extend({
+ addClass: function(value) {
+ var classNames, cur, curValue, className, i, finalValue;
+ if (isFunction(value)) {
+ return this.each(function(j) {
+ jQuery(this).addClass(value.call(this, j, getClass(this)));
+ });
+ }
+ classNames = classesToArray(value);
+ if (classNames.length) {
+ return this.each(function() {
+ curValue = getClass(this);
+ cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
+ if (cur) {
+ for (i = 0; i < classNames.length; i++) {
+ className = classNames[i];
+ if (cur.indexOf(" " + className + " ") < 0) {
+ cur += className + " ";
+ }
+ }
+ finalValue = stripAndCollapse(cur);
+ if (curValue !== finalValue) {
+ this.setAttribute("class", finalValue);
+ }
+ }
+ });
+ }
+ return this;
+ },
+ removeClass: function(value) {
+ var classNames, cur, curValue, className, i, finalValue;
+ if (isFunction(value)) {
+ return this.each(function(j) {
+ jQuery(this).removeClass(value.call(this, j, getClass(this)));
+ });
+ }
+ if (!arguments.length) {
+ return this.attr("class", "");
+ }
+ classNames = classesToArray(value);
+ if (classNames.length) {
+ return this.each(function() {
+ curValue = getClass(this);
+ cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
+ if (cur) {
+ for (i = 0; i < classNames.length; i++) {
+ className = classNames[i];
+ while (cur.indexOf(" " + className + " ") > -1) {
+ cur = cur.replace(" " + className + " ", " ");
+ }
+ }
+ finalValue = stripAndCollapse(cur);
+ if (curValue !== finalValue) {
+ this.setAttribute("class", finalValue);
+ }
+ }
+ });
+ }
+ return this;
+ },
+ toggleClass: function(value, stateVal) {
+ var classNames, className, i, self, type = typeof value, isValidValue = type === "string" || Array.isArray(value);
+ if (isFunction(value)) {
+ return this.each(function(i2) {
+ jQuery(this).toggleClass(
+ value.call(this, i2, getClass(this), stateVal),
+ stateVal
+ );
+ });
+ }
+ if (typeof stateVal === "boolean" && isValidValue) {
+ return stateVal ? this.addClass(value) : this.removeClass(value);
+ }
+ classNames = classesToArray(value);
+ return this.each(function() {
+ if (isValidValue) {
+ self = jQuery(this);
+ for (i = 0; i < classNames.length; i++) {
+ className = classNames[i];
+ if (self.hasClass(className)) {
+ self.removeClass(className);
+ } else {
+ self.addClass(className);
+ }
+ }
+ } else if (value === void 0 || type === "boolean") {
+ className = getClass(this);
+ if (className) {
+ dataPriv.set(this, "__className__", className);
+ }
+ if (this.setAttribute) {
+ this.setAttribute(
+ "class",
+ className || value === false ? "" : dataPriv.get(this, "__className__") || ""
+ );
+ }
+ }
+ });
+ },
+ hasClass: function(selector) {
+ var className, elem, i = 0;
+ className = " " + selector + " ";
+ while (elem = this[i++]) {
+ if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) {
+ return true;
+ }
+ }
+ return false;
+ }
+ });
+ var rreturn = /\r/g;
+ jQuery.fn.extend({
+ val: function(value) {
+ var hooks, ret, valueIsFunction, elem = this[0];
+ if (!arguments.length) {
+ if (elem) {
+ hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];
+ if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== void 0) {
+ return ret;
+ }
+ ret = elem.value;
+ if (typeof ret === "string") {
+ return ret.replace(rreturn, "");
+ }
+ return ret == null ? "" : ret;
+ }
+ return;
+ }
+ valueIsFunction = isFunction(value);
+ return this.each(function(i) {
+ var val;
+ if (this.nodeType !== 1) {
+ return;
+ }
+ if (valueIsFunction) {
+ val = value.call(this, i, jQuery(this).val());
+ } else {
+ val = value;
+ }
+ if (val == null) {
+ val = "";
+ } else if (typeof val === "number") {
+ val += "";
+ } else if (Array.isArray(val)) {
+ val = jQuery.map(val, function(value2) {
+ return value2 == null ? "" : value2 + "";
+ });
+ }
+ hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];
+ if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === void 0) {
+ this.value = val;
+ }
+ });
+ }
+ });
+ jQuery.extend({
+ valHooks: {
+ option: {
+ get: function(elem) {
+ var val = jQuery.find.attr(elem, "value");
+ return val != null ? val : (
+ // Support: IE <=10 - 11 only
+ // option.text throws exceptions (trac-14686, trac-14858)
+ // Strip and collapse whitespace
+ // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+ stripAndCollapse(jQuery.text(elem))
+ );
+ }
+ },
+ select: {
+ get: function(elem) {
+ var value, option, i, options = elem.options, index = elem.selectedIndex, one = elem.type === "select-one", values = one ? null : [], max2 = one ? index + 1 : options.length;
+ if (index < 0) {
+ i = max2;
+ } else {
+ i = one ? index : 0;
+ }
+ for (; i < max2; i++) {
+ option = options[i];
+ if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup
+ !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) {
+ value = jQuery(option).val();
+ if (one) {
+ return value;
+ }
+ values.push(value);
+ }
+ }
+ return values;
+ },
+ set: function(elem, value) {
+ var optionSet, option, options = elem.options, values = jQuery.makeArray(value), i = options.length;
+ while (i--) {
+ option = options[i];
+ if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {
+ optionSet = true;
+ }
+ }
+ if (!optionSet) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ }
+ });
+ jQuery.each(["radio", "checkbox"], function() {
+ jQuery.valHooks[this] = {
+ set: function(elem, value) {
+ if (Array.isArray(value)) {
+ return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;
+ }
+ }
+ };
+ if (!support.checkOn) {
+ jQuery.valHooks[this].get = function(elem) {
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ };
+ }
+ });
+ var location = window2.location;
+ var nonce = { guid: Date.now() };
+ var rquery = /\?/;
+ jQuery.parseXML = function(data) {
+ var xml, parserErrorElem;
+ if (!data || typeof data !== "string") {
+ return null;
+ }
+ try {
+ xml = new window2.DOMParser().parseFromString(data, "text/xml");
+ } catch (e) {
+ }
+ parserErrorElem = xml && xml.getElementsByTagName("parsererror")[0];
+ if (!xml || parserErrorElem) {
+ jQuery.error("Invalid XML: " + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function(el) {
+ return el.textContent;
+ }).join("\n") : data));
+ }
+ return xml;
+ };
+ var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, stopPropagationCallback = function(e) {
+ e.stopPropagation();
+ };
+ jQuery.extend(jQuery.event, {
+ trigger: function(event, data, elem, onlyHandlers) {
+ var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, eventPath = [elem || document2], type = hasOwn.call(event, "type") ? event.type : event, namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
+ cur = lastElement = tmp = elem = elem || document2;
+ if (elem.nodeType === 3 || elem.nodeType === 8) {
+ return;
+ }
+ if (rfocusMorph.test(type + jQuery.event.triggered)) {
+ return;
+ }
+ if (type.indexOf(".") > -1) {
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf(":") < 0 && "on" + type;
+ event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === "object" && event);
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join(".");
+ event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
+ event.result = void 0;
+ if (!event.target) {
+ event.target = elem;
+ }
+ data = data == null ? [event] : jQuery.makeArray(data, [event]);
+ special = jQuery.event.special[type] || {};
+ if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {
+ return;
+ }
+ if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {
+ bubbleType = special.delegateType || type;
+ if (!rfocusMorph.test(bubbleType + type)) {
+ cur = cur.parentNode;
+ }
+ for (; cur; cur = cur.parentNode) {
+ eventPath.push(cur);
+ tmp = cur;
+ }
+ if (tmp === (elem.ownerDocument || document2)) {
+ eventPath.push(tmp.defaultView || tmp.parentWindow || window2);
+ }
+ }
+ i = 0;
+ while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {
+ lastElement = cur;
+ event.type = i > 1 ? bubbleType : special.bindType || type;
+ handle = (dataPriv.get(cur, "events") || /* @__PURE__ */ Object.create(null))[event.type] && dataPriv.get(cur, "handle");
+ if (handle) {
+ handle.apply(cur, data);
+ }
+ handle = ontype && cur[ontype];
+ if (handle && handle.apply && acceptData(cur)) {
+ event.result = handle.apply(cur, data);
+ if (event.result === false) {
+ event.preventDefault();
+ }
+ }
+ }
+ event.type = type;
+ if (!onlyHandlers && !event.isDefaultPrevented()) {
+ if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {
+ if (ontype && isFunction(elem[type]) && !isWindow(elem)) {
+ tmp = elem[ontype];
+ if (tmp) {
+ elem[ontype] = null;
+ }
+ jQuery.event.triggered = type;
+ if (event.isPropagationStopped()) {
+ lastElement.addEventListener(type, stopPropagationCallback);
+ }
+ elem[type]();
+ if (event.isPropagationStopped()) {
+ lastElement.removeEventListener(type, stopPropagationCallback);
+ }
+ jQuery.event.triggered = void 0;
+ if (tmp) {
+ elem[ontype] = tmp;
+ }
+ }
+ }
+ }
+ return event.result;
+ },
+ // Piggyback on a donor event to simulate a different one
+ // Used only for `focus(in | out)` events
+ simulate: function(type, elem, event) {
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type,
+ isSimulated: true
+ }
+ );
+ jQuery.event.trigger(e, null, elem);
+ }
+ });
+ jQuery.fn.extend({
+ trigger: function(type, data) {
+ return this.each(function() {
+ jQuery.event.trigger(type, data, this);
+ });
+ },
+ triggerHandler: function(type, data) {
+ var elem = this[0];
+ if (elem) {
+ return jQuery.event.trigger(type, data, elem, true);
+ }
+ }
+ });
+ var rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i;
+ function buildParams(prefix, obj, traditional, add) {
+ var name;
+ if (Array.isArray(obj)) {
+ jQuery.each(obj, function(i, v) {
+ if (traditional || rbracket.test(prefix)) {
+ add(prefix, v);
+ } else {
+ buildParams(
+ prefix + "[" + (typeof v === "object" && v != null ? i : "") + "]",
+ v,
+ traditional,
+ add
+ );
+ }
+ });
+ } else if (!traditional && toType2(obj) === "object") {
+ for (name in obj) {
+ buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
+ }
+ } else {
+ add(prefix, obj);
+ }
+ }
+ jQuery.param = function(a, traditional) {
+ var prefix, s = [], add = function(key, valueOrFunction) {
+ var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;
+ s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value == null ? "" : value);
+ };
+ if (a == null) {
+ return "";
+ }
+ if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {
+ jQuery.each(a, function() {
+ add(this.name, this.value);
+ });
+ } else {
+ for (prefix in a) {
+ buildParams(prefix, a[prefix], traditional, add);
+ }
+ }
+ return s.join("&");
+ };
+ jQuery.fn.extend({
+ serialize: function() {
+ return jQuery.param(this.serializeArray());
+ },
+ serializeArray: function() {
+ return this.map(function() {
+ var elements = jQuery.prop(this, "elements");
+ return elements ? jQuery.makeArray(elements) : this;
+ }).filter(function() {
+ var type = this.type;
+ return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));
+ }).map(function(_i, elem) {
+ var val = jQuery(this).val();
+ if (val == null) {
+ return null;
+ }
+ if (Array.isArray(val)) {
+ return jQuery.map(val, function(val2) {
+ return { name: elem.name, value: val2.replace(rCRLF, "\r\n") };
+ });
+ }
+ return { name: elem.name, value: val.replace(rCRLF, "\r\n") };
+ }).get();
+ }
+ });
+ var r20 = /%20/g, rhash = /#.*$/, rantiCache = /([?&])_=[^&]*/, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, prefilters = {}, transports = {}, allTypes = "*/".concat("*"), originAnchor = document2.createElement("a");
+ originAnchor.href = location.href;
+ function addToPrefiltersOrTransports(structure) {
+ return function(dataTypeExpression, func) {
+ if (typeof dataTypeExpression !== "string") {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+ var dataType, i = 0, dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];
+ if (isFunction(func)) {
+ while (dataType = dataTypes[i++]) {
+ if (dataType[0] === "+") {
+ dataType = dataType.slice(1) || "*";
+ (structure[dataType] = structure[dataType] || []).unshift(func);
+ } else {
+ (structure[dataType] = structure[dataType] || []).push(func);
+ }
+ }
+ }
+ };
+ }
+ function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
+ var inspected = {}, seekingTransport = structure === transports;
+ function inspect(dataType) {
+ var selected;
+ inspected[dataType] = true;
+ jQuery.each(structure[dataType] || [], function(_, prefilterOrFactory) {
+ var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
+ if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) {
+ options.dataTypes.unshift(dataTypeOrTransport);
+ inspect(dataTypeOrTransport);
+ return false;
+ } else if (seekingTransport) {
+ return !(selected = dataTypeOrTransport);
+ }
+ });
+ return selected;
+ }
+ return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
+ }
+ function ajaxExtend(target, src) {
+ var key, deep, flatOptions = jQuery.ajaxSettings.flatOptions || {};
+ for (key in src) {
+ if (src[key] !== void 0) {
+ (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];
+ }
+ }
+ if (deep) {
+ jQuery.extend(true, target, deep);
+ }
+ return target;
+ }
+ function ajaxHandleResponses(s, jqXHR, responses) {
+ var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes;
+ while (dataTypes[0] === "*") {
+ dataTypes.shift();
+ if (ct === void 0) {
+ ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+ }
+ }
+ if (ct) {
+ for (type in contents) {
+ if (contents[type] && contents[type].test(ct)) {
+ dataTypes.unshift(type);
+ break;
+ }
+ }
+ }
+ if (dataTypes[0] in responses) {
+ finalDataType = dataTypes[0];
+ } else {
+ for (type in responses) {
+ if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
+ finalDataType = type;
+ break;
+ }
+ if (!firstDataType) {
+ firstDataType = type;
+ }
+ }
+ finalDataType = finalDataType || firstDataType;
+ }
+ if (finalDataType) {
+ if (finalDataType !== dataTypes[0]) {
+ dataTypes.unshift(finalDataType);
+ }
+ return responses[finalDataType];
+ }
+ }
+ function ajaxConvert(s, response, jqXHR, isSuccess) {
+ var conv2, current, conv, tmp, prev, converters = {}, dataTypes = s.dataTypes.slice();
+ if (dataTypes[1]) {
+ for (conv in s.converters) {
+ converters[conv.toLowerCase()] = s.converters[conv];
+ }
+ }
+ current = dataTypes.shift();
+ while (current) {
+ if (s.responseFields[current]) {
+ jqXHR[s.responseFields[current]] = response;
+ }
+ if (!prev && isSuccess && s.dataFilter) {
+ response = s.dataFilter(response, s.dataType);
+ }
+ prev = current;
+ current = dataTypes.shift();
+ if (current) {
+ if (current === "*") {
+ current = prev;
+ } else if (prev !== "*" && prev !== current) {
+ conv = converters[prev + " " + current] || converters["* " + current];
+ if (!conv) {
+ for (conv2 in converters) {
+ tmp = conv2.split(" ");
+ if (tmp[1] === current) {
+ conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]];
+ if (conv) {
+ if (conv === true) {
+ conv = converters[conv2];
+ } else if (converters[conv2] !== true) {
+ current = tmp[0];
+ dataTypes.unshift(tmp[1]);
+ }
+ break;
+ }
+ }
+ }
+ }
+ if (conv !== true) {
+ if (conv && s.throws) {
+ response = conv(response);
+ } else {
+ try {
+ response = conv(response);
+ } catch (e) {
+ return {
+ state: "parsererror",
+ error: conv ? e : "No conversion from " + prev + " to " + current
+ };
+ }
+ }
+ }
+ }
+ }
+ }
+ return { state: "success", data: response };
+ }
+ jQuery.extend({
+ // Counter for holding the number of active queries
+ active: 0,
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+ ajaxSettings: {
+ url: location.href,
+ type: "GET",
+ isLocal: rlocalProtocol.test(location.protocol),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+ contents: {
+ xml: /\bxml\b/,
+ html: /\bhtml/,
+ json: /\bjson\b/
+ },
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+ // Convert anything to text
+ "* text": String,
+ // Text to html (true = no transformation)
+ "text html": true,
+ // Evaluate text as a json expression
+ "text json": JSON.parse,
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function(target, settings) {
+ return settings ? (
+ // Building a settings object
+ ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings)
+ ) : (
+ // Extending ajaxSettings
+ ajaxExtend(jQuery.ajaxSettings, target)
+ );
+ },
+ ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
+ ajaxTransport: addToPrefiltersOrTransports(transports),
+ // Main method
+ ajax: function(url, options) {
+ if (typeof url === "object") {
+ options = url;
+ url = void 0;
+ }
+ options = options || {};
+ var transport, cacheURL, responseHeadersString, responseHeaders, timeoutTimer, urlAnchor, completed2, fireGlobals, i, uncached, s = jQuery.ajaxSetup({}, options), callbackContext = s.context || s, globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event, deferred = jQuery.Deferred(), completeDeferred = jQuery.Callbacks("once memory"), statusCode = s.statusCode || {}, requestHeaders = {}, requestHeadersNames = {}, strAbort = "canceled", jqXHR = {
+ readyState: 0,
+ // Builds headers hashtable if needed
+ getResponseHeader: function(key) {
+ var match;
+ if (completed2) {
+ if (!responseHeaders) {
+ responseHeaders = {};
+ while (match = rheaders.exec(responseHeadersString)) {
+ responseHeaders[match[1].toLowerCase() + " "] = (responseHeaders[match[1].toLowerCase() + " "] || []).concat(match[2]);
+ }
+ }
+ match = responseHeaders[key.toLowerCase() + " "];
+ }
+ return match == null ? null : match.join(", ");
+ },
+ // Raw string
+ getAllResponseHeaders: function() {
+ return completed2 ? responseHeadersString : null;
+ },
+ // Caches the header
+ setRequestHeader: function(name, value) {
+ if (completed2 == null) {
+ name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;
+ requestHeaders[name] = value;
+ }
+ return this;
+ },
+ // Overrides response content-type header
+ overrideMimeType: function(type) {
+ if (completed2 == null) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+ // Status-dependent callbacks
+ statusCode: function(map) {
+ var code;
+ if (map) {
+ if (completed2) {
+ jqXHR.always(map[jqXHR.status]);
+ } else {
+ for (code in map) {
+ statusCode[code] = [statusCode[code], map[code]];
+ }
+ }
+ }
+ return this;
+ },
+ // Cancel the request
+ abort: function(statusText) {
+ var finalText = statusText || strAbort;
+ if (transport) {
+ transport.abort(finalText);
+ }
+ done(0, finalText);
+ return this;
+ }
+ };
+ deferred.promise(jqXHR);
+ s.url = ((url || s.url || location.href) + "").replace(rprotocol, location.protocol + "//");
+ s.type = options.method || options.type || s.method || s.type;
+ s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""];
+ if (s.crossDomain == null) {
+ urlAnchor = document2.createElement("a");
+ try {
+ urlAnchor.href = s.url;
+ urlAnchor.href = urlAnchor.href;
+ s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host;
+ } catch (e) {
+ s.crossDomain = true;
+ }
+ }
+ if (s.data && s.processData && typeof s.data !== "string") {
+ s.data = jQuery.param(s.data, s.traditional);
+ }
+ inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);
+ if (completed2) {
+ return jqXHR;
+ }
+ fireGlobals = jQuery.event && s.global;
+ if (fireGlobals && jQuery.active++ === 0) {
+ jQuery.event.trigger("ajaxStart");
+ }
+ s.type = s.type.toUpperCase();
+ s.hasContent = !rnoContent.test(s.type);
+ cacheURL = s.url.replace(rhash, "");
+ if (!s.hasContent) {
+ uncached = s.url.slice(cacheURL.length);
+ if (s.data && (s.processData || typeof s.data === "string")) {
+ cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data;
+ delete s.data;
+ }
+ if (s.cache === false) {
+ cacheURL = cacheURL.replace(rantiCache, "$1");
+ uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce.guid++ + uncached;
+ }
+ s.url = cacheURL + uncached;
+ } else if (s.data && s.processData && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0) {
+ s.data = s.data.replace(r20, "+");
+ }
+ if (s.ifModified) {
+ if (jQuery.lastModified[cacheURL]) {
+ jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]);
+ }
+ if (jQuery.etag[cacheURL]) {
+ jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL]);
+ }
+ }
+ if (s.data && s.hasContent && s.contentType !== false || options.contentType) {
+ jqXHR.setRequestHeader("Content-Type", s.contentType);
+ }
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]
+ );
+ for (i in s.headers) {
+ jqXHR.setRequestHeader(i, s.headers[i]);
+ }
+ if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed2)) {
+ return jqXHR.abort();
+ }
+ strAbort = "abort";
+ completeDeferred.add(s.complete);
+ jqXHR.done(s.success);
+ jqXHR.fail(s.error);
+ transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);
+ if (!transport) {
+ done(-1, "No Transport");
+ } else {
+ jqXHR.readyState = 1;
+ if (fireGlobals) {
+ globalEventContext.trigger("ajaxSend", [jqXHR, s]);
+ }
+ if (completed2) {
+ return jqXHR;
+ }
+ if (s.async && s.timeout > 0) {
+ timeoutTimer = window2.setTimeout(function() {
+ jqXHR.abort("timeout");
+ }, s.timeout);
+ }
+ try {
+ completed2 = false;
+ transport.send(requestHeaders, done);
+ } catch (e) {
+ if (completed2) {
+ throw e;
+ }
+ done(-1, e);
+ }
+ }
+ function done(status, nativeStatusText, responses, headers) {
+ var isSuccess, success, error, response, modified, statusText = nativeStatusText;
+ if (completed2) {
+ return;
+ }
+ completed2 = true;
+ if (timeoutTimer) {
+ window2.clearTimeout(timeoutTimer);
+ }
+ transport = void 0;
+ responseHeadersString = headers || "";
+ jqXHR.readyState = status > 0 ? 4 : 0;
+ isSuccess = status >= 200 && status < 300 || status === 304;
+ if (responses) {
+ response = ajaxHandleResponses(s, jqXHR, responses);
+ }
+ if (!isSuccess && jQuery.inArray("script", s.dataTypes) > -1 && jQuery.inArray("json", s.dataTypes) < 0) {
+ s.converters["text script"] = function() {
+ };
+ }
+ response = ajaxConvert(s, response, jqXHR, isSuccess);
+ if (isSuccess) {
+ if (s.ifModified) {
+ modified = jqXHR.getResponseHeader("Last-Modified");
+ if (modified) {
+ jQuery.lastModified[cacheURL] = modified;
+ }
+ modified = jqXHR.getResponseHeader("etag");
+ if (modified) {
+ jQuery.etag[cacheURL] = modified;
+ }
+ }
+ if (status === 204 || s.type === "HEAD") {
+ statusText = "nocontent";
+ } else if (status === 304) {
+ statusText = "notmodified";
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+ error = statusText;
+ if (status || !statusText) {
+ statusText = "error";
+ if (status < 0) {
+ status = 0;
+ }
+ }
+ }
+ jqXHR.status = status;
+ jqXHR.statusText = (nativeStatusText || statusText) + "";
+ if (isSuccess) {
+ deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
+ } else {
+ deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
+ }
+ jqXHR.statusCode(statusCode);
+ statusCode = void 0;
+ if (fireGlobals) {
+ globalEventContext.trigger(
+ isSuccess ? "ajaxSuccess" : "ajaxError",
+ [jqXHR, s, isSuccess ? success : error]
+ );
+ }
+ completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);
+ if (fireGlobals) {
+ globalEventContext.trigger("ajaxComplete", [jqXHR, s]);
+ if (!--jQuery.active) {
+ jQuery.event.trigger("ajaxStop");
+ }
+ }
+ }
+ return jqXHR;
+ },
+ getJSON: function(url, data, callback) {
+ return jQuery.get(url, data, callback, "json");
+ },
+ getScript: function(url, callback) {
+ return jQuery.get(url, void 0, callback, "script");
+ }
+ });
+ jQuery.each(["get", "post"], function(_i, method) {
+ jQuery[method] = function(url, data, callback, type) {
+ if (isFunction(data)) {
+ type = type || callback;
+ callback = data;
+ data = void 0;
+ }
+ return jQuery.ajax(jQuery.extend({
+ url,
+ type: method,
+ dataType: type,
+ data,
+ success: callback
+ }, jQuery.isPlainObject(url) && url));
+ };
+ });
+ jQuery.ajaxPrefilter(function(s) {
+ var i;
+ for (i in s.headers) {
+ if (i.toLowerCase() === "content-type") {
+ s.contentType = s.headers[i] || "";
+ }
+ }
+ });
+ jQuery._evalUrl = function(url, options, doc) {
+ return jQuery.ajax({
+ url,
+ // Make this explicit, since user can override this through ajaxSetup (trac-11264)
+ type: "GET",
+ dataType: "script",
+ cache: true,
+ async: false,
+ global: false,
+ // Only evaluate the response if it is successful (gh-4126)
+ // dataFilter is not invoked for failure responses, so using it instead
+ // of the default converter is kludgy but it works.
+ converters: {
+ "text script": function() {
+ }
+ },
+ dataFilter: function(response) {
+ jQuery.globalEval(response, options, doc);
+ }
+ });
+ };
+ jQuery.fn.extend({
+ wrapAll: function(html) {
+ var wrap;
+ if (this[0]) {
+ if (isFunction(html)) {
+ html = html.call(this[0]);
+ }
+ wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);
+ if (this[0].parentNode) {
+ wrap.insertBefore(this[0]);
+ }
+ wrap.map(function() {
+ var elem = this;
+ while (elem.firstElementChild) {
+ elem = elem.firstElementChild;
+ }
+ return elem;
+ }).append(this);
+ }
+ return this;
+ },
+ wrapInner: function(html) {
+ if (isFunction(html)) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner(html.call(this, i));
+ });
+ }
+ return this.each(function() {
+ var self = jQuery(this), contents = self.contents();
+ if (contents.length) {
+ contents.wrapAll(html);
+ } else {
+ self.append(html);
+ }
+ });
+ },
+ wrap: function(html) {
+ var htmlIsFunction = isFunction(html);
+ return this.each(function(i) {
+ jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);
+ });
+ },
+ unwrap: function(selector) {
+ this.parent(selector).not("body").each(function() {
+ jQuery(this).replaceWith(this.childNodes);
+ });
+ return this;
+ }
+ });
+ jQuery.expr.pseudos.hidden = function(elem) {
+ return !jQuery.expr.pseudos.visible(elem);
+ };
+ jQuery.expr.pseudos.visible = function(elem) {
+ return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
+ };
+ jQuery.ajaxSettings.xhr = function() {
+ try {
+ return new window2.XMLHttpRequest();
+ } catch (e) {
+ }
+ };
+ var xhrSuccessStatus = {
+ // File protocol always yields status code 0, assume 200
+ 0: 200,
+ // Support: IE <=9 only
+ // trac-1450: sometimes IE returns 1223 when it should be 204
+ 1223: 204
+ }, xhrSupported = jQuery.ajaxSettings.xhr();
+ support.cors = !!xhrSupported && "withCredentials" in xhrSupported;
+ support.ajax = xhrSupported = !!xhrSupported;
+ jQuery.ajaxTransport(function(options) {
+ var callback, errorCallback;
+ if (support.cors || xhrSupported && !options.crossDomain) {
+ return {
+ send: function(headers, complete) {
+ var i, xhr = options.xhr();
+ xhr.open(
+ options.type,
+ options.url,
+ options.async,
+ options.username,
+ options.password
+ );
+ if (options.xhrFields) {
+ for (i in options.xhrFields) {
+ xhr[i] = options.xhrFields[i];
+ }
+ }
+ if (options.mimeType && xhr.overrideMimeType) {
+ xhr.overrideMimeType(options.mimeType);
+ }
+ if (!options.crossDomain && !headers["X-Requested-With"]) {
+ headers["X-Requested-With"] = "XMLHttpRequest";
+ }
+ for (i in headers) {
+ xhr.setRequestHeader(i, headers[i]);
+ }
+ callback = function(type) {
+ return function() {
+ if (callback) {
+ callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;
+ if (type === "abort") {
+ xhr.abort();
+ } else if (type === "error") {
+ if (typeof xhr.status !== "number") {
+ complete(0, "error");
+ } else {
+ complete(
+ // File: protocol always yields status 0; see trac-8605, trac-14207
+ xhr.status,
+ xhr.statusText
+ );
+ }
+ } else {
+ complete(
+ xhrSuccessStatus[xhr.status] || xhr.status,
+ xhr.statusText,
+ // Support: IE <=9 only
+ // IE9 has no XHR2 but throws on binary (trac-11426)
+ // For XHR2 non-text, let the caller handle it (gh-2498)
+ (xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? { binary: xhr.response } : { text: xhr.responseText },
+ xhr.getAllResponseHeaders()
+ );
+ }
+ }
+ };
+ };
+ xhr.onload = callback();
+ errorCallback = xhr.onerror = xhr.ontimeout = callback("error");
+ if (xhr.onabort !== void 0) {
+ xhr.onabort = errorCallback;
+ } else {
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState === 4) {
+ window2.setTimeout(function() {
+ if (callback) {
+ errorCallback();
+ }
+ });
+ }
+ };
+ }
+ callback = callback("abort");
+ try {
+ xhr.send(options.hasContent && options.data || null);
+ } catch (e) {
+ if (callback) {
+ throw e;
+ }
+ }
+ },
+ abort: function() {
+ if (callback) {
+ callback();
+ }
+ }
+ };
+ }
+ });
+ jQuery.ajaxPrefilter(function(s) {
+ if (s.crossDomain) {
+ s.contents.script = false;
+ }
+ });
+ jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /\b(?:java|ecma)script\b/
+ },
+ converters: {
+ "text script": function(text) {
+ jQuery.globalEval(text);
+ return text;
+ }
+ }
+ });
+ jQuery.ajaxPrefilter("script", function(s) {
+ if (s.cache === void 0) {
+ s.cache = false;
+ }
+ if (s.crossDomain) {
+ s.type = "GET";
+ }
+ });
+ jQuery.ajaxTransport("script", function(s) {
+ if (s.crossDomain || s.scriptAttrs) {
+ var script, callback;
+ return {
+ send: function(_, complete) {
+ script = jQuery("<script>").attr(s.scriptAttrs || {}).prop({ charset: s.scriptCharset, src: s.url }).on("load error", callback = function(evt) {
+ script.remove();
+ callback = null;
+ if (evt) {
+ complete(evt.type === "error" ? 404 : 200, evt.type);
+ }
+ });
+ document2.head.appendChild(script[0]);
+ },
+ abort: function() {
+ if (callback) {
+ callback();
+ }
+ }
+ };
+ }
+ });
+ var oldCallbacks = [], rjsonp = /(=)\?(?=&|$)|\?\?/;
+ jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || jQuery.expando + "_" + nonce.guid++;
+ this[callback] = true;
+ return callback;
+ }
+ });
+ jQuery.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR) {
+ var callbackName, overwritten, responseContainer, jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : typeof s.data === "string" && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0 && rjsonp.test(s.data) && "data");
+ if (jsonProp || s.dataTypes[0] === "jsonp") {
+ callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;
+ if (jsonProp) {
+ s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName);
+ } else if (s.jsonp !== false) {
+ s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName;
+ }
+ s.converters["script json"] = function() {
+ if (!responseContainer) {
+ jQuery.error(callbackName + " was not called");
+ }
+ return responseContainer[0];
+ };
+ s.dataTypes[0] = "json";
+ overwritten = window2[callbackName];
+ window2[callbackName] = function() {
+ responseContainer = arguments;
+ };
+ jqXHR.always(function() {
+ if (overwritten === void 0) {
+ jQuery(window2).removeProp(callbackName);
+ } else {
+ window2[callbackName] = overwritten;
+ }
+ if (s[callbackName]) {
+ s.jsonpCallback = originalSettings.jsonpCallback;
+ oldCallbacks.push(callbackName);
+ }
+ if (responseContainer && isFunction(overwritten)) {
+ overwritten(responseContainer[0]);
+ }
+ responseContainer = overwritten = void 0;
+ });
+ return "script";
+ }
+ });
+ support.createHTMLDocument = function() {
+ var body = document2.implementation.createHTMLDocument("").body;
+ body.innerHTML = "<form></form><form></form>";
+ return body.childNodes.length === 2;
+ }();
+ jQuery.parseHTML = function(data, context, keepScripts) {
+ if (typeof data !== "string") {
+ return [];
+ }
+ if (typeof context === "boolean") {
+ keepScripts = context;
+ context = false;
+ }
+ var base, parsed, scripts;
+ if (!context) {
+ if (support.createHTMLDocument) {
+ context = document2.implementation.createHTMLDocument("");
+ base = context.createElement("base");
+ base.href = document2.location.href;
+ context.head.appendChild(base);
+ } else {
+ context = document2;
+ }
+ }
+ parsed = rsingleTag.exec(data);
+ scripts = !keepScripts && [];
+ if (parsed) {
+ return [context.createElement(parsed[1])];
+ }
+ parsed = buildFragment([data], context, scripts);
+ if (scripts && scripts.length) {
+ jQuery(scripts).remove();
+ }
+ return jQuery.merge([], parsed.childNodes);
+ };
+ jQuery.fn.load = function(url, params, callback) {
+ var selector, type, response, self = this, off = url.indexOf(" ");
+ if (off > -1) {
+ selector = stripAndCollapse(url.slice(off));
+ url = url.slice(0, off);
+ }
+ if (isFunction(params)) {
+ callback = params;
+ params = void 0;
+ } else if (params && typeof params === "object") {
+ type = "POST";
+ }
+ if (self.length > 0) {
+ jQuery.ajax({
+ url,
+ // If "type" variable is undefined, then "GET" method will be used.
+ // Make value of this field explicit since
+ // user can override it through ajaxSetup method
+ type: type || "GET",
+ dataType: "html",
+ data: params
+ }).done(function(responseText) {
+ response = arguments;
+ self.html(selector ? (
+ // If a selector was specified, locate the right elements in a dummy div
+ // Exclude scripts to avoid IE 'Permission Denied' errors
+ jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector)
+ ) : (
+ // Otherwise use the full result
+ responseText
+ ));
+ }).always(callback && function(jqXHR, status) {
+ self.each(function() {
+ callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);
+ });
+ });
+ }
+ return this;
+ };
+ jQuery.expr.pseudos.animated = function(elem) {
+ return jQuery.grep(jQuery.timers, function(fn2) {
+ return elem === fn2.elem;
+ }).length;
+ };
+ jQuery.offset = {
+ setOffset: function(elem, options, i) {
+ var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery.css(elem, "position"), curElem = jQuery(elem), props = {};
+ if (position === "static") {
+ elem.style.position = "relative";
+ }
+ curOffset = curElem.offset();
+ curCSSTop = jQuery.css(elem, "top");
+ curCSSLeft = jQuery.css(elem, "left");
+ calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1;
+ if (calculatePosition) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat(curCSSTop) || 0;
+ curLeft = parseFloat(curCSSLeft) || 0;
+ }
+ if (isFunction(options)) {
+ options = options.call(elem, i, jQuery.extend({}, curOffset));
+ }
+ if (options.top != null) {
+ props.top = options.top - curOffset.top + curTop;
+ }
+ if (options.left != null) {
+ props.left = options.left - curOffset.left + curLeft;
+ }
+ if ("using" in options) {
+ options.using.call(elem, props);
+ } else {
+ curElem.css(props);
+ }
+ }
+ };
+ jQuery.fn.extend({
+ // offset() relates an element's border box to the document origin
+ offset: function(options) {
+ if (arguments.length) {
+ return options === void 0 ? this : this.each(function(i) {
+ jQuery.offset.setOffset(this, options, i);
+ });
+ }
+ var rect, win, elem = this[0];
+ if (!elem) {
+ return;
+ }
+ if (!elem.getClientRects().length) {
+ return { top: 0, left: 0 };
+ }
+ rect = elem.getBoundingClientRect();
+ win = elem.ownerDocument.defaultView;
+ return {
+ top: rect.top + win.pageYOffset,
+ left: rect.left + win.pageXOffset
+ };
+ },
+ // position() relates an element's margin box to its offset parent's padding box
+ // This corresponds to the behavior of CSS absolute positioning
+ position: function() {
+ if (!this[0]) {
+ return;
+ }
+ var offsetParent, offset2, doc, elem = this[0], parentOffset = { top: 0, left: 0 };
+ if (jQuery.css(elem, "position") === "fixed") {
+ offset2 = elem.getBoundingClientRect();
+ } else {
+ offset2 = this.offset();
+ doc = elem.ownerDocument;
+ offsetParent = elem.offsetParent || doc.documentElement;
+ while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, "position") === "static") {
+ offsetParent = offsetParent.parentNode;
+ }
+ if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
+ parentOffset = jQuery(offsetParent).offset();
+ parentOffset.top += jQuery.css(offsetParent, "borderTopWidth", true);
+ parentOffset.left += jQuery.css(offsetParent, "borderLeftWidth", true);
+ }
+ }
+ return {
+ top: offset2.top - parentOffset.top - jQuery.css(elem, "marginTop", true),
+ left: offset2.left - parentOffset.left - jQuery.css(elem, "marginLeft", true)
+ };
+ },
+ // This method will return documentElement in the following cases:
+ // 1) For the element inside the iframe without offsetParent, this method will return
+ // documentElement of the parent window
+ // 2) For the hidden or detached element
+ // 3) For body or html element, i.e. in case of the html node - it will return itself
+ //
+ // but those exceptions were never presented as a real life use-cases
+ // and might be considered as more preferable results.
+ //
+ // This logic, however, is not guaranteed and can change at any point in the future
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent;
+ while (offsetParent && jQuery.css(offsetParent, "position") === "static") {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent || documentElement;
+ });
+ }
+ });
+ jQuery.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(method, prop) {
+ var top2 = "pageYOffset" === prop;
+ jQuery.fn[method] = function(val) {
+ return access(this, function(elem, method2, val2) {
+ var win;
+ if (isWindow(elem)) {
+ win = elem;
+ } else if (elem.nodeType === 9) {
+ win = elem.defaultView;
+ }
+ if (val2 === void 0) {
+ return win ? win[prop] : elem[method2];
+ }
+ if (win) {
+ win.scrollTo(
+ !top2 ? val2 : win.pageXOffset,
+ top2 ? val2 : win.pageYOffset
+ );
+ } else {
+ elem[method2] = val2;
+ }
+ }, method, val, arguments.length);
+ };
+ });
+ jQuery.each(["top", "left"], function(_i, prop) {
+ jQuery.cssHooks[prop] = addGetHookIf(
+ support.pixelPosition,
+ function(elem, computed) {
+ if (computed) {
+ computed = curCSS(elem, prop);
+ return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + "px" : computed;
+ }
+ }
+ );
+ });
+ jQuery.each({ Height: "height", Width: "width" }, function(name, type) {
+ jQuery.each({
+ padding: "inner" + name,
+ content: type,
+ "": "outer" + name
+ }, function(defaultExtra, funcName) {
+ jQuery.fn[funcName] = function(margin, value) {
+ var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"), extra = defaultExtra || (margin === true || value === true ? "margin" : "border");
+ return access(this, function(elem, type2, value2) {
+ var doc;
+ if (isWindow(elem)) {
+ return funcName.indexOf("outer") === 0 ? elem["inner" + name] : elem.document.documentElement["client" + name];
+ }
+ if (elem.nodeType === 9) {
+ doc = elem.documentElement;
+ return Math.max(
+ elem.body["scroll" + name],
+ doc["scroll" + name],
+ elem.body["offset" + name],
+ doc["offset" + name],
+ doc["client" + name]
+ );
+ }
+ return value2 === void 0 ? (
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css(elem, type2, extra)
+ ) : (
+ // Set width or height on the element
+ jQuery.style(elem, type2, value2, extra)
+ );
+ }, type, chainable ? margin : void 0, chainable);
+ };
+ });
+ });
+ jQuery.each([
+ "ajaxStart",
+ "ajaxStop",
+ "ajaxComplete",
+ "ajaxError",
+ "ajaxSuccess",
+ "ajaxSend"
+ ], function(_i, type) {
+ jQuery.fn[type] = function(fn2) {
+ return this.on(type, fn2);
+ };
+ });
+ jQuery.fn.extend({
+ bind: function(types, data, fn2) {
+ return this.on(types, null, data, fn2);
+ },
+ unbind: function(types, fn2) {
+ return this.off(types, null, fn2);
+ },
+ delegate: function(selector, types, data, fn2) {
+ return this.on(types, selector, data, fn2);
+ },
+ undelegate: function(selector, types, fn2) {
+ return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn2);
+ },
+ hover: function(fnOver, fnOut) {
+ return this.on("mouseenter", fnOver).on("mouseleave", fnOut || fnOver);
+ }
+ });
+ jQuery.each(
+ "blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),
+ function(_i, name) {
+ jQuery.fn[name] = function(data, fn2) {
+ return arguments.length > 0 ? this.on(name, null, data, fn2) : this.trigger(name);
+ };
+ }
+ );
+ var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
+ jQuery.proxy = function(fn2, context) {
+ var tmp, args, proxy;
+ if (typeof context === "string") {
+ tmp = fn2[context];
+ context = fn2;
+ fn2 = tmp;
+ }
+ if (!isFunction(fn2)) {
+ return void 0;
+ }
+ args = slice.call(arguments, 2);
+ proxy = function() {
+ return fn2.apply(context || this, args.concat(slice.call(arguments)));
+ };
+ proxy.guid = fn2.guid = fn2.guid || jQuery.guid++;
+ return proxy;
+ };
+ jQuery.holdReady = function(hold) {
+ if (hold) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready(true);
+ }
+ };
+ jQuery.isArray = Array.isArray;
+ jQuery.parseJSON = JSON.parse;
+ jQuery.nodeName = nodeName;
+ jQuery.isFunction = isFunction;
+ jQuery.isWindow = isWindow;
+ jQuery.camelCase = camelCase;
+ jQuery.type = toType2;
+ jQuery.now = Date.now;
+ jQuery.isNumeric = function(obj) {
+ var type = jQuery.type(obj);
+ return (type === "number" || type === "string") && // parseFloat NaNs numeric-cast false positives ("")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ !isNaN(obj - parseFloat(obj));
+ };
+ jQuery.trim = function(text) {
+ return text == null ? "" : (text + "").replace(rtrim, "$1");
+ };
+ if (typeof define === "function" && define.amd) {
+ define("jquery", [], function() {
+ return jQuery;
+ });
+ }
+ var _jQuery = window2.jQuery, _$ = window2.$;
+ jQuery.noConflict = function(deep) {
+ if (window2.$ === jQuery) {
+ window2.$ = _$;
+ }
+ if (deep && window2.jQuery === jQuery) {
+ window2.jQuery = _jQuery;
+ }
+ return jQuery;
+ };
+ if (typeof noGlobal === "undefined") {
+ window2.jQuery = window2.$ = jQuery;
+ }
+ return jQuery;
+ });
+ }
+ });
+
+ // js/app.js
+ var import_jquery3 = __toESM(require_jquery());
+
+ // node_modules/@popperjs/core/lib/index.js
+ var lib_exports = {};
+ __export(lib_exports, {
+ afterMain: () => afterMain,
+ afterRead: () => afterRead,
+ afterWrite: () => afterWrite,
+ applyStyles: () => applyStyles_default,
+ arrow: () => arrow_default,
+ auto: () => auto,
+ basePlacements: () => basePlacements,
+ beforeMain: () => beforeMain,
+ beforeRead: () => beforeRead,
+ beforeWrite: () => beforeWrite,
+ bottom: () => bottom,
+ clippingParents: () => clippingParents,
+ computeStyles: () => computeStyles_default,
+ createPopper: () => createPopper3,
+ createPopperBase: () => createPopper,
+ createPopperLite: () => createPopper2,
+ detectOverflow: () => detectOverflow,
+ end: () => end,
+ eventListeners: () => eventListeners_default,
+ flip: () => flip_default,
+ hide: () => hide_default,
+ left: () => left,
+ main: () => main,
+ modifierPhases: () => modifierPhases,
+ offset: () => offset_default,
+ placements: () => placements,
+ popper: () => popper,
+ popperGenerator: () => popperGenerator,
+ popperOffsets: () => popperOffsets_default,
+ preventOverflow: () => preventOverflow_default,
+ read: () => read,
+ reference: () => reference,
+ right: () => right,
+ start: () => start,
+ top: () => top,
+ variationPlacements: () => variationPlacements,
+ viewport: () => viewport,
+ write: () => write
+ });
+
+ // node_modules/@popperjs/core/lib/enums.js
+ var top = "top";
+ var bottom = "bottom";
+ var right = "right";
+ var left = "left";
+ var auto = "auto";
+ var basePlacements = [top, bottom, right, left];
+ var start = "start";
+ var end = "end";
+ var clippingParents = "clippingParents";
+ var viewport = "viewport";
+ var popper = "popper";
+ var reference = "reference";
+ var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
+ return acc.concat([placement + "-" + start, placement + "-" + end]);
+ }, []);
+ var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
+ return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
+ }, []);
+ var beforeRead = "beforeRead";
+ var read = "read";
+ var afterRead = "afterRead";
+ var beforeMain = "beforeMain";
+ var main = "main";
+ var afterMain = "afterMain";
+ var beforeWrite = "beforeWrite";
+ var write = "write";
+ var afterWrite = "afterWrite";
+ var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
+
+ // node_modules/@popperjs/core/lib/dom-utils/getNodeName.js
+ function getNodeName(element) {
+ return element ? (element.nodeName || "").toLowerCase() : null;
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getWindow.js
+ function getWindow(node) {
+ if (node == null) {
+ return window;
+ }
+ if (node.toString() !== "[object Window]") {
+ var ownerDocument = node.ownerDocument;
+ return ownerDocument ? ownerDocument.defaultView || window : window;
+ }
+ return node;
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/instanceOf.js
+ function isElement(node) {
+ var OwnElement = getWindow(node).Element;
+ return node instanceof OwnElement || node instanceof Element;
+ }
+ function isHTMLElement(node) {
+ var OwnElement = getWindow(node).HTMLElement;
+ return node instanceof OwnElement || node instanceof HTMLElement;
+ }
+ function isShadowRoot(node) {
+ if (typeof ShadowRoot === "undefined") {
+ return false;
+ }
+ var OwnElement = getWindow(node).ShadowRoot;
+ return node instanceof OwnElement || node instanceof ShadowRoot;
+ }
+
+ // node_modules/@popperjs/core/lib/modifiers/applyStyles.js
+ function applyStyles(_ref) {
+ var state = _ref.state;
+ Object.keys(state.elements).forEach(function(name) {
+ var style = state.styles[name] || {};
+ var attributes = state.attributes[name] || {};
+ var element = state.elements[name];
+ if (!isHTMLElement(element) || !getNodeName(element)) {
+ return;
+ }
+ Object.assign(element.style, style);
+ Object.keys(attributes).forEach(function(name2) {
+ var value = attributes[name2];
+ if (value === false) {
+ element.removeAttribute(name2);
+ } else {
+ element.setAttribute(name2, value === true ? "" : value);
+ }
+ });
+ });
+ }
+ function effect(_ref2) {
+ var state = _ref2.state;
+ var initialStyles = {
+ popper: {
+ position: state.options.strategy,
+ left: "0",
+ top: "0",
+ margin: "0"
+ },
+ arrow: {
+ position: "absolute"
+ },
+ reference: {}
+ };
+ Object.assign(state.elements.popper.style, initialStyles.popper);
+ state.styles = initialStyles;
+ if (state.elements.arrow) {
+ Object.assign(state.elements.arrow.style, initialStyles.arrow);
+ }
+ return function() {
+ Object.keys(state.elements).forEach(function(name) {
+ var element = state.elements[name];
+ var attributes = state.attributes[name] || {};
+ var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);
+ var style = styleProperties.reduce(function(style2, property) {
+ style2[property] = "";
+ return style2;
+ }, {});
+ if (!isHTMLElement(element) || !getNodeName(element)) {
+ return;
+ }
+ Object.assign(element.style, style);
+ Object.keys(attributes).forEach(function(attribute) {
+ element.removeAttribute(attribute);
+ });
+ });
+ };
+ }
+ var applyStyles_default = {
+ name: "applyStyles",
+ enabled: true,
+ phase: "write",
+ fn: applyStyles,
+ effect,
+ requires: ["computeStyles"]
+ };
+
+ // node_modules/@popperjs/core/lib/utils/getBasePlacement.js
+ function getBasePlacement(placement) {
+ return placement.split("-")[0];
+ }
+
+ // node_modules/@popperjs/core/lib/utils/math.js
+ var max = Math.max;
+ var min = Math.min;
+ var round = Math.round;
+
+ // node_modules/@popperjs/core/lib/utils/userAgent.js
+ function getUAString() {
+ var uaData = navigator.userAgentData;
+ if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
+ return uaData.brands.map(function(item) {
+ return item.brand + "/" + item.version;
+ }).join(" ");
+ }
+ return navigator.userAgent;
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js
+ function isLayoutViewport() {
+ return !/^((?!chrome|android).)*safari/i.test(getUAString());
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
+ function getBoundingClientRect(element, includeScale, isFixedStrategy) {
+ if (includeScale === void 0) {
+ includeScale = false;
+ }
+ if (isFixedStrategy === void 0) {
+ isFixedStrategy = false;
+ }
+ var clientRect = element.getBoundingClientRect();
+ var scaleX = 1;
+ var scaleY = 1;
+ if (includeScale && isHTMLElement(element)) {
+ scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
+ scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
+ }
+ var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport;
+ var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
+ var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
+ var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
+ var width = clientRect.width / scaleX;
+ var height = clientRect.height / scaleY;
+ return {
+ width,
+ height,
+ top: y,
+ right: x + width,
+ bottom: y + height,
+ left: x,
+ x,
+ y
+ };
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js
+ function getLayoutRect(element) {
+ var clientRect = getBoundingClientRect(element);
+ var width = element.offsetWidth;
+ var height = element.offsetHeight;
+ if (Math.abs(clientRect.width - width) <= 1) {
+ width = clientRect.width;
+ }
+ if (Math.abs(clientRect.height - height) <= 1) {
+ height = clientRect.height;
+ }
+ return {
+ x: element.offsetLeft,
+ y: element.offsetTop,
+ width,
+ height
+ };
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/contains.js
+ function contains(parent, child) {
+ var rootNode = child.getRootNode && child.getRootNode();
+ if (parent.contains(child)) {
+ return true;
+ } else if (rootNode && isShadowRoot(rootNode)) {
+ var next = child;
+ do {
+ if (next && parent.isSameNode(next)) {
+ return true;
+ }
+ next = next.parentNode || next.host;
+ } while (next);
+ }
+ return false;
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js
+ function getComputedStyle2(element) {
+ return getWindow(element).getComputedStyle(element);
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/isTableElement.js
+ function isTableElement(element) {
+ return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js
+ function getDocumentElement(element) {
+ return ((isElement(element) ? element.ownerDocument : (
+ // $FlowFixMe[prop-missing]
+ element.document
+ )) || window.document).documentElement;
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getParentNode.js
+ function getParentNode(element) {
+ if (getNodeName(element) === "html") {
+ return element;
+ }
+ return (
+ // this is a quicker (but less type safe) way to save quite some bytes from the bundle
+ // $FlowFixMe[incompatible-return]
+ // $FlowFixMe[prop-missing]
+ element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
+ element.parentNode || // DOM Element detected
+ (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
+ // $FlowFixMe[incompatible-call]: HTMLElement is a Node
+ getDocumentElement(element)
+ );
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
+ function getTrueOffsetParent(element) {
+ if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
+ getComputedStyle2(element).position === "fixed") {
+ return null;
+ }
+ return element.offsetParent;
+ }
+ function getContainingBlock(element) {
+ var isFirefox = /firefox/i.test(getUAString());
+ var isIE = /Trident/i.test(getUAString());
+ if (isIE && isHTMLElement(element)) {
+ var elementCss = getComputedStyle2(element);
+ if (elementCss.position === "fixed") {
+ return null;
+ }
+ }
+ var currentNode = getParentNode(element);
+ if (isShadowRoot(currentNode)) {
+ currentNode = currentNode.host;
+ }
+ while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
+ var css = getComputedStyle2(currentNode);
+ 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") {
+ return currentNode;
+ } else {
+ currentNode = currentNode.parentNode;
+ }
+ }
+ return null;
+ }
+ function getOffsetParent(element) {
+ var window2 = getWindow(element);
+ var offsetParent = getTrueOffsetParent(element);
+ while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") {
+ offsetParent = getTrueOffsetParent(offsetParent);
+ }
+ if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) {
+ return window2;
+ }
+ return offsetParent || getContainingBlock(element) || window2;
+ }
+
+ // node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js
+ function getMainAxisFromPlacement(placement) {
+ return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
+ }
+
+ // node_modules/@popperjs/core/lib/utils/within.js
+ function within(min2, value, max2) {
+ return max(min2, min(value, max2));
+ }
+ function withinMaxClamp(min2, value, max2) {
+ var v = within(min2, value, max2);
+ return v > max2 ? max2 : v;
+ }
+
+ // node_modules/@popperjs/core/lib/utils/getFreshSideObject.js
+ function getFreshSideObject() {
+ return {
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0
+ };
+ }
+
+ // node_modules/@popperjs/core/lib/utils/mergePaddingObject.js
+ function mergePaddingObject(paddingObject) {
+ return Object.assign({}, getFreshSideObject(), paddingObject);
+ }
+
+ // node_modules/@popperjs/core/lib/utils/expandToHashMap.js
+ function expandToHashMap(value, keys) {
+ return keys.reduce(function(hashMap, key) {
+ hashMap[key] = value;
+ return hashMap;
+ }, {});
+ }
+
+ // node_modules/@popperjs/core/lib/modifiers/arrow.js
+ var toPaddingObject = function toPaddingObject2(padding, state) {
+ padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, {
+ placement: state.placement
+ })) : padding;
+ return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
+ };
+ function arrow(_ref) {
+ var _state$modifiersData$;
+ var state = _ref.state, name = _ref.name, options = _ref.options;
+ var arrowElement = state.elements.arrow;
+ var popperOffsets2 = state.modifiersData.popperOffsets;
+ var basePlacement = getBasePlacement(state.placement);
+ var axis = getMainAxisFromPlacement(basePlacement);
+ var isVertical = [left, right].indexOf(basePlacement) >= 0;
+ var len = isVertical ? "height" : "width";
+ if (!arrowElement || !popperOffsets2) {
+ return;
+ }
+ var paddingObject = toPaddingObject(options.padding, state);
+ var arrowRect = getLayoutRect(arrowElement);
+ var minProp = axis === "y" ? top : left;
+ var maxProp = axis === "y" ? bottom : right;
+ var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];
+ var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
+ var arrowOffsetParent = getOffsetParent(arrowElement);
+ var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
+ var centerToReference = endDiff / 2 - startDiff / 2;
+ var min2 = paddingObject[minProp];
+ var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];
+ var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
+ var offset2 = within(min2, center, max2);
+ var axisProp = axis;
+ state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
+ }
+ function effect2(_ref2) {
+ var state = _ref2.state, options = _ref2.options;
+ var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
+ if (arrowElement == null) {
+ return;
+ }
+ if (typeof arrowElement === "string") {
+ arrowElement = state.elements.popper.querySelector(arrowElement);
+ if (!arrowElement) {
+ return;
+ }
+ }
+ if (!contains(state.elements.popper, arrowElement)) {
+ return;
+ }
+ state.elements.arrow = arrowElement;
+ }
+ var arrow_default = {
+ name: "arrow",
+ enabled: true,
+ phase: "main",
+ fn: arrow,
+ effect: effect2,
+ requires: ["popperOffsets"],
+ requiresIfExists: ["preventOverflow"]
+ };
+
+ // node_modules/@popperjs/core/lib/utils/getVariation.js
+ function getVariation(placement) {
+ return placement.split("-")[1];
+ }
+
+ // node_modules/@popperjs/core/lib/modifiers/computeStyles.js
+ var unsetSides = {
+ top: "auto",
+ right: "auto",
+ bottom: "auto",
+ left: "auto"
+ };
+ function roundOffsetsByDPR(_ref, win) {
+ var x = _ref.x, y = _ref.y;
+ var dpr = win.devicePixelRatio || 1;
+ return {
+ x: round(x * dpr) / dpr || 0,
+ y: round(y * dpr) / dpr || 0
+ };
+ }
+ function mapToStyles(_ref2) {
+ var _Object$assign2;
+ var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
+ var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
+ var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
+ x,
+ y
+ }) : {
+ x,
+ y
+ };
+ x = _ref3.x;
+ y = _ref3.y;
+ var hasX = offsets.hasOwnProperty("x");
+ var hasY = offsets.hasOwnProperty("y");
+ var sideX = left;
+ var sideY = top;
+ var win = window;
+ if (adaptive) {
+ var offsetParent = getOffsetParent(popper2);
+ var heightProp = "clientHeight";
+ var widthProp = "clientWidth";
+ if (offsetParent === getWindow(popper2)) {
+ offsetParent = getDocumentElement(popper2);
+ if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") {
+ heightProp = "scrollHeight";
+ widthProp = "scrollWidth";
+ }
+ }
+ offsetParent = offsetParent;
+ if (placement === top || (placement === left || placement === right) && variation === end) {
+ sideY = bottom;
+ var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : (
+ // $FlowFixMe[prop-missing]
+ offsetParent[heightProp]
+ );
+ y -= offsetY - popperRect.height;
+ y *= gpuAcceleration ? 1 : -1;
+ }
+ if (placement === left || (placement === top || placement === bottom) && variation === end) {
+ sideX = right;
+ var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : (
+ // $FlowFixMe[prop-missing]
+ offsetParent[widthProp]
+ );
+ x -= offsetX - popperRect.width;
+ x *= gpuAcceleration ? 1 : -1;
+ }
+ }
+ var commonStyles = Object.assign({
+ position
+ }, adaptive && unsetSides);
+ var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
+ x,
+ y
+ }, getWindow(popper2)) : {
+ x,
+ y
+ };
+ x = _ref4.x;
+ y = _ref4.y;
+ if (gpuAcceleration) {
+ var _Object$assign;
+ 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));
+ }
+ return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
+ }
+ function computeStyles(_ref5) {
+ var state = _ref5.state, options = _ref5.options;
+ var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
+ var commonStyles = {
+ placement: getBasePlacement(state.placement),
+ variation: getVariation(state.placement),
+ popper: state.elements.popper,
+ popperRect: state.rects.popper,
+ gpuAcceleration,
+ isFixed: state.options.strategy === "fixed"
+ };
+ if (state.modifiersData.popperOffsets != null) {
+ state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
+ offsets: state.modifiersData.popperOffsets,
+ position: state.options.strategy,
+ adaptive,
+ roundOffsets
+ })));
+ }
+ if (state.modifiersData.arrow != null) {
+ state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
+ offsets: state.modifiersData.arrow,
+ position: "absolute",
+ adaptive: false,
+ roundOffsets
+ })));
+ }
+ state.attributes.popper = Object.assign({}, state.attributes.popper, {
+ "data-popper-placement": state.placement
+ });
+ }
+ var computeStyles_default = {
+ name: "computeStyles",
+ enabled: true,
+ phase: "beforeWrite",
+ fn: computeStyles,
+ data: {}
+ };
+
+ // node_modules/@popperjs/core/lib/modifiers/eventListeners.js
+ var passive = {
+ passive: true
+ };
+ function effect3(_ref) {
+ var state = _ref.state, instance = _ref.instance, options = _ref.options;
+ var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
+ var window2 = getWindow(state.elements.popper);
+ var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
+ if (scroll) {
+ scrollParents.forEach(function(scrollParent) {
+ scrollParent.addEventListener("scroll", instance.update, passive);
+ });
+ }
+ if (resize) {
+ window2.addEventListener("resize", instance.update, passive);
+ }
+ return function() {
+ if (scroll) {
+ scrollParents.forEach(function(scrollParent) {
+ scrollParent.removeEventListener("scroll", instance.update, passive);
+ });
+ }
+ if (resize) {
+ window2.removeEventListener("resize", instance.update, passive);
+ }
+ };
+ }
+ var eventListeners_default = {
+ name: "eventListeners",
+ enabled: true,
+ phase: "write",
+ fn: function fn() {
+ },
+ effect: effect3,
+ data: {}
+ };
+
+ // node_modules/@popperjs/core/lib/utils/getOppositePlacement.js
+ var hash = {
+ left: "right",
+ right: "left",
+ bottom: "top",
+ top: "bottom"
+ };
+ function getOppositePlacement(placement) {
+ return placement.replace(/left|right|bottom|top/g, function(matched) {
+ return hash[matched];
+ });
+ }
+
+ // node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js
+ var hash2 = {
+ start: "end",
+ end: "start"
+ };
+ function getOppositeVariationPlacement(placement) {
+ return placement.replace(/start|end/g, function(matched) {
+ return hash2[matched];
+ });
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js
+ function getWindowScroll(node) {
+ var win = getWindow(node);
+ var scrollLeft = win.pageXOffset;
+ var scrollTop = win.pageYOffset;
+ return {
+ scrollLeft,
+ scrollTop
+ };
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js
+ function getWindowScrollBarX(element) {
+ return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
+ function getViewportRect(element, strategy) {
+ var win = getWindow(element);
+ var html = getDocumentElement(element);
+ var visualViewport = win.visualViewport;
+ var width = html.clientWidth;
+ var height = html.clientHeight;
+ var x = 0;
+ var y = 0;
+ if (visualViewport) {
+ width = visualViewport.width;
+ height = visualViewport.height;
+ var layoutViewport = isLayoutViewport();
+ if (layoutViewport || !layoutViewport && strategy === "fixed") {
+ x = visualViewport.offsetLeft;
+ y = visualViewport.offsetTop;
+ }
+ }
+ return {
+ width,
+ height,
+ x: x + getWindowScrollBarX(element),
+ y
+ };
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
+ function getDocumentRect(element) {
+ var _element$ownerDocumen;
+ var html = getDocumentElement(element);
+ var winScroll = getWindowScroll(element);
+ var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
+ var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
+ var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
+ var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
+ var y = -winScroll.scrollTop;
+ if (getComputedStyle2(body || html).direction === "rtl") {
+ x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
+ }
+ return {
+ width,
+ height,
+ x,
+ y
+ };
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
+ function isScrollParent(element) {
+ var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
+ return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
+ function getScrollParent(node) {
+ if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
+ return node.ownerDocument.body;
+ }
+ if (isHTMLElement(node) && isScrollParent(node)) {
+ return node;
+ }
+ return getScrollParent(getParentNode(node));
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
+ function listScrollParents(element, list) {
+ var _element$ownerDocumen;
+ if (list === void 0) {
+ list = [];
+ }
+ var scrollParent = getScrollParent(element);
+ var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
+ var win = getWindow(scrollParent);
+ var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
+ var updatedList = list.concat(target);
+ return isBody ? updatedList : (
+ // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
+ updatedList.concat(listScrollParents(getParentNode(target)))
+ );
+ }
+
+ // node_modules/@popperjs/core/lib/utils/rectToClientRect.js
+ function rectToClientRect(rect) {
+ return Object.assign({}, rect, {
+ left: rect.x,
+ top: rect.y,
+ right: rect.x + rect.width,
+ bottom: rect.y + rect.height
+ });
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
+ function getInnerBoundingClientRect(element, strategy) {
+ var rect = getBoundingClientRect(element, false, strategy === "fixed");
+ rect.top = rect.top + element.clientTop;
+ rect.left = rect.left + element.clientLeft;
+ rect.bottom = rect.top + element.clientHeight;
+ rect.right = rect.left + element.clientWidth;
+ rect.width = element.clientWidth;
+ rect.height = element.clientHeight;
+ rect.x = rect.left;
+ rect.y = rect.top;
+ return rect;
+ }
+ function getClientRectFromMixedType(element, clippingParent, strategy) {
+ return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
+ }
+ function getClippingParents(element) {
+ var clippingParents2 = listScrollParents(getParentNode(element));
+ var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0;
+ var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
+ if (!isElement(clipperElement)) {
+ return [];
+ }
+ return clippingParents2.filter(function(clippingParent) {
+ return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
+ });
+ }
+ function getClippingRect(element, boundary, rootBoundary, strategy) {
+ var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
+ var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
+ var firstClippingParent = clippingParents2[0];
+ var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
+ var rect = getClientRectFromMixedType(element, clippingParent, strategy);
+ accRect.top = max(rect.top, accRect.top);
+ accRect.right = min(rect.right, accRect.right);
+ accRect.bottom = min(rect.bottom, accRect.bottom);
+ accRect.left = max(rect.left, accRect.left);
+ return accRect;
+ }, getClientRectFromMixedType(element, firstClippingParent, strategy));
+ clippingRect.width = clippingRect.right - clippingRect.left;
+ clippingRect.height = clippingRect.bottom - clippingRect.top;
+ clippingRect.x = clippingRect.left;
+ clippingRect.y = clippingRect.top;
+ return clippingRect;
+ }
+
+ // node_modules/@popperjs/core/lib/utils/computeOffsets.js
+ function computeOffsets(_ref) {
+ var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;
+ var basePlacement = placement ? getBasePlacement(placement) : null;
+ var variation = placement ? getVariation(placement) : null;
+ var commonX = reference2.x + reference2.width / 2 - element.width / 2;
+ var commonY = reference2.y + reference2.height / 2 - element.height / 2;
+ var offsets;
+ switch (basePlacement) {
+ case top:
+ offsets = {
+ x: commonX,
+ y: reference2.y - element.height
+ };
+ break;
+ case bottom:
+ offsets = {
+ x: commonX,
+ y: reference2.y + reference2.height
+ };
+ break;
+ case right:
+ offsets = {
+ x: reference2.x + reference2.width,
+ y: commonY
+ };
+ break;
+ case left:
+ offsets = {
+ x: reference2.x - element.width,
+ y: commonY
+ };
+ break;
+ default:
+ offsets = {
+ x: reference2.x,
+ y: reference2.y
+ };
+ }
+ var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
+ if (mainAxis != null) {
+ var len = mainAxis === "y" ? "height" : "width";
+ switch (variation) {
+ case start:
+ offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);
+ break;
+ case end:
+ offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);
+ break;
+ default:
+ }
+ }
+ return offsets;
+ }
+
+ // node_modules/@popperjs/core/lib/utils/detectOverflow.js
+ function detectOverflow(state, options) {
+ if (options === void 0) {
+ options = {};
+ }
+ var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
+ var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
+ var altContext = elementContext === popper ? reference : popper;
+ var popperRect = state.rects.popper;
+ var element = state.elements[altBoundary ? altContext : elementContext];
+ var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
+ var referenceClientRect = getBoundingClientRect(state.elements.reference);
+ var popperOffsets2 = computeOffsets({
+ reference: referenceClientRect,
+ element: popperRect,
+ strategy: "absolute",
+ placement
+ });
+ var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
+ var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
+ var overflowOffsets = {
+ top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
+ bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
+ left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
+ right: elementClientRect.right - clippingClientRect.right + paddingObject.right
+ };
+ var offsetData = state.modifiersData.offset;
+ if (elementContext === popper && offsetData) {
+ var offset2 = offsetData[placement];
+ Object.keys(overflowOffsets).forEach(function(key) {
+ var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
+ var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
+ overflowOffsets[key] += offset2[axis] * multiply;
+ });
+ }
+ return overflowOffsets;
+ }
+
+ // node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
+ function computeAutoPlacement(state, options) {
+ if (options === void 0) {
+ options = {};
+ }
+ var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
+ var variation = getVariation(placement);
+ var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
+ return getVariation(placement2) === variation;
+ }) : basePlacements;
+ var allowedPlacements = placements2.filter(function(placement2) {
+ return allowedAutoPlacements.indexOf(placement2) >= 0;
+ });
+ if (allowedPlacements.length === 0) {
+ allowedPlacements = placements2;
+ }
+ var overflows = allowedPlacements.reduce(function(acc, placement2) {
+ acc[placement2] = detectOverflow(state, {
+ placement: placement2,
+ boundary,
+ rootBoundary,
+ padding
+ })[getBasePlacement(placement2)];
+ return acc;
+ }, {});
+ return Object.keys(overflows).sort(function(a, b) {
+ return overflows[a] - overflows[b];
+ });
+ }
+
+ // node_modules/@popperjs/core/lib/modifiers/flip.js
+ function getExpandedFallbackPlacements(placement) {
+ if (getBasePlacement(placement) === auto) {
+ return [];
+ }
+ var oppositePlacement = getOppositePlacement(placement);
+ return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
+ }
+ function flip(_ref) {
+ var state = _ref.state, options = _ref.options, name = _ref.name;
+ if (state.modifiersData[name]._skip) {
+ return;
+ }
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
+ var preferredPlacement = state.options.placement;
+ var basePlacement = getBasePlacement(preferredPlacement);
+ var isBasePlacement = basePlacement === preferredPlacement;
+ var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
+ var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
+ return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
+ placement: placement2,
+ boundary,
+ rootBoundary,
+ padding,
+ flipVariations,
+ allowedAutoPlacements
+ }) : placement2);
+ }, []);
+ var referenceRect = state.rects.reference;
+ var popperRect = state.rects.popper;
+ var checksMap = /* @__PURE__ */ new Map();
+ var makeFallbackChecks = true;
+ var firstFittingPlacement = placements2[0];
+ for (var i = 0; i < placements2.length; i++) {
+ var placement = placements2[i];
+ var _basePlacement = getBasePlacement(placement);
+ var isStartVariation = getVariation(placement) === start;
+ var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
+ var len = isVertical ? "width" : "height";
+ var overflow = detectOverflow(state, {
+ placement,
+ boundary,
+ rootBoundary,
+ altBoundary,
+ padding
+ });
+ var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
+ if (referenceRect[len] > popperRect[len]) {
+ mainVariationSide = getOppositePlacement(mainVariationSide);
+ }
+ var altVariationSide = getOppositePlacement(mainVariationSide);
+ var checks = [];
+ if (checkMainAxis) {
+ checks.push(overflow[_basePlacement] <= 0);
+ }
+ if (checkAltAxis) {
+ checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
+ }
+ if (checks.every(function(check) {
+ return check;
+ })) {
+ firstFittingPlacement = placement;
+ makeFallbackChecks = false;
+ break;
+ }
+ checksMap.set(placement, checks);
+ }
+ if (makeFallbackChecks) {
+ var numberOfChecks = flipVariations ? 3 : 1;
+ var _loop = function _loop2(_i2) {
+ var fittingPlacement = placements2.find(function(placement2) {
+ var checks2 = checksMap.get(placement2);
+ if (checks2) {
+ return checks2.slice(0, _i2).every(function(check) {
+ return check;
+ });
+ }
+ });
+ if (fittingPlacement) {
+ firstFittingPlacement = fittingPlacement;
+ return "break";
+ }
+ };
+ for (var _i = numberOfChecks; _i > 0; _i--) {
+ var _ret = _loop(_i);
+ if (_ret === "break")
+ break;
+ }
+ }
+ if (state.placement !== firstFittingPlacement) {
+ state.modifiersData[name]._skip = true;
+ state.placement = firstFittingPlacement;
+ state.reset = true;
+ }
+ }
+ var flip_default = {
+ name: "flip",
+ enabled: true,
+ phase: "main",
+ fn: flip,
+ requiresIfExists: ["offset"],
+ data: {
+ _skip: false
+ }
+ };
+
+ // node_modules/@popperjs/core/lib/modifiers/hide.js
+ function getSideOffsets(overflow, rect, preventedOffsets) {
+ if (preventedOffsets === void 0) {
+ preventedOffsets = {
+ x: 0,
+ y: 0
+ };
+ }
+ return {
+ top: overflow.top - rect.height - preventedOffsets.y,
+ right: overflow.right - rect.width + preventedOffsets.x,
+ bottom: overflow.bottom - rect.height + preventedOffsets.y,
+ left: overflow.left - rect.width - preventedOffsets.x
+ };
+ }
+ function isAnySideFullyClipped(overflow) {
+ return [top, right, bottom, left].some(function(side) {
+ return overflow[side] >= 0;
+ });
+ }
+ function hide(_ref) {
+ var state = _ref.state, name = _ref.name;
+ var referenceRect = state.rects.reference;
+ var popperRect = state.rects.popper;
+ var preventedOffsets = state.modifiersData.preventOverflow;
+ var referenceOverflow = detectOverflow(state, {
+ elementContext: "reference"
+ });
+ var popperAltOverflow = detectOverflow(state, {
+ altBoundary: true
+ });
+ var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
+ var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
+ var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
+ var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
+ state.modifiersData[name] = {
+ referenceClippingOffsets,
+ popperEscapeOffsets,
+ isReferenceHidden,
+ hasPopperEscaped
+ };
+ state.attributes.popper = Object.assign({}, state.attributes.popper, {
+ "data-popper-reference-hidden": isReferenceHidden,
+ "data-popper-escaped": hasPopperEscaped
+ });
+ }
+ var hide_default = {
+ name: "hide",
+ enabled: true,
+ phase: "main",
+ requiresIfExists: ["preventOverflow"],
+ fn: hide
+ };
+
+ // node_modules/@popperjs/core/lib/modifiers/offset.js
+ function distanceAndSkiddingToXY(placement, rects, offset2) {
+ var basePlacement = getBasePlacement(placement);
+ var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
+ var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
+ placement
+ })) : offset2, skidding = _ref[0], distance = _ref[1];
+ skidding = skidding || 0;
+ distance = (distance || 0) * invertDistance;
+ return [left, right].indexOf(basePlacement) >= 0 ? {
+ x: distance,
+ y: skidding
+ } : {
+ x: skidding,
+ y: distance
+ };
+ }
+ function offset(_ref2) {
+ var state = _ref2.state, options = _ref2.options, name = _ref2.name;
+ var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
+ var data = placements.reduce(function(acc, placement) {
+ acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
+ return acc;
+ }, {});
+ var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
+ if (state.modifiersData.popperOffsets != null) {
+ state.modifiersData.popperOffsets.x += x;
+ state.modifiersData.popperOffsets.y += y;
+ }
+ state.modifiersData[name] = data;
+ }
+ var offset_default = {
+ name: "offset",
+ enabled: true,
+ phase: "main",
+ requires: ["popperOffsets"],
+ fn: offset
+ };
+
+ // node_modules/@popperjs/core/lib/modifiers/popperOffsets.js
+ function popperOffsets(_ref) {
+ var state = _ref.state, name = _ref.name;
+ state.modifiersData[name] = computeOffsets({
+ reference: state.rects.reference,
+ element: state.rects.popper,
+ strategy: "absolute",
+ placement: state.placement
+ });
+ }
+ var popperOffsets_default = {
+ name: "popperOffsets",
+ enabled: true,
+ phase: "read",
+ fn: popperOffsets,
+ data: {}
+ };
+
+ // node_modules/@popperjs/core/lib/utils/getAltAxis.js
+ function getAltAxis(axis) {
+ return axis === "x" ? "y" : "x";
+ }
+
+ // node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
+ function preventOverflow(_ref) {
+ var state = _ref.state, options = _ref.options, name = _ref.name;
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
+ var overflow = detectOverflow(state, {
+ boundary,
+ rootBoundary,
+ padding,
+ altBoundary
+ });
+ var basePlacement = getBasePlacement(state.placement);
+ var variation = getVariation(state.placement);
+ var isBasePlacement = !variation;
+ var mainAxis = getMainAxisFromPlacement(basePlacement);
+ var altAxis = getAltAxis(mainAxis);
+ var popperOffsets2 = state.modifiersData.popperOffsets;
+ var referenceRect = state.rects.reference;
+ var popperRect = state.rects.popper;
+ var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
+ placement: state.placement
+ })) : tetherOffset;
+ var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
+ mainAxis: tetherOffsetValue,
+ altAxis: tetherOffsetValue
+ } : Object.assign({
+ mainAxis: 0,
+ altAxis: 0
+ }, tetherOffsetValue);
+ var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
+ var data = {
+ x: 0,
+ y: 0
+ };
+ if (!popperOffsets2) {
+ return;
+ }
+ if (checkMainAxis) {
+ var _offsetModifierState$;
+ var mainSide = mainAxis === "y" ? top : left;
+ var altSide = mainAxis === "y" ? bottom : right;
+ var len = mainAxis === "y" ? "height" : "width";
+ var offset2 = popperOffsets2[mainAxis];
+ var min2 = offset2 + overflow[mainSide];
+ var max2 = offset2 - overflow[altSide];
+ var additive = tether ? -popperRect[len] / 2 : 0;
+ var minLen = variation === start ? referenceRect[len] : popperRect[len];
+ var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
+ var arrowElement = state.elements.arrow;
+ var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
+ width: 0,
+ height: 0
+ };
+ var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
+ var arrowPaddingMin = arrowPaddingObject[mainSide];
+ var arrowPaddingMax = arrowPaddingObject[altSide];
+ var arrowLen = within(0, referenceRect[len], arrowRect[len]);
+ var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
+ var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
+ var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
+ var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
+ var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
+ var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
+ var tetherMax = offset2 + maxOffset - offsetModifierValue;
+ var preventedOffset = within(tether ? min(min2, tetherMin) : min2, offset2, tether ? max(max2, tetherMax) : max2);
+ popperOffsets2[mainAxis] = preventedOffset;
+ data[mainAxis] = preventedOffset - offset2;
+ }
+ if (checkAltAxis) {
+ var _offsetModifierState$2;
+ var _mainSide = mainAxis === "x" ? top : left;
+ var _altSide = mainAxis === "x" ? bottom : right;
+ var _offset = popperOffsets2[altAxis];
+ var _len = altAxis === "y" ? "height" : "width";
+ var _min = _offset + overflow[_mainSide];
+ var _max = _offset - overflow[_altSide];
+ var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
+ var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
+ var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
+ var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
+ var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
+ popperOffsets2[altAxis] = _preventedOffset;
+ data[altAxis] = _preventedOffset - _offset;
+ }
+ state.modifiersData[name] = data;
+ }
+ var preventOverflow_default = {
+ name: "preventOverflow",
+ enabled: true,
+ phase: "main",
+ fn: preventOverflow,
+ requiresIfExists: ["offset"]
+ };
+
+ // node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js
+ function getHTMLElementScroll(element) {
+ return {
+ scrollLeft: element.scrollLeft,
+ scrollTop: element.scrollTop
+ };
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js
+ function getNodeScroll(node) {
+ if (node === getWindow(node) || !isHTMLElement(node)) {
+ return getWindowScroll(node);
+ } else {
+ return getHTMLElementScroll(node);
+ }
+ }
+
+ // node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
+ function isElementScaled(element) {
+ var rect = element.getBoundingClientRect();
+ var scaleX = round(rect.width) / element.offsetWidth || 1;
+ var scaleY = round(rect.height) / element.offsetHeight || 1;
+ return scaleX !== 1 || scaleY !== 1;
+ }
+ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
+ if (isFixed === void 0) {
+ isFixed = false;
+ }
+ var isOffsetParentAnElement = isHTMLElement(offsetParent);
+ var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
+ var documentElement = getDocumentElement(offsetParent);
+ var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
+ var scroll = {
+ scrollLeft: 0,
+ scrollTop: 0
+ };
+ var offsets = {
+ x: 0,
+ y: 0
+ };
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
+ if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078
+ isScrollParent(documentElement)) {
+ scroll = getNodeScroll(offsetParent);
+ }
+ if (isHTMLElement(offsetParent)) {
+ offsets = getBoundingClientRect(offsetParent, true);
+ offsets.x += offsetParent.clientLeft;
+ offsets.y += offsetParent.clientTop;
+ } else if (documentElement) {
+ offsets.x = getWindowScrollBarX(documentElement);
+ }
+ }
+ return {
+ x: rect.left + scroll.scrollLeft - offsets.x,
+ y: rect.top + scroll.scrollTop - offsets.y,
+ width: rect.width,
+ height: rect.height
+ };
+ }
+
+ // node_modules/@popperjs/core/lib/utils/orderModifiers.js
+ function order(modifiers) {
+ var map = /* @__PURE__ */ new Map();
+ var visited = /* @__PURE__ */ new Set();
+ var result = [];
+ modifiers.forEach(function(modifier) {
+ map.set(modifier.name, modifier);
+ });
+ function sort(modifier) {
+ visited.add(modifier.name);
+ var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
+ requires.forEach(function(dep) {
+ if (!visited.has(dep)) {
+ var depModifier = map.get(dep);
+ if (depModifier) {
+ sort(depModifier);
+ }
+ }
+ });
+ result.push(modifier);
+ }
+ modifiers.forEach(function(modifier) {
+ if (!visited.has(modifier.name)) {
+ sort(modifier);
+ }
+ });
+ return result;
+ }
+ function orderModifiers(modifiers) {
+ var orderedModifiers = order(modifiers);
+ return modifierPhases.reduce(function(acc, phase) {
+ return acc.concat(orderedModifiers.filter(function(modifier) {
+ return modifier.phase === phase;
+ }));
+ }, []);
+ }
+
+ // node_modules/@popperjs/core/lib/utils/debounce.js
+ function debounce(fn2) {
+ var pending;
+ return function() {
+ if (!pending) {
+ pending = new Promise(function(resolve) {
+ Promise.resolve().then(function() {
+ pending = void 0;
+ resolve(fn2());
+ });
+ });
+ }
+ return pending;
+ };
+ }
+
+ // node_modules/@popperjs/core/lib/utils/mergeByName.js
+ function mergeByName(modifiers) {
+ var merged = modifiers.reduce(function(merged2, current) {
+ var existing = merged2[current.name];
+ merged2[current.name] = existing ? Object.assign({}, existing, current, {
+ options: Object.assign({}, existing.options, current.options),
+ data: Object.assign({}, existing.data, current.data)
+ }) : current;
+ return merged2;
+ }, {});
+ return Object.keys(merged).map(function(key) {
+ return merged[key];
+ });
+ }
+
+ // node_modules/@popperjs/core/lib/createPopper.js
+ var DEFAULT_OPTIONS = {
+ placement: "bottom",
+ modifiers: [],
+ strategy: "absolute"
+ };
+ function areValidElements() {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+ return !args.some(function(element) {
+ return !(element && typeof element.getBoundingClientRect === "function");
+ });
+ }
+ function popperGenerator(generatorOptions) {
+ if (generatorOptions === void 0) {
+ generatorOptions = {};
+ }
+ var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers3 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
+ return function createPopper4(reference2, popper2, options) {
+ if (options === void 0) {
+ options = defaultOptions;
+ }
+ var state = {
+ placement: "bottom",
+ orderedModifiers: [],
+ options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
+ modifiersData: {},
+ elements: {
+ reference: reference2,
+ popper: popper2
+ },
+ attributes: {},
+ styles: {}
+ };
+ var effectCleanupFns = [];
+ var isDestroyed = false;
+ var instance = {
+ state,
+ setOptions: function setOptions(setOptionsAction) {
+ var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
+ cleanupModifierEffects();
+ state.options = Object.assign({}, defaultOptions, state.options, options2);
+ state.scrollParents = {
+ reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
+ popper: listScrollParents(popper2)
+ };
+ var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers3, state.options.modifiers)));
+ state.orderedModifiers = orderedModifiers.filter(function(m) {
+ return m.enabled;
+ });
+ runModifierEffects();
+ return instance.update();
+ },
+ // Sync update – it will always be executed, even if not necessary. This
+ // is useful for low frequency updates where sync behavior simplifies the
+ // logic.
+ // For high frequency updates (e.g. `resize` and `scroll` events), always
+ // prefer the async Popper#update method
+ forceUpdate: function forceUpdate() {
+ if (isDestroyed) {
+ return;
+ }
+ var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
+ if (!areValidElements(reference3, popper3)) {
+ return;
+ }
+ state.rects = {
+ reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"),
+ popper: getLayoutRect(popper3)
+ };
+ state.reset = false;
+ state.placement = state.options.placement;
+ state.orderedModifiers.forEach(function(modifier) {
+ return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
+ });
+ for (var index = 0; index < state.orderedModifiers.length; index++) {
+ if (state.reset === true) {
+ state.reset = false;
+ index = -1;
+ continue;
+ }
+ var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
+ if (typeof fn2 === "function") {
+ state = fn2({
+ state,
+ options: _options,
+ name,
+ instance
+ }) || state;
+ }
+ }
+ },
+ // Async and optimistically optimized update – it will not be executed if
+ // not necessary (debounced to run at most once-per-tick)
+ update: debounce(function() {
+ return new Promise(function(resolve) {
+ instance.forceUpdate();
+ resolve(state);
+ });
+ }),
+ destroy: function destroy() {
+ cleanupModifierEffects();
+ isDestroyed = true;
+ }
+ };
+ if (!areValidElements(reference2, popper2)) {
+ return instance;
+ }
+ instance.setOptions(options).then(function(state2) {
+ if (!isDestroyed && options.onFirstUpdate) {
+ options.onFirstUpdate(state2);
+ }
+ });
+ function runModifierEffects() {
+ state.orderedModifiers.forEach(function(_ref) {
+ var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect4 = _ref.effect;
+ if (typeof effect4 === "function") {
+ var cleanupFn = effect4({
+ state,
+ name,
+ instance,
+ options: options2
+ });
+ var noopFn = function noopFn2() {
+ };
+ effectCleanupFns.push(cleanupFn || noopFn);
+ }
+ });
+ }
+ function cleanupModifierEffects() {
+ effectCleanupFns.forEach(function(fn2) {
+ return fn2();
+ });
+ effectCleanupFns = [];
+ }
+ return instance;
+ };
+ }
+ var createPopper = /* @__PURE__ */ popperGenerator();
+
+ // node_modules/@popperjs/core/lib/popper-lite.js
+ var defaultModifiers = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default];
+ var createPopper2 = /* @__PURE__ */ popperGenerator({
+ defaultModifiers
+ });
+
+ // node_modules/@popperjs/core/lib/popper.js
+ var defaultModifiers2 = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default, offset_default, flip_default, preventOverflow_default, arrow_default, hide_default];
+ var createPopper3 = /* @__PURE__ */ popperGenerator({
+ defaultModifiers: defaultModifiers2
+ });
+
+ // node_modules/bootstrap/dist/js/bootstrap.esm.js
+ var elementMap = /* @__PURE__ */ new Map();
+ var Data = {
+ set(element, key, instance) {
+ if (!elementMap.has(element)) {
+ elementMap.set(element, /* @__PURE__ */ new Map());
+ }
+ const instanceMap = elementMap.get(element);
+ if (!instanceMap.has(key) && instanceMap.size !== 0) {
+ console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
+ return;
+ }
+ instanceMap.set(key, instance);
+ },
+ get(element, key) {
+ if (elementMap.has(element)) {
+ return elementMap.get(element).get(key) || null;
+ }
+ return null;
+ },
+ remove(element, key) {
+ if (!elementMap.has(element)) {
+ return;
+ }
+ const instanceMap = elementMap.get(element);
+ instanceMap.delete(key);
+ if (instanceMap.size === 0) {
+ elementMap.delete(element);
+ }
+ }
+ };
+ var MAX_UID = 1e6;
+ var MILLISECONDS_MULTIPLIER = 1e3;
+ var TRANSITION_END = "transitionend";
+ var parseSelector = (selector) => {
+ if (selector && window.CSS && window.CSS.escape) {
+ selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`);
+ }
+ return selector;
+ };
+ var toType = (object) => {
+ if (object === null || object === void 0) {
+ return `${object}`;
+ }
+ return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
+ };
+ var getUID = (prefix) => {
+ do {
+ prefix += Math.floor(Math.random() * MAX_UID);
+ } while (document.getElementById(prefix));
+ return prefix;
+ };
+ var getTransitionDurationFromElement = (element) => {
+ if (!element) {
+ return 0;
+ }
+ let {
+ transitionDuration,
+ transitionDelay
+ } = window.getComputedStyle(element);
+ const floatTransitionDuration = Number.parseFloat(transitionDuration);
+ const floatTransitionDelay = Number.parseFloat(transitionDelay);
+ if (!floatTransitionDuration && !floatTransitionDelay) {
+ return 0;
+ }
+ transitionDuration = transitionDuration.split(",")[0];
+ transitionDelay = transitionDelay.split(",")[0];
+ return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
+ };
+ var triggerTransitionEnd = (element) => {
+ element.dispatchEvent(new Event(TRANSITION_END));
+ };
+ var isElement2 = (object) => {
+ if (!object || typeof object !== "object") {
+ return false;
+ }
+ if (typeof object.jquery !== "undefined") {
+ object = object[0];
+ }
+ return typeof object.nodeType !== "undefined";
+ };
+ var getElement = (object) => {
+ if (isElement2(object)) {
+ return object.jquery ? object[0] : object;
+ }
+ if (typeof object === "string" && object.length > 0) {
+ return document.querySelector(parseSelector(object));
+ }
+ return null;
+ };
+ var isVisible = (element) => {
+ if (!isElement2(element) || element.getClientRects().length === 0) {
+ return false;
+ }
+ const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible";
+ const closedDetails = element.closest("details:not([open])");
+ if (!closedDetails) {
+ return elementIsVisible;
+ }
+ if (closedDetails !== element) {
+ const summary = element.closest("summary");
+ if (summary && summary.parentNode !== closedDetails) {
+ return false;
+ }
+ if (summary === null) {
+ return false;
+ }
+ }
+ return elementIsVisible;
+ };
+ var isDisabled = (element) => {
+ if (!element || element.nodeType !== Node.ELEMENT_NODE) {
+ return true;
+ }
+ if (element.classList.contains("disabled")) {
+ return true;
+ }
+ if (typeof element.disabled !== "undefined") {
+ return element.disabled;
+ }
+ return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false";
+ };
+ var findShadowRoot = (element) => {
+ if (!document.documentElement.attachShadow) {
+ return null;
+ }
+ if (typeof element.getRootNode === "function") {
+ const root = element.getRootNode();
+ return root instanceof ShadowRoot ? root : null;
+ }
+ if (element instanceof ShadowRoot) {
+ return element;
+ }
+ if (!element.parentNode) {
+ return null;
+ }
+ return findShadowRoot(element.parentNode);
+ };
+ var noop = () => {
+ };
+ var reflow = (element) => {
+ element.offsetHeight;
+ };
+ var getjQuery = () => {
+ if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) {
+ return window.jQuery;
+ }
+ return null;
+ };
+ var DOMContentLoadedCallbacks = [];
+ var onDOMContentLoaded = (callback) => {
+ if (document.readyState === "loading") {
+ if (!DOMContentLoadedCallbacks.length) {
+ document.addEventListener("DOMContentLoaded", () => {
+ for (const callback2 of DOMContentLoadedCallbacks) {
+ callback2();
+ }
+ });
+ }
+ DOMContentLoadedCallbacks.push(callback);
+ } else {
+ callback();
+ }
+ };
+ var isRTL = () => document.documentElement.dir === "rtl";
+ var defineJQueryPlugin = (plugin) => {
+ onDOMContentLoaded(() => {
+ const $4 = getjQuery();
+ if ($4) {
+ const name = plugin.NAME;
+ const JQUERY_NO_CONFLICT = $4.fn[name];
+ $4.fn[name] = plugin.jQueryInterface;
+ $4.fn[name].Constructor = plugin;
+ $4.fn[name].noConflict = () => {
+ $4.fn[name] = JQUERY_NO_CONFLICT;
+ return plugin.jQueryInterface;
+ };
+ }
+ });
+ };
+ var execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {
+ return typeof possibleCallback === "function" ? possibleCallback(...args) : defaultValue;
+ };
+ var executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
+ if (!waitForTransition) {
+ execute(callback);
+ return;
+ }
+ const durationPadding = 5;
+ const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
+ let called = false;
+ const handler = ({
+ target
+ }) => {
+ if (target !== transitionElement) {
+ return;
+ }
+ called = true;
+ transitionElement.removeEventListener(TRANSITION_END, handler);
+ execute(callback);
+ };
+ transitionElement.addEventListener(TRANSITION_END, handler);
+ setTimeout(() => {
+ if (!called) {
+ triggerTransitionEnd(transitionElement);
+ }
+ }, emulatedDuration);
+ };
+ var getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
+ const listLength = list.length;
+ let index = list.indexOf(activeElement);
+ if (index === -1) {
+ return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
+ }
+ index += shouldGetNext ? 1 : -1;
+ if (isCycleAllowed) {
+ index = (index + listLength) % listLength;
+ }
+ return list[Math.max(0, Math.min(index, listLength - 1))];
+ };
+ var namespaceRegex = /[^.]*(?=\..*)\.|.*/;
+ var stripNameRegex = /\..*/;
+ var stripUidRegex = /::\d+$/;
+ var eventRegistry = {};
+ var uidEvent = 1;
+ var customEvents = {
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+ };
+ var nativeEvents = /* @__PURE__ */ 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 makeEventUid(element, uid) {
+ return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
+ }
+ function getElementEvents(element) {
+ const uid = makeEventUid(element);
+ element.uidEvent = uid;
+ eventRegistry[uid] = eventRegistry[uid] || {};
+ return eventRegistry[uid];
+ }
+ function bootstrapHandler(element, fn2) {
+ return function handler(event) {
+ hydrateObj(event, {
+ delegateTarget: element
+ });
+ if (handler.oneOff) {
+ EventHandler.off(element, event.type, fn2);
+ }
+ return fn2.apply(element, [event]);
+ };
+ }
+ function bootstrapDelegationHandler(element, selector, fn2) {
+ return function handler(event) {
+ const domElements = element.querySelectorAll(selector);
+ for (let {
+ target
+ } = event; target && target !== this; target = target.parentNode) {
+ for (const domElement of domElements) {
+ if (domElement !== target) {
+ continue;
+ }
+ hydrateObj(event, {
+ delegateTarget: target
+ });
+ if (handler.oneOff) {
+ EventHandler.off(element, event.type, selector, fn2);
+ }
+ return fn2.apply(target, [event]);
+ }
+ }
+ };
+ }
+ function findHandler(events, callable, delegationSelector = null) {
+ return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector);
+ }
+ function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
+ const isDelegated = typeof handler === "string";
+ const callable = isDelegated ? delegationFunction : handler || delegationFunction;
+ let typeEvent = getTypeEvent(originalTypeEvent);
+ if (!nativeEvents.has(typeEvent)) {
+ typeEvent = originalTypeEvent;
+ }
+ return [isDelegated, callable, typeEvent];
+ }
+ function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
+ if (typeof originalTypeEvent !== "string" || !element) {
+ return;
+ }
+ let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
+ if (originalTypeEvent in customEvents) {
+ const wrapFunction = (fn3) => {
+ return function(event) {
+ if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
+ return fn3.call(this, event);
+ }
+ };
+ };
+ callable = wrapFunction(callable);
+ }
+ const events = getElementEvents(element);
+ const handlers = events[typeEvent] || (events[typeEvent] = {});
+ const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
+ if (previousFunction) {
+ previousFunction.oneOff = previousFunction.oneOff && oneOff;
+ return;
+ }
+ const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ""));
+ const fn2 = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
+ fn2.delegationSelector = isDelegated ? handler : null;
+ fn2.callable = callable;
+ fn2.oneOff = oneOff;
+ fn2.uidEvent = uid;
+ handlers[uid] = fn2;
+ element.addEventListener(typeEvent, fn2, isDelegated);
+ }
+ function removeHandler(element, events, typeEvent, handler, delegationSelector) {
+ const fn2 = findHandler(events[typeEvent], handler, delegationSelector);
+ if (!fn2) {
+ return;
+ }
+ element.removeEventListener(typeEvent, fn2, Boolean(delegationSelector));
+ delete events[typeEvent][fn2.uidEvent];
+ }
+ function removeNamespacedHandlers(element, events, typeEvent, namespace) {
+ const storeElementEvent = events[typeEvent] || {};
+ for (const [handlerKey, event] of Object.entries(storeElementEvent)) {
+ if (handlerKey.includes(namespace)) {
+ removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
+ }
+ }
+ }
+ function getTypeEvent(event) {
+ event = event.replace(stripNameRegex, "");
+ return customEvents[event] || event;
+ }
+ var EventHandler = {
+ on(element, event, handler, delegationFunction) {
+ addHandler(element, event, handler, delegationFunction, false);
+ },
+ one(element, event, handler, delegationFunction) {
+ addHandler(element, event, handler, delegationFunction, true);
+ },
+ off(element, originalTypeEvent, handler, delegationFunction) {
+ if (typeof originalTypeEvent !== "string" || !element) {
+ return;
+ }
+ const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
+ const inNamespace = typeEvent !== originalTypeEvent;
+ const events = getElementEvents(element);
+ const storeElementEvent = events[typeEvent] || {};
+ const isNamespace = originalTypeEvent.startsWith(".");
+ if (typeof callable !== "undefined") {
+ if (!Object.keys(storeElementEvent).length) {
+ return;
+ }
+ removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
+ return;
+ }
+ if (isNamespace) {
+ for (const elementEvent of Object.keys(events)) {
+ removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
+ }
+ }
+ for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
+ const handlerKey = keyHandlers.replace(stripUidRegex, "");
+ if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
+ removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
+ }
+ }
+ },
+ trigger(element, event, args) {
+ if (typeof event !== "string" || !element) {
+ return null;
+ }
+ const $4 = getjQuery();
+ const typeEvent = getTypeEvent(event);
+ const inNamespace = event !== typeEvent;
+ let jQueryEvent = null;
+ let bubbles = true;
+ let nativeDispatch = true;
+ let defaultPrevented = false;
+ if (inNamespace && $4) {
+ jQueryEvent = $4.Event(event, args);
+ $4(element).trigger(jQueryEvent);
+ bubbles = !jQueryEvent.isPropagationStopped();
+ nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
+ defaultPrevented = jQueryEvent.isDefaultPrevented();
+ }
+ const evt = hydrateObj(new Event(event, {
+ bubbles,
+ cancelable: true
+ }), args);
+ if (defaultPrevented) {
+ evt.preventDefault();
+ }
+ if (nativeDispatch) {
+ element.dispatchEvent(evt);
+ }
+ if (evt.defaultPrevented && jQueryEvent) {
+ jQueryEvent.preventDefault();
+ }
+ return evt;
+ }
+ };
+ function hydrateObj(obj, meta = {}) {
+ for (const [key, value] of Object.entries(meta)) {
+ try {
+ obj[key] = value;
+ } catch (_unused) {
+ Object.defineProperty(obj, key, {
+ configurable: true,
+ get() {
+ return value;
+ }
+ });
+ }
+ }
+ return obj;
+ }
+ function normalizeData(value) {
+ if (value === "true") {
+ return true;
+ }
+ if (value === "false") {
+ return false;
+ }
+ if (value === Number(value).toString()) {
+ return Number(value);
+ }
+ if (value === "" || value === "null") {
+ return null;
+ }
+ if (typeof value !== "string") {
+ return value;
+ }
+ try {
+ return JSON.parse(decodeURIComponent(value));
+ } catch (_unused) {
+ return value;
+ }
+ }
+ function normalizeDataKey(key) {
+ return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`);
+ }
+ var Manipulator = {
+ setDataAttribute(element, key, value) {
+ element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
+ },
+ removeDataAttribute(element, key) {
+ element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
+ },
+ getDataAttributes(element) {
+ if (!element) {
+ return {};
+ }
+ const attributes = {};
+ const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig"));
+ for (const key of bsKeys) {
+ let pureKey = key.replace(/^bs/, "");
+ pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
+ attributes[pureKey] = normalizeData(element.dataset[key]);
+ }
+ return attributes;
+ },
+ getDataAttribute(element, key) {
+ return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
+ }
+ };
+ var Config = class {
+ // Getters
+ 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(config) {
+ config = this._mergeConfigObj(config);
+ config = this._configAfterMerge(config);
+ this._typeCheckConfig(config);
+ return config;
+ }
+ _configAfterMerge(config) {
+ return config;
+ }
+ _mergeConfigObj(config, element) {
+ const jsonConfig = isElement2(element) ? Manipulator.getDataAttribute(element, "config") : {};
+ return __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, this.constructor.Default), typeof jsonConfig === "object" ? jsonConfig : {}), isElement2(element) ? Manipulator.getDataAttributes(element) : {}), typeof config === "object" ? config : {});
+ }
+ _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
+ for (const [property, expectedTypes] of Object.entries(configTypes)) {
+ const value = config[property];
+ const valueType = isElement2(value) ? "element" : toType(value);
+ if (!new RegExp(expectedTypes).test(valueType)) {
+ throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
+ }
+ }
+ }
+ };
+ var VERSION = "5.3.3";
+ var BaseComponent = class extends Config {
+ constructor(element, config) {
+ super();
+ element = getElement(element);
+ if (!element) {
+ return;
+ }
+ this._element = element;
+ this._config = this._getConfig(config);
+ Data.set(this._element, this.constructor.DATA_KEY, this);
+ }
+ // Public
+ dispose() {
+ Data.remove(this._element, this.constructor.DATA_KEY);
+ EventHandler.off(this._element, this.constructor.EVENT_KEY);
+ for (const propertyName of Object.getOwnPropertyNames(this)) {
+ this[propertyName] = null;
+ }
+ }
+ _queueCallback(callback, element, isAnimated = true) {
+ executeAfterTransition(callback, element, isAnimated);
+ }
+ _getConfig(config) {
+ config = this._mergeConfigObj(config, this._element);
+ config = this._configAfterMerge(config);
+ this._typeCheckConfig(config);
+ return config;
+ }
+ // Static
+ static getInstance(element) {
+ return Data.get(getElement(element), this.DATA_KEY);
+ }
+ static getOrCreateInstance(element, config = {}) {
+ return this.getInstance(element) || new this(element, typeof config === "object" ? config : null);
+ }
+ static get VERSION() {
+ return VERSION;
+ }
+ static get DATA_KEY() {
+ return `bs.${this.NAME}`;
+ }
+ static get EVENT_KEY() {
+ return `.${this.DATA_KEY}`;
+ }
+ static eventName(name) {
+ return `${name}${this.EVENT_KEY}`;
+ }
+ };
+ var getSelector = (element) => {
+ let selector = element.getAttribute("data-bs-target");
+ if (!selector || selector === "#") {
+ let hrefAttribute = element.getAttribute("href");
+ if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) {
+ return null;
+ }
+ if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) {
+ hrefAttribute = `#${hrefAttribute.split("#")[1]}`;
+ }
+ selector = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null;
+ }
+ return selector ? selector.split(",").map((sel) => parseSelector(sel)).join(",") : null;
+ };
+ var SelectorEngine = {
+ find(selector, element = document.documentElement) {
+ return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
+ },
+ findOne(selector, element = document.documentElement) {
+ return Element.prototype.querySelector.call(element, selector);
+ },
+ children(element, selector) {
+ return [].concat(...element.children).filter((child) => child.matches(selector));
+ },
+ parents(element, selector) {
+ const parents = [];
+ let ancestor = element.parentNode.closest(selector);
+ while (ancestor) {
+ parents.push(ancestor);
+ ancestor = ancestor.parentNode.closest(selector);
+ }
+ return parents;
+ },
+ prev(element, selector) {
+ let previous = element.previousElementSibling;
+ while (previous) {
+ if (previous.matches(selector)) {
+ return [previous];
+ }
+ previous = previous.previousElementSibling;
+ }
+ return [];
+ },
+ // TODO: this is now unused; remove later along with prev()
+ next(element, selector) {
+ let next = element.nextElementSibling;
+ while (next) {
+ if (next.matches(selector)) {
+ return [next];
+ }
+ next = next.nextElementSibling;
+ }
+ return [];
+ },
+ focusableChildren(element) {
+ const focusables = ["a", "button", "input", "textarea", "select", "details", "[tabindex]", '[contenteditable="true"]'].map((selector) => `${selector}:not([tabindex^="-"])`).join(",");
+ return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el));
+ },
+ getSelectorFromElement(element) {
+ const selector = getSelector(element);
+ if (selector) {
+ return SelectorEngine.findOne(selector) ? selector : null;
+ }
+ return null;
+ },
+ getElementFromSelector(element) {
+ const selector = getSelector(element);
+ return selector ? SelectorEngine.findOne(selector) : null;
+ },
+ getMultipleElementsFromSelector(element) {
+ const selector = getSelector(element);
+ return selector ? SelectorEngine.find(selector) : [];
+ }
+ };
+ var enableDismissTrigger = (component, method = "hide") => {
+ const clickEvent = `click.dismiss${component.EVENT_KEY}`;
+ const name = component.NAME;
+ EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function(event) {
+ if (["A", "AREA"].includes(this.tagName)) {
+ event.preventDefault();
+ }
+ if (isDisabled(this)) {
+ return;
+ }
+ const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);
+ const instance = component.getOrCreateInstance(target);
+ instance[method]();
+ });
+ };
+ var NAME$f = "alert";
+ var DATA_KEY$a = "bs.alert";
+ var EVENT_KEY$b = `.${DATA_KEY$a}`;
+ var EVENT_CLOSE = `close${EVENT_KEY$b}`;
+ var EVENT_CLOSED = `closed${EVENT_KEY$b}`;
+ var CLASS_NAME_FADE$5 = "fade";
+ var CLASS_NAME_SHOW$8 = "show";
+ var Alert = class _Alert extends BaseComponent {
+ // Getters
+ static get NAME() {
+ return NAME$f;
+ }
+ // Public
+ close() {
+ const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
+ if (closeEvent.defaultPrevented) {
+ return;
+ }
+ this._element.classList.remove(CLASS_NAME_SHOW$8);
+ const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
+ this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
+ }
+ // Private
+ _destroyElement() {
+ this._element.remove();
+ EventHandler.trigger(this._element, EVENT_CLOSED);
+ this.dispose();
+ }
+ // Static
+ static jQueryInterface(config) {
+ return this.each(function() {
+ const data = _Alert.getOrCreateInstance(this);
+ if (typeof config !== "string") {
+ return;
+ }
+ if (data[config] === void 0 || config.startsWith("_") || config === "constructor") {
+ throw new TypeError(`No method named "${config}"`);
+ }
+ data[config](this);
+ });
+ }
+ };
+ enableDismissTrigger(Alert, "close");
+ defineJQueryPlugin(Alert);
+ var NAME$e = "button";
+ var DATA_KEY$9 = "bs.button";
+ var EVENT_KEY$a = `.${DATA_KEY$9}`;
+ var DATA_API_KEY$6 = ".data-api";
+ var CLASS_NAME_ACTIVE$3 = "active";
+ var SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
+ var EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
+ var Button = class _Button extends BaseComponent {
+ // Getters
+ static get NAME() {
+ return NAME$e;
+ }
+ // Public
+ toggle() {
+ this._element.setAttribute("aria-pressed", this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
+ }
+ // Static
+ static jQueryInterface(config) {
+ return this.each(function() {
+ const data = _Button.getOrCreateInstance(this);
+ if (config === "toggle") {
+ data[config]();
+ }
+ });
+ }
+ };
+ EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, (event) => {
+ event.preventDefault();
+ const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
+ const data = Button.getOrCreateInstance(button);
+ data.toggle();
+ });
+ defineJQueryPlugin(Button);
+ var NAME$d = "swipe";
+ var EVENT_KEY$9 = ".bs.swipe";
+ var EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
+ var EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
+ var EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
+ var EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
+ var EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
+ var POINTER_TYPE_TOUCH = "touch";
+ var POINTER_TYPE_PEN = "pen";
+ var CLASS_NAME_POINTER_EVENT = "pointer-event";
+ var SWIPE_THRESHOLD = 40;
+ var Default$c = {
+ endCallback: null,
+ leftCallback: null,
+ rightCallback: null
+ };
+ var DefaultType$c = {
+ endCallback: "(function|null)",
+ leftCallback: "(function|null)",
+ rightCallback: "(function|null)"
+ };
+ var Swipe = class _Swipe extends Config {
+ constructor(element, config) {
+ super();
+ this._element = element;
+ if (!element || !_Swipe.isSupported()) {
+ return;
+ }
+ this._config = this._getConfig(config);
+ this._deltaX = 0;
+ this._supportPointerEvents = Boolean(window.PointerEvent);
+ this._initEvents();
+ }
+ // Getters
+ static get Default() {
+ return Default$c;
+ }
+ static get DefaultType() {
+ return DefaultType$c;
+ }
+ static get NAME() {
+ return NAME$d;
+ }
+ // Public
+ dispose() {
+ EventHandler.off(this._element, EVENT_KEY$9);
+ }
+ // Private
+ _start(event) {
+ if (!this._supportPointerEvents) {
+ this._deltaX = event.touches[0].clientX;
+ return;
+ }
+ if (this._eventIsPointerPenTouch(event)) {
+ this._deltaX = event.clientX;
+ }
+ }
+ _end(event) {
+ if (this._eventIsPointerPenTouch(event)) {
+ this._deltaX = event.clientX - this._deltaX;
+ }
+ this._handleSwipe();
+ execute(this._config.endCallback);
+ }
+ _move(event) {
+ this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
+ }
+ _handleSwipe() {
+ const absDeltaX = Math.abs(this._deltaX);
+ if (absDeltaX <= SWIPE_THRESHOLD) {
+ return;
+ }
+ const direction = absDeltaX / this._deltaX;
+ this._deltaX = 0;
+ if (!direction) {
+ return;
+ }
+ execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
+ }
+ _initEvents() {
+ if (this._supportPointerEvents) {
+ EventHandler.on(this._element, EVENT_POINTERDOWN, (event) => this._start(event));
+ EventHandler.on(this._element, EVENT_POINTERUP, (event) => this._end(event));
+ this._element.classList.add(CLASS_NAME_POINTER_EVENT);
+ } else {
+ EventHandler.on(this._element, EVENT_TOUCHSTART, (event) => this._start(event));
+ EventHandler.on(this._element, EVENT_TOUCHMOVE, (event) => this._move(event));
+ EventHandler.on(this._element, EVENT_TOUCHEND, (event) => this._end(event));
+ }
+ }
+ _eventIsPointerPenTouch(event) {
+ return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
+ }
+ // Static
+ static isSupported() {
+ return "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0;
+ }
+ };
+ var NAME$c = "carousel";
+ var DATA_KEY$8 = "bs.carousel";
+ var EVENT_KEY$8 = `.${DATA_KEY$8}`;
+ var DATA_API_KEY$5 = ".data-api";
+ var ARROW_LEFT_KEY$1 = "ArrowLeft";
+ var ARROW_RIGHT_KEY$1 = "ArrowRight";
+ var TOUCHEVENT_COMPAT_WAIT = 500;
+ var ORDER_NEXT = "next";
+ var ORDER_PREV = "prev";
+ var DIRECTION_LEFT = "left";
+ var DIRECTION_RIGHT = "right";
+ var EVENT_SLIDE = `slide${EVENT_KEY$8}`;
+ var EVENT_SLID = `slid${EVENT_KEY$8}`;
+ var EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;
+ var EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;
+ var EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;
+ var EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;
+ var EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
+ var EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
+ var CLASS_NAME_CAROUSEL = "carousel";
+ var CLASS_NAME_ACTIVE$2 = "active";
+ var CLASS_NAME_SLIDE = "slide";
+ var CLASS_NAME_END = "carousel-item-end";
+ var CLASS_NAME_START = "carousel-item-start";
+ var CLASS_NAME_NEXT = "carousel-item-next";
+ var CLASS_NAME_PREV = "carousel-item-prev";
+ var SELECTOR_ACTIVE = ".active";
+ var SELECTOR_ITEM = ".carousel-item";
+ var SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
+ var SELECTOR_ITEM_IMG = ".carousel-item img";
+ var SELECTOR_INDICATORS = ".carousel-indicators";
+ var SELECTOR_DATA_SLIDE = "[data-bs-slide], [data-bs-slide-to]";
+ var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
+ var KEY_TO_DIRECTION = {
+ [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,
+ [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT
+ };
+ var Default$b = {
+ interval: 5e3,
+ keyboard: true,
+ pause: "hover",
+ ride: false,
+ touch: true,
+ wrap: true
+ };
+ var DefaultType$b = {
+ interval: "(number|boolean)",
+ // TODO:v6 remove boolean support
+ keyboard: "boolean",
+ pause: "(string|boolean)",
+ ride: "(boolean|string)",
+ touch: "boolean",
+ wrap: "boolean"
+ };
+ var Carousel = class _Carousel extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._interval = null;
+ this._activeElement = null;
+ this._isSliding = false;
+ this.touchTimeout = null;
+ this._swipeHelper = null;
+ this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
+ this._addEventListeners();
+ if (this._config.ride === CLASS_NAME_CAROUSEL) {
+ this.cycle();
+ }
+ }
+ // Getters
+ static get Default() {
+ return Default$b;
+ }
+ static get DefaultType() {
+ return DefaultType$b;
+ }
+ static get NAME() {
+ return NAME$c;
+ }
+ // Public
+ next() {
+ this._slide(ORDER_NEXT);
+ }
+ nextWhenVisible() {
+ if (!document.hidden && isVisible(this._element)) {
+ this.next();
+ }
+ }
+ prev() {
+ this._slide(ORDER_PREV);
+ }
+ pause() {
+ if (this._isSliding) {
+ triggerTransitionEnd(this._element);
+ }
+ this._clearInterval();
+ }
+ cycle() {
+ this._clearInterval();
+ this._updateInterval();
+ this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
+ }
+ _maybeEnableCycle() {
+ if (!this._config.ride) {
+ return;
+ }
+ if (this._isSliding) {
+ EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
+ return;
+ }
+ this.cycle();
+ }
+ to(index) {
+ const items = this._getItems();
+ if (index > items.length - 1 || index < 0) {
+ return;
+ }
+ if (this._isSliding) {
+ EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
+ return;
+ }
+ const activeIndex = this._getItemIndex(this._getActive());
+ if (activeIndex === index) {
+ return;
+ }
+ const order2 = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
+ this._slide(order2, items[index]);
+ }
+ dispose() {
+ if (this._swipeHelper) {
+ this._swipeHelper.dispose();
+ }
+ super.dispose();
+ }
+ // Private
+ _configAfterMerge(config) {
+ config.defaultInterval = config.interval;
+ return config;
+ }
+ _addEventListeners() {
+ if (this._config.keyboard) {
+ EventHandler.on(this._element, EVENT_KEYDOWN$1, (event) => this._keydown(event));
+ }
+ if (this._config.pause === "hover") {
+ EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());
+ EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());
+ }
+ if (this._config.touch && Swipe.isSupported()) {
+ this._addTouchEventListeners();
+ }
+ }
+ _addTouchEventListeners() {
+ for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {
+ EventHandler.on(img, EVENT_DRAG_START, (event) => event.preventDefault());
+ }
+ const endCallBack = () => {
+ if (this._config.pause !== "hover") {
+ return;
+ }
+ this.pause();
+ if (this.touchTimeout) {
+ clearTimeout(this.touchTimeout);
+ }
+ this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
+ };
+ const swipeConfig = {
+ leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
+ rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
+ endCallback: endCallBack
+ };
+ this._swipeHelper = new Swipe(this._element, swipeConfig);
+ }
+ _keydown(event) {
+ if (/input|textarea/i.test(event.target.tagName)) {
+ return;
+ }
+ const direction = KEY_TO_DIRECTION[event.key];
+ if (direction) {
+ event.preventDefault();
+ this._slide(this._directionToOrder(direction));
+ }
+ }
+ _getItemIndex(element) {
+ return this._getItems().indexOf(element);
+ }
+ _setActiveIndicatorElement(index) {
+ if (!this._indicatorsElement) {
+ return;
+ }
+ const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
+ activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
+ activeIndicator.removeAttribute("aria-current");
+ const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement);
+ if (newActiveIndicator) {
+ newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);
+ newActiveIndicator.setAttribute("aria-current", "true");
+ }
+ }
+ _updateInterval() {
+ const element = this._activeElement || this._getActive();
+ if (!element) {
+ return;
+ }
+ const elementInterval = Number.parseInt(element.getAttribute("data-bs-interval"), 10);
+ this._config.interval = elementInterval || this._config.defaultInterval;
+ }
+ _slide(order2, element = null) {
+ if (this._isSliding) {
+ return;
+ }
+ const activeElement = this._getActive();
+ const isNext = order2 === ORDER_NEXT;
+ const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
+ if (nextElement === activeElement) {
+ return;
+ }
+ const nextElementIndex = this._getItemIndex(nextElement);
+ const triggerEvent = (eventName) => {
+ return EventHandler.trigger(this._element, eventName, {
+ relatedTarget: nextElement,
+ direction: this._orderToDirection(order2),
+ from: this._getItemIndex(activeElement),
+ to: nextElementIndex
+ });
+ };
+ const slideEvent = triggerEvent(EVENT_SLIDE);
+ if (slideEvent.defaultPrevented) {
+ return;
+ }
+ if (!activeElement || !nextElement) {
+ return;
+ }
+ const isCycling = Boolean(this._interval);
+ this.pause();
+ this._isSliding = true;
+ this._setActiveIndicatorElement(nextElementIndex);
+ this._activeElement = nextElement;
+ const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
+ const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
+ nextElement.classList.add(orderClassName);
+ reflow(nextElement);
+ activeElement.classList.add(directionalClassName);
+ nextElement.classList.add(directionalClassName);
+ const completeCallBack = () => {
+ nextElement.classList.remove(directionalClassName, orderClassName);
+ nextElement.classList.add(CLASS_NAME_ACTIVE$2);
+ activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
+ this._isSliding = false;
+ triggerEvent(EVENT_SLID);
+ };
+ this._queueCallback(completeCallBack, activeElement, this._isAnimated());
+ if (isCycling) {
+ this.cycle();
+ }
+ }
+ _isAnimated() {
+ return this._element.classList.contains(CLASS_NAME_SLIDE);
+ }
+ _getActive() {
+ return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
+ }
+ _getItems() {
+ return SelectorEngine.find(SELECTOR_ITEM, this._element);
+ }
+ _clearInterval() {
+ if (this._interval) {
+ clearInterval(this._interval);
+ this._interval = null;
+ }
+ }
+ _directionToOrder(direction) {
+ if (isRTL()) {
+ return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
+ }
+ return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
+ }
+ _orderToDirection(order2) {
+ if (isRTL()) {
+ return order2 === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
+ }
+ return order2 === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
+ }
+ // Static
+ static jQueryInterface(config) {
+ return this.each(function() {
+ const data = _Carousel.getOrCreateInstance(this, config);
+ if (typeof config === "number") {
+ data.to(config);
+ return;
+ }
+ if (typeof config === "string") {
+ if (data[config] === void 0 || config.startsWith("_") || config === "constructor") {
+ throw new TypeError(`No method named "${config}"`);
+ }
+ data[config]();
+ }
+ });
+ }
+ };
+ EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function(event) {
+ const target = SelectorEngine.getElementFromSelector(this);
+ if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
+ return;
+ }
+ event.preventDefault();
+ const carousel = Carousel.getOrCreateInstance(target);
+ const slideIndex = this.getAttribute("data-bs-slide-to");
+ if (slideIndex) {
+ carousel.to(slideIndex);
+ carousel._maybeEnableCycle();
+ return;
+ }
+ if (Manipulator.getDataAttribute(this, "slide") === "next") {
+ carousel.next();
+ carousel._maybeEnableCycle();
+ return;
+ }
+ carousel.prev();
+ carousel._maybeEnableCycle();
+ });
+ EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
+ const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
+ for (const carousel of carousels) {
+ Carousel.getOrCreateInstance(carousel);
+ }
+ });
+ defineJQueryPlugin(Carousel);
+ var NAME$b = "collapse";
+ var DATA_KEY$7 = "bs.collapse";
+ var EVENT_KEY$7 = `.${DATA_KEY$7}`;
+ var DATA_API_KEY$4 = ".data-api";
+ var EVENT_SHOW$6 = `show${EVENT_KEY$7}`;
+ var EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;
+ var EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;
+ var EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;
+ var EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
+ var CLASS_NAME_SHOW$7 = "show";
+ var CLASS_NAME_COLLAPSE = "collapse";
+ var CLASS_NAME_COLLAPSING = "collapsing";
+ var CLASS_NAME_COLLAPSED = "collapsed";
+ var CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
+ var CLASS_NAME_HORIZONTAL = "collapse-horizontal";
+ var WIDTH = "width";
+ var HEIGHT = "height";
+ var SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing";
+ var SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
+ var Default$a = {
+ parent: null,
+ toggle: true
+ };
+ var DefaultType$a = {
+ parent: "(null|element)",
+ toggle: "boolean"
+ };
+ var Collapse = class _Collapse extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._isTransitioning = false;
+ this._triggerArray = [];
+ const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
+ for (const elem of toggleList) {
+ const selector = SelectorEngine.getSelectorFromElement(elem);
+ const filterElement = SelectorEngine.find(selector).filter((foundElement) => foundElement === this._element);
+ if (selector !== null && filterElement.length) {
+ this._triggerArray.push(elem);
+ }
+ }
+ this._initializeChildren();
+ if (!this._config.parent) {
+ this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
+ }
+ if (this._config.toggle) {
+ this.toggle();
+ }
+ }
+ // Getters
+ static get Default() {
+ return Default$a;
+ }
+ static get DefaultType() {
+ return DefaultType$a;
+ }
+ static get NAME() {
+ return NAME$b;
+ }
+ // Public
+ toggle() {
+ if (this._isShown()) {
+ this.hide();
+ } else {
+ this.show();
+ }
+ }
+ show() {
+ if (this._isTransitioning || this._isShown()) {
+ return;
+ }
+ let activeChildren = [];
+ if (this._config.parent) {
+ activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => _Collapse.getOrCreateInstance(element, {
+ toggle: false
+ }));
+ }
+ if (activeChildren.length && activeChildren[0]._isTransitioning) {
+ return;
+ }
+ const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
+ if (startEvent.defaultPrevented) {
+ return;
+ }
+ for (const activeInstance of activeChildren) {
+ activeInstance.hide();
+ }
+ const dimension = this._getDimension();
+ this._element.classList.remove(CLASS_NAME_COLLAPSE);
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
+ this._element.style[dimension] = 0;
+ this._addAriaAndCollapsedClass(this._triggerArray, true);
+ this._isTransitioning = true;
+ const complete = () => {
+ this._isTransitioning = false;
+ this._element.classList.remove(CLASS_NAME_COLLAPSING);
+ this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
+ this._element.style[dimension] = "";
+ EventHandler.trigger(this._element, EVENT_SHOWN$6);
+ };
+ const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
+ const scrollSize = `scroll${capitalizedDimension}`;
+ this._queueCallback(complete, this._element, true);
+ this._element.style[dimension] = `${this._element[scrollSize]}px`;
+ }
+ hide() {
+ if (this._isTransitioning || !this._isShown()) {
+ return;
+ }
+ const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
+ if (startEvent.defaultPrevented) {
+ return;
+ }
+ const dimension = this._getDimension();
+ this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
+ reflow(this._element);
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
+ this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
+ for (const trigger of this._triggerArray) {
+ const element = SelectorEngine.getElementFromSelector(trigger);
+ if (element && !this._isShown(element)) {
+ this._addAriaAndCollapsedClass([trigger], false);
+ }
+ }
+ this._isTransitioning = true;
+ const complete = () => {
+ this._isTransitioning = false;
+ this._element.classList.remove(CLASS_NAME_COLLAPSING);
+ this._element.classList.add(CLASS_NAME_COLLAPSE);
+ EventHandler.trigger(this._element, EVENT_HIDDEN$6);
+ };
+ this._element.style[dimension] = "";
+ this._queueCallback(complete, this._element, true);
+ }
+ _isShown(element = this._element) {
+ return element.classList.contains(CLASS_NAME_SHOW$7);
+ }
+ // Private
+ _configAfterMerge(config) {
+ config.toggle = Boolean(config.toggle);
+ config.parent = getElement(config.parent);
+ return config;
+ }
+ _getDimension() {
+ return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
+ }
+ _initializeChildren() {
+ if (!this._config.parent) {
+ return;
+ }
+ const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);
+ for (const element of children) {
+ const selected = SelectorEngine.getElementFromSelector(element);
+ if (selected) {
+ this._addAriaAndCollapsedClass([element], this._isShown(selected));
+ }
+ }
+ }
+ _getFirstLevelChildren(selector) {
+ const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
+ return SelectorEngine.find(selector, this._config.parent).filter((element) => !children.includes(element));
+ }
+ _addAriaAndCollapsedClass(triggerArray, isOpen) {
+ if (!triggerArray.length) {
+ return;
+ }
+ for (const element of triggerArray) {
+ element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
+ element.setAttribute("aria-expanded", isOpen);
+ }
+ }
+ // Static
+ static jQueryInterface(config) {
+ const _config = {};
+ if (typeof config === "string" && /show|hide/.test(config)) {
+ _config.toggle = false;
+ }
+ return this.each(function() {
+ const data = _Collapse.getOrCreateInstance(this, _config);
+ if (typeof config === "string") {
+ if (typeof data[config] === "undefined") {
+ throw new TypeError(`No method named "${config}"`);
+ }
+ data[config]();
+ }
+ });
+ }
+ };
+ EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function(event) {
+ if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") {
+ event.preventDefault();
+ }
+ for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {
+ Collapse.getOrCreateInstance(element, {
+ toggle: false
+ }).toggle();
+ }
+ });
+ defineJQueryPlugin(Collapse);
+ var NAME$a = "dropdown";
+ var DATA_KEY$6 = "bs.dropdown";
+ var EVENT_KEY$6 = `.${DATA_KEY$6}`;
+ var DATA_API_KEY$3 = ".data-api";
+ var ESCAPE_KEY$2 = "Escape";
+ var TAB_KEY$1 = "Tab";
+ var ARROW_UP_KEY$1 = "ArrowUp";
+ var ARROW_DOWN_KEY$1 = "ArrowDown";
+ var RIGHT_MOUSE_BUTTON = 2;
+ var EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;
+ var EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;
+ var EVENT_SHOW$5 = `show${EVENT_KEY$6}`;
+ var EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;
+ var EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
+ var EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;
+ var EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;
+ var CLASS_NAME_SHOW$6 = "show";
+ var CLASS_NAME_DROPUP = "dropup";
+ var CLASS_NAME_DROPEND = "dropend";
+ var CLASS_NAME_DROPSTART = "dropstart";
+ var CLASS_NAME_DROPUP_CENTER = "dropup-center";
+ var CLASS_NAME_DROPDOWN_CENTER = "dropdown-center";
+ var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
+ var SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;
+ var SELECTOR_MENU = ".dropdown-menu";
+ var SELECTOR_NAVBAR = ".navbar";
+ var SELECTOR_NAVBAR_NAV = ".navbar-nav";
+ var SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)";
+ var PLACEMENT_TOP = isRTL() ? "top-end" : "top-start";
+ var PLACEMENT_TOPEND = isRTL() ? "top-start" : "top-end";
+ var PLACEMENT_BOTTOM = isRTL() ? "bottom-end" : "bottom-start";
+ var PLACEMENT_BOTTOMEND = isRTL() ? "bottom-start" : "bottom-end";
+ var PLACEMENT_RIGHT = isRTL() ? "left-start" : "right-start";
+ var PLACEMENT_LEFT = isRTL() ? "right-start" : "left-start";
+ var PLACEMENT_TOPCENTER = "top";
+ var PLACEMENT_BOTTOMCENTER = "bottom";
+ var Default$9 = {
+ autoClose: true,
+ boundary: "clippingParents",
+ display: "dynamic",
+ offset: [0, 2],
+ popperConfig: null,
+ reference: "toggle"
+ };
+ var DefaultType$9 = {
+ autoClose: "(boolean|string)",
+ boundary: "(string|element)",
+ display: "string",
+ offset: "(array|string|function)",
+ popperConfig: "(null|object|function)",
+ reference: "(string|element|object)"
+ };
+ var Dropdown = class _Dropdown extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._popper = null;
+ this._parent = this._element.parentNode;
+ this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
+ this._inNavbar = this._detectNavbar();
+ }
+ // Getters
+ static get Default() {
+ return Default$9;
+ }
+ static get DefaultType() {
+ return DefaultType$9;
+ }
+ static get NAME() {
+ return NAME$a;
+ }
+ // Public
+ toggle() {
+ return this._isShown() ? this.hide() : this.show();
+ }
+ show() {
+ if (isDisabled(this._element) || this._isShown()) {
+ return;
+ }
+ const relatedTarget = {
+ relatedTarget: this._element
+ };
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);
+ if (showEvent.defaultPrevented) {
+ return;
+ }
+ this._createPopper();
+ if ("ontouchstart" in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
+ for (const element of [].concat(...document.body.children)) {
+ EventHandler.on(element, "mouseover", noop);
+ }
+ }
+ this._element.focus();
+ this._element.setAttribute("aria-expanded", true);
+ this._menu.classList.add(CLASS_NAME_SHOW$6);
+ this._element.classList.add(CLASS_NAME_SHOW$6);
+ EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
+ }
+ hide() {
+ if (isDisabled(this._element) || !this._isShown()) {
+ return;
+ }
+ const relatedTarget = {
+ relatedTarget: this._element
+ };
+ this._completeHide(relatedTarget);
+ }
+ dispose() {
+ if (this._popper) {
+ this._popper.destroy();
+ }
+ super.dispose();
+ }
+ update() {
+ this._inNavbar = this._detectNavbar();
+ if (this._popper) {
+ this._popper.update();
+ }
+ }
+ // Private
+ _completeHide(relatedTarget) {
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
+ if (hideEvent.defaultPrevented) {
+ return;
+ }
+ if ("ontouchstart" in document.documentElement) {
+ for (const element of [].concat(...document.body.children)) {
+ EventHandler.off(element, "mouseover", noop);
+ }
+ }
+ if (this._popper) {
+ this._popper.destroy();
+ }
+ this._menu.classList.remove(CLASS_NAME_SHOW$6);
+ this._element.classList.remove(CLASS_NAME_SHOW$6);
+ this._element.setAttribute("aria-expanded", "false");
+ Manipulator.removeDataAttribute(this._menu, "popper");
+ EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
+ }
+ _getConfig(config) {
+ config = super._getConfig(config);
+ if (typeof config.reference === "object" && !isElement2(config.reference) && typeof config.reference.getBoundingClientRect !== "function") {
+ throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
+ }
+ return config;
+ }
+ _createPopper() {
+ if (typeof lib_exports === "undefined") {
+ throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");
+ }
+ let referenceElement = this._element;
+ if (this._config.reference === "parent") {
+ referenceElement = this._parent;
+ } else if (isElement2(this._config.reference)) {
+ referenceElement = getElement(this._config.reference);
+ } else if (typeof this._config.reference === "object") {
+ referenceElement = this._config.reference;
+ }
+ const popperConfig = this._getPopperConfig();
+ this._popper = createPopper3(referenceElement, this._menu, popperConfig);
+ }
+ _isShown() {
+ return this._menu.classList.contains(CLASS_NAME_SHOW$6);
+ }
+ _getPlacement() {
+ const parentDropdown = this._parent;
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
+ return PLACEMENT_RIGHT;
+ }
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
+ return PLACEMENT_LEFT;
+ }
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
+ return PLACEMENT_TOPCENTER;
+ }
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
+ return PLACEMENT_BOTTOMCENTER;
+ }
+ const isEnd = getComputedStyle(this._menu).getPropertyValue("--bs-position").trim() === "end";
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
+ return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
+ }
+ return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
+ }
+ _detectNavbar() {
+ return this._element.closest(SELECTOR_NAVBAR) !== null;
+ }
+ _getOffset() {
+ const {
+ offset: offset2
+ } = this._config;
+ if (typeof offset2 === "string") {
+ return offset2.split(",").map((value) => Number.parseInt(value, 10));
+ }
+ if (typeof offset2 === "function") {
+ return (popperData) => offset2(popperData, this._element);
+ }
+ return offset2;
+ }
+ _getPopperConfig() {
+ const defaultBsPopperConfig = {
+ placement: this._getPlacement(),
+ modifiers: [{
+ name: "preventOverflow",
+ options: {
+ boundary: this._config.boundary
+ }
+ }, {
+ name: "offset",
+ options: {
+ offset: this._getOffset()
+ }
+ }]
+ };
+ if (this._inNavbar || this._config.display === "static") {
+ Manipulator.setDataAttribute(this._menu, "popper", "static");
+ defaultBsPopperConfig.modifiers = [{
+ name: "applyStyles",
+ enabled: false
+ }];
+ }
+ return __spreadValues(__spreadValues({}, defaultBsPopperConfig), execute(this._config.popperConfig, [defaultBsPopperConfig]));
+ }
+ _selectMenuItem({
+ key,
+ target
+ }) {
+ const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) => isVisible(element));
+ if (!items.length) {
+ return;
+ }
+ getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
+ }
+ // Static
+ static jQueryInterface(config) {
+ return this.each(function() {
+ const data = _Dropdown.getOrCreateInstance(this, config);
+ if (typeof config !== "string") {
+ return;
+ }
+ if (typeof data[config] === "undefined") {
+ throw new TypeError(`No method named "${config}"`);
+ }
+ data[config]();
+ });
+ }
+ static clearMenus(event) {
+ if (event.button === RIGHT_MOUSE_BUTTON || event.type === "keyup" && event.key !== TAB_KEY$1) {
+ return;
+ }
+ const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
+ for (const toggle of openToggles) {
+ const context = _Dropdown.getInstance(toggle);
+ if (!context || context._config.autoClose === false) {
+ continue;
+ }
+ const composedPath = event.composedPath();
+ const isMenuTarget = composedPath.includes(context._menu);
+ if (composedPath.includes(context._element) || context._config.autoClose === "inside" && !isMenuTarget || context._config.autoClose === "outside" && isMenuTarget) {
+ continue;
+ }
+ if (context._menu.contains(event.target) && (event.type === "keyup" && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
+ continue;
+ }
+ const relatedTarget = {
+ relatedTarget: context._element
+ };
+ if (event.type === "click") {
+ relatedTarget.clickEvent = event;
+ }
+ context._completeHide(relatedTarget);
+ }
+ }
+ static dataApiKeydownHandler(event) {
+ const isInput = /input|textarea/i.test(event.target.tagName);
+ const isEscapeEvent = event.key === ESCAPE_KEY$2;
+ const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
+ if (!isUpOrDownEvent && !isEscapeEvent) {
+ return;
+ }
+ if (isInput && !isEscapeEvent) {
+ return;
+ }
+ event.preventDefault();
+ 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);
+ const instance = _Dropdown.getOrCreateInstance(getToggleButton);
+ if (isUpOrDownEvent) {
+ event.stopPropagation();
+ instance.show();
+ instance._selectMenuItem(event);
+ return;
+ }
+ if (instance._isShown()) {
+ event.stopPropagation();
+ instance.hide();
+ getToggleButton.focus();
+ }
+ }
+ };
+ EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
+ EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
+ EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
+ EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
+ EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function(event) {
+ event.preventDefault();
+ Dropdown.getOrCreateInstance(this).toggle();
+ });
+ defineJQueryPlugin(Dropdown);
+ var NAME$9 = "backdrop";
+ var CLASS_NAME_FADE$4 = "fade";
+ var CLASS_NAME_SHOW$5 = "show";
+ var EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;
+ var Default$8 = {
+ className: "modal-backdrop",
+ clickCallback: null,
+ isAnimated: false,
+ isVisible: true,
+ // if false, we use the backdrop helper without adding any element to the dom
+ rootElement: "body"
+ // give the choice to place backdrop under different elements
+ };
+ var DefaultType$8 = {
+ className: "string",
+ clickCallback: "(function|null)",
+ isAnimated: "boolean",
+ isVisible: "boolean",
+ rootElement: "(element|string)"
+ };
+ var Backdrop = class extends Config {
+ constructor(config) {
+ super();
+ this._config = this._getConfig(config);
+ this._isAppended = false;
+ this._element = null;
+ }
+ // Getters
+ static get Default() {
+ return Default$8;
+ }
+ static get DefaultType() {
+ return DefaultType$8;
+ }
+ static get NAME() {
+ return NAME$9;
+ }
+ // Public
+ show(callback) {
+ if (!this._config.isVisible) {
+ execute(callback);
+ return;
+ }
+ this._append();
+ const element = this._getElement();
+ if (this._config.isAnimated) {
+ reflow(element);
+ }
+ element.classList.add(CLASS_NAME_SHOW$5);
+ this._emulateAnimation(() => {
+ execute(callback);
+ });
+ }
+ hide(callback) {
+ if (!this._config.isVisible) {
+ execute(callback);
+ return;
+ }
+ this._getElement().classList.remove(CLASS_NAME_SHOW$5);
+ this._emulateAnimation(() => {
+ this.dispose();
+ execute(callback);
+ });
+ }
+ dispose() {
+ if (!this._isAppended) {
+ return;
+ }
+ EventHandler.off(this._element, EVENT_MOUSEDOWN);
+ this._element.remove();
+ this._isAppended = false;
+ }
+ // Private
+ _getElement() {
+ if (!this._element) {
+ const backdrop = document.createElement("div");
+ backdrop.className = this._config.className;
+ if (this._config.isAnimated) {
+ backdrop.classList.add(CLASS_NAME_FADE$4);
+ }
+ this._element = backdrop;
+ }
+ return this._element;
+ }
+ _configAfterMerge(config) {
+ config.rootElement = getElement(config.rootElement);
+ return config;
+ }
+ _append() {
+ if (this._isAppended) {
+ return;
+ }
+ const element = this._getElement();
+ this._config.rootElement.append(element);
+ EventHandler.on(element, EVENT_MOUSEDOWN, () => {
+ execute(this._config.clickCallback);
+ });
+ this._isAppended = true;
+ }
+ _emulateAnimation(callback) {
+ executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
+ }
+ };
+ var NAME$8 = "focustrap";
+ var DATA_KEY$5 = "bs.focustrap";
+ var EVENT_KEY$5 = `.${DATA_KEY$5}`;
+ var EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;
+ var EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;
+ var TAB_KEY = "Tab";
+ var TAB_NAV_FORWARD = "forward";
+ var TAB_NAV_BACKWARD = "backward";
+ var Default$7 = {
+ autofocus: true,
+ trapElement: null
+ // The element to trap focus inside of
+ };
+ var DefaultType$7 = {
+ autofocus: "boolean",
+ trapElement: "element"
+ };
+ var FocusTrap = class extends Config {
+ constructor(config) {
+ super();
+ this._config = this._getConfig(config);
+ this._isActive = false;
+ this._lastTabNavDirection = null;
+ }
+ // Getters
+ static get Default() {
+ return Default$7;
+ }
+ static get DefaultType() {
+ return DefaultType$7;
+ }
+ static get NAME() {
+ return NAME$8;
+ }
+ // Public
+ activate() {
+ if (this._isActive) {
+ return;
+ }
+ if (this._config.autofocus) {
+ this._config.trapElement.focus();
+ }
+ EventHandler.off(document, EVENT_KEY$5);
+ EventHandler.on(document, EVENT_FOCUSIN$2, (event) => this._handleFocusin(event));
+ EventHandler.on(document, EVENT_KEYDOWN_TAB, (event) => this._handleKeydown(event));
+ this._isActive = true;
+ }
+ deactivate() {
+ if (!this._isActive) {
+ return;
+ }
+ this._isActive = false;
+ EventHandler.off(document, EVENT_KEY$5);
+ }
+ // Private
+ _handleFocusin(event) {
+ const {
+ trapElement
+ } = this._config;
+ if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
+ return;
+ }
+ const elements = SelectorEngine.focusableChildren(trapElement);
+ if (elements.length === 0) {
+ trapElement.focus();
+ } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
+ elements[elements.length - 1].focus();
+ } else {
+ elements[0].focus();
+ }
+ }
+ _handleKeydown(event) {
+ if (event.key !== TAB_KEY) {
+ return;
+ }
+ this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
+ }
+ };
+ var SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top";
+ var SELECTOR_STICKY_CONTENT = ".sticky-top";
+ var PROPERTY_PADDING = "padding-right";
+ var PROPERTY_MARGIN = "margin-right";
+ var ScrollBarHelper = class {
+ constructor() {
+ this._element = document.body;
+ }
+ // Public
+ getWidth() {
+ const documentWidth = document.documentElement.clientWidth;
+ return Math.abs(window.innerWidth - documentWidth);
+ }
+ hide() {
+ const width = this.getWidth();
+ this._disableOverFlow();
+ this._setElementAttributes(this._element, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);
+ this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width);
+ this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, (calculatedValue) => calculatedValue - width);
+ }
+ reset() {
+ this._resetElementAttributes(this._element, "overflow");
+ this._resetElementAttributes(this._element, PROPERTY_PADDING);
+ this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
+ this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
+ }
+ isOverflowing() {
+ return this.getWidth() > 0;
+ }
+ // Private
+ _disableOverFlow() {
+ this._saveInitialAttribute(this._element, "overflow");
+ this._element.style.overflow = "hidden";
+ }
+ _setElementAttributes(selector, styleProperty, callback) {
+ const scrollbarWidth = this.getWidth();
+ const manipulationCallBack = (element) => {
+ if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
+ return;
+ }
+ this._saveInitialAttribute(element, styleProperty);
+ const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
+ element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
+ };
+ this._applyManipulationCallback(selector, manipulationCallBack);
+ }
+ _saveInitialAttribute(element, styleProperty) {
+ const actualValue = element.style.getPropertyValue(styleProperty);
+ if (actualValue) {
+ Manipulator.setDataAttribute(element, styleProperty, actualValue);
+ }
+ }
+ _resetElementAttributes(selector, styleProperty) {
+ const manipulationCallBack = (element) => {
+ const value = Manipulator.getDataAttribute(element, styleProperty);
+ if (value === null) {
+ element.style.removeProperty(styleProperty);
+ return;
+ }
+ Manipulator.removeDataAttribute(element, styleProperty);
+ element.style.setProperty(styleProperty, value);
+ };
+ this._applyManipulationCallback(selector, manipulationCallBack);
+ }
+ _applyManipulationCallback(selector, callBack) {
+ if (isElement2(selector)) {
+ callBack(selector);
+ return;
+ }
+ for (const sel of SelectorEngine.find(selector, this._element)) {
+ callBack(sel);
+ }
+ }
+ };
+ var NAME$7 = "modal";
+ var DATA_KEY$4 = "bs.modal";
+ var EVENT_KEY$4 = `.${DATA_KEY$4}`;
+ var DATA_API_KEY$2 = ".data-api";
+ var ESCAPE_KEY$1 = "Escape";
+ var EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;
+ var EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;
+ var EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;
+ var EVENT_SHOW$4 = `show${EVENT_KEY$4}`;
+ var EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;
+ var EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;
+ var EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;
+ var EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;
+ var EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;
+ var EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;
+ var CLASS_NAME_OPEN = "modal-open";
+ var CLASS_NAME_FADE$3 = "fade";
+ var CLASS_NAME_SHOW$4 = "show";
+ var CLASS_NAME_STATIC = "modal-static";
+ var OPEN_SELECTOR$1 = ".modal.show";
+ var SELECTOR_DIALOG = ".modal-dialog";
+ var SELECTOR_MODAL_BODY = ".modal-body";
+ var SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
+ var Default$6 = {
+ backdrop: true,
+ focus: true,
+ keyboard: true
+ };
+ var DefaultType$6 = {
+ backdrop: "(boolean|string)",
+ focus: "boolean",
+ keyboard: "boolean"
+ };
+ var Modal = class _Modal extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
+ this._backdrop = this._initializeBackDrop();
+ this._focustrap = this._initializeFocusTrap();
+ this._isShown = false;
+ this._isTransitioning = false;
+ this._scrollBar = new ScrollBarHelper();
+ this._addEventListeners();
+ }
+ // Getters
+ static get Default() {
+ return Default$6;
+ }
+ static get DefaultType() {
+ return DefaultType$6;
+ }
+ static get NAME() {
+ return NAME$7;
+ }
+ // Public
+ toggle(relatedTarget) {
+ return this._isShown ? this.hide() : this.show(relatedTarget);
+ }
+ show(relatedTarget) {
+ if (this._isShown || this._isTransitioning) {
+ return;
+ }
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
+ relatedTarget
+ });
+ if (showEvent.defaultPrevented) {
+ return;
+ }
+ this._isShown = true;
+ this._isTransitioning = true;
+ this._scrollBar.hide();
+ document.body.classList.add(CLASS_NAME_OPEN);
+ this._adjustDialog();
+ this._backdrop.show(() => this._showElement(relatedTarget));
+ }
+ hide() {
+ if (!this._isShown || this._isTransitioning) {
+ return;
+ }
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
+ if (hideEvent.defaultPrevented) {
+ return;
+ }
+ this._isShown = false;
+ this._isTransitioning = true;
+ this._focustrap.deactivate();
+ this._element.classList.remove(CLASS_NAME_SHOW$4);
+ this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
+ }
+ dispose() {
+ EventHandler.off(window, EVENT_KEY$4);
+ EventHandler.off(this._dialog, EVENT_KEY$4);
+ this._backdrop.dispose();
+ this._focustrap.deactivate();
+ super.dispose();
+ }
+ handleUpdate() {
+ this._adjustDialog();
+ }
+ // Private
+ _initializeBackDrop() {
+ return new Backdrop({
+ isVisible: Boolean(this._config.backdrop),
+ // 'static' option will be translated to true, and booleans will keep their value,
+ isAnimated: this._isAnimated()
+ });
+ }
+ _initializeFocusTrap() {
+ return new FocusTrap({
+ trapElement: this._element
+ });
+ }
+ _showElement(relatedTarget) {
+ if (!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", true);
+ this._element.setAttribute("role", "dialog");
+ this._element.scrollTop = 0;
+ const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
+ if (modalBody) {
+ modalBody.scrollTop = 0;
+ }
+ reflow(this._element);
+ this._element.classList.add(CLASS_NAME_SHOW$4);
+ const transitionComplete = () => {
+ if (this._config.focus) {
+ this._focustrap.activate();
+ }
+ this._isTransitioning = false;
+ EventHandler.trigger(this._element, EVENT_SHOWN$4, {
+ relatedTarget
+ });
+ };
+ this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
+ }
+ _addEventListeners() {
+ EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, (event) => {
+ if (event.key !== ESCAPE_KEY$1) {
+ return;
+ }
+ if (this._config.keyboard) {
+ this.hide();
+ return;
+ }
+ this._triggerBackdropTransition();
+ });
+ EventHandler.on(window, EVENT_RESIZE$1, () => {
+ if (this._isShown && !this._isTransitioning) {
+ this._adjustDialog();
+ }
+ });
+ EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event) => {
+ EventHandler.one(this._element, EVENT_CLICK_DISMISS, (event2) => {
+ if (this._element !== event.target || this._element !== event2.target) {
+ return;
+ }
+ if (this._config.backdrop === "static") {
+ this._triggerBackdropTransition();
+ return;
+ }
+ if (this._config.backdrop) {
+ this.hide();
+ }
+ });
+ });
+ }
+ _hideModal() {
+ this._element.style.display = "none";
+ this._element.setAttribute("aria-hidden", true);
+ this._element.removeAttribute("aria-modal");
+ this._element.removeAttribute("role");
+ this._isTransitioning = false;
+ this._backdrop.hide(() => {
+ document.body.classList.remove(CLASS_NAME_OPEN);
+ this._resetAdjustments();
+ this._scrollBar.reset();
+ EventHandler.trigger(this._element, EVENT_HIDDEN$4);
+ });
+ }
+ _isAnimated() {
+ return this._element.classList.contains(CLASS_NAME_FADE$3);
+ }
+ _triggerBackdropTransition() {
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
+ if (hideEvent.defaultPrevented) {
+ return;
+ }
+ const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
+ const initialOverflowY = this._element.style.overflowY;
+ if (initialOverflowY === "hidden" || this._element.classList.contains(CLASS_NAME_STATIC)) {
+ return;
+ }
+ if (!isModalOverflowing) {
+ this._element.style.overflowY = "hidden";
+ }
+ this._element.classList.add(CLASS_NAME_STATIC);
+ this._queueCallback(() => {
+ this._element.classList.remove(CLASS_NAME_STATIC);
+ this._queueCallback(() => {
+ this._element.style.overflowY = initialOverflowY;
+ }, this._dialog);
+ }, this._dialog);
+ this._element.focus();
+ }
+ /**
+ * The following methods are used to handle overflowing modals
+ */
+ _adjustDialog() {
+ const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
+ const scrollbarWidth = this._scrollBar.getWidth();
+ const isBodyOverflowing = scrollbarWidth > 0;
+ if (isBodyOverflowing && !isModalOverflowing) {
+ const property = isRTL() ? "paddingLeft" : "paddingRight";
+ this._element.style[property] = `${scrollbarWidth}px`;
+ }
+ if (!isBodyOverflowing && isModalOverflowing) {
+ const property = isRTL() ? "paddingRight" : "paddingLeft";
+ this._element.style[property] = `${scrollbarWidth}px`;
+ }
+ }
+ _resetAdjustments() {
+ this._element.style.paddingLeft = "";
+ this._element.style.paddingRight = "";
+ }
+ // Static
+ static jQueryInterface(config, relatedTarget) {
+ return this.each(function() {
+ const data = _Modal.getOrCreateInstance(this, config);
+ if (typeof config !== "string") {
+ return;
+ }
+ if (typeof data[config] === "undefined") {
+ throw new TypeError(`No method named "${config}"`);
+ }
+ data[config](relatedTarget);
+ });
+ }
+ };
+ EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function(event) {
+ const target = SelectorEngine.getElementFromSelector(this);
+ if (["A", "AREA"].includes(this.tagName)) {
+ event.preventDefault();
+ }
+ EventHandler.one(target, EVENT_SHOW$4, (showEvent) => {
+ if (showEvent.defaultPrevented) {
+ return;
+ }
+ EventHandler.one(target, EVENT_HIDDEN$4, () => {
+ if (isVisible(this)) {
+ this.focus();
+ }
+ });
+ });
+ const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
+ if (alreadyOpen) {
+ Modal.getInstance(alreadyOpen).hide();
+ }
+ const data = Modal.getOrCreateInstance(target);
+ data.toggle(this);
+ });
+ enableDismissTrigger(Modal);
+ defineJQueryPlugin(Modal);
+ var NAME$6 = "offcanvas";
+ var DATA_KEY$3 = "bs.offcanvas";
+ var EVENT_KEY$3 = `.${DATA_KEY$3}`;
+ var DATA_API_KEY$1 = ".data-api";
+ var EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;
+ var ESCAPE_KEY = "Escape";
+ var CLASS_NAME_SHOW$3 = "show";
+ var CLASS_NAME_SHOWING$1 = "showing";
+ var CLASS_NAME_HIDING = "hiding";
+ var CLASS_NAME_BACKDROP = "offcanvas-backdrop";
+ var OPEN_SELECTOR = ".offcanvas.show";
+ var EVENT_SHOW$3 = `show${EVENT_KEY$3}`;
+ var EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;
+ var EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;
+ var EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;
+ var EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;
+ var EVENT_RESIZE = `resize${EVENT_KEY$3}`;
+ var EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;
+ var EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;
+ var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
+ var Default$5 = {
+ backdrop: true,
+ keyboard: true,
+ scroll: false
+ };
+ var DefaultType$5 = {
+ backdrop: "(boolean|string)",
+ keyboard: "boolean",
+ scroll: "boolean"
+ };
+ var Offcanvas = class _Offcanvas extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._isShown = false;
+ this._backdrop = this._initializeBackDrop();
+ this._focustrap = this._initializeFocusTrap();
+ this._addEventListeners();
+ }
+ // Getters
+ static get Default() {
+ return Default$5;
+ }
+ static get DefaultType() {
+ return DefaultType$5;
+ }
+ static get NAME() {
+ return NAME$6;
+ }
+ // Public
+ toggle(relatedTarget) {
+ return this._isShown ? this.hide() : this.show(relatedTarget);
+ }
+ show(relatedTarget) {
+ if (this._isShown) {
+ return;
+ }
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
+ relatedTarget
+ });
+ if (showEvent.defaultPrevented) {
+ return;
+ }
+ this._isShown = true;
+ this._backdrop.show();
+ if (!this._config.scroll) {
+ new ScrollBarHelper().hide();
+ }
+ this._element.setAttribute("aria-modal", true);
+ this._element.setAttribute("role", "dialog");
+ this._element.classList.add(CLASS_NAME_SHOWING$1);
+ const completeCallBack = () => {
+ if (!this._config.scroll || this._config.backdrop) {
+ this._focustrap.activate();
+ }
+ this._element.classList.add(CLASS_NAME_SHOW$3);
+ this._element.classList.remove(CLASS_NAME_SHOWING$1);
+ EventHandler.trigger(this._element, EVENT_SHOWN$3, {
+ relatedTarget
+ });
+ };
+ this._queueCallback(completeCallBack, this._element, true);
+ }
+ hide() {
+ if (!this._isShown) {
+ return;
+ }
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
+ if (hideEvent.defaultPrevented) {
+ return;
+ }
+ this._focustrap.deactivate();
+ this._element.blur();
+ this._isShown = false;
+ this._element.classList.add(CLASS_NAME_HIDING);
+ this._backdrop.hide();
+ const completeCallback = () => {
+ this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
+ this._element.removeAttribute("aria-modal");
+ this._element.removeAttribute("role");
+ if (!this._config.scroll) {
+ new ScrollBarHelper().reset();
+ }
+ EventHandler.trigger(this._element, EVENT_HIDDEN$3);
+ };
+ this._queueCallback(completeCallback, this._element, true);
+ }
+ dispose() {
+ this._backdrop.dispose();
+ this._focustrap.deactivate();
+ super.dispose();
+ }
+ // Private
+ _initializeBackDrop() {
+ const clickCallback = () => {
+ if (this._config.backdrop === "static") {
+ EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
+ return;
+ }
+ this.hide();
+ };
+ const isVisible2 = Boolean(this._config.backdrop);
+ return new Backdrop({
+ className: CLASS_NAME_BACKDROP,
+ isVisible: isVisible2,
+ isAnimated: true,
+ rootElement: this._element.parentNode,
+ clickCallback: isVisible2 ? clickCallback : null
+ });
+ }
+ _initializeFocusTrap() {
+ return new FocusTrap({
+ trapElement: this._element
+ });
+ }
+ _addEventListeners() {
+ EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => {
+ if (event.key !== ESCAPE_KEY) {
+ return;
+ }
+ if (this._config.keyboard) {
+ this.hide();
+ return;
+ }
+ EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
+ });
+ }
+ // Static
+ static jQueryInterface(config) {
+ return this.each(function() {
+ const data = _Offcanvas.getOrCreateInstance(this, config);
+ if (typeof config !== "string") {
+ return;
+ }
+ if (data[config] === void 0 || config.startsWith("_") || config === "constructor") {
+ throw new TypeError(`No method named "${config}"`);
+ }
+ data[config](this);
+ });
+ }
+ };
+ EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function(event) {
+ const target = SelectorEngine.getElementFromSelector(this);
+ if (["A", "AREA"].includes(this.tagName)) {
+ event.preventDefault();
+ }
+ if (isDisabled(this)) {
+ return;
+ }
+ EventHandler.one(target, EVENT_HIDDEN$3, () => {
+ if (isVisible(this)) {
+ this.focus();
+ }
+ });
+ const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
+ if (alreadyOpen && alreadyOpen !== target) {
+ Offcanvas.getInstance(alreadyOpen).hide();
+ }
+ const data = Offcanvas.getOrCreateInstance(target);
+ data.toggle(this);
+ });
+ EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
+ for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
+ Offcanvas.getOrCreateInstance(selector).show();
+ }
+ });
+ EventHandler.on(window, EVENT_RESIZE, () => {
+ for (const element of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]")) {
+ if (getComputedStyle(element).position !== "fixed") {
+ Offcanvas.getOrCreateInstance(element).hide();
+ }
+ }
+ });
+ enableDismissTrigger(Offcanvas);
+ defineJQueryPlugin(Offcanvas);
+ var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
+ var DefaultAllowlist = {
+ // Global attributes allowed on any supplied element below.
+ "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN],
+ 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: []
+ };
+ var uriAttributes = /* @__PURE__ */ new Set(["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"]);
+ var SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
+ var allowedAttribute = (attribute, allowedAttributeList) => {
+ const attributeName = attribute.nodeName.toLowerCase();
+ if (allowedAttributeList.includes(attributeName)) {
+ if (uriAttributes.has(attributeName)) {
+ return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
+ }
+ return true;
+ }
+ return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName));
+ };
+ function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
+ if (!unsafeHtml.length) {
+ return unsafeHtml;
+ }
+ if (sanitizeFunction && typeof sanitizeFunction === "function") {
+ return sanitizeFunction(unsafeHtml);
+ }
+ const domParser = new window.DOMParser();
+ const createdDocument = domParser.parseFromString(unsafeHtml, "text/html");
+ const elements = [].concat(...createdDocument.body.querySelectorAll("*"));
+ for (const element of elements) {
+ const elementName = element.nodeName.toLowerCase();
+ if (!Object.keys(allowList).includes(elementName)) {
+ element.remove();
+ continue;
+ }
+ const attributeList = [].concat(...element.attributes);
+ const allowedAttributes = [].concat(allowList["*"] || [], allowList[elementName] || []);
+ for (const attribute of attributeList) {
+ if (!allowedAttribute(attribute, allowedAttributes)) {
+ element.removeAttribute(attribute.nodeName);
+ }
+ }
+ }
+ return createdDocument.body.innerHTML;
+ }
+ var NAME$5 = "TemplateFactory";
+ var Default$4 = {
+ allowList: DefaultAllowlist,
+ content: {},
+ // { selector : text , selector2 : text2 , }
+ extraClass: "",
+ html: false,
+ sanitize: true,
+ sanitizeFn: null,
+ template: "<div></div>"
+ };
+ var DefaultType$4 = {
+ allowList: "object",
+ content: "object",
+ extraClass: "(string|function)",
+ html: "boolean",
+ sanitize: "boolean",
+ sanitizeFn: "(null|function)",
+ template: "string"
+ };
+ var DefaultContentType = {
+ entry: "(string|element|function|null)",
+ selector: "(string|element)"
+ };
+ var TemplateFactory = class extends Config {
+ constructor(config) {
+ super();
+ this._config = this._getConfig(config);
+ }
+ // Getters
+ static get Default() {
+ return Default$4;
+ }
+ static get DefaultType() {
+ return DefaultType$4;
+ }
+ static get NAME() {
+ return NAME$5;
+ }
+ // Public
+ getContent() {
+ return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean);
+ }
+ hasContent() {
+ return this.getContent().length > 0;
+ }
+ changeContent(content) {
+ this._checkContent(content);
+ this._config.content = __spreadValues(__spreadValues({}, this._config.content), content);
+ return this;
+ }
+ toHtml() {
+ const templateWrapper = document.createElement("div");
+ templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
+ for (const [selector, text] of Object.entries(this._config.content)) {
+ this._setContent(templateWrapper, text, selector);
+ }
+ const template = templateWrapper.children[0];
+ const extraClass = this._resolvePossibleFunction(this._config.extraClass);
+ if (extraClass) {
+ template.classList.add(...extraClass.split(" "));
+ }
+ return template;
+ }
+ // Private
+ _typeCheckConfig(config) {
+ super._typeCheckConfig(config);
+ this._checkContent(config.content);
+ }
+ _checkContent(arg) {
+ for (const [selector, content] of Object.entries(arg)) {
+ super._typeCheckConfig({
+ selector,
+ entry: content
+ }, DefaultContentType);
+ }
+ }
+ _setContent(template, content, selector) {
+ const templateElement = SelectorEngine.findOne(selector, template);
+ if (!templateElement) {
+ return;
+ }
+ content = this._resolvePossibleFunction(content);
+ if (!content) {
+ templateElement.remove();
+ return;
+ }
+ if (isElement2(content)) {
+ this._putElementInTemplate(getElement(content), templateElement);
+ return;
+ }
+ if (this._config.html) {
+ templateElement.innerHTML = this._maybeSanitize(content);
+ return;
+ }
+ templateElement.textContent = content;
+ }
+ _maybeSanitize(arg) {
+ return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
+ }
+ _resolvePossibleFunction(arg) {
+ return execute(arg, [this]);
+ }
+ _putElementInTemplate(element, templateElement) {
+ if (this._config.html) {
+ templateElement.innerHTML = "";
+ templateElement.append(element);
+ return;
+ }
+ templateElement.textContent = element.textContent;
+ }
+ };
+ var NAME$4 = "tooltip";
+ var DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set(["sanitize", "allowList", "sanitizeFn"]);
+ var CLASS_NAME_FADE$2 = "fade";
+ var CLASS_NAME_MODAL = "modal";
+ var CLASS_NAME_SHOW$2 = "show";
+ var SELECTOR_TOOLTIP_INNER = ".tooltip-inner";
+ var SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
+ var EVENT_MODAL_HIDE = "hide.bs.modal";
+ var TRIGGER_HOVER = "hover";
+ var TRIGGER_FOCUS = "focus";
+ var TRIGGER_CLICK = "click";
+ var TRIGGER_MANUAL = "manual";
+ var EVENT_HIDE$2 = "hide";
+ var EVENT_HIDDEN$2 = "hidden";
+ var EVENT_SHOW$2 = "show";
+ var EVENT_SHOWN$2 = "shown";
+ var EVENT_INSERTED = "inserted";
+ var EVENT_CLICK$1 = "click";
+ var EVENT_FOCUSIN$1 = "focusin";
+ var EVENT_FOCUSOUT$1 = "focusout";
+ var EVENT_MOUSEENTER = "mouseenter";
+ var EVENT_MOUSELEAVE = "mouseleave";
+ var AttachmentMap = {
+ AUTO: "auto",
+ TOP: "top",
+ RIGHT: isRTL() ? "left" : "right",
+ BOTTOM: "bottom",
+ LEFT: isRTL() ? "right" : "left"
+ };
+ var Default$3 = {
+ allowList: DefaultAllowlist,
+ animation: true,
+ boundary: "clippingParents",
+ container: false,
+ customClass: "",
+ delay: 0,
+ fallbackPlacements: ["top", "right", "bottom", "left"],
+ html: false,
+ offset: [0, 6],
+ placement: "top",
+ popperConfig: null,
+ sanitize: true,
+ sanitizeFn: null,
+ selector: false,
+ template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
+ title: "",
+ trigger: "hover focus"
+ };
+ var DefaultType$3 = {
+ 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"
+ };
+ var Tooltip = class _Tooltip extends BaseComponent {
+ constructor(element, config) {
+ if (typeof lib_exports === "undefined") {
+ throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");
+ }
+ super(element, config);
+ this._isEnabled = true;
+ this._timeout = 0;
+ this._isHovered = null;
+ this._activeTrigger = {};
+ this._popper = null;
+ this._templateFactory = null;
+ this._newContent = null;
+ this.tip = null;
+ this._setListeners();
+ if (!this._config.selector) {
+ this._fixTitle();
+ }
+ }
+ // Getters
+ static get Default() {
+ return Default$3;
+ }
+ static get DefaultType() {
+ return DefaultType$3;
+ }
+ static get NAME() {
+ return NAME$4;
+ }
+ // Public
+ enable() {
+ this._isEnabled = true;
+ }
+ disable() {
+ this._isEnabled = false;
+ }
+ toggleEnabled() {
+ this._isEnabled = !this._isEnabled;
+ }
+ toggle() {
+ if (!this._isEnabled) {
+ return;
+ }
+ this._activeTrigger.click = !this._activeTrigger.click;
+ if (this._isShown()) {
+ this._leave();
+ return;
+ }
+ this._enter();
+ }
+ dispose() {
+ clearTimeout(this._timeout);
+ EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
+ if (this._element.getAttribute("data-bs-original-title")) {
+ this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title"));
+ }
+ this._disposePopper();
+ super.dispose();
+ }
+ show() {
+ if (this._element.style.display === "none") {
+ throw new Error("Please use show on visible elements");
+ }
+ if (!(this._isWithContent() && this._isEnabled)) {
+ return;
+ }
+ const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
+ const shadowRoot = findShadowRoot(this._element);
+ const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);
+ if (showEvent.defaultPrevented || !isInTheDom) {
+ return;
+ }
+ this._disposePopper();
+ const tip = this._getTipElement();
+ this._element.setAttribute("aria-describedby", tip.getAttribute("id"));
+ const {
+ container
+ } = this._config;
+ if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
+ container.append(tip);
+ EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
+ }
+ this._popper = this._createPopper(tip);
+ tip.classList.add(CLASS_NAME_SHOW$2);
+ if ("ontouchstart" in document.documentElement) {
+ for (const element of [].concat(...document.body.children)) {
+ EventHandler.on(element, "mouseover", noop);
+ }
+ }
+ const complete = () => {
+ EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));
+ if (this._isHovered === false) {
+ this._leave();
+ }
+ this._isHovered = false;
+ };
+ this._queueCallback(complete, this.tip, this._isAnimated());
+ }
+ hide() {
+ if (!this._isShown()) {
+ return;
+ }
+ const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));
+ if (hideEvent.defaultPrevented) {
+ return;
+ }
+ const tip = this._getTipElement();
+ tip.classList.remove(CLASS_NAME_SHOW$2);
+ if ("ontouchstart" in document.documentElement) {
+ for (const element of [].concat(...document.body.children)) {
+ EventHandler.off(element, "mouseover", noop);
+ }
+ }
+ this._activeTrigger[TRIGGER_CLICK] = false;
+ this._activeTrigger[TRIGGER_FOCUS] = false;
+ this._activeTrigger[TRIGGER_HOVER] = false;
+ this._isHovered = null;
+ const complete = () => {
+ if (this._isWithActiveTrigger()) {
+ return;
+ }
+ if (!this._isHovered) {
+ this._disposePopper();
+ }
+ this._element.removeAttribute("aria-describedby");
+ EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));
+ };
+ this._queueCallback(complete, this.tip, this._isAnimated());
+ }
+ update() {
+ if (this._popper) {
+ this._popper.update();
+ }
+ }
+ // Protected
+ _isWithContent() {
+ return Boolean(this._getTitle());
+ }
+ _getTipElement() {
+ if (!this.tip) {
+ this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
+ }
+ return this.tip;
+ }
+ _createTipElement(content) {
+ const tip = this._getTemplateFactory(content).toHtml();
+ if (!tip) {
+ return null;
+ }
+ tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
+ tip.classList.add(`bs-${this.constructor.NAME}-auto`);
+ const tipId = getUID(this.constructor.NAME).toString();
+ tip.setAttribute("id", tipId);
+ if (this._isAnimated()) {
+ tip.classList.add(CLASS_NAME_FADE$2);
+ }
+ return tip;
+ }
+ setContent(content) {
+ this._newContent = content;
+ if (this._isShown()) {
+ this._disposePopper();
+ this.show();
+ }
+ }
+ _getTemplateFactory(content) {
+ if (this._templateFactory) {
+ this._templateFactory.changeContent(content);
+ } else {
+ this._templateFactory = new TemplateFactory(__spreadProps(__spreadValues({}, this._config), {
+ // the `content` var has to be after `this._config`
+ // to override config.content in case of popover
+ content,
+ extraClass: this._resolvePossibleFunction(this._config.customClass)
+ }));
+ }
+ return this._templateFactory;
+ }
+ _getContentForTemplate() {
+ return {
+ [SELECTOR_TOOLTIP_INNER]: this._getTitle()
+ };
+ }
+ _getTitle() {
+ return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title");
+ }
+ // Private
+ _initializeOnDelegatedTarget(event) {
+ return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
+ }
+ _isAnimated() {
+ return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);
+ }
+ _isShown() {
+ return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);
+ }
+ _createPopper(tip) {
+ const placement = execute(this._config.placement, [this, tip, this._element]);
+ const attachment = AttachmentMap[placement.toUpperCase()];
+ return createPopper3(this._element, tip, this._getPopperConfig(attachment));
+ }
+ _getOffset() {
+ const {
+ offset: offset2
+ } = this._config;
+ if (typeof offset2 === "string") {
+ return offset2.split(",").map((value) => Number.parseInt(value, 10));
+ }
+ if (typeof offset2 === "function") {
+ return (popperData) => offset2(popperData, this._element);
+ }
+ return offset2;
+ }
+ _resolvePossibleFunction(arg) {
+ return execute(arg, [this._element]);
+ }
+ _getPopperConfig(attachment) {
+ const defaultBsPopperConfig = {
+ placement: attachment,
+ 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: true,
+ phase: "beforeMain",
+ fn: (data) => {
+ this._getTipElement().setAttribute("data-popper-placement", data.state.placement);
+ }
+ }]
+ };
+ return __spreadValues(__spreadValues({}, defaultBsPopperConfig), execute(this._config.popperConfig, [defaultBsPopperConfig]));
+ }
+ _setListeners() {
+ const triggers = this._config.trigger.split(" ");
+ for (const trigger of triggers) {
+ if (trigger === "click") {
+ EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, (event) => {
+ const context = this._initializeOnDelegatedTarget(event);
+ context.toggle();
+ });
+ } else if (trigger !== TRIGGER_MANUAL) {
+ const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
+ const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
+ EventHandler.on(this._element, eventIn, this._config.selector, (event) => {
+ const context = this._initializeOnDelegatedTarget(event);
+ context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
+ context._enter();
+ });
+ EventHandler.on(this._element, eventOut, this._config.selector, (event) => {
+ const context = this._initializeOnDelegatedTarget(event);
+ context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
+ context._leave();
+ });
+ }
+ }
+ this._hideModalHandler = () => {
+ if (this._element) {
+ this.hide();
+ }
+ };
+ EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
+ }
+ _fixTitle() {
+ const title = this._element.getAttribute("title");
+ if (!title) {
+ return;
+ }
+ if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) {
+ this._element.setAttribute("aria-label", title);
+ }
+ this._element.setAttribute("data-bs-original-title", title);
+ this._element.removeAttribute("title");
+ }
+ _enter() {
+ if (this._isShown() || this._isHovered) {
+ this._isHovered = true;
+ return;
+ }
+ this._isHovered = true;
+ this._setTimeout(() => {
+ if (this._isHovered) {
+ this.show();
+ }
+ }, this._config.delay.show);
+ }
+ _leave() {
+ if (this._isWithActiveTrigger()) {
+ return;
+ }
+ this._isHovered = false;
+ this._setTimeout(() => {
+ if (!this._isHovered) {
+ this.hide();
+ }
+ }, this._config.delay.hide);
+ }
+ _setTimeout(handler, timeout) {
+ clearTimeout(this._timeout);
+ this._timeout = setTimeout(handler, timeout);
+ }
+ _isWithActiveTrigger() {
+ return Object.values(this._activeTrigger).includes(true);
+ }
+ _getConfig(config) {
+ const dataAttributes = Manipulator.getDataAttributes(this._element);
+ for (const dataAttribute of Object.keys(dataAttributes)) {
+ if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
+ delete dataAttributes[dataAttribute];
+ }
+ }
+ config = __spreadValues(__spreadValues({}, dataAttributes), typeof config === "object" && config ? config : {});
+ config = this._mergeConfigObj(config);
+ config = this._configAfterMerge(config);
+ this._typeCheckConfig(config);
+ return config;
+ }
+ _configAfterMerge(config) {
+ config.container = config.container === false ? document.body : getElement(config.container);
+ if (typeof config.delay === "number") {
+ config.delay = {
+ show: config.delay,
+ hide: config.delay
+ };
+ }
+ if (typeof config.title === "number") {
+ config.title = config.title.toString();
+ }
+ if (typeof config.content === "number") {
+ config.content = config.content.toString();
+ }
+ return config;
+ }
+ _getDelegateConfig() {
+ const config = {};
+ for (const [key, value] of Object.entries(this._config)) {
+ if (this.constructor.Default[key] !== value) {
+ config[key] = value;
+ }
+ }
+ config.selector = false;
+ config.trigger = "manual";
+ return config;
+ }
+ _disposePopper() {
+ if (this._popper) {
+ this._popper.destroy();
+ this._popper = null;
+ }
+ if (this.tip) {
+ this.tip.remove();
+ this.tip = null;
+ }
+ }
+ // Static
+ static jQueryInterface(config) {
+ return this.each(function() {
+ const data = _Tooltip.getOrCreateInstance(this, config);
+ if (typeof config !== "string") {
+ return;
+ }
+ if (typeof data[config] === "undefined") {
+ throw new TypeError(`No method named "${config}"`);
+ }
+ data[config]();
+ });
+ }
+ };
+ defineJQueryPlugin(Tooltip);
+ var NAME$3 = "popover";
+ var SELECTOR_TITLE = ".popover-header";
+ var SELECTOR_CONTENT = ".popover-body";
+ var Default$2 = __spreadProps(__spreadValues({}, Tooltip.Default), {
+ content: "",
+ offset: [0, 8],
+ placement: "right",
+ template: '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',
+ trigger: "click"
+ });
+ var DefaultType$2 = __spreadProps(__spreadValues({}, Tooltip.DefaultType), {
+ content: "(null|string|element|function)"
+ });
+ var Popover = class _Popover extends Tooltip {
+ // Getters
+ static get Default() {
+ return Default$2;
+ }
+ static get DefaultType() {
+ return DefaultType$2;
+ }
+ static get NAME() {
+ return NAME$3;
+ }
+ // Overrides
+ _isWithContent() {
+ return this._getTitle() || this._getContent();
+ }
+ // Private
+ _getContentForTemplate() {
+ return {
+ [SELECTOR_TITLE]: this._getTitle(),
+ [SELECTOR_CONTENT]: this._getContent()
+ };
+ }
+ _getContent() {
+ return this._resolvePossibleFunction(this._config.content);
+ }
+ // Static
+ static jQueryInterface(config) {
+ return this.each(function() {
+ const data = _Popover.getOrCreateInstance(this, config);
+ if (typeof config !== "string") {
+ return;
+ }
+ if (typeof data[config] === "undefined") {
+ throw new TypeError(`No method named "${config}"`);
+ }
+ data[config]();
+ });
+ }
+ };
+ defineJQueryPlugin(Popover);
+ var NAME$2 = "scrollspy";
+ var DATA_KEY$2 = "bs.scrollspy";
+ var EVENT_KEY$2 = `.${DATA_KEY$2}`;
+ var DATA_API_KEY = ".data-api";
+ var EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
+ var EVENT_CLICK = `click${EVENT_KEY$2}`;
+ var EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;
+ var CLASS_NAME_DROPDOWN_ITEM = "dropdown-item";
+ var CLASS_NAME_ACTIVE$1 = "active";
+ var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
+ var SELECTOR_TARGET_LINKS = "[href]";
+ var SELECTOR_NAV_LIST_GROUP = ".nav, .list-group";
+ var SELECTOR_NAV_LINKS = ".nav-link";
+ var SELECTOR_NAV_ITEMS = ".nav-item";
+ var SELECTOR_LIST_ITEMS = ".list-group-item";
+ var SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
+ var SELECTOR_DROPDOWN = ".dropdown";
+ var SELECTOR_DROPDOWN_TOGGLE$1 = ".dropdown-toggle";
+ var Default$1 = {
+ offset: null,
+ // TODO: v6 @deprecated, keep it for backwards compatibility reasons
+ rootMargin: "0px 0px -25%",
+ smoothScroll: false,
+ target: null,
+ threshold: [0.1, 0.5, 1]
+ };
+ var DefaultType$1 = {
+ offset: "(number|null)",
+ // TODO v6 @deprecated, keep it for backwards compatibility reasons
+ rootMargin: "string",
+ smoothScroll: "boolean",
+ target: "element",
+ threshold: "array"
+ };
+ var ScrollSpy = class _ScrollSpy extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._targetLinks = /* @__PURE__ */ new Map();
+ this._observableSections = /* @__PURE__ */ new Map();
+ this._rootElement = getComputedStyle(this._element).overflowY === "visible" ? null : this._element;
+ this._activeTarget = null;
+ this._observer = null;
+ this._previousScrollData = {
+ visibleEntryTop: 0,
+ parentScrollTop: 0
+ };
+ this.refresh();
+ }
+ // Getters
+ static get Default() {
+ return Default$1;
+ }
+ static get DefaultType() {
+ return DefaultType$1;
+ }
+ static get NAME() {
+ return NAME$2;
+ }
+ // Public
+ refresh() {
+ this._initializeTargetsAndObservables();
+ this._maybeEnableSmoothScroll();
+ if (this._observer) {
+ this._observer.disconnect();
+ } else {
+ this._observer = this._getNewObserver();
+ }
+ for (const section of this._observableSections.values()) {
+ this._observer.observe(section);
+ }
+ }
+ dispose() {
+ this._observer.disconnect();
+ super.dispose();
+ }
+ // Private
+ _configAfterMerge(config) {
+ config.target = getElement(config.target) || document.body;
+ config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
+ if (typeof config.threshold === "string") {
+ config.threshold = config.threshold.split(",").map((value) => Number.parseFloat(value));
+ }
+ return config;
+ }
+ _maybeEnableSmoothScroll() {
+ if (!this._config.smoothScroll) {
+ return;
+ }
+ EventHandler.off(this._config.target, EVENT_CLICK);
+ EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, (event) => {
+ const observableSection = this._observableSections.get(event.target.hash);
+ if (observableSection) {
+ event.preventDefault();
+ const root = this._rootElement || window;
+ const height = observableSection.offsetTop - this._element.offsetTop;
+ if (root.scrollTo) {
+ root.scrollTo({
+ top: height,
+ behavior: "smooth"
+ });
+ return;
+ }
+ root.scrollTop = height;
+ }
+ });
+ }
+ _getNewObserver() {
+ const options = {
+ root: this._rootElement,
+ threshold: this._config.threshold,
+ rootMargin: this._config.rootMargin
+ };
+ return new IntersectionObserver((entries) => this._observerCallback(entries), options);
+ }
+ // The logic of selection
+ _observerCallback(entries) {
+ const targetElement = (entry) => this._targetLinks.get(`#${entry.target.id}`);
+ const activate = (entry) => {
+ this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
+ this._process(targetElement(entry));
+ };
+ const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
+ const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
+ this._previousScrollData.parentScrollTop = parentScrollTop;
+ for (const entry of entries) {
+ if (!entry.isIntersecting) {
+ this._activeTarget = null;
+ this._clearActiveClass(targetElement(entry));
+ continue;
+ }
+ const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;
+ if (userScrollsDown && entryIsLowerThanPrevious) {
+ activate(entry);
+ if (!parentScrollTop) {
+ return;
+ }
+ continue;
+ }
+ if (!userScrollsDown && !entryIsLowerThanPrevious) {
+ activate(entry);
+ }
+ }
+ }
+ _initializeTargetsAndObservables() {
+ this._targetLinks = /* @__PURE__ */ new Map();
+ this._observableSections = /* @__PURE__ */ new Map();
+ const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
+ for (const anchor of targetLinks) {
+ if (!anchor.hash || isDisabled(anchor)) {
+ continue;
+ }
+ const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);
+ if (isVisible(observableSection)) {
+ this._targetLinks.set(decodeURI(anchor.hash), anchor);
+ this._observableSections.set(anchor.hash, observableSection);
+ }
+ }
+ }
+ _process(target) {
+ if (this._activeTarget === target) {
+ return;
+ }
+ this._clearActiveClass(this._config.target);
+ this._activeTarget = target;
+ target.classList.add(CLASS_NAME_ACTIVE$1);
+ this._activateParents(target);
+ EventHandler.trigger(this._element, EVENT_ACTIVATE, {
+ relatedTarget: target
+ });
+ }
+ _activateParents(target) {
+ if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
+ SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
+ return;
+ }
+ for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
+ for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {
+ item.classList.add(CLASS_NAME_ACTIVE$1);
+ }
+ }
+ }
+ _clearActiveClass(parent) {
+ parent.classList.remove(CLASS_NAME_ACTIVE$1);
+ const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);
+ for (const node of activeNodes) {
+ node.classList.remove(CLASS_NAME_ACTIVE$1);
+ }
+ }
+ // Static
+ static jQueryInterface(config) {
+ return this.each(function() {
+ const data = _ScrollSpy.getOrCreateInstance(this, config);
+ if (typeof config !== "string") {
+ return;
+ }
+ if (data[config] === void 0 || config.startsWith("_") || config === "constructor") {
+ throw new TypeError(`No method named "${config}"`);
+ }
+ data[config]();
+ });
+ }
+ };
+ EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
+ for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {
+ ScrollSpy.getOrCreateInstance(spy);
+ }
+ });
+ defineJQueryPlugin(ScrollSpy);
+ var NAME$1 = "tab";
+ var DATA_KEY$1 = "bs.tab";
+ var EVENT_KEY$1 = `.${DATA_KEY$1}`;
+ var EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
+ var EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
+ var EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
+ var EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
+ var EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;
+ var EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;
+ var EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;
+ var ARROW_LEFT_KEY = "ArrowLeft";
+ var ARROW_RIGHT_KEY = "ArrowRight";
+ var ARROW_UP_KEY = "ArrowUp";
+ var ARROW_DOWN_KEY = "ArrowDown";
+ var HOME_KEY = "Home";
+ var END_KEY = "End";
+ var CLASS_NAME_ACTIVE = "active";
+ var CLASS_NAME_FADE$1 = "fade";
+ var CLASS_NAME_SHOW$1 = "show";
+ var CLASS_DROPDOWN = "dropdown";
+ var SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle";
+ var SELECTOR_DROPDOWN_MENU = ".dropdown-menu";
+ var NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
+ var SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
+ var SELECTOR_OUTER = ".nav-item, .list-group-item";
+ var SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
+ var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
+ var SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
+ var SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
+ var Tab = class _Tab extends BaseComponent {
+ constructor(element) {
+ super(element);
+ this._parent = this._element.closest(SELECTOR_TAB_PANEL);
+ if (!this._parent) {
+ return;
+ }
+ this._setInitialAttributes(this._parent, this._getChildren());
+ EventHandler.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event));
+ }
+ // Getters
+ static get NAME() {
+ return NAME$1;
+ }
+ // Public
+ show() {
+ const innerElem = this._element;
+ if (this._elemIsActive(innerElem)) {
+ return;
+ }
+ const active = this._getActiveElem();
+ const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {
+ relatedTarget: innerElem
+ }) : null;
+ const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {
+ relatedTarget: active
+ });
+ if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
+ return;
+ }
+ this._deactivate(active, innerElem);
+ this._activate(innerElem, active);
+ }
+ // Private
+ _activate(element, relatedElem) {
+ if (!element) {
+ return;
+ }
+ element.classList.add(CLASS_NAME_ACTIVE);
+ this._activate(SelectorEngine.getElementFromSelector(element));
+ const complete = () => {
+ if (element.getAttribute("role") !== "tab") {
+ element.classList.add(CLASS_NAME_SHOW$1);
+ return;
+ }
+ element.removeAttribute("tabindex");
+ element.setAttribute("aria-selected", true);
+ this._toggleDropDown(element, true);
+ EventHandler.trigger(element, EVENT_SHOWN$1, {
+ relatedTarget: relatedElem
+ });
+ };
+ this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
+ }
+ _deactivate(element, relatedElem) {
+ if (!element) {
+ return;
+ }
+ element.classList.remove(CLASS_NAME_ACTIVE);
+ element.blur();
+ this._deactivate(SelectorEngine.getElementFromSelector(element));
+ const complete = () => {
+ if (element.getAttribute("role") !== "tab") {
+ element.classList.remove(CLASS_NAME_SHOW$1);
+ return;
+ }
+ element.setAttribute("aria-selected", false);
+ element.setAttribute("tabindex", "-1");
+ this._toggleDropDown(element, false);
+ EventHandler.trigger(element, EVENT_HIDDEN$1, {
+ relatedTarget: relatedElem
+ });
+ };
+ this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
+ }
+ _keydown(event) {
+ if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {
+ return;
+ }
+ event.stopPropagation();
+ event.preventDefault();
+ const children = this._getChildren().filter((element) => !isDisabled(element));
+ let nextActiveElement;
+ if ([HOME_KEY, END_KEY].includes(event.key)) {
+ nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];
+ } else {
+ const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
+ nextActiveElement = getNextActiveElement(children, event.target, isNext, true);
+ }
+ if (nextActiveElement) {
+ nextActiveElement.focus({
+ preventScroll: true
+ });
+ _Tab.getOrCreateInstance(nextActiveElement).show();
+ }
+ }
+ _getChildren() {
+ return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
+ }
+ _getActiveElem() {
+ return this._getChildren().find((child) => this._elemIsActive(child)) || null;
+ }
+ _setInitialAttributes(parent, children) {
+ this._setAttributeIfNotExists(parent, "role", "tablist");
+ for (const child of children) {
+ this._setInitialAttributesOnChild(child);
+ }
+ }
+ _setInitialAttributesOnChild(child) {
+ child = this._getInnerElement(child);
+ const isActive = this._elemIsActive(child);
+ const outerElem = this._getOuterElement(child);
+ child.setAttribute("aria-selected", isActive);
+ if (outerElem !== child) {
+ this._setAttributeIfNotExists(outerElem, "role", "presentation");
+ }
+ if (!isActive) {
+ child.setAttribute("tabindex", "-1");
+ }
+ this._setAttributeIfNotExists(child, "role", "tab");
+ this._setInitialAttributesOnTargetPanel(child);
+ }
+ _setInitialAttributesOnTargetPanel(child) {
+ const target = SelectorEngine.getElementFromSelector(child);
+ if (!target) {
+ return;
+ }
+ this._setAttributeIfNotExists(target, "role", "tabpanel");
+ if (child.id) {
+ this._setAttributeIfNotExists(target, "aria-labelledby", `${child.id}`);
+ }
+ }
+ _toggleDropDown(element, open) {
+ const outerElem = this._getOuterElement(element);
+ if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
+ return;
+ }
+ const toggle = (selector, className) => {
+ const element2 = SelectorEngine.findOne(selector, outerElem);
+ if (element2) {
+ element2.classList.toggle(className, open);
+ }
+ };
+ toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
+ toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
+ outerElem.setAttribute("aria-expanded", open);
+ }
+ _setAttributeIfNotExists(element, attribute, value) {
+ if (!element.hasAttribute(attribute)) {
+ element.setAttribute(attribute, value);
+ }
+ }
+ _elemIsActive(elem) {
+ return elem.classList.contains(CLASS_NAME_ACTIVE);
+ }
+ // Try to get the inner element (usually the .nav-link)
+ _getInnerElement(elem) {
+ return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
+ }
+ // Try to get the outer element (usually the .nav-item)
+ _getOuterElement(elem) {
+ return elem.closest(SELECTOR_OUTER) || elem;
+ }
+ // Static
+ static jQueryInterface(config) {
+ return this.each(function() {
+ const data = _Tab.getOrCreateInstance(this);
+ if (typeof config !== "string") {
+ return;
+ }
+ if (data[config] === void 0 || config.startsWith("_") || config === "constructor") {
+ throw new TypeError(`No method named "${config}"`);
+ }
+ data[config]();
+ });
+ }
+ };
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
+ if (["A", "AREA"].includes(this.tagName)) {
+ event.preventDefault();
+ }
+ if (isDisabled(this)) {
+ return;
+ }
+ Tab.getOrCreateInstance(this).show();
+ });
+ EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
+ for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
+ Tab.getOrCreateInstance(element);
+ }
+ });
+ defineJQueryPlugin(Tab);
+ var NAME = "toast";
+ var DATA_KEY = "bs.toast";
+ var EVENT_KEY = `.${DATA_KEY}`;
+ var EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
+ var EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
+ var EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
+ var EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
+ var EVENT_HIDE = `hide${EVENT_KEY}`;
+ var EVENT_HIDDEN = `hidden${EVENT_KEY}`;
+ var EVENT_SHOW = `show${EVENT_KEY}`;
+ var EVENT_SHOWN = `shown${EVENT_KEY}`;
+ var CLASS_NAME_FADE = "fade";
+ var CLASS_NAME_HIDE = "hide";
+ var CLASS_NAME_SHOW = "show";
+ var CLASS_NAME_SHOWING = "showing";
+ var DefaultType = {
+ animation: "boolean",
+ autohide: "boolean",
+ delay: "number"
+ };
+ var Default = {
+ animation: true,
+ autohide: true,
+ delay: 5e3
+ };
+ var Toast = class _Toast extends BaseComponent {
+ constructor(element, config) {
+ super(element, config);
+ this._timeout = null;
+ this._hasMouseInteraction = false;
+ this._hasKeyboardInteraction = false;
+ this._setListeners();
+ }
+ // Getters
+ static get Default() {
+ return Default;
+ }
+ static get DefaultType() {
+ return DefaultType;
+ }
+ static get NAME() {
+ return NAME;
+ }
+ // Public
+ show() {
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
+ if (showEvent.defaultPrevented) {
+ return;
+ }
+ this._clearTimeout();
+ if (this._config.animation) {
+ this._element.classList.add(CLASS_NAME_FADE);
+ }
+ const complete = () => {
+ this._element.classList.remove(CLASS_NAME_SHOWING);
+ EventHandler.trigger(this._element, EVENT_SHOWN);
+ this._maybeScheduleHide();
+ };
+ this._element.classList.remove(CLASS_NAME_HIDE);
+ reflow(this._element);
+ this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
+ this._queueCallback(complete, this._element, this._config.animation);
+ }
+ hide() {
+ if (!this.isShown()) {
+ return;
+ }
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
+ if (hideEvent.defaultPrevented) {
+ return;
+ }
+ const complete = () => {
+ this._element.classList.add(CLASS_NAME_HIDE);
+ this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
+ EventHandler.trigger(this._element, EVENT_HIDDEN);
+ };
+ this._element.classList.add(CLASS_NAME_SHOWING);
+ this._queueCallback(complete, this._element, this._config.animation);
+ }
+ dispose() {
+ this._clearTimeout();
+ if (this.isShown()) {
+ this._element.classList.remove(CLASS_NAME_SHOW);
+ }
+ super.dispose();
+ }
+ isShown() {
+ return this._element.classList.contains(CLASS_NAME_SHOW);
+ }
+ // Private
+ _maybeScheduleHide() {
+ if (!this._config.autohide) {
+ return;
+ }
+ if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
+ return;
+ }
+ this._timeout = setTimeout(() => {
+ this.hide();
+ }, this._config.delay);
+ }
+ _onInteraction(event, isInteracting) {
+ switch (event.type) {
+ case "mouseover":
+ case "mouseout": {
+ this._hasMouseInteraction = isInteracting;
+ break;
+ }
+ case "focusin":
+ case "focusout": {
+ this._hasKeyboardInteraction = isInteracting;
+ break;
+ }
+ }
+ if (isInteracting) {
+ this._clearTimeout();
+ return;
+ }
+ const nextElement = event.relatedTarget;
+ if (this._element === nextElement || this._element.contains(nextElement)) {
+ return;
+ }
+ this._maybeScheduleHide();
+ }
+ _setListeners() {
+ EventHandler.on(this._element, EVENT_MOUSEOVER, (event) => this._onInteraction(event, true));
+ EventHandler.on(this._element, EVENT_MOUSEOUT, (event) => this._onInteraction(event, false));
+ EventHandler.on(this._element, EVENT_FOCUSIN, (event) => this._onInteraction(event, true));
+ EventHandler.on(this._element, EVENT_FOCUSOUT, (event) => this._onInteraction(event, false));
+ }
+ _clearTimeout() {
+ clearTimeout(this._timeout);
+ this._timeout = null;
+ }
+ // Static
+ static jQueryInterface(config) {
+ return this.each(function() {
+ const data = _Toast.getOrCreateInstance(this, config);
+ if (typeof config === "string") {
+ if (typeof data[config] === "undefined") {
+ throw new TypeError(`No method named "${config}"`);
+ }
+ data[config](this);
+ }
+ });
+ }
+ };
+ enableDismissTrigger(Toast);
+ defineJQueryPlugin(Toast);
+
+ // js/kmx_anim.js
+ var import_jquery = __toESM(require_jquery());
+
+ // js/kmx_colors.js
+ var kmx_colors = {
+ "kmx-black": "#1e1f1d",
+ "kmx-blue": "#5a60f9",
+ "kmx-blue1": "#6f72f9",
+ "kmx-blue2": "#9c99fd",
+ "kmx-blue3": "#5a60f9",
+ "kmx-blue4": "#6f72f9",
+ "kmx-blue5": "#9c99fd",
+ "index": [
+ "kmx-black",
+ "kmx-blue",
+ "kmx-blue1",
+ "kmx-blue2",
+ "kmx-blue3",
+ "kmx-blue4",
+ "kmx-blue5",
+ "kmx-cyan",
+ "kmx-cyan1",
+ "kmx-green",
+ "kmx-green1",
+ "kmx-orange",
+ "kmx-orange1",
+ "kmx-orange2",
+ "kmx-pink",
+ "kmx-white",
+ "kmx-white1",
+ "kmx-white2",
+ "kmx-yellow",
+ "kmx-yellow1",
+ "kmx-yellow2",
+ "kmx-yellow3"
+ ],
+ "kmx-cyan": "#d4f3f6",
+ "kmx-cyan1": "#d4f3f6",
+ "kmx-green": "#c4ed3a",
+ "kmx-green1": "#c4ed3a",
+ "kmx-orange": "#f8681c",
+ "kmx-orange1": "#fa7734",
+ "kmx-orange2": "#ffa532",
+ "kmx-pink": "#fc9ef9",
+ "kmx-white": "#f5f8f4",
+ "kmx-white1": "#fff9f2",
+ "kmx-white2": "#ffffff",
+ "kmx-yellow": "#ecfe49",
+ "kmx-yellow1": "#fff43e",
+ "kmx-yellow2": "#ecfe49",
+ "kmx-yellow3": "#fff43e"
+ };
+ var kmx_colors_default = kmx_colors;
+
+ // js/kmx_anim.js
+ function getRandomInt(max2) {
+ return Math.floor(Math.random() * max2);
+ }
+ (0, import_jquery.default)(function() {
+ setInterval(function() {
+ const i = getRandomInt(kmx_colors_default.index.length);
+ const name = kmx_colors_default.index[i];
+ const color = kmx_colors_default[name];
+ const x = (getRandomInt(99) - 48) * 2e-3;
+ (0, import_jquery.default)("a").css("text-shadow", "0 0 0");
+ (0, import_jquery.default)("a:hover").css("text-shadow", x + "em 0 0 " + color);
+ }, 200);
+ });
+
+ // js/pixel.js
+ var import_jquery2 = __toESM(require_jquery());
+ (0, import_jquery2.default)(function() {
+ (0, import_jquery2.default)(".pixel").click(function(event) {
+ const el = event.target;
+ if (el.classList.contains("pixel-0")) {
+ el.classList.remove("pixel-0");
+ el.classList.add("pixel-1");
+ } else if (el.classList.contains("pixel-1")) {
+ el.classList.remove("pixel-1");
+ el.classList.add("pixel-0");
+ }
+ });
+ });
+
+ // js/app.js
+ window.$ = import_jquery3.default;
+ window.jQuery = import_jquery3.default;
+})();
+/*! Bundled license information:
+
+jquery/dist/jquery.js:
+ (*!
+ * jQuery JavaScript Library v3.7.1
+ * https://jquery.com/
+ *
+ * Copyright OpenJS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2023-08-28T13:37Z
+ *)
+
+bootstrap/dist/js/bootstrap.esm.js:
+ (*!
+ * 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/httpd/fx/static/_fonts/FontAwesome.otf b/httpd/fx/static/_fonts/FontAwesome.otf
new file mode 100644
index 0000000..401ec0f
Binary files /dev/null and b/httpd/fx/static/_fonts/FontAwesome.otf differ
diff --git a/httpd/fx/static/_fonts/computer_modern.woff b/httpd/fx/static/_fonts/computer_modern.woff
new file mode 100644
index 0000000..5a63300
Binary files /dev/null and b/httpd/fx/static/_fonts/computer_modern.woff differ
diff --git a/httpd/fx/static/_fonts/courier_new.woff b/httpd/fx/static/_fonts/courier_new.woff
new file mode 100644
index 0000000..029fed8
Binary files /dev/null and b/httpd/fx/static/_fonts/courier_new.woff differ
diff --git a/httpd/fx/static/_fonts/courier_new.woff2 b/httpd/fx/static/_fonts/courier_new.woff2
new file mode 100644
index 0000000..99fa28d
Binary files /dev/null and b/httpd/fx/static/_fonts/courier_new.woff2 differ
diff --git a/httpd/fx/static/_fonts/fontawesome-webfont.woff b/httpd/fx/static/_fonts/fontawesome-webfont.woff
new file mode 100644
index 0000000..400014a
Binary files /dev/null and b/httpd/fx/static/_fonts/fontawesome-webfont.woff differ
diff --git a/httpd/fx/static/_fonts/fontawesome-webfont.woff2 b/httpd/fx/static/_fonts/fontawesome-webfont.woff2
new file mode 100644
index 0000000..4d13fc6
Binary files /dev/null and b/httpd/fx/static/_fonts/fontawesome-webfont.woff2 differ
diff --git a/httpd/fx/static/_fonts/free-fa-brands-400.woff2 b/httpd/fx/static/_fonts/free-fa-brands-400.woff2
new file mode 100644
index 0000000..fcd3998
Binary files /dev/null and b/httpd/fx/static/_fonts/free-fa-brands-400.woff2 differ
diff --git a/httpd/fx/static/_fonts/free-fa-solid-900.woff2 b/httpd/fx/static/_fonts/free-fa-solid-900.woff2
new file mode 100644
index 0000000..92c6112
Binary files /dev/null and b/httpd/fx/static/_fonts/free-fa-solid-900.woff2 differ
diff --git a/httpd/fx/static/fx/.keep b/httpd/fx/static/fx/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/httpd/fx/static/fx/.keep
diff --git a/lib/kc3/0.1/httpd.kc3 b/lib/kc3/0.1/httpd.kc3
index 54a2d5a..d3dba6d 100644
--- a/lib/kc3/0.1/httpd.kc3
+++ b/lib/kc3/0.1/httpd.kc3
@@ -20,7 +20,8 @@ defmodule HTTPd do
if File.exists?(dir) && File.is_directory?(dir) do
files = File.list(dir)
List.each(files, fn (file) {
- if (! Str.starts_with?(file, ".")) do
+ if (! Str.starts_with?(file, ".") &&
+ ! Str.ends_with?(file, "~")) do
load(dir + file)
end
})
diff --git a/libkc3/buf.c b/libkc3/buf.c
index c98afc9..fdb3b3f 100644
--- a/libkc3/buf.c
+++ b/libkc3/buf.c
@@ -873,38 +873,9 @@ sw buf_read_u64 (s_buf *buf, u64 *p)
s_str * buf_read_until_1_into_str (s_buf *buf, const char *end,
s_str *dest)
{
- character c;
- sw r;
- s_buf_save save;
- s_buf tmp;
- buf_save_init(buf, &save);
- while (1) {
- if ((r = buf_read_1(buf, end)) < 0) {
- if (false)
- err_puts("buf_read_until_1_into_str: buf_read_1");
- goto restore;
- }
- if (r) {
- buf_init(&tmp, false, buf->size, buf->ptr.pchar);
- tmp.rpos = save.rpos;
- tmp.wpos = buf->rpos - strlen(end);
- if (! buf_read_to_str(&tmp, dest)) {
- err_puts("buf_read_until_1_into_str: buf_read_to_str");
- goto restore;
- }
- buf_save_clean(buf, &save);
- return dest;
- }
- if ((r = buf_read_character_utf8(buf, &c)) <= 0) {
- if (false)
- err_puts("buf_read_until_1_into_str: buf_read_character_utf8");
- goto restore;
- }
- }
- restore:
- buf_save_restore_rpos(buf, &save);
- buf_save_clean(buf, &save);
- return NULL;
+ s_str str;
+ str_init_1(&str, NULL, end);
+ return buf_read_until_str_into_str(buf, &str, dest);
}
s_str * buf_read_until_character_into_str (s_buf *buf, character end, s_str *dest)
@@ -951,7 +922,8 @@ sw buf_read_until_space_into_str (s_buf *buf, s_str *dest)
return r;
}
-s_str * buf_read_until_str_into_str (s_buf *buf, const s_str *end, s_str *dest)
+s_str * buf_read_until_str_into_str (s_buf *buf, const s_str *end,
+ s_str *dest)
{
character c;
sw r;
@@ -959,21 +931,27 @@ s_str * buf_read_until_str_into_str (s_buf *buf, const s_str *end, s_str *dest)
s_buf tmp;
buf_save_init(buf, &save);
while (1) {
- if ((r = buf_read_str(buf, end)) < 0)
+ if ((r = buf_read_str(buf, end)) < 0) {
+ if (false)
+ err_puts("buf_read_until_1_into_str: buf_read_1");
goto restore;
+ }
if (r) {
buf_init(&tmp, false, buf->size, buf->ptr.pchar);
tmp.rpos = save.rpos;
- tmp.wpos = buf->rpos;
+ tmp.wpos = buf->rpos - end->size;
if (! buf_read_to_str(&tmp, dest)) {
- r = -1;
+ err_puts("buf_read_until_1_into_str: buf_read_to_str");
goto restore;
}
buf_save_clean(buf, &save);
return dest;
}
- if ((r = buf_read_character_utf8(buf, &c)) <= 0)
+ if ((r = buf_read_character_utf8(buf, &c)) <= 0) {
+ if (false)
+ err_puts("buf_read_until_1_into_str: buf_read_character_utf8");
goto restore;
+ }
}
restore:
buf_save_restore_rpos(buf, &save);
diff --git a/libkc3/env.c b/libkc3/env.c
index 064be64..938c67f 100644
--- a/libkc3/env.c
+++ b/libkc3/env.c
@@ -2623,6 +2623,8 @@ bool env_load (s_env *env, const s_str *path)
err_write_1("env_load: __DIR__ = ");
err_inspect_tag(file_dir);
err_write_1("\n");
+ }
+ if (false) {
err_write_1("env_load: __FILE__ = ");
err_inspect_tag(file_path);
err_write_1("\n");