diff --git a/.extlib/simplesamlphp/bin/console b/.extlib/simplesamlphp/bin/console
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/bin/convertTranslations.php b/.extlib/simplesamlphp/bin/convertTranslations.php
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/bin/importPdoMetadata.php b/.extlib/simplesamlphp/bin/importPdoMetadata.php
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/bin/initMDSPdo.php b/.extlib/simplesamlphp/bin/initMDSPdo.php
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/bin/ldapattrschemaparser.pl b/.extlib/simplesamlphp/bin/ldapattrschemaparser.pl
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/bin/memcacheSync.php b/.extlib/simplesamlphp/bin/memcacheSync.php
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/bin/pwgen.php b/.extlib/simplesamlphp/bin/pwgen.php
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/bin/translateAttributes.php b/.extlib/simplesamlphp/bin/translateAttributes.php
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/bin/translations b/.extlib/simplesamlphp/bin/translations
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/docs/simplesamlphp-changelog.md b/.extlib/simplesamlphp/docs/simplesamlphp-changelog.md
index 9ccff5379..76df903fd 100644
--- a/.extlib/simplesamlphp/docs/simplesamlphp-changelog.md
+++ b/.extlib/simplesamlphp/docs/simplesamlphp-changelog.md
@@ -5,10 +5,32 @@
This document lists the changes between versions of SimpleSAMLphp.
See the [upgrade notes](https://simplesamlphp.org/docs/stable/simplesamlphp-upgrade-notes.html) for specific information about upgrading.
-## Version 2.3.4
+## Version 2.3.6
Released TBD
+## Version 2.3.5
+
+Released 2024-12-02
+
+* Fix a regression that would cause the translations for modules to revert to English
+
+## Version 2.3.4
+
+Released 2024-12-02
+
+`Security`
+
+* A security bug was patched in the `saml2-library` that allowed for XXE during the parsing
+ of SAML2-messages (CVE-2024-52596)
+
+`Other fixes`
+
+* Attributes translations are now in the "attributes" domain (#2328).
+* Add `index` directive to Nginx example configuration (#2329).
+* Better error message when using legacy endpoints format (#2335).
+* Some minor improvements to the changes in 2.3.3.
+
## Version 2.3.3
Released 2024-11-16
diff --git a/.extlib/simplesamlphp/docs/simplesamlphp-install.md b/.extlib/simplesamlphp/docs/simplesamlphp-install.md
index 8d1530e61..3283f2531 100644
--- a/.extlib/simplesamlphp/docs/simplesamlphp-install.md
+++ b/.extlib/simplesamlphp/docs/simplesamlphp-install.md
@@ -181,6 +181,7 @@ look like this:
server {
listen 443 ssl;
server_name idp.example.com;
+ index index.php;
ssl_certificate /etc/pki/tls/certs/idp.example.com.crt;
ssl_certificate_key /etc/pki/tls/private/idp.example.com.key;
diff --git a/.extlib/simplesamlphp/docs/simplesamlphp-upgrade-notes-2.3.md b/.extlib/simplesamlphp/docs/simplesamlphp-upgrade-notes-2.3.md
index e1e88b197..fcf606892 100644
--- a/.extlib/simplesamlphp/docs/simplesamlphp-upgrade-notes-2.3.md
+++ b/.extlib/simplesamlphp/docs/simplesamlphp-upgrade-notes-2.3.md
@@ -32,7 +32,7 @@ The use of plain-text admin-passwords has been deprecated. Generate a secure has
- The language codes `pt-br` and `zh-tw` have been renamed to `pt_BR` and `zh_TW`.
Please update your configuration to match the new names.
-- Endpoints are now only accepted in array-style. The old string-style was deprecated for 9 yrs
- already and was broken anyway. See [endpoints]
+- Endpoints in metadata (e.g. "SingleSignOnLocation" and "AssertionCosumerService") can no longer be simple strings and are now only accepted in array-style. The old string-style was deprecated for 9 yrs
+ already and was broken anyway. See [endpoints] for the current format.
[endpoints]: https://simplesamlphp.org/docs/stable/simplesamlphp-metadata-endpoints.html
diff --git a/.extlib/simplesamlphp/extra/simplesamlphp.spec b/.extlib/simplesamlphp/extra/simplesamlphp.spec
index a725546e1..601fccbd5 100644
--- a/.extlib/simplesamlphp/extra/simplesamlphp.spec
+++ b/.extlib/simplesamlphp/extra/simplesamlphp.spec
@@ -1,6 +1,6 @@
%define name simplesamlphp
%define summary SAML IDP/SP written in PHP
-%define version 2.3.3
+%define version 2.3.5
%define release 1
%define license LGPL 2.1
%define group Networking/WWW
diff --git a/.extlib/simplesamlphp/metadata/saml20-sp-remote.php.dist b/.extlib/simplesamlphp/metadata/saml20-sp-remote.php.dist
index f57382ac3..55d735350 100644
--- a/.extlib/simplesamlphp/metadata/saml20-sp-remote.php.dist
+++ b/.extlib/simplesamlphp/metadata/saml20-sp-remote.php.dist
@@ -18,7 +18,7 @@ $metadata['https://saml2sp.example.org'] = [
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
],
],
- 'SingleLogoutService' => => [
+ 'SingleLogoutService' => [
[
'Location' => 'https://saml2sp.example.org/module.php/saml/sp/saml2-logout.php/default-sp',
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
@@ -55,7 +55,7 @@ $metadata['google.com'] = [
$metadata['https://legacy.example.edu'] = [
- 'AssertionConsumerService' => => [
+ 'AssertionConsumerService' => [
[
'index' => 1,
'isDefault' => true,
diff --git a/.extlib/simplesamlphp/modules/cron/bin/cron.php b/.extlib/simplesamlphp/modules/cron/bin/cron.php
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php
index 0b8e184be..12c58062b 100644
--- a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php
+++ b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php
@@ -583,8 +583,8 @@ private function startSSO2(Configuration $idpMetadata, array $state): void
/* Only check for real info for Scoping element if we are going to send Scoping element */
if ($this->disable_scoping !== true && $idpMetadata->getOptionalBoolean('disable_scoping', false) !== true) {
- if (isset($state['IDPList'])) {
- $ar->setIDPList($state['IDPList']);
+ if (isset($state['saml:IDPList'])) {
+ $ar->setIDPList($state['saml:IDPList']);
} elseif (!empty($this->metadata->getOptionalArray('IDPList', []))) {
$ar->setIDPList($this->metadata->getArray('IDPList'));
} elseif (!empty($idpMetadata->getOptionalArray('IDPList', []))) {
diff --git a/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css b/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css
index b90c689bc..f373e6d12 100644
--- a/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css
+++ b/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css
@@ -1527,11 +1527,11 @@ code.hljs {
font-weight: bold
}
/*!
- * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
+ * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2024 Fonticons, Inc.
- */.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa-solid,.fa-regular,.fa-brands,.fas,.far,.fab,.fa-sharp-solid,.fa-classic,.fa{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas,.fa-classic,.fa-solid,.far,.fa-regular{font-family:"Font Awesome 6 Free"}.fab,.fa-brands{font-family:"Font Awesome 6 Brands"}.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-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-0.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-0.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(-1*var(--fa-li-width, 2em));position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, 0.1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, 0.08em);padding:var(--fa-border-padding, 0.2em 0.25em 0.15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, 0.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, 0.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 2s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, steps(8))}@media(prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-bounce{0%{transform:scale(1, 1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0)}57%{transform:scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em))}64%{transform:scale(1, 1) translateY(0)}100%{transform:scale(1, 1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, 0.4)}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity, 0.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,100%{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scale(-1, 1)}.fa-flip-vertical{transform:scale(1, -1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1, -1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle, 0))}.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%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0::before{content:"\30 "}.fa-1::before{content:"\31 "}.fa-2::before{content:"\32 "}.fa-3::before{content:"\33 "}.fa-4::before{content:"\34 "}.fa-5::before{content:"\35 "}.fa-6::before{content:"\36 "}.fa-7::before{content:"\37 "}.fa-8::before{content:"\38 "}.fa-9::before{content:"\39 "}.fa-fill-drip::before{content:""}.fa-arrows-to-circle::before{content:""}.fa-circle-chevron-right::before{content:""}.fa-chevron-circle-right::before{content:""}.fa-at::before{content:"\@"}.fa-trash-can::before{content:""}.fa-trash-alt::before{content:""}.fa-text-height::before{content:""}.fa-user-xmark::before{content:""}.fa-user-times::before{content:""}.fa-stethoscope::before{content:""}.fa-message::before{content:""}.fa-comment-alt::before{content:""}.fa-info::before{content:""}.fa-down-left-and-up-right-to-center::before{content:""}.fa-compress-alt::before{content:""}.fa-explosion::before{content:""}.fa-file-lines::before{content:""}.fa-file-alt::before{content:""}.fa-file-text::before{content:""}.fa-wave-square::before{content:""}.fa-ring::before{content:""}.fa-building-un::before{content:""}.fa-dice-three::before{content:""}.fa-calendar-days::before{content:""}.fa-calendar-alt::before{content:""}.fa-anchor-circle-check::before{content:""}.fa-building-circle-arrow-right::before{content:""}.fa-volleyball::before{content:""}.fa-volleyball-ball::before{content:""}.fa-arrows-up-to-line::before{content:""}.fa-sort-down::before{content:""}.fa-sort-desc::before{content:""}.fa-circle-minus::before{content:""}.fa-minus-circle::before{content:""}.fa-door-open::before{content:""}.fa-right-from-bracket::before{content:""}.fa-sign-out-alt::before{content:""}.fa-atom::before{content:""}.fa-soap::before{content:""}.fa-icons::before{content:""}.fa-heart-music-camera-bolt::before{content:""}.fa-microphone-lines-slash::before{content:""}.fa-microphone-alt-slash::before{content:""}.fa-bridge-circle-check::before{content:""}.fa-pump-medical::before{content:""}.fa-fingerprint::before{content:""}.fa-hand-point-right::before{content:""}.fa-magnifying-glass-location::before{content:""}.fa-search-location::before{content:""}.fa-forward-step::before{content:""}.fa-step-forward::before{content:""}.fa-face-smile-beam::before{content:""}.fa-smile-beam::before{content:""}.fa-flag-checkered::before{content:""}.fa-football::before{content:""}.fa-football-ball::before{content:""}.fa-school-circle-exclamation::before{content:""}.fa-crop::before{content:""}.fa-angles-down::before{content:""}.fa-angle-double-down::before{content:""}.fa-users-rectangle::before{content:""}.fa-people-roof::before{content:""}.fa-people-line::before{content:""}.fa-beer-mug-empty::before{content:""}.fa-beer::before{content:""}.fa-diagram-predecessor::before{content:""}.fa-arrow-up-long::before{content:""}.fa-long-arrow-up::before{content:""}.fa-fire-flame-simple::before{content:""}.fa-burn::before{content:""}.fa-person::before{content:""}.fa-male::before{content:""}.fa-laptop::before{content:""}.fa-file-csv::before{content:""}.fa-menorah::before{content:""}.fa-truck-plane::before{content:""}.fa-record-vinyl::before{content:""}.fa-face-grin-stars::before{content:""}.fa-grin-stars::before{content:""}.fa-bong::before{content:""}.fa-spaghetti-monster-flying::before{content:""}.fa-pastafarianism::before{content:""}.fa-arrow-down-up-across-line::before{content:""}.fa-spoon::before{content:""}.fa-utensil-spoon::before{content:""}.fa-jar-wheat::before{content:""}.fa-envelopes-bulk::before{content:""}.fa-mail-bulk::before{content:""}.fa-file-circle-exclamation::before{content:""}.fa-circle-h::before{content:""}.fa-hospital-symbol::before{content:""}.fa-pager::before{content:""}.fa-address-book::before{content:""}.fa-contact-book::before{content:""}.fa-strikethrough::before{content:""}.fa-k::before{content:"K"}.fa-landmark-flag::before{content:""}.fa-pencil::before{content:""}.fa-pencil-alt::before{content:""}.fa-backward::before{content:""}.fa-caret-right::before{content:""}.fa-comments::before{content:""}.fa-paste::before{content:""}.fa-file-clipboard::before{content:""}.fa-code-pull-request::before{content:""}.fa-clipboard-list::before{content:""}.fa-truck-ramp-box::before{content:""}.fa-truck-loading::before{content:""}.fa-user-check::before{content:""}.fa-vial-virus::before{content:""}.fa-sheet-plastic::before{content:""}.fa-blog::before{content:""}.fa-user-ninja::before{content:""}.fa-person-arrow-up-from-line::before{content:""}.fa-scroll-torah::before{content:""}.fa-torah::before{content:""}.fa-broom-ball::before{content:""}.fa-quidditch::before{content:""}.fa-quidditch-broom-ball::before{content:""}.fa-toggle-off::before{content:""}.fa-box-archive::before{content:""}.fa-archive::before{content:""}.fa-person-drowning::before{content:""}.fa-arrow-down-9-1::before{content:""}.fa-sort-numeric-desc::before{content:""}.fa-sort-numeric-down-alt::before{content:""}.fa-face-grin-tongue-squint::before{content:""}.fa-grin-tongue-squint::before{content:""}.fa-spray-can::before{content:""}.fa-truck-monster::before{content:""}.fa-w::before{content:"W"}.fa-earth-africa::before{content:""}.fa-globe-africa::before{content:""}.fa-rainbow::before{content:""}.fa-circle-notch::before{content:""}.fa-tablet-screen-button::before{content:""}.fa-tablet-alt::before{content:""}.fa-paw::before{content:""}.fa-cloud::before{content:""}.fa-trowel-bricks::before{content:""}.fa-face-flushed::before{content:""}.fa-flushed::before{content:""}.fa-hospital-user::before{content:""}.fa-tent-arrow-left-right::before{content:""}.fa-gavel::before{content:""}.fa-legal::before{content:""}.fa-binoculars::before{content:""}.fa-microphone-slash::before{content:""}.fa-box-tissue::before{content:""}.fa-motorcycle::before{content:""}.fa-bell-concierge::before{content:""}.fa-concierge-bell::before{content:""}.fa-pen-ruler::before{content:""}.fa-pencil-ruler::before{content:""}.fa-people-arrows::before{content:""}.fa-people-arrows-left-right::before{content:""}.fa-mars-and-venus-burst::before{content:""}.fa-square-caret-right::before{content:""}.fa-caret-square-right::before{content:""}.fa-scissors::before{content:""}.fa-cut::before{content:""}.fa-sun-plant-wilt::before{content:""}.fa-toilets-portable::before{content:""}.fa-hockey-puck::before{content:""}.fa-table::before{content:""}.fa-magnifying-glass-arrow-right::before{content:""}.fa-tachograph-digital::before{content:""}.fa-digital-tachograph::before{content:""}.fa-users-slash::before{content:""}.fa-clover::before{content:""}.fa-reply::before{content:""}.fa-mail-reply::before{content:""}.fa-star-and-crescent::before{content:""}.fa-house-fire::before{content:""}.fa-square-minus::before{content:""}.fa-minus-square::before{content:""}.fa-helicopter::before{content:""}.fa-compass::before{content:""}.fa-square-caret-down::before{content:""}.fa-caret-square-down::before{content:""}.fa-file-circle-question::before{content:""}.fa-laptop-code::before{content:""}.fa-swatchbook::before{content:""}.fa-prescription-bottle::before{content:""}.fa-bars::before{content:""}.fa-navicon::before{content:""}.fa-people-group::before{content:""}.fa-hourglass-end::before{content:""}.fa-hourglass-3::before{content:""}.fa-heart-crack::before{content:""}.fa-heart-broken::before{content:""}.fa-square-up-right::before{content:""}.fa-external-link-square-alt::before{content:""}.fa-face-kiss-beam::before{content:""}.fa-kiss-beam::before{content:""}.fa-film::before{content:""}.fa-ruler-horizontal::before{content:""}.fa-people-robbery::before{content:""}.fa-lightbulb::before{content:""}.fa-caret-left::before{content:""}.fa-circle-exclamation::before{content:""}.fa-exclamation-circle::before{content:""}.fa-school-circle-xmark::before{content:""}.fa-arrow-right-from-bracket::before{content:""}.fa-sign-out::before{content:""}.fa-circle-chevron-down::before{content:""}.fa-chevron-circle-down::before{content:""}.fa-unlock-keyhole::before{content:""}.fa-unlock-alt::before{content:""}.fa-cloud-showers-heavy::before{content:""}.fa-headphones-simple::before{content:""}.fa-headphones-alt::before{content:""}.fa-sitemap::before{content:""}.fa-circle-dollar-to-slot::before{content:""}.fa-donate::before{content:""}.fa-memory::before{content:""}.fa-road-spikes::before{content:""}.fa-fire-burner::before{content:""}.fa-flag::before{content:""}.fa-hanukiah::before{content:""}.fa-feather::before{content:""}.fa-volume-low::before{content:""}.fa-volume-down::before{content:""}.fa-comment-slash::before{content:""}.fa-cloud-sun-rain::before{content:""}.fa-compress::before{content:""}.fa-wheat-awn::before{content:""}.fa-wheat-alt::before{content:""}.fa-ankh::before{content:""}.fa-hands-holding-child::before{content:""}.fa-asterisk::before{content:"\*"}.fa-square-check::before{content:""}.fa-check-square::before{content:""}.fa-peseta-sign::before{content:""}.fa-heading::before{content:""}.fa-header::before{content:""}.fa-ghost::before{content:""}.fa-list::before{content:""}.fa-list-squares::before{content:""}.fa-square-phone-flip::before{content:""}.fa-phone-square-alt::before{content:""}.fa-cart-plus::before{content:""}.fa-gamepad::before{content:""}.fa-circle-dot::before{content:""}.fa-dot-circle::before{content:""}.fa-face-dizzy::before{content:""}.fa-dizzy::before{content:""}.fa-egg::before{content:""}.fa-house-medical-circle-xmark::before{content:""}.fa-campground::before{content:""}.fa-folder-plus::before{content:""}.fa-futbol::before{content:""}.fa-futbol-ball::before{content:""}.fa-soccer-ball::before{content:""}.fa-paintbrush::before{content:""}.fa-paint-brush::before{content:""}.fa-lock::before{content:""}.fa-gas-pump::before{content:""}.fa-hot-tub-person::before{content:""}.fa-hot-tub::before{content:""}.fa-map-location::before{content:""}.fa-map-marked::before{content:""}.fa-house-flood-water::before{content:""}.fa-tree::before{content:""}.fa-bridge-lock::before{content:""}.fa-sack-dollar::before{content:""}.fa-pen-to-square::before{content:""}.fa-edit::before{content:""}.fa-car-side::before{content:""}.fa-share-nodes::before{content:""}.fa-share-alt::before{content:""}.fa-heart-circle-minus::before{content:""}.fa-hourglass-half::before{content:""}.fa-hourglass-2::before{content:""}.fa-microscope::before{content:""}.fa-sink::before{content:""}.fa-bag-shopping::before{content:""}.fa-shopping-bag::before{content:""}.fa-arrow-down-z-a::before{content:""}.fa-sort-alpha-desc::before{content:""}.fa-sort-alpha-down-alt::before{content:""}.fa-mitten::before{content:""}.fa-person-rays::before{content:""}.fa-users::before{content:""}.fa-eye-slash::before{content:""}.fa-flask-vial::before{content:""}.fa-hand::before{content:""}.fa-hand-paper::before{content:""}.fa-om::before{content:""}.fa-worm::before{content:""}.fa-house-circle-xmark::before{content:""}.fa-plug::before{content:""}.fa-chevron-up::before{content:""}.fa-hand-spock::before{content:""}.fa-stopwatch::before{content:""}.fa-face-kiss::before{content:""}.fa-kiss::before{content:""}.fa-bridge-circle-xmark::before{content:""}.fa-face-grin-tongue::before{content:""}.fa-grin-tongue::before{content:""}.fa-chess-bishop::before{content:""}.fa-face-grin-wink::before{content:""}.fa-grin-wink::before{content:""}.fa-ear-deaf::before{content:""}.fa-deaf::before{content:""}.fa-deafness::before{content:""}.fa-hard-of-hearing::before{content:""}.fa-road-circle-check::before{content:""}.fa-dice-five::before{content:""}.fa-square-rss::before{content:""}.fa-rss-square::before{content:""}.fa-land-mine-on::before{content:""}.fa-i-cursor::before{content:""}.fa-stamp::before{content:""}.fa-stairs::before{content:""}.fa-i::before{content:"I"}.fa-hryvnia-sign::before{content:""}.fa-hryvnia::before{content:""}.fa-pills::before{content:""}.fa-face-grin-wide::before{content:""}.fa-grin-alt::before{content:""}.fa-tooth::before{content:""}.fa-v::before{content:"V"}.fa-bangladeshi-taka-sign::before{content:""}.fa-bicycle::before{content:""}.fa-staff-snake::before{content:""}.fa-rod-asclepius::before{content:""}.fa-rod-snake::before{content:""}.fa-staff-aesculapius::before{content:""}.fa-head-side-cough-slash::before{content:""}.fa-truck-medical::before{content:""}.fa-ambulance::before{content:""}.fa-wheat-awn-circle-exclamation::before{content:""}.fa-snowman::before{content:""}.fa-mortar-pestle::before{content:""}.fa-road-barrier::before{content:""}.fa-school::before{content:""}.fa-igloo::before{content:""}.fa-joint::before{content:""}.fa-angle-right::before{content:""}.fa-horse::before{content:""}.fa-q::before{content:"Q"}.fa-g::before{content:"G"}.fa-notes-medical::before{content:""}.fa-temperature-half::before{content:""}.fa-temperature-2::before{content:""}.fa-thermometer-2::before{content:""}.fa-thermometer-half::before{content:""}.fa-dong-sign::before{content:""}.fa-capsules::before{content:""}.fa-poo-storm::before{content:""}.fa-poo-bolt::before{content:""}.fa-face-frown-open::before{content:""}.fa-frown-open::before{content:""}.fa-hand-point-up::before{content:""}.fa-money-bill::before{content:""}.fa-bookmark::before{content:""}.fa-align-justify::before{content:""}.fa-umbrella-beach::before{content:""}.fa-helmet-un::before{content:""}.fa-bullseye::before{content:""}.fa-bacon::before{content:""}.fa-hand-point-down::before{content:""}.fa-arrow-up-from-bracket::before{content:""}.fa-folder::before{content:""}.fa-folder-blank::before{content:""}.fa-file-waveform::before{content:""}.fa-file-medical-alt::before{content:""}.fa-radiation::before{content:""}.fa-chart-simple::before{content:""}.fa-mars-stroke::before{content:""}.fa-vial::before{content:""}.fa-gauge::before{content:""}.fa-dashboard::before{content:""}.fa-gauge-med::before{content:""}.fa-tachometer-alt-average::before{content:""}.fa-wand-magic-sparkles::before{content:""}.fa-magic-wand-sparkles::before{content:""}.fa-e::before{content:"E"}.fa-pen-clip::before{content:""}.fa-pen-alt::before{content:""}.fa-bridge-circle-exclamation::before{content:""}.fa-user::before{content:""}.fa-school-circle-check::before{content:""}.fa-dumpster::before{content:""}.fa-van-shuttle::before{content:""}.fa-shuttle-van::before{content:""}.fa-building-user::before{content:""}.fa-square-caret-left::before{content:""}.fa-caret-square-left::before{content:""}.fa-highlighter::before{content:""}.fa-key::before{content:""}.fa-bullhorn::before{content:""}.fa-globe::before{content:""}.fa-synagogue::before{content:""}.fa-person-half-dress::before{content:""}.fa-road-bridge::before{content:""}.fa-location-arrow::before{content:""}.fa-c::before{content:"C"}.fa-tablet-button::before{content:""}.fa-building-lock::before{content:""}.fa-pizza-slice::before{content:""}.fa-money-bill-wave::before{content:""}.fa-chart-area::before{content:""}.fa-area-chart::before{content:""}.fa-house-flag::before{content:""}.fa-person-circle-minus::before{content:""}.fa-ban::before{content:""}.fa-cancel::before{content:""}.fa-camera-rotate::before{content:""}.fa-spray-can-sparkles::before{content:""}.fa-air-freshener::before{content:""}.fa-star::before{content:""}.fa-repeat::before{content:""}.fa-cross::before{content:""}.fa-box::before{content:""}.fa-venus-mars::before{content:""}.fa-arrow-pointer::before{content:""}.fa-mouse-pointer::before{content:""}.fa-maximize::before{content:""}.fa-expand-arrows-alt::before{content:""}.fa-charging-station::before{content:""}.fa-shapes::before{content:""}.fa-triangle-circle-square::before{content:""}.fa-shuffle::before{content:""}.fa-random::before{content:""}.fa-person-running::before{content:""}.fa-running::before{content:""}.fa-mobile-retro::before{content:""}.fa-grip-lines-vertical::before{content:""}.fa-spider::before{content:""}.fa-hands-bound::before{content:""}.fa-file-invoice-dollar::before{content:""}.fa-plane-circle-exclamation::before{content:""}.fa-x-ray::before{content:""}.fa-spell-check::before{content:""}.fa-slash::before{content:""}.fa-computer-mouse::before{content:""}.fa-mouse::before{content:""}.fa-arrow-right-to-bracket::before{content:""}.fa-sign-in::before{content:""}.fa-shop-slash::before{content:""}.fa-store-alt-slash::before{content:""}.fa-server::before{content:""}.fa-virus-covid-slash::before{content:""}.fa-shop-lock::before{content:""}.fa-hourglass-start::before{content:""}.fa-hourglass-1::before{content:""}.fa-blender-phone::before{content:""}.fa-building-wheat::before{content:""}.fa-person-breastfeeding::before{content:""}.fa-right-to-bracket::before{content:""}.fa-sign-in-alt::before{content:""}.fa-venus::before{content:""}.fa-passport::before{content:""}.fa-thumbtack-slash::before{content:""}.fa-thumb-tack-slash::before{content:""}.fa-heart-pulse::before{content:""}.fa-heartbeat::before{content:""}.fa-people-carry-box::before{content:""}.fa-people-carry::before{content:""}.fa-temperature-high::before{content:""}.fa-microchip::before{content:""}.fa-crown::before{content:""}.fa-weight-hanging::before{content:""}.fa-xmarks-lines::before{content:""}.fa-file-prescription::before{content:""}.fa-weight-scale::before{content:""}.fa-weight::before{content:""}.fa-user-group::before{content:""}.fa-user-friends::before{content:""}.fa-arrow-up-a-z::before{content:""}.fa-sort-alpha-up::before{content:""}.fa-chess-knight::before{content:""}.fa-face-laugh-squint::before{content:""}.fa-laugh-squint::before{content:""}.fa-wheelchair::before{content:""}.fa-circle-arrow-up::before{content:""}.fa-arrow-circle-up::before{content:""}.fa-toggle-on::before{content:""}.fa-person-walking::before{content:""}.fa-walking::before{content:""}.fa-l::before{content:"L"}.fa-fire::before{content:""}.fa-bed-pulse::before{content:""}.fa-procedures::before{content:""}.fa-shuttle-space::before{content:""}.fa-space-shuttle::before{content:""}.fa-face-laugh::before{content:""}.fa-laugh::before{content:""}.fa-folder-open::before{content:""}.fa-heart-circle-plus::before{content:""}.fa-code-fork::before{content:""}.fa-city::before{content:""}.fa-microphone-lines::before{content:""}.fa-microphone-alt::before{content:""}.fa-pepper-hot::before{content:""}.fa-unlock::before{content:""}.fa-colon-sign::before{content:""}.fa-headset::before{content:""}.fa-store-slash::before{content:""}.fa-road-circle-xmark::before{content:""}.fa-user-minus::before{content:""}.fa-mars-stroke-up::before{content:""}.fa-mars-stroke-v::before{content:""}.fa-champagne-glasses::before{content:""}.fa-glass-cheers::before{content:""}.fa-clipboard::before{content:""}.fa-house-circle-exclamation::before{content:""}.fa-file-arrow-up::before{content:""}.fa-file-upload::before{content:""}.fa-wifi::before{content:""}.fa-wifi-3::before{content:""}.fa-wifi-strong::before{content:""}.fa-bath::before{content:""}.fa-bathtub::before{content:""}.fa-underline::before{content:""}.fa-user-pen::before{content:""}.fa-user-edit::before{content:""}.fa-signature::before{content:""}.fa-stroopwafel::before{content:""}.fa-bold::before{content:""}.fa-anchor-lock::before{content:""}.fa-building-ngo::before{content:""}.fa-manat-sign::before{content:""}.fa-not-equal::before{content:""}.fa-border-top-left::before{content:""}.fa-border-style::before{content:""}.fa-map-location-dot::before{content:""}.fa-map-marked-alt::before{content:""}.fa-jedi::before{content:""}.fa-square-poll-vertical::before{content:""}.fa-poll::before{content:""}.fa-mug-hot::before{content:""}.fa-car-battery::before{content:""}.fa-battery-car::before{content:""}.fa-gift::before{content:""}.fa-dice-two::before{content:""}.fa-chess-queen::before{content:""}.fa-glasses::before{content:""}.fa-chess-board::before{content:""}.fa-building-circle-check::before{content:""}.fa-person-chalkboard::before{content:""}.fa-mars-stroke-right::before{content:""}.fa-mars-stroke-h::before{content:""}.fa-hand-back-fist::before{content:""}.fa-hand-rock::before{content:""}.fa-square-caret-up::before{content:""}.fa-caret-square-up::before{content:""}.fa-cloud-showers-water::before{content:""}.fa-chart-bar::before{content:""}.fa-bar-chart::before{content:""}.fa-hands-bubbles::before{content:""}.fa-hands-wash::before{content:""}.fa-less-than-equal::before{content:""}.fa-train::before{content:""}.fa-eye-low-vision::before{content:""}.fa-low-vision::before{content:""}.fa-crow::before{content:""}.fa-sailboat::before{content:""}.fa-window-restore::before{content:""}.fa-square-plus::before{content:""}.fa-plus-square::before{content:""}.fa-torii-gate::before{content:""}.fa-frog::before{content:""}.fa-bucket::before{content:""}.fa-image::before{content:""}.fa-microphone::before{content:""}.fa-cow::before{content:""}.fa-caret-up::before{content:""}.fa-screwdriver::before{content:""}.fa-folder-closed::before{content:""}.fa-house-tsunami::before{content:""}.fa-square-nfi::before{content:""}.fa-arrow-up-from-ground-water::before{content:""}.fa-martini-glass::before{content:""}.fa-glass-martini-alt::before{content:""}.fa-rotate-left::before{content:""}.fa-rotate-back::before{content:""}.fa-rotate-backward::before{content:""}.fa-undo-alt::before{content:""}.fa-table-columns::before{content:""}.fa-columns::before{content:""}.fa-lemon::before{content:""}.fa-head-side-mask::before{content:""}.fa-handshake::before{content:""}.fa-gem::before{content:""}.fa-dolly::before{content:""}.fa-dolly-box::before{content:""}.fa-smoking::before{content:""}.fa-minimize::before{content:""}.fa-compress-arrows-alt::before{content:""}.fa-monument::before{content:""}.fa-snowplow::before{content:""}.fa-angles-right::before{content:""}.fa-angle-double-right::before{content:""}.fa-cannabis::before{content:""}.fa-circle-play::before{content:""}.fa-play-circle::before{content:""}.fa-tablets::before{content:""}.fa-ethernet::before{content:""}.fa-euro-sign::before{content:""}.fa-eur::before{content:""}.fa-euro::before{content:""}.fa-chair::before{content:""}.fa-circle-check::before{content:""}.fa-check-circle::before{content:""}.fa-circle-stop::before{content:""}.fa-stop-circle::before{content:""}.fa-compass-drafting::before{content:""}.fa-drafting-compass::before{content:""}.fa-plate-wheat::before{content:""}.fa-icicles::before{content:""}.fa-person-shelter::before{content:""}.fa-neuter::before{content:""}.fa-id-badge::before{content:""}.fa-marker::before{content:""}.fa-face-laugh-beam::before{content:""}.fa-laugh-beam::before{content:""}.fa-helicopter-symbol::before{content:""}.fa-universal-access::before{content:""}.fa-circle-chevron-up::before{content:""}.fa-chevron-circle-up::before{content:""}.fa-lari-sign::before{content:""}.fa-volcano::before{content:""}.fa-person-walking-dashed-line-arrow-right::before{content:""}.fa-sterling-sign::before{content:""}.fa-gbp::before{content:""}.fa-pound-sign::before{content:""}.fa-viruses::before{content:""}.fa-square-person-confined::before{content:""}.fa-user-tie::before{content:""}.fa-arrow-down-long::before{content:""}.fa-long-arrow-down::before{content:""}.fa-tent-arrow-down-to-line::before{content:""}.fa-certificate::before{content:""}.fa-reply-all::before{content:""}.fa-mail-reply-all::before{content:""}.fa-suitcase::before{content:""}.fa-person-skating::before{content:""}.fa-skating::before{content:""}.fa-filter-circle-dollar::before{content:""}.fa-funnel-dollar::before{content:""}.fa-camera-retro::before{content:""}.fa-circle-arrow-down::before{content:""}.fa-arrow-circle-down::before{content:""}.fa-file-import::before{content:""}.fa-arrow-right-to-file::before{content:""}.fa-square-arrow-up-right::before{content:""}.fa-external-link-square::before{content:""}.fa-box-open::before{content:""}.fa-scroll::before{content:""}.fa-spa::before{content:""}.fa-location-pin-lock::before{content:""}.fa-pause::before{content:""}.fa-hill-avalanche::before{content:""}.fa-temperature-empty::before{content:""}.fa-temperature-0::before{content:""}.fa-thermometer-0::before{content:""}.fa-thermometer-empty::before{content:""}.fa-bomb::before{content:""}.fa-registered::before{content:""}.fa-address-card::before{content:""}.fa-contact-card::before{content:""}.fa-vcard::before{content:""}.fa-scale-unbalanced-flip::before{content:""}.fa-balance-scale-right::before{content:""}.fa-subscript::before{content:""}.fa-diamond-turn-right::before{content:""}.fa-directions::before{content:""}.fa-burst::before{content:""}.fa-house-laptop::before{content:""}.fa-laptop-house::before{content:""}.fa-face-tired::before{content:""}.fa-tired::before{content:""}.fa-money-bills::before{content:""}.fa-smog::before{content:""}.fa-crutch::before{content:""}.fa-cloud-arrow-up::before{content:""}.fa-cloud-upload::before{content:""}.fa-cloud-upload-alt::before{content:""}.fa-palette::before{content:""}.fa-arrows-turn-right::before{content:""}.fa-vest::before{content:""}.fa-ferry::before{content:""}.fa-arrows-down-to-people::before{content:""}.fa-seedling::before{content:""}.fa-sprout::before{content:""}.fa-left-right::before{content:""}.fa-arrows-alt-h::before{content:""}.fa-boxes-packing::before{content:""}.fa-circle-arrow-left::before{content:""}.fa-arrow-circle-left::before{content:""}.fa-group-arrows-rotate::before{content:""}.fa-bowl-food::before{content:""}.fa-candy-cane::before{content:""}.fa-arrow-down-wide-short::before{content:""}.fa-sort-amount-asc::before{content:""}.fa-sort-amount-down::before{content:""}.fa-cloud-bolt::before{content:""}.fa-thunderstorm::before{content:""}.fa-text-slash::before{content:""}.fa-remove-format::before{content:""}.fa-face-smile-wink::before{content:""}.fa-smile-wink::before{content:""}.fa-file-word::before{content:""}.fa-file-powerpoint::before{content:""}.fa-arrows-left-right::before{content:""}.fa-arrows-h::before{content:""}.fa-house-lock::before{content:""}.fa-cloud-arrow-down::before{content:""}.fa-cloud-download::before{content:""}.fa-cloud-download-alt::before{content:""}.fa-children::before{content:""}.fa-chalkboard::before{content:""}.fa-blackboard::before{content:""}.fa-user-large-slash::before{content:""}.fa-user-alt-slash::before{content:""}.fa-envelope-open::before{content:""}.fa-handshake-simple-slash::before{content:""}.fa-handshake-alt-slash::before{content:""}.fa-mattress-pillow::before{content:""}.fa-guarani-sign::before{content:""}.fa-arrows-rotate::before{content:""}.fa-refresh::before{content:""}.fa-sync::before{content:""}.fa-fire-extinguisher::before{content:""}.fa-cruzeiro-sign::before{content:""}.fa-greater-than-equal::before{content:""}.fa-shield-halved::before{content:""}.fa-shield-alt::before{content:""}.fa-book-atlas::before{content:""}.fa-atlas::before{content:""}.fa-virus::before{content:""}.fa-envelope-circle-check::before{content:""}.fa-layer-group::before{content:""}.fa-arrows-to-dot::before{content:""}.fa-archway::before{content:""}.fa-heart-circle-check::before{content:""}.fa-house-chimney-crack::before{content:""}.fa-house-damage::before{content:""}.fa-file-zipper::before{content:""}.fa-file-archive::before{content:""}.fa-square::before{content:""}.fa-martini-glass-empty::before{content:""}.fa-glass-martini::before{content:""}.fa-couch::before{content:""}.fa-cedi-sign::before{content:""}.fa-italic::before{content:""}.fa-table-cells-column-lock::before{content:""}.fa-church::before{content:""}.fa-comments-dollar::before{content:""}.fa-democrat::before{content:""}.fa-z::before{content:"Z"}.fa-person-skiing::before{content:""}.fa-skiing::before{content:""}.fa-road-lock::before{content:""}.fa-a::before{content:"A"}.fa-temperature-arrow-down::before{content:""}.fa-temperature-down::before{content:""}.fa-feather-pointed::before{content:""}.fa-feather-alt::before{content:""}.fa-p::before{content:"P"}.fa-snowflake::before{content:""}.fa-newspaper::before{content:""}.fa-rectangle-ad::before{content:""}.fa-ad::before{content:""}.fa-circle-arrow-right::before{content:""}.fa-arrow-circle-right::before{content:""}.fa-filter-circle-xmark::before{content:""}.fa-locust::before{content:""}.fa-sort::before{content:""}.fa-unsorted::before{content:""}.fa-list-ol::before{content:""}.fa-list-1-2::before{content:""}.fa-list-numeric::before{content:""}.fa-person-dress-burst::before{content:""}.fa-money-check-dollar::before{content:""}.fa-money-check-alt::before{content:""}.fa-vector-square::before{content:""}.fa-bread-slice::before{content:""}.fa-language::before{content:""}.fa-face-kiss-wink-heart::before{content:""}.fa-kiss-wink-heart::before{content:""}.fa-filter::before{content:""}.fa-question::before{content:"\?"}.fa-file-signature::before{content:""}.fa-up-down-left-right::before{content:""}.fa-arrows-alt::before{content:""}.fa-house-chimney-user::before{content:""}.fa-hand-holding-heart::before{content:""}.fa-puzzle-piece::before{content:""}.fa-money-check::before{content:""}.fa-star-half-stroke::before{content:""}.fa-star-half-alt::before{content:""}.fa-code::before{content:""}.fa-whiskey-glass::before{content:""}.fa-glass-whiskey::before{content:""}.fa-building-circle-exclamation::before{content:""}.fa-magnifying-glass-chart::before{content:""}.fa-arrow-up-right-from-square::before{content:""}.fa-external-link::before{content:""}.fa-cubes-stacked::before{content:""}.fa-won-sign::before{content:""}.fa-krw::before{content:""}.fa-won::before{content:""}.fa-virus-covid::before{content:""}.fa-austral-sign::before{content:""}.fa-f::before{content:"F"}.fa-leaf::before{content:""}.fa-road::before{content:""}.fa-taxi::before{content:""}.fa-cab::before{content:""}.fa-person-circle-plus::before{content:""}.fa-chart-pie::before{content:""}.fa-pie-chart::before{content:""}.fa-bolt-lightning::before{content:""}.fa-sack-xmark::before{content:""}.fa-file-excel::before{content:""}.fa-file-contract::before{content:""}.fa-fish-fins::before{content:""}.fa-building-flag::before{content:""}.fa-face-grin-beam::before{content:""}.fa-grin-beam::before{content:""}.fa-object-ungroup::before{content:""}.fa-poop::before{content:""}.fa-location-pin::before{content:""}.fa-map-marker::before{content:""}.fa-kaaba::before{content:""}.fa-toilet-paper::before{content:""}.fa-helmet-safety::before{content:""}.fa-hard-hat::before{content:""}.fa-hat-hard::before{content:""}.fa-eject::before{content:""}.fa-circle-right::before{content:""}.fa-arrow-alt-circle-right::before{content:""}.fa-plane-circle-check::before{content:""}.fa-face-rolling-eyes::before{content:""}.fa-meh-rolling-eyes::before{content:""}.fa-object-group::before{content:""}.fa-chart-line::before{content:""}.fa-line-chart::before{content:""}.fa-mask-ventilator::before{content:""}.fa-arrow-right::before{content:""}.fa-signs-post::before{content:""}.fa-map-signs::before{content:""}.fa-cash-register::before{content:""}.fa-person-circle-question::before{content:""}.fa-h::before{content:"H"}.fa-tarp::before{content:""}.fa-screwdriver-wrench::before{content:""}.fa-tools::before{content:""}.fa-arrows-to-eye::before{content:""}.fa-plug-circle-bolt::before{content:""}.fa-heart::before{content:""}.fa-mars-and-venus::before{content:""}.fa-house-user::before{content:""}.fa-home-user::before{content:""}.fa-dumpster-fire::before{content:""}.fa-house-crack::before{content:""}.fa-martini-glass-citrus::before{content:""}.fa-cocktail::before{content:""}.fa-face-surprise::before{content:""}.fa-surprise::before{content:""}.fa-bottle-water::before{content:""}.fa-circle-pause::before{content:""}.fa-pause-circle::before{content:""}.fa-toilet-paper-slash::before{content:""}.fa-apple-whole::before{content:""}.fa-apple-alt::before{content:""}.fa-kitchen-set::before{content:""}.fa-r::before{content:"R"}.fa-temperature-quarter::before{content:""}.fa-temperature-1::before{content:""}.fa-thermometer-1::before{content:""}.fa-thermometer-quarter::before{content:""}.fa-cube::before{content:""}.fa-bitcoin-sign::before{content:""}.fa-shield-dog::before{content:""}.fa-solar-panel::before{content:""}.fa-lock-open::before{content:""}.fa-elevator::before{content:""}.fa-money-bill-transfer::before{content:""}.fa-money-bill-trend-up::before{content:""}.fa-house-flood-water-circle-arrow-right::before{content:""}.fa-square-poll-horizontal::before{content:""}.fa-poll-h::before{content:""}.fa-circle::before{content:""}.fa-backward-fast::before{content:""}.fa-fast-backward::before{content:""}.fa-recycle::before{content:""}.fa-user-astronaut::before{content:""}.fa-plane-slash::before{content:""}.fa-trademark::before{content:""}.fa-basketball::before{content:""}.fa-basketball-ball::before{content:""}.fa-satellite-dish::before{content:""}.fa-circle-up::before{content:""}.fa-arrow-alt-circle-up::before{content:""}.fa-mobile-screen-button::before{content:""}.fa-mobile-alt::before{content:""}.fa-volume-high::before{content:""}.fa-volume-up::before{content:""}.fa-users-rays::before{content:""}.fa-wallet::before{content:""}.fa-clipboard-check::before{content:""}.fa-file-audio::before{content:""}.fa-burger::before{content:""}.fa-hamburger::before{content:""}.fa-wrench::before{content:""}.fa-bugs::before{content:""}.fa-rupee-sign::before{content:""}.fa-rupee::before{content:""}.fa-file-image::before{content:""}.fa-circle-question::before{content:""}.fa-question-circle::before{content:""}.fa-plane-departure::before{content:""}.fa-handshake-slash::before{content:""}.fa-book-bookmark::before{content:""}.fa-code-branch::before{content:""}.fa-hat-cowboy::before{content:""}.fa-bridge::before{content:""}.fa-phone-flip::before{content:""}.fa-phone-alt::before{content:""}.fa-truck-front::before{content:""}.fa-cat::before{content:""}.fa-anchor-circle-exclamation::before{content:""}.fa-truck-field::before{content:""}.fa-route::before{content:""}.fa-clipboard-question::before{content:""}.fa-panorama::before{content:""}.fa-comment-medical::before{content:""}.fa-teeth-open::before{content:""}.fa-file-circle-minus::before{content:""}.fa-tags::before{content:""}.fa-wine-glass::before{content:""}.fa-forward-fast::before{content:""}.fa-fast-forward::before{content:""}.fa-face-meh-blank::before{content:""}.fa-meh-blank::before{content:""}.fa-square-parking::before{content:""}.fa-parking::before{content:""}.fa-house-signal::before{content:""}.fa-bars-progress::before{content:""}.fa-tasks-alt::before{content:""}.fa-faucet-drip::before{content:""}.fa-cart-flatbed::before{content:""}.fa-dolly-flatbed::before{content:""}.fa-ban-smoking::before{content:""}.fa-smoking-ban::before{content:""}.fa-terminal::before{content:""}.fa-mobile-button::before{content:""}.fa-house-medical-flag::before{content:""}.fa-basket-shopping::before{content:""}.fa-shopping-basket::before{content:""}.fa-tape::before{content:""}.fa-bus-simple::before{content:""}.fa-bus-alt::before{content:""}.fa-eye::before{content:""}.fa-face-sad-cry::before{content:""}.fa-sad-cry::before{content:""}.fa-audio-description::before{content:""}.fa-person-military-to-person::before{content:""}.fa-file-shield::before{content:""}.fa-user-slash::before{content:""}.fa-pen::before{content:""}.fa-tower-observation::before{content:""}.fa-file-code::before{content:""}.fa-signal::before{content:""}.fa-signal-5::before{content:""}.fa-signal-perfect::before{content:""}.fa-bus::before{content:""}.fa-heart-circle-xmark::before{content:""}.fa-house-chimney::before{content:""}.fa-home-lg::before{content:""}.fa-window-maximize::before{content:""}.fa-face-frown::before{content:""}.fa-frown::before{content:""}.fa-prescription::before{content:""}.fa-shop::before{content:""}.fa-store-alt::before{content:""}.fa-floppy-disk::before{content:""}.fa-save::before{content:""}.fa-vihara::before{content:""}.fa-scale-unbalanced::before{content:""}.fa-balance-scale-left::before{content:""}.fa-sort-up::before{content:""}.fa-sort-asc::before{content:""}.fa-comment-dots::before{content:""}.fa-commenting::before{content:""}.fa-plant-wilt::before{content:""}.fa-diamond::before{content:""}.fa-face-grin-squint::before{content:""}.fa-grin-squint::before{content:""}.fa-hand-holding-dollar::before{content:""}.fa-hand-holding-usd::before{content:""}.fa-bacterium::before{content:""}.fa-hand-pointer::before{content:""}.fa-drum-steelpan::before{content:""}.fa-hand-scissors::before{content:""}.fa-hands-praying::before{content:""}.fa-praying-hands::before{content:""}.fa-arrow-rotate-right::before{content:""}.fa-arrow-right-rotate::before{content:""}.fa-arrow-rotate-forward::before{content:""}.fa-redo::before{content:""}.fa-biohazard::before{content:""}.fa-location-crosshairs::before{content:""}.fa-location::before{content:""}.fa-mars-double::before{content:""}.fa-child-dress::before{content:""}.fa-users-between-lines::before{content:""}.fa-lungs-virus::before{content:""}.fa-face-grin-tears::before{content:""}.fa-grin-tears::before{content:""}.fa-phone::before{content:""}.fa-calendar-xmark::before{content:""}.fa-calendar-times::before{content:""}.fa-child-reaching::before{content:""}.fa-head-side-virus::before{content:""}.fa-user-gear::before{content:""}.fa-user-cog::before{content:""}.fa-arrow-up-1-9::before{content:""}.fa-sort-numeric-up::before{content:""}.fa-door-closed::before{content:""}.fa-shield-virus::before{content:""}.fa-dice-six::before{content:""}.fa-mosquito-net::before{content:""}.fa-bridge-water::before{content:""}.fa-person-booth::before{content:""}.fa-text-width::before{content:""}.fa-hat-wizard::before{content:""}.fa-pen-fancy::before{content:""}.fa-person-digging::before{content:""}.fa-digging::before{content:""}.fa-trash::before{content:""}.fa-gauge-simple::before{content:""}.fa-gauge-simple-med::before{content:""}.fa-tachometer-average::before{content:""}.fa-book-medical::before{content:""}.fa-poo::before{content:""}.fa-quote-right::before{content:""}.fa-quote-right-alt::before{content:""}.fa-shirt::before{content:""}.fa-t-shirt::before{content:""}.fa-tshirt::before{content:""}.fa-cubes::before{content:""}.fa-divide::before{content:""}.fa-tenge-sign::before{content:""}.fa-tenge::before{content:""}.fa-headphones::before{content:""}.fa-hands-holding::before{content:""}.fa-hands-clapping::before{content:""}.fa-republican::before{content:""}.fa-arrow-left::before{content:""}.fa-person-circle-xmark::before{content:""}.fa-ruler::before{content:""}.fa-align-left::before{content:""}.fa-dice-d6::before{content:""}.fa-restroom::before{content:""}.fa-j::before{content:"J"}.fa-users-viewfinder::before{content:""}.fa-file-video::before{content:""}.fa-up-right-from-square::before{content:""}.fa-external-link-alt::before{content:""}.fa-table-cells::before{content:""}.fa-th::before{content:""}.fa-file-pdf::before{content:""}.fa-book-bible::before{content:""}.fa-bible::before{content:""}.fa-o::before{content:"O"}.fa-suitcase-medical::before{content:""}.fa-medkit::before{content:""}.fa-user-secret::before{content:""}.fa-otter::before{content:""}.fa-person-dress::before{content:""}.fa-female::before{content:""}.fa-comment-dollar::before{content:""}.fa-business-time::before{content:""}.fa-briefcase-clock::before{content:""}.fa-table-cells-large::before{content:""}.fa-th-large::before{content:""}.fa-book-tanakh::before{content:""}.fa-tanakh::before{content:""}.fa-phone-volume::before{content:""}.fa-volume-control-phone::before{content:""}.fa-hat-cowboy-side::before{content:""}.fa-clipboard-user::before{content:""}.fa-child::before{content:""}.fa-lira-sign::before{content:""}.fa-satellite::before{content:""}.fa-plane-lock::before{content:""}.fa-tag::before{content:""}.fa-comment::before{content:""}.fa-cake-candles::before{content:""}.fa-birthday-cake::before{content:""}.fa-cake::before{content:""}.fa-envelope::before{content:""}.fa-angles-up::before{content:""}.fa-angle-double-up::before{content:""}.fa-paperclip::before{content:""}.fa-arrow-right-to-city::before{content:""}.fa-ribbon::before{content:""}.fa-lungs::before{content:""}.fa-arrow-up-9-1::before{content:""}.fa-sort-numeric-up-alt::before{content:""}.fa-litecoin-sign::before{content:""}.fa-border-none::before{content:""}.fa-circle-nodes::before{content:""}.fa-parachute-box::before{content:""}.fa-indent::before{content:""}.fa-truck-field-un::before{content:""}.fa-hourglass::before{content:""}.fa-hourglass-empty::before{content:""}.fa-mountain::before{content:""}.fa-user-doctor::before{content:""}.fa-user-md::before{content:""}.fa-circle-info::before{content:""}.fa-info-circle::before{content:""}.fa-cloud-meatball::before{content:""}.fa-camera::before{content:""}.fa-camera-alt::before{content:""}.fa-square-virus::before{content:""}.fa-meteor::before{content:""}.fa-car-on::before{content:""}.fa-sleigh::before{content:""}.fa-arrow-down-1-9::before{content:""}.fa-sort-numeric-asc::before{content:""}.fa-sort-numeric-down::before{content:""}.fa-hand-holding-droplet::before{content:""}.fa-hand-holding-water::before{content:""}.fa-water::before{content:""}.fa-calendar-check::before{content:""}.fa-braille::before{content:""}.fa-prescription-bottle-medical::before{content:""}.fa-prescription-bottle-alt::before{content:""}.fa-landmark::before{content:""}.fa-truck::before{content:""}.fa-crosshairs::before{content:""}.fa-person-cane::before{content:""}.fa-tent::before{content:""}.fa-vest-patches::before{content:""}.fa-check-double::before{content:""}.fa-arrow-down-a-z::before{content:""}.fa-sort-alpha-asc::before{content:""}.fa-sort-alpha-down::before{content:""}.fa-money-bill-wheat::before{content:""}.fa-cookie::before{content:""}.fa-arrow-rotate-left::before{content:""}.fa-arrow-left-rotate::before{content:""}.fa-arrow-rotate-back::before{content:""}.fa-arrow-rotate-backward::before{content:""}.fa-undo::before{content:""}.fa-hard-drive::before{content:""}.fa-hdd::before{content:""}.fa-face-grin-squint-tears::before{content:""}.fa-grin-squint-tears::before{content:""}.fa-dumbbell::before{content:""}.fa-rectangle-list::before{content:""}.fa-list-alt::before{content:""}.fa-tarp-droplet::before{content:""}.fa-house-medical-circle-check::before{content:""}.fa-person-skiing-nordic::before{content:""}.fa-skiing-nordic::before{content:""}.fa-calendar-plus::before{content:""}.fa-plane-arrival::before{content:""}.fa-circle-left::before{content:""}.fa-arrow-alt-circle-left::before{content:""}.fa-train-subway::before{content:""}.fa-subway::before{content:""}.fa-chart-gantt::before{content:""}.fa-indian-rupee-sign::before{content:""}.fa-indian-rupee::before{content:""}.fa-inr::before{content:""}.fa-crop-simple::before{content:""}.fa-crop-alt::before{content:""}.fa-money-bill-1::before{content:""}.fa-money-bill-alt::before{content:""}.fa-left-long::before{content:""}.fa-long-arrow-alt-left::before{content:""}.fa-dna::before{content:""}.fa-virus-slash::before{content:""}.fa-minus::before{content:""}.fa-subtract::before{content:""}.fa-chess::before{content:""}.fa-arrow-left-long::before{content:""}.fa-long-arrow-left::before{content:""}.fa-plug-circle-check::before{content:""}.fa-street-view::before{content:""}.fa-franc-sign::before{content:""}.fa-volume-off::before{content:""}.fa-hands-asl-interpreting::before{content:""}.fa-american-sign-language-interpreting::before{content:""}.fa-asl-interpreting::before{content:""}.fa-hands-american-sign-language-interpreting::before{content:""}.fa-gear::before{content:""}.fa-cog::before{content:""}.fa-droplet-slash::before{content:""}.fa-tint-slash::before{content:""}.fa-mosque::before{content:""}.fa-mosquito::before{content:""}.fa-star-of-david::before{content:""}.fa-person-military-rifle::before{content:""}.fa-cart-shopping::before{content:""}.fa-shopping-cart::before{content:""}.fa-vials::before{content:""}.fa-plug-circle-plus::before{content:""}.fa-place-of-worship::before{content:""}.fa-grip-vertical::before{content:""}.fa-arrow-turn-up::before{content:""}.fa-level-up::before{content:""}.fa-u::before{content:"U"}.fa-square-root-variable::before{content:""}.fa-square-root-alt::before{content:""}.fa-clock::before{content:""}.fa-clock-four::before{content:""}.fa-backward-step::before{content:""}.fa-step-backward::before{content:""}.fa-pallet::before{content:""}.fa-faucet::before{content:""}.fa-baseball-bat-ball::before{content:""}.fa-s::before{content:"S"}.fa-timeline::before{content:""}.fa-keyboard::before{content:""}.fa-caret-down::before{content:""}.fa-house-chimney-medical::before{content:""}.fa-clinic-medical::before{content:""}.fa-temperature-three-quarters::before{content:""}.fa-temperature-3::before{content:""}.fa-thermometer-3::before{content:""}.fa-thermometer-three-quarters::before{content:""}.fa-mobile-screen::before{content:""}.fa-mobile-android-alt::before{content:""}.fa-plane-up::before{content:""}.fa-piggy-bank::before{content:""}.fa-battery-half::before{content:""}.fa-battery-3::before{content:""}.fa-mountain-city::before{content:""}.fa-coins::before{content:""}.fa-khanda::before{content:""}.fa-sliders::before{content:""}.fa-sliders-h::before{content:""}.fa-folder-tree::before{content:""}.fa-network-wired::before{content:""}.fa-map-pin::before{content:""}.fa-hamsa::before{content:""}.fa-cent-sign::before{content:""}.fa-flask::before{content:""}.fa-person-pregnant::before{content:""}.fa-wand-sparkles::before{content:""}.fa-ellipsis-vertical::before{content:""}.fa-ellipsis-v::before{content:""}.fa-ticket::before{content:""}.fa-power-off::before{content:""}.fa-right-long::before{content:""}.fa-long-arrow-alt-right::before{content:""}.fa-flag-usa::before{content:""}.fa-laptop-file::before{content:""}.fa-tty::before{content:""}.fa-teletype::before{content:""}.fa-diagram-next::before{content:""}.fa-person-rifle::before{content:""}.fa-house-medical-circle-exclamation::before{content:""}.fa-closed-captioning::before{content:""}.fa-person-hiking::before{content:""}.fa-hiking::before{content:""}.fa-venus-double::before{content:""}.fa-images::before{content:""}.fa-calculator::before{content:""}.fa-people-pulling::before{content:""}.fa-n::before{content:"N"}.fa-cable-car::before{content:""}.fa-tram::before{content:""}.fa-cloud-rain::before{content:""}.fa-building-circle-xmark::before{content:""}.fa-ship::before{content:""}.fa-arrows-down-to-line::before{content:""}.fa-download::before{content:""}.fa-face-grin::before{content:""}.fa-grin::before{content:""}.fa-delete-left::before{content:""}.fa-backspace::before{content:""}.fa-eye-dropper::before{content:""}.fa-eye-dropper-empty::before{content:""}.fa-eyedropper::before{content:""}.fa-file-circle-check::before{content:""}.fa-forward::before{content:""}.fa-mobile::before{content:""}.fa-mobile-android::before{content:""}.fa-mobile-phone::before{content:""}.fa-face-meh::before{content:""}.fa-meh::before{content:""}.fa-align-center::before{content:""}.fa-book-skull::before{content:""}.fa-book-dead::before{content:""}.fa-id-card::before{content:""}.fa-drivers-license::before{content:""}.fa-outdent::before{content:""}.fa-dedent::before{content:""}.fa-heart-circle-exclamation::before{content:""}.fa-house::before{content:""}.fa-home::before{content:""}.fa-home-alt::before{content:""}.fa-home-lg-alt::before{content:""}.fa-calendar-week::before{content:""}.fa-laptop-medical::before{content:""}.fa-b::before{content:"B"}.fa-file-medical::before{content:""}.fa-dice-one::before{content:""}.fa-kiwi-bird::before{content:""}.fa-arrow-right-arrow-left::before{content:""}.fa-exchange::before{content:""}.fa-rotate-right::before{content:""}.fa-redo-alt::before{content:""}.fa-rotate-forward::before{content:""}.fa-utensils::before{content:""}.fa-cutlery::before{content:""}.fa-arrow-up-wide-short::before{content:""}.fa-sort-amount-up::before{content:""}.fa-mill-sign::before{content:""}.fa-bowl-rice::before{content:""}.fa-skull::before{content:""}.fa-tower-broadcast::before{content:""}.fa-broadcast-tower::before{content:""}.fa-truck-pickup::before{content:""}.fa-up-long::before{content:""}.fa-long-arrow-alt-up::before{content:""}.fa-stop::before{content:""}.fa-code-merge::before{content:""}.fa-upload::before{content:""}.fa-hurricane::before{content:""}.fa-mound::before{content:""}.fa-toilet-portable::before{content:""}.fa-compact-disc::before{content:""}.fa-file-arrow-down::before{content:""}.fa-file-download::before{content:""}.fa-caravan::before{content:""}.fa-shield-cat::before{content:""}.fa-bolt::before{content:""}.fa-zap::before{content:""}.fa-glass-water::before{content:""}.fa-oil-well::before{content:""}.fa-vault::before{content:""}.fa-mars::before{content:""}.fa-toilet::before{content:""}.fa-plane-circle-xmark::before{content:""}.fa-yen-sign::before{content:""}.fa-cny::before{content:""}.fa-jpy::before{content:""}.fa-rmb::before{content:""}.fa-yen::before{content:""}.fa-ruble-sign::before{content:""}.fa-rouble::before{content:""}.fa-rub::before{content:""}.fa-ruble::before{content:""}.fa-sun::before{content:""}.fa-guitar::before{content:""}.fa-face-laugh-wink::before{content:""}.fa-laugh-wink::before{content:""}.fa-horse-head::before{content:""}.fa-bore-hole::before{content:""}.fa-industry::before{content:""}.fa-circle-down::before{content:""}.fa-arrow-alt-circle-down::before{content:""}.fa-arrows-turn-to-dots::before{content:""}.fa-florin-sign::before{content:""}.fa-arrow-down-short-wide::before{content:""}.fa-sort-amount-desc::before{content:""}.fa-sort-amount-down-alt::before{content:""}.fa-less-than::before{content:"\<"}.fa-angle-down::before{content:""}.fa-car-tunnel::before{content:""}.fa-head-side-cough::before{content:""}.fa-grip-lines::before{content:""}.fa-thumbs-down::before{content:""}.fa-user-lock::before{content:""}.fa-arrow-right-long::before{content:""}.fa-long-arrow-right::before{content:""}.fa-anchor-circle-xmark::before{content:""}.fa-ellipsis::before{content:""}.fa-ellipsis-h::before{content:""}.fa-chess-pawn::before{content:""}.fa-kit-medical::before{content:""}.fa-first-aid::before{content:""}.fa-person-through-window::before{content:""}.fa-toolbox::before{content:""}.fa-hands-holding-circle::before{content:""}.fa-bug::before{content:""}.fa-credit-card::before{content:""}.fa-credit-card-alt::before{content:""}.fa-car::before{content:""}.fa-automobile::before{content:""}.fa-hand-holding-hand::before{content:""}.fa-book-open-reader::before{content:""}.fa-book-reader::before{content:""}.fa-mountain-sun::before{content:""}.fa-arrows-left-right-to-line::before{content:""}.fa-dice-d20::before{content:""}.fa-truck-droplet::before{content:""}.fa-file-circle-xmark::before{content:""}.fa-temperature-arrow-up::before{content:""}.fa-temperature-up::before{content:""}.fa-medal::before{content:""}.fa-bed::before{content:""}.fa-square-h::before{content:""}.fa-h-square::before{content:""}.fa-podcast::before{content:""}.fa-temperature-full::before{content:""}.fa-temperature-4::before{content:""}.fa-thermometer-4::before{content:""}.fa-thermometer-full::before{content:""}.fa-bell::before{content:""}.fa-superscript::before{content:""}.fa-plug-circle-xmark::before{content:""}.fa-star-of-life::before{content:""}.fa-phone-slash::before{content:""}.fa-paint-roller::before{content:""}.fa-handshake-angle::before{content:""}.fa-hands-helping::before{content:""}.fa-location-dot::before{content:""}.fa-map-marker-alt::before{content:""}.fa-file::before{content:""}.fa-greater-than::before{content:"\>"}.fa-person-swimming::before{content:""}.fa-swimmer::before{content:""}.fa-arrow-down::before{content:""}.fa-droplet::before{content:""}.fa-tint::before{content:""}.fa-eraser::before{content:""}.fa-earth-americas::before{content:""}.fa-earth::before{content:""}.fa-earth-america::before{content:""}.fa-globe-americas::before{content:""}.fa-person-burst::before{content:""}.fa-dove::before{content:""}.fa-battery-empty::before{content:""}.fa-battery-0::before{content:""}.fa-socks::before{content:""}.fa-inbox::before{content:""}.fa-section::before{content:""}.fa-gauge-high::before{content:""}.fa-tachometer-alt::before{content:""}.fa-tachometer-alt-fast::before{content:""}.fa-envelope-open-text::before{content:""}.fa-hospital::before{content:""}.fa-hospital-alt::before{content:""}.fa-hospital-wide::before{content:""}.fa-wine-bottle::before{content:""}.fa-chess-rook::before{content:""}.fa-bars-staggered::before{content:""}.fa-reorder::before{content:""}.fa-stream::before{content:""}.fa-dharmachakra::before{content:""}.fa-hotdog::before{content:""}.fa-person-walking-with-cane::before{content:""}.fa-blind::before{content:""}.fa-drum::before{content:""}.fa-ice-cream::before{content:""}.fa-heart-circle-bolt::before{content:""}.fa-fax::before{content:""}.fa-paragraph::before{content:""}.fa-check-to-slot::before{content:""}.fa-vote-yea::before{content:""}.fa-star-half::before{content:""}.fa-boxes-stacked::before{content:""}.fa-boxes::before{content:""}.fa-boxes-alt::before{content:""}.fa-link::before{content:""}.fa-chain::before{content:""}.fa-ear-listen::before{content:""}.fa-assistive-listening-systems::before{content:""}.fa-tree-city::before{content:""}.fa-play::before{content:""}.fa-font::before{content:""}.fa-table-cells-row-lock::before{content:""}.fa-rupiah-sign::before{content:""}.fa-magnifying-glass::before{content:""}.fa-search::before{content:""}.fa-table-tennis-paddle-ball::before{content:""}.fa-ping-pong-paddle-ball::before{content:""}.fa-table-tennis::before{content:""}.fa-person-dots-from-line::before{content:""}.fa-diagnoses::before{content:""}.fa-trash-can-arrow-up::before{content:""}.fa-trash-restore-alt::before{content:""}.fa-naira-sign::before{content:""}.fa-cart-arrow-down::before{content:""}.fa-walkie-talkie::before{content:""}.fa-file-pen::before{content:""}.fa-file-edit::before{content:""}.fa-receipt::before{content:""}.fa-square-pen::before{content:""}.fa-pen-square::before{content:""}.fa-pencil-square::before{content:""}.fa-suitcase-rolling::before{content:""}.fa-person-circle-exclamation::before{content:""}.fa-chevron-down::before{content:""}.fa-battery-full::before{content:""}.fa-battery::before{content:""}.fa-battery-5::before{content:""}.fa-skull-crossbones::before{content:""}.fa-code-compare::before{content:""}.fa-list-ul::before{content:""}.fa-list-dots::before{content:""}.fa-school-lock::before{content:""}.fa-tower-cell::before{content:""}.fa-down-long::before{content:""}.fa-long-arrow-alt-down::before{content:""}.fa-ranking-star::before{content:""}.fa-chess-king::before{content:""}.fa-person-harassing::before{content:""}.fa-brazilian-real-sign::before{content:""}.fa-landmark-dome::before{content:""}.fa-landmark-alt::before{content:""}.fa-arrow-up::before{content:""}.fa-tv::before{content:""}.fa-television::before{content:""}.fa-tv-alt::before{content:""}.fa-shrimp::before{content:""}.fa-list-check::before{content:""}.fa-tasks::before{content:""}.fa-jug-detergent::before{content:""}.fa-circle-user::before{content:""}.fa-user-circle::before{content:""}.fa-user-shield::before{content:""}.fa-wind::before{content:""}.fa-car-burst::before{content:""}.fa-car-crash::before{content:""}.fa-y::before{content:"Y"}.fa-person-snowboarding::before{content:""}.fa-snowboarding::before{content:""}.fa-truck-fast::before{content:""}.fa-shipping-fast::before{content:""}.fa-fish::before{content:""}.fa-user-graduate::before{content:""}.fa-circle-half-stroke::before{content:""}.fa-adjust::before{content:""}.fa-clapperboard::before{content:""}.fa-circle-radiation::before{content:""}.fa-radiation-alt::before{content:""}.fa-baseball::before{content:""}.fa-baseball-ball::before{content:""}.fa-jet-fighter-up::before{content:""}.fa-diagram-project::before{content:""}.fa-project-diagram::before{content:""}.fa-copy::before{content:""}.fa-volume-xmark::before{content:""}.fa-volume-mute::before{content:""}.fa-volume-times::before{content:""}.fa-hand-sparkles::before{content:""}.fa-grip::before{content:""}.fa-grip-horizontal::before{content:""}.fa-share-from-square::before{content:""}.fa-share-square::before{content:""}.fa-child-combatant::before{content:""}.fa-child-rifle::before{content:""}.fa-gun::before{content:""}.fa-square-phone::before{content:""}.fa-phone-square::before{content:""}.fa-plus::before{content:"\+"}.fa-add::before{content:"\+"}.fa-expand::before{content:""}.fa-computer::before{content:""}.fa-xmark::before{content:""}.fa-close::before{content:""}.fa-multiply::before{content:""}.fa-remove::before{content:""}.fa-times::before{content:""}.fa-arrows-up-down-left-right::before{content:""}.fa-arrows::before{content:""}.fa-chalkboard-user::before{content:""}.fa-chalkboard-teacher::before{content:""}.fa-peso-sign::before{content:""}.fa-building-shield::before{content:""}.fa-baby::before{content:""}.fa-users-line::before{content:""}.fa-quote-left::before{content:""}.fa-quote-left-alt::before{content:""}.fa-tractor::before{content:""}.fa-trash-arrow-up::before{content:""}.fa-trash-restore::before{content:""}.fa-arrow-down-up-lock::before{content:""}.fa-lines-leaning::before{content:""}.fa-ruler-combined::before{content:""}.fa-copyright::before{content:""}.fa-equals::before{content:"\="}.fa-blender::before{content:""}.fa-teeth::before{content:""}.fa-shekel-sign::before{content:""}.fa-ils::before{content:""}.fa-shekel::before{content:""}.fa-sheqel::before{content:""}.fa-sheqel-sign::before{content:""}.fa-map::before{content:""}.fa-rocket::before{content:""}.fa-photo-film::before{content:""}.fa-photo-video::before{content:""}.fa-folder-minus::before{content:""}.fa-store::before{content:""}.fa-arrow-trend-up::before{content:""}.fa-plug-circle-minus::before{content:""}.fa-sign-hanging::before{content:""}.fa-sign::before{content:""}.fa-bezier-curve::before{content:""}.fa-bell-slash::before{content:""}.fa-tablet::before{content:""}.fa-tablet-android::before{content:""}.fa-school-flag::before{content:""}.fa-fill::before{content:""}.fa-angle-up::before{content:""}.fa-drumstick-bite::before{content:""}.fa-holly-berry::before{content:""}.fa-chevron-left::before{content:""}.fa-bacteria::before{content:""}.fa-hand-lizard::before{content:""}.fa-notdef::before{content:""}.fa-disease::before{content:""}.fa-briefcase-medical::before{content:""}.fa-genderless::before{content:""}.fa-chevron-right::before{content:""}.fa-retweet::before{content:""}.fa-car-rear::before{content:""}.fa-car-alt::before{content:""}.fa-pump-soap::before{content:""}.fa-video-slash::before{content:""}.fa-battery-quarter::before{content:""}.fa-battery-2::before{content:""}.fa-radio::before{content:""}.fa-baby-carriage::before{content:""}.fa-carriage-baby::before{content:""}.fa-traffic-light::before{content:""}.fa-thermometer::before{content:""}.fa-vr-cardboard::before{content:""}.fa-hand-middle-finger::before{content:""}.fa-percent::before{content:"\%"}.fa-percentage::before{content:"\%"}.fa-truck-moving::before{content:""}.fa-glass-water-droplet::before{content:""}.fa-display::before{content:""}.fa-face-smile::before{content:""}.fa-smile::before{content:""}.fa-thumbtack::before{content:""}.fa-thumb-tack::before{content:""}.fa-trophy::before{content:""}.fa-person-praying::before{content:""}.fa-pray::before{content:""}.fa-hammer::before{content:""}.fa-hand-peace::before{content:""}.fa-rotate::before{content:""}.fa-sync-alt::before{content:""}.fa-spinner::before{content:""}.fa-robot::before{content:""}.fa-peace::before{content:""}.fa-gears::before{content:""}.fa-cogs::before{content:""}.fa-warehouse::before{content:""}.fa-arrow-up-right-dots::before{content:""}.fa-splotch::before{content:""}.fa-face-grin-hearts::before{content:""}.fa-grin-hearts::before{content:""}.fa-dice-four::before{content:""}.fa-sim-card::before{content:""}.fa-transgender::before{content:""}.fa-transgender-alt::before{content:""}.fa-mercury::before{content:""}.fa-arrow-turn-down::before{content:""}.fa-level-down::before{content:""}.fa-person-falling-burst::before{content:""}.fa-award::before{content:""}.fa-ticket-simple::before{content:""}.fa-ticket-alt::before{content:""}.fa-building::before{content:""}.fa-angles-left::before{content:""}.fa-angle-double-left::before{content:""}.fa-qrcode::before{content:""}.fa-clock-rotate-left::before{content:""}.fa-history::before{content:""}.fa-face-grin-beam-sweat::before{content:""}.fa-grin-beam-sweat::before{content:""}.fa-file-export::before{content:""}.fa-arrow-right-from-file::before{content:""}.fa-shield::before{content:""}.fa-shield-blank::before{content:""}.fa-arrow-up-short-wide::before{content:""}.fa-sort-amount-up-alt::before{content:""}.fa-house-medical::before{content:""}.fa-golf-ball-tee::before{content:""}.fa-golf-ball::before{content:""}.fa-circle-chevron-left::before{content:""}.fa-chevron-circle-left::before{content:""}.fa-house-chimney-window::before{content:""}.fa-pen-nib::before{content:""}.fa-tent-arrow-turn-left::before{content:""}.fa-tents::before{content:""}.fa-wand-magic::before{content:""}.fa-magic::before{content:""}.fa-dog::before{content:""}.fa-carrot::before{content:""}.fa-moon::before{content:""}.fa-wine-glass-empty::before{content:""}.fa-wine-glass-alt::before{content:""}.fa-cheese::before{content:""}.fa-yin-yang::before{content:""}.fa-music::before{content:""}.fa-code-commit::before{content:""}.fa-temperature-low::before{content:""}.fa-person-biking::before{content:""}.fa-biking::before{content:""}.fa-broom::before{content:""}.fa-shield-heart::before{content:""}.fa-gopuram::before{content:""}.fa-earth-oceania::before{content:""}.fa-globe-oceania::before{content:""}.fa-square-xmark::before{content:""}.fa-times-square::before{content:""}.fa-xmark-square::before{content:""}.fa-hashtag::before{content:"\#"}.fa-up-right-and-down-left-from-center::before{content:""}.fa-expand-alt::before{content:""}.fa-oil-can::before{content:""}.fa-t::before{content:"T"}.fa-hippo::before{content:""}.fa-chart-column::before{content:""}.fa-infinity::before{content:""}.fa-vial-circle-check::before{content:""}.fa-person-arrow-down-to-line::before{content:""}.fa-voicemail::before{content:""}.fa-fan::before{content:""}.fa-person-walking-luggage::before{content:""}.fa-up-down::before{content:""}.fa-arrows-alt-v::before{content:""}.fa-cloud-moon-rain::before{content:""}.fa-calendar::before{content:""}.fa-trailer::before{content:""}.fa-bahai::before{content:""}.fa-haykal::before{content:""}.fa-sd-card::before{content:""}.fa-dragon::before{content:""}.fa-shoe-prints::before{content:""}.fa-circle-plus::before{content:""}.fa-plus-circle::before{content:""}.fa-face-grin-tongue-wink::before{content:""}.fa-grin-tongue-wink::before{content:""}.fa-hand-holding::before{content:""}.fa-plug-circle-exclamation::before{content:""}.fa-link-slash::before{content:""}.fa-chain-broken::before{content:""}.fa-chain-slash::before{content:""}.fa-unlink::before{content:""}.fa-clone::before{content:""}.fa-person-walking-arrow-loop-left::before{content:""}.fa-arrow-up-z-a::before{content:""}.fa-sort-alpha-up-alt::before{content:""}.fa-fire-flame-curved::before{content:""}.fa-fire-alt::before{content:""}.fa-tornado::before{content:""}.fa-file-circle-plus::before{content:""}.fa-book-quran::before{content:""}.fa-quran::before{content:""}.fa-anchor::before{content:""}.fa-border-all::before{content:""}.fa-face-angry::before{content:""}.fa-angry::before{content:""}.fa-cookie-bite::before{content:""}.fa-arrow-trend-down::before{content:""}.fa-rss::before{content:""}.fa-feed::before{content:""}.fa-draw-polygon::before{content:""}.fa-scale-balanced::before{content:""}.fa-balance-scale::before{content:""}.fa-gauge-simple-high::before{content:""}.fa-tachometer::before{content:""}.fa-tachometer-fast::before{content:""}.fa-shower::before{content:""}.fa-desktop::before{content:""}.fa-desktop-alt::before{content:""}.fa-m::before{content:"M"}.fa-table-list::before{content:""}.fa-th-list::before{content:""}.fa-comment-sms::before{content:""}.fa-sms::before{content:""}.fa-book::before{content:""}.fa-user-plus::before{content:""}.fa-check::before{content:""}.fa-battery-three-quarters::before{content:""}.fa-battery-4::before{content:""}.fa-house-circle-check::before{content:""}.fa-angle-left::before{content:""}.fa-diagram-successor::before{content:""}.fa-truck-arrow-right::before{content:""}.fa-arrows-split-up-and-left::before{content:""}.fa-hand-fist::before{content:""}.fa-fist-raised::before{content:""}.fa-cloud-moon::before{content:""}.fa-briefcase::before{content:""}.fa-person-falling::before{content:""}.fa-image-portrait::before{content:""}.fa-portrait::before{content:""}.fa-user-tag::before{content:""}.fa-rug::before{content:""}.fa-earth-europe::before{content:""}.fa-globe-europe::before{content:""}.fa-cart-flatbed-suitcase::before{content:""}.fa-luggage-cart::before{content:""}.fa-rectangle-xmark::before{content:""}.fa-rectangle-times::before{content:""}.fa-times-rectangle::before{content:""}.fa-window-close::before{content:""}.fa-baht-sign::before{content:""}.fa-book-open::before{content:""}.fa-book-journal-whills::before{content:""}.fa-journal-whills::before{content:""}.fa-handcuffs::before{content:""}.fa-triangle-exclamation::before{content:""}.fa-exclamation-triangle::before{content:""}.fa-warning::before{content:""}.fa-database::before{content:""}.fa-share::before{content:""}.fa-mail-forward::before{content:""}.fa-bottle-droplet::before{content:""}.fa-mask-face::before{content:""}.fa-hill-rockslide::before{content:""}.fa-right-left::before{content:""}.fa-exchange-alt::before{content:""}.fa-paper-plane::before{content:""}.fa-road-circle-exclamation::before{content:""}.fa-dungeon::before{content:""}.fa-align-right::before{content:""}.fa-money-bill-1-wave::before{content:""}.fa-money-bill-wave-alt::before{content:""}.fa-life-ring::before{content:""}.fa-hands::before{content:""}.fa-sign-language::before{content:""}.fa-signing::before{content:""}.fa-calendar-day::before{content:""}.fa-water-ladder::before{content:""}.fa-ladder-water::before{content:""}.fa-swimming-pool::before{content:""}.fa-arrows-up-down::before{content:""}.fa-arrows-v::before{content:""}.fa-face-grimace::before{content:""}.fa-grimace::before{content:""}.fa-wheelchair-move::before{content:""}.fa-wheelchair-alt::before{content:""}.fa-turn-down::before{content:""}.fa-level-down-alt::before{content:""}.fa-person-walking-arrow-right::before{content:""}.fa-square-envelope::before{content:""}.fa-envelope-square::before{content:""}.fa-dice::before{content:""}.fa-bowling-ball::before{content:""}.fa-brain::before{content:""}.fa-bandage::before{content:""}.fa-band-aid::before{content:""}.fa-calendar-minus::before{content:""}.fa-circle-xmark::before{content:""}.fa-times-circle::before{content:""}.fa-xmark-circle::before{content:""}.fa-gifts::before{content:""}.fa-hotel::before{content:""}.fa-earth-asia::before{content:""}.fa-globe-asia::before{content:""}.fa-id-card-clip::before{content:""}.fa-id-card-alt::before{content:""}.fa-magnifying-glass-plus::before{content:""}.fa-search-plus::before{content:""}.fa-thumbs-up::before{content:""}.fa-user-clock::before{content:""}.fa-hand-dots::before{content:""}.fa-allergies::before{content:""}.fa-file-invoice::before{content:""}.fa-window-minimize::before{content:""}.fa-mug-saucer::before{content:""}.fa-coffee::before{content:""}.fa-brush::before{content:""}.fa-mask::before{content:""}.fa-magnifying-glass-minus::before{content:""}.fa-search-minus::before{content:""}.fa-ruler-vertical::before{content:""}.fa-user-large::before{content:""}.fa-user-alt::before{content:""}.fa-train-tram::before{content:""}.fa-user-nurse::before{content:""}.fa-syringe::before{content:""}.fa-cloud-sun::before{content:""}.fa-stopwatch-20::before{content:""}.fa-square-full::before{content:""}.fa-magnet::before{content:""}.fa-jar::before{content:""}.fa-note-sticky::before{content:""}.fa-sticky-note::before{content:""}.fa-bug-slash::before{content:""}.fa-arrow-up-from-water-pump::before{content:""}.fa-bone::before{content:""}.fa-table-cells-row-unlock::before{content:""}.fa-user-injured::before{content:""}.fa-face-sad-tear::before{content:""}.fa-sad-tear::before{content:""}.fa-plane::before{content:""}.fa-tent-arrows-down::before{content:""}.fa-exclamation::before{content:"\!"}.fa-arrows-spin::before{content:""}.fa-print::before{content:""}.fa-turkish-lira-sign::before{content:""}.fa-try::before{content:""}.fa-turkish-lira::before{content:""}.fa-dollar-sign::before{content:"\$"}.fa-dollar::before{content:"\$"}.fa-usd::before{content:"\$"}.fa-x::before{content:"X"}.fa-magnifying-glass-dollar::before{content:""}.fa-search-dollar::before{content:""}.fa-users-gear::before{content:""}.fa-users-cog::before{content:""}.fa-person-military-pointing::before{content:""}.fa-building-columns::before{content:""}.fa-bank::before{content:""}.fa-institution::before{content:""}.fa-museum::before{content:""}.fa-university::before{content:""}.fa-umbrella::before{content:""}.fa-trowel::before{content:""}.fa-d::before{content:"D"}.fa-stapler::before{content:""}.fa-masks-theater::before{content:""}.fa-theater-masks::before{content:""}.fa-kip-sign::before{content:""}.fa-hand-point-left::before{content:""}.fa-handshake-simple::before{content:""}.fa-handshake-alt::before{content:""}.fa-jet-fighter::before{content:""}.fa-fighter-jet::before{content:""}.fa-square-share-nodes::before{content:""}.fa-share-alt-square::before{content:""}.fa-barcode::before{content:""}.fa-plus-minus::before{content:""}.fa-video::before{content:""}.fa-video-camera::before{content:""}.fa-graduation-cap::before{content:""}.fa-mortar-board::before{content:""}.fa-hand-holding-medical::before{content:""}.fa-person-circle-check::before{content:""}.fa-turn-up::before{content:""}.fa-level-up-alt::before{content:""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}/*!
- * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
+ */.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas::before,.far::before,.fab::before,.fa-solid::before,.fa-regular::before,.fa-brands::before,.fa::before{content:var(--fa)}.fa-classic,.fas,.fa-solid,.far,.fa-regular{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.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-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-0.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-0.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(-1*var(--fa-li-width, 2em));position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, 0.1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, 0.08em);padding:var(--fa-border-padding, 0.2em 0.25em 0.15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, 0.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, 0.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 2s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, steps(8))}@media(prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-bounce{0%{transform:scale(1, 1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0)}57%{transform:scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em))}64%{transform:scale(1, 1) translateY(0)}100%{transform:scale(1, 1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, 0.4)}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity, 0.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,100%{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scale(-1, 1)}.fa-flip-vertical{transform:scale(1, -1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1, -1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle, 0))}.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%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0{--fa:"\30 ";--fa--fa:"\30 \30 "}.fa-1{--fa:"\31 ";--fa--fa:"\31 \31 "}.fa-2{--fa:"\32 ";--fa--fa:"\32 \32 "}.fa-3{--fa:"\33 ";--fa--fa:"\33 \33 "}.fa-4{--fa:"\34 ";--fa--fa:"\34 \34 "}.fa-5{--fa:"\35 ";--fa--fa:"\35 \35 "}.fa-6{--fa:"\36 ";--fa--fa:"\36 \36 "}.fa-7{--fa:"\37 ";--fa--fa:"\37 \37 "}.fa-8{--fa:"\38 ";--fa--fa:"\38 \38 "}.fa-9{--fa:"\39 ";--fa--fa:"\39 \39 "}.fa-fill-drip{--fa:"";--fa--fa:""}.fa-arrows-to-circle{--fa:"";--fa--fa:""}.fa-circle-chevron-right{--fa:"";--fa--fa:""}.fa-chevron-circle-right{--fa:"";--fa--fa:""}.fa-at{--fa:"\@";--fa--fa:"\@\@"}.fa-trash-can{--fa:"";--fa--fa:""}.fa-trash-alt{--fa:"";--fa--fa:""}.fa-text-height{--fa:"";--fa--fa:""}.fa-user-xmark{--fa:"";--fa--fa:""}.fa-user-times{--fa:"";--fa--fa:""}.fa-stethoscope{--fa:"";--fa--fa:""}.fa-message{--fa:"";--fa--fa:""}.fa-comment-alt{--fa:"";--fa--fa:""}.fa-info{--fa:"";--fa--fa:""}.fa-down-left-and-up-right-to-center{--fa:"";--fa--fa:""}.fa-compress-alt{--fa:"";--fa--fa:""}.fa-explosion{--fa:"";--fa--fa:""}.fa-file-lines{--fa:"";--fa--fa:""}.fa-file-alt{--fa:"";--fa--fa:""}.fa-file-text{--fa:"";--fa--fa:""}.fa-wave-square{--fa:"";--fa--fa:""}.fa-ring{--fa:"";--fa--fa:""}.fa-building-un{--fa:"";--fa--fa:""}.fa-dice-three{--fa:"";--fa--fa:""}.fa-calendar-days{--fa:"";--fa--fa:""}.fa-calendar-alt{--fa:"";--fa--fa:""}.fa-anchor-circle-check{--fa:"";--fa--fa:""}.fa-building-circle-arrow-right{--fa:"";--fa--fa:""}.fa-volleyball{--fa:"";--fa--fa:""}.fa-volleyball-ball{--fa:"";--fa--fa:""}.fa-arrows-up-to-line{--fa:"";--fa--fa:""}.fa-sort-down{--fa:"";--fa--fa:""}.fa-sort-desc{--fa:"";--fa--fa:""}.fa-circle-minus{--fa:"";--fa--fa:""}.fa-minus-circle{--fa:"";--fa--fa:""}.fa-door-open{--fa:"";--fa--fa:""}.fa-right-from-bracket{--fa:"";--fa--fa:""}.fa-sign-out-alt{--fa:"";--fa--fa:""}.fa-atom{--fa:"";--fa--fa:""}.fa-soap{--fa:"";--fa--fa:""}.fa-icons{--fa:"";--fa--fa:""}.fa-heart-music-camera-bolt{--fa:"";--fa--fa:""}.fa-microphone-lines-slash{--fa:"";--fa--fa:""}.fa-microphone-alt-slash{--fa:"";--fa--fa:""}.fa-bridge-circle-check{--fa:"";--fa--fa:""}.fa-pump-medical{--fa:"";--fa--fa:""}.fa-fingerprint{--fa:"";--fa--fa:""}.fa-hand-point-right{--fa:"";--fa--fa:""}.fa-magnifying-glass-location{--fa:"";--fa--fa:""}.fa-search-location{--fa:"";--fa--fa:""}.fa-forward-step{--fa:"";--fa--fa:""}.fa-step-forward{--fa:"";--fa--fa:""}.fa-face-smile-beam{--fa:"";--fa--fa:""}.fa-smile-beam{--fa:"";--fa--fa:""}.fa-flag-checkered{--fa:"";--fa--fa:""}.fa-football{--fa:"";--fa--fa:""}.fa-football-ball{--fa:"";--fa--fa:""}.fa-school-circle-exclamation{--fa:"";--fa--fa:""}.fa-crop{--fa:"";--fa--fa:""}.fa-angles-down{--fa:"";--fa--fa:""}.fa-angle-double-down{--fa:"";--fa--fa:""}.fa-users-rectangle{--fa:"";--fa--fa:""}.fa-people-roof{--fa:"";--fa--fa:""}.fa-people-line{--fa:"";--fa--fa:""}.fa-beer-mug-empty{--fa:"";--fa--fa:""}.fa-beer{--fa:"";--fa--fa:""}.fa-diagram-predecessor{--fa:"";--fa--fa:""}.fa-arrow-up-long{--fa:"";--fa--fa:""}.fa-long-arrow-up{--fa:"";--fa--fa:""}.fa-fire-flame-simple{--fa:"";--fa--fa:""}.fa-burn{--fa:"";--fa--fa:""}.fa-person{--fa:"";--fa--fa:""}.fa-male{--fa:"";--fa--fa:""}.fa-laptop{--fa:"";--fa--fa:""}.fa-file-csv{--fa:"";--fa--fa:""}.fa-menorah{--fa:"";--fa--fa:""}.fa-truck-plane{--fa:"";--fa--fa:""}.fa-record-vinyl{--fa:"";--fa--fa:""}.fa-face-grin-stars{--fa:"";--fa--fa:""}.fa-grin-stars{--fa:"";--fa--fa:""}.fa-bong{--fa:"";--fa--fa:""}.fa-spaghetti-monster-flying{--fa:"";--fa--fa:""}.fa-pastafarianism{--fa:"";--fa--fa:""}.fa-arrow-down-up-across-line{--fa:"";--fa--fa:""}.fa-spoon{--fa:"";--fa--fa:""}.fa-utensil-spoon{--fa:"";--fa--fa:""}.fa-jar-wheat{--fa:"";--fa--fa:""}.fa-envelopes-bulk{--fa:"";--fa--fa:""}.fa-mail-bulk{--fa:"";--fa--fa:""}.fa-file-circle-exclamation{--fa:"";--fa--fa:""}.fa-circle-h{--fa:"";--fa--fa:""}.fa-hospital-symbol{--fa:"";--fa--fa:""}.fa-pager{--fa:"";--fa--fa:""}.fa-address-book{--fa:"";--fa--fa:""}.fa-contact-book{--fa:"";--fa--fa:""}.fa-strikethrough{--fa:"";--fa--fa:""}.fa-k{--fa:"K";--fa--fa:"KK"}.fa-landmark-flag{--fa:"";--fa--fa:""}.fa-pencil{--fa:"";--fa--fa:""}.fa-pencil-alt{--fa:"";--fa--fa:""}.fa-backward{--fa:"";--fa--fa:""}.fa-caret-right{--fa:"";--fa--fa:""}.fa-comments{--fa:"";--fa--fa:""}.fa-paste{--fa:"";--fa--fa:""}.fa-file-clipboard{--fa:"";--fa--fa:""}.fa-code-pull-request{--fa:"";--fa--fa:""}.fa-clipboard-list{--fa:"";--fa--fa:""}.fa-truck-ramp-box{--fa:"";--fa--fa:""}.fa-truck-loading{--fa:"";--fa--fa:""}.fa-user-check{--fa:"";--fa--fa:""}.fa-vial-virus{--fa:"";--fa--fa:""}.fa-sheet-plastic{--fa:"";--fa--fa:""}.fa-blog{--fa:"";--fa--fa:""}.fa-user-ninja{--fa:"";--fa--fa:""}.fa-person-arrow-up-from-line{--fa:"";--fa--fa:""}.fa-scroll-torah{--fa:"";--fa--fa:""}.fa-torah{--fa:"";--fa--fa:""}.fa-broom-ball{--fa:"";--fa--fa:""}.fa-quidditch{--fa:"";--fa--fa:""}.fa-quidditch-broom-ball{--fa:"";--fa--fa:""}.fa-toggle-off{--fa:"";--fa--fa:""}.fa-box-archive{--fa:"";--fa--fa:""}.fa-archive{--fa:"";--fa--fa:""}.fa-person-drowning{--fa:"";--fa--fa:""}.fa-arrow-down-9-1{--fa:"";--fa--fa:""}.fa-sort-numeric-desc{--fa:"";--fa--fa:""}.fa-sort-numeric-down-alt{--fa:"";--fa--fa:""}.fa-face-grin-tongue-squint{--fa:"";--fa--fa:""}.fa-grin-tongue-squint{--fa:"";--fa--fa:""}.fa-spray-can{--fa:"";--fa--fa:""}.fa-truck-monster{--fa:"";--fa--fa:""}.fa-w{--fa:"W";--fa--fa:"WW"}.fa-earth-africa{--fa:"";--fa--fa:""}.fa-globe-africa{--fa:"";--fa--fa:""}.fa-rainbow{--fa:"";--fa--fa:""}.fa-circle-notch{--fa:"";--fa--fa:""}.fa-tablet-screen-button{--fa:"";--fa--fa:""}.fa-tablet-alt{--fa:"";--fa--fa:""}.fa-paw{--fa:"";--fa--fa:""}.fa-cloud{--fa:"";--fa--fa:""}.fa-trowel-bricks{--fa:"";--fa--fa:""}.fa-face-flushed{--fa:"";--fa--fa:""}.fa-flushed{--fa:"";--fa--fa:""}.fa-hospital-user{--fa:"";--fa--fa:""}.fa-tent-arrow-left-right{--fa:"";--fa--fa:""}.fa-gavel{--fa:"";--fa--fa:""}.fa-legal{--fa:"";--fa--fa:""}.fa-binoculars{--fa:"";--fa--fa:""}.fa-microphone-slash{--fa:"";--fa--fa:""}.fa-box-tissue{--fa:"";--fa--fa:""}.fa-motorcycle{--fa:"";--fa--fa:""}.fa-bell-concierge{--fa:"";--fa--fa:""}.fa-concierge-bell{--fa:"";--fa--fa:""}.fa-pen-ruler{--fa:"";--fa--fa:""}.fa-pencil-ruler{--fa:"";--fa--fa:""}.fa-people-arrows{--fa:"";--fa--fa:""}.fa-people-arrows-left-right{--fa:"";--fa--fa:""}.fa-mars-and-venus-burst{--fa:"";--fa--fa:""}.fa-square-caret-right{--fa:"";--fa--fa:""}.fa-caret-square-right{--fa:"";--fa--fa:""}.fa-scissors{--fa:"";--fa--fa:""}.fa-cut{--fa:"";--fa--fa:""}.fa-sun-plant-wilt{--fa:"";--fa--fa:""}.fa-toilets-portable{--fa:"";--fa--fa:""}.fa-hockey-puck{--fa:"";--fa--fa:""}.fa-table{--fa:"";--fa--fa:""}.fa-magnifying-glass-arrow-right{--fa:"";--fa--fa:""}.fa-tachograph-digital{--fa:"";--fa--fa:""}.fa-digital-tachograph{--fa:"";--fa--fa:""}.fa-users-slash{--fa:"";--fa--fa:""}.fa-clover{--fa:"";--fa--fa:""}.fa-reply{--fa:"";--fa--fa:""}.fa-mail-reply{--fa:"";--fa--fa:""}.fa-star-and-crescent{--fa:"";--fa--fa:""}.fa-house-fire{--fa:"";--fa--fa:""}.fa-square-minus{--fa:"";--fa--fa:""}.fa-minus-square{--fa:"";--fa--fa:""}.fa-helicopter{--fa:"";--fa--fa:""}.fa-compass{--fa:"";--fa--fa:""}.fa-square-caret-down{--fa:"";--fa--fa:""}.fa-caret-square-down{--fa:"";--fa--fa:""}.fa-file-circle-question{--fa:"";--fa--fa:""}.fa-laptop-code{--fa:"";--fa--fa:""}.fa-swatchbook{--fa:"";--fa--fa:""}.fa-prescription-bottle{--fa:"";--fa--fa:""}.fa-bars{--fa:"";--fa--fa:""}.fa-navicon{--fa:"";--fa--fa:""}.fa-people-group{--fa:"";--fa--fa:""}.fa-hourglass-end{--fa:"";--fa--fa:""}.fa-hourglass-3{--fa:"";--fa--fa:""}.fa-heart-crack{--fa:"";--fa--fa:""}.fa-heart-broken{--fa:"";--fa--fa:""}.fa-square-up-right{--fa:"";--fa--fa:""}.fa-external-link-square-alt{--fa:"";--fa--fa:""}.fa-face-kiss-beam{--fa:"";--fa--fa:""}.fa-kiss-beam{--fa:"";--fa--fa:""}.fa-film{--fa:"";--fa--fa:""}.fa-ruler-horizontal{--fa:"";--fa--fa:""}.fa-people-robbery{--fa:"";--fa--fa:""}.fa-lightbulb{--fa:"";--fa--fa:""}.fa-caret-left{--fa:"";--fa--fa:""}.fa-circle-exclamation{--fa:"";--fa--fa:""}.fa-exclamation-circle{--fa:"";--fa--fa:""}.fa-school-circle-xmark{--fa:"";--fa--fa:""}.fa-arrow-right-from-bracket{--fa:"";--fa--fa:""}.fa-sign-out{--fa:"";--fa--fa:""}.fa-circle-chevron-down{--fa:"";--fa--fa:""}.fa-chevron-circle-down{--fa:"";--fa--fa:""}.fa-unlock-keyhole{--fa:"";--fa--fa:""}.fa-unlock-alt{--fa:"";--fa--fa:""}.fa-cloud-showers-heavy{--fa:"";--fa--fa:""}.fa-headphones-simple{--fa:"";--fa--fa:""}.fa-headphones-alt{--fa:"";--fa--fa:""}.fa-sitemap{--fa:"";--fa--fa:""}.fa-circle-dollar-to-slot{--fa:"";--fa--fa:""}.fa-donate{--fa:"";--fa--fa:""}.fa-memory{--fa:"";--fa--fa:""}.fa-road-spikes{--fa:"";--fa--fa:""}.fa-fire-burner{--fa:"";--fa--fa:""}.fa-flag{--fa:"";--fa--fa:""}.fa-hanukiah{--fa:"";--fa--fa:""}.fa-feather{--fa:"";--fa--fa:""}.fa-volume-low{--fa:"";--fa--fa:""}.fa-volume-down{--fa:"";--fa--fa:""}.fa-comment-slash{--fa:"";--fa--fa:""}.fa-cloud-sun-rain{--fa:"";--fa--fa:""}.fa-compress{--fa:"";--fa--fa:""}.fa-wheat-awn{--fa:"";--fa--fa:""}.fa-wheat-alt{--fa:"";--fa--fa:""}.fa-ankh{--fa:"";--fa--fa:""}.fa-hands-holding-child{--fa:"";--fa--fa:""}.fa-asterisk{--fa:"\*";--fa--fa:"\*\*"}.fa-square-check{--fa:"";--fa--fa:""}.fa-check-square{--fa:"";--fa--fa:""}.fa-peseta-sign{--fa:"";--fa--fa:""}.fa-heading{--fa:"";--fa--fa:""}.fa-header{--fa:"";--fa--fa:""}.fa-ghost{--fa:"";--fa--fa:""}.fa-list{--fa:"";--fa--fa:""}.fa-list-squares{--fa:"";--fa--fa:""}.fa-square-phone-flip{--fa:"";--fa--fa:""}.fa-phone-square-alt{--fa:"";--fa--fa:""}.fa-cart-plus{--fa:"";--fa--fa:""}.fa-gamepad{--fa:"";--fa--fa:""}.fa-circle-dot{--fa:"";--fa--fa:""}.fa-dot-circle{--fa:"";--fa--fa:""}.fa-face-dizzy{--fa:"";--fa--fa:""}.fa-dizzy{--fa:"";--fa--fa:""}.fa-egg{--fa:"";--fa--fa:""}.fa-house-medical-circle-xmark{--fa:"";--fa--fa:""}.fa-campground{--fa:"";--fa--fa:""}.fa-folder-plus{--fa:"";--fa--fa:""}.fa-futbol{--fa:"";--fa--fa:""}.fa-futbol-ball{--fa:"";--fa--fa:""}.fa-soccer-ball{--fa:"";--fa--fa:""}.fa-paintbrush{--fa:"";--fa--fa:""}.fa-paint-brush{--fa:"";--fa--fa:""}.fa-lock{--fa:"";--fa--fa:""}.fa-gas-pump{--fa:"";--fa--fa:""}.fa-hot-tub-person{--fa:"";--fa--fa:""}.fa-hot-tub{--fa:"";--fa--fa:""}.fa-map-location{--fa:"";--fa--fa:""}.fa-map-marked{--fa:"";--fa--fa:""}.fa-house-flood-water{--fa:"";--fa--fa:""}.fa-tree{--fa:"";--fa--fa:""}.fa-bridge-lock{--fa:"";--fa--fa:""}.fa-sack-dollar{--fa:"";--fa--fa:""}.fa-pen-to-square{--fa:"";--fa--fa:""}.fa-edit{--fa:"";--fa--fa:""}.fa-car-side{--fa:"";--fa--fa:""}.fa-share-nodes{--fa:"";--fa--fa:""}.fa-share-alt{--fa:"";--fa--fa:""}.fa-heart-circle-minus{--fa:"";--fa--fa:""}.fa-hourglass-half{--fa:"";--fa--fa:""}.fa-hourglass-2{--fa:"";--fa--fa:""}.fa-microscope{--fa:"";--fa--fa:""}.fa-sink{--fa:"";--fa--fa:""}.fa-bag-shopping{--fa:"";--fa--fa:""}.fa-shopping-bag{--fa:"";--fa--fa:""}.fa-arrow-down-z-a{--fa:"";--fa--fa:""}.fa-sort-alpha-desc{--fa:"";--fa--fa:""}.fa-sort-alpha-down-alt{--fa:"";--fa--fa:""}.fa-mitten{--fa:"";--fa--fa:""}.fa-person-rays{--fa:"";--fa--fa:""}.fa-users{--fa:"";--fa--fa:""}.fa-eye-slash{--fa:"";--fa--fa:""}.fa-flask-vial{--fa:"";--fa--fa:""}.fa-hand{--fa:"";--fa--fa:""}.fa-hand-paper{--fa:"";--fa--fa:""}.fa-om{--fa:"";--fa--fa:""}.fa-worm{--fa:"";--fa--fa:""}.fa-house-circle-xmark{--fa:"";--fa--fa:""}.fa-plug{--fa:"";--fa--fa:""}.fa-chevron-up{--fa:"";--fa--fa:""}.fa-hand-spock{--fa:"";--fa--fa:""}.fa-stopwatch{--fa:"";--fa--fa:""}.fa-face-kiss{--fa:"";--fa--fa:""}.fa-kiss{--fa:"";--fa--fa:""}.fa-bridge-circle-xmark{--fa:"";--fa--fa:""}.fa-face-grin-tongue{--fa:"";--fa--fa:""}.fa-grin-tongue{--fa:"";--fa--fa:""}.fa-chess-bishop{--fa:"";--fa--fa:""}.fa-face-grin-wink{--fa:"";--fa--fa:""}.fa-grin-wink{--fa:"";--fa--fa:""}.fa-ear-deaf{--fa:"";--fa--fa:""}.fa-deaf{--fa:"";--fa--fa:""}.fa-deafness{--fa:"";--fa--fa:""}.fa-hard-of-hearing{--fa:"";--fa--fa:""}.fa-road-circle-check{--fa:"";--fa--fa:""}.fa-dice-five{--fa:"";--fa--fa:""}.fa-square-rss{--fa:"";--fa--fa:""}.fa-rss-square{--fa:"";--fa--fa:""}.fa-land-mine-on{--fa:"";--fa--fa:""}.fa-i-cursor{--fa:"";--fa--fa:""}.fa-stamp{--fa:"";--fa--fa:""}.fa-stairs{--fa:"";--fa--fa:""}.fa-i{--fa:"I";--fa--fa:"II"}.fa-hryvnia-sign{--fa:"";--fa--fa:""}.fa-hryvnia{--fa:"";--fa--fa:""}.fa-pills{--fa:"";--fa--fa:""}.fa-face-grin-wide{--fa:"";--fa--fa:""}.fa-grin-alt{--fa:"";--fa--fa:""}.fa-tooth{--fa:"";--fa--fa:""}.fa-v{--fa:"V";--fa--fa:"VV"}.fa-bangladeshi-taka-sign{--fa:"";--fa--fa:""}.fa-bicycle{--fa:"";--fa--fa:""}.fa-staff-snake{--fa:"";--fa--fa:""}.fa-rod-asclepius{--fa:"";--fa--fa:""}.fa-rod-snake{--fa:"";--fa--fa:""}.fa-staff-aesculapius{--fa:"";--fa--fa:""}.fa-head-side-cough-slash{--fa:"";--fa--fa:""}.fa-truck-medical{--fa:"";--fa--fa:""}.fa-ambulance{--fa:"";--fa--fa:""}.fa-wheat-awn-circle-exclamation{--fa:"";--fa--fa:""}.fa-snowman{--fa:"";--fa--fa:""}.fa-mortar-pestle{--fa:"";--fa--fa:""}.fa-road-barrier{--fa:"";--fa--fa:""}.fa-school{--fa:"";--fa--fa:""}.fa-igloo{--fa:"";--fa--fa:""}.fa-joint{--fa:"";--fa--fa:""}.fa-angle-right{--fa:"";--fa--fa:""}.fa-horse{--fa:"";--fa--fa:""}.fa-q{--fa:"Q";--fa--fa:"QQ"}.fa-g{--fa:"G";--fa--fa:"GG"}.fa-notes-medical{--fa:"";--fa--fa:""}.fa-temperature-half{--fa:"";--fa--fa:""}.fa-temperature-2{--fa:"";--fa--fa:""}.fa-thermometer-2{--fa:"";--fa--fa:""}.fa-thermometer-half{--fa:"";--fa--fa:""}.fa-dong-sign{--fa:"";--fa--fa:""}.fa-capsules{--fa:"";--fa--fa:""}.fa-poo-storm{--fa:"";--fa--fa:""}.fa-poo-bolt{--fa:"";--fa--fa:""}.fa-face-frown-open{--fa:"";--fa--fa:""}.fa-frown-open{--fa:"";--fa--fa:""}.fa-hand-point-up{--fa:"";--fa--fa:""}.fa-money-bill{--fa:"";--fa--fa:""}.fa-bookmark{--fa:"";--fa--fa:""}.fa-align-justify{--fa:"";--fa--fa:""}.fa-umbrella-beach{--fa:"";--fa--fa:""}.fa-helmet-un{--fa:"";--fa--fa:""}.fa-bullseye{--fa:"";--fa--fa:""}.fa-bacon{--fa:"";--fa--fa:""}.fa-hand-point-down{--fa:"";--fa--fa:""}.fa-arrow-up-from-bracket{--fa:"";--fa--fa:""}.fa-folder{--fa:"";--fa--fa:""}.fa-folder-blank{--fa:"";--fa--fa:""}.fa-file-waveform{--fa:"";--fa--fa:""}.fa-file-medical-alt{--fa:"";--fa--fa:""}.fa-radiation{--fa:"";--fa--fa:""}.fa-chart-simple{--fa:"";--fa--fa:""}.fa-mars-stroke{--fa:"";--fa--fa:""}.fa-vial{--fa:"";--fa--fa:""}.fa-gauge{--fa:"";--fa--fa:""}.fa-dashboard{--fa:"";--fa--fa:""}.fa-gauge-med{--fa:"";--fa--fa:""}.fa-tachometer-alt-average{--fa:"";--fa--fa:""}.fa-wand-magic-sparkles{--fa:"";--fa--fa:""}.fa-magic-wand-sparkles{--fa:"";--fa--fa:""}.fa-e{--fa:"E";--fa--fa:"EE"}.fa-pen-clip{--fa:"";--fa--fa:""}.fa-pen-alt{--fa:"";--fa--fa:""}.fa-bridge-circle-exclamation{--fa:"";--fa--fa:""}.fa-user{--fa:"";--fa--fa:""}.fa-school-circle-check{--fa:"";--fa--fa:""}.fa-dumpster{--fa:"";--fa--fa:""}.fa-van-shuttle{--fa:"";--fa--fa:""}.fa-shuttle-van{--fa:"";--fa--fa:""}.fa-building-user{--fa:"";--fa--fa:""}.fa-square-caret-left{--fa:"";--fa--fa:""}.fa-caret-square-left{--fa:"";--fa--fa:""}.fa-highlighter{--fa:"";--fa--fa:""}.fa-key{--fa:"";--fa--fa:""}.fa-bullhorn{--fa:"";--fa--fa:""}.fa-globe{--fa:"";--fa--fa:""}.fa-synagogue{--fa:"";--fa--fa:""}.fa-person-half-dress{--fa:"";--fa--fa:""}.fa-road-bridge{--fa:"";--fa--fa:""}.fa-location-arrow{--fa:"";--fa--fa:""}.fa-c{--fa:"C";--fa--fa:"CC"}.fa-tablet-button{--fa:"";--fa--fa:""}.fa-building-lock{--fa:"";--fa--fa:""}.fa-pizza-slice{--fa:"";--fa--fa:""}.fa-money-bill-wave{--fa:"";--fa--fa:""}.fa-chart-area{--fa:"";--fa--fa:""}.fa-area-chart{--fa:"";--fa--fa:""}.fa-house-flag{--fa:"";--fa--fa:""}.fa-person-circle-minus{--fa:"";--fa--fa:""}.fa-ban{--fa:"";--fa--fa:""}.fa-cancel{--fa:"";--fa--fa:""}.fa-camera-rotate{--fa:"";--fa--fa:""}.fa-spray-can-sparkles{--fa:"";--fa--fa:""}.fa-air-freshener{--fa:"";--fa--fa:""}.fa-star{--fa:"";--fa--fa:""}.fa-repeat{--fa:"";--fa--fa:""}.fa-cross{--fa:"";--fa--fa:""}.fa-box{--fa:"";--fa--fa:""}.fa-venus-mars{--fa:"";--fa--fa:""}.fa-arrow-pointer{--fa:"";--fa--fa:""}.fa-mouse-pointer{--fa:"";--fa--fa:""}.fa-maximize{--fa:"";--fa--fa:""}.fa-expand-arrows-alt{--fa:"";--fa--fa:""}.fa-charging-station{--fa:"";--fa--fa:""}.fa-shapes{--fa:"";--fa--fa:""}.fa-triangle-circle-square{--fa:"";--fa--fa:""}.fa-shuffle{--fa:"";--fa--fa:""}.fa-random{--fa:"";--fa--fa:""}.fa-person-running{--fa:"";--fa--fa:""}.fa-running{--fa:"";--fa--fa:""}.fa-mobile-retro{--fa:"";--fa--fa:""}.fa-grip-lines-vertical{--fa:"";--fa--fa:""}.fa-spider{--fa:"";--fa--fa:""}.fa-hands-bound{--fa:"";--fa--fa:""}.fa-file-invoice-dollar{--fa:"";--fa--fa:""}.fa-plane-circle-exclamation{--fa:"";--fa--fa:""}.fa-x-ray{--fa:"";--fa--fa:""}.fa-spell-check{--fa:"";--fa--fa:""}.fa-slash{--fa:"";--fa--fa:""}.fa-computer-mouse{--fa:"";--fa--fa:""}.fa-mouse{--fa:"";--fa--fa:""}.fa-arrow-right-to-bracket{--fa:"";--fa--fa:""}.fa-sign-in{--fa:"";--fa--fa:""}.fa-shop-slash{--fa:"";--fa--fa:""}.fa-store-alt-slash{--fa:"";--fa--fa:""}.fa-server{--fa:"";--fa--fa:""}.fa-virus-covid-slash{--fa:"";--fa--fa:""}.fa-shop-lock{--fa:"";--fa--fa:""}.fa-hourglass-start{--fa:"";--fa--fa:""}.fa-hourglass-1{--fa:"";--fa--fa:""}.fa-blender-phone{--fa:"";--fa--fa:""}.fa-building-wheat{--fa:"";--fa--fa:""}.fa-person-breastfeeding{--fa:"";--fa--fa:""}.fa-right-to-bracket{--fa:"";--fa--fa:""}.fa-sign-in-alt{--fa:"";--fa--fa:""}.fa-venus{--fa:"";--fa--fa:""}.fa-passport{--fa:"";--fa--fa:""}.fa-thumbtack-slash{--fa:"";--fa--fa:""}.fa-thumb-tack-slash{--fa:"";--fa--fa:""}.fa-heart-pulse{--fa:"";--fa--fa:""}.fa-heartbeat{--fa:"";--fa--fa:""}.fa-people-carry-box{--fa:"";--fa--fa:""}.fa-people-carry{--fa:"";--fa--fa:""}.fa-temperature-high{--fa:"";--fa--fa:""}.fa-microchip{--fa:"";--fa--fa:""}.fa-crown{--fa:"";--fa--fa:""}.fa-weight-hanging{--fa:"";--fa--fa:""}.fa-xmarks-lines{--fa:"";--fa--fa:""}.fa-file-prescription{--fa:"";--fa--fa:""}.fa-weight-scale{--fa:"";--fa--fa:""}.fa-weight{--fa:"";--fa--fa:""}.fa-user-group{--fa:"";--fa--fa:""}.fa-user-friends{--fa:"";--fa--fa:""}.fa-arrow-up-a-z{--fa:"";--fa--fa:""}.fa-sort-alpha-up{--fa:"";--fa--fa:""}.fa-chess-knight{--fa:"";--fa--fa:""}.fa-face-laugh-squint{--fa:"";--fa--fa:""}.fa-laugh-squint{--fa:"";--fa--fa:""}.fa-wheelchair{--fa:"";--fa--fa:""}.fa-circle-arrow-up{--fa:"";--fa--fa:""}.fa-arrow-circle-up{--fa:"";--fa--fa:""}.fa-toggle-on{--fa:"";--fa--fa:""}.fa-person-walking{--fa:"";--fa--fa:""}.fa-walking{--fa:"";--fa--fa:""}.fa-l{--fa:"L";--fa--fa:"LL"}.fa-fire{--fa:"";--fa--fa:""}.fa-bed-pulse{--fa:"";--fa--fa:""}.fa-procedures{--fa:"";--fa--fa:""}.fa-shuttle-space{--fa:"";--fa--fa:""}.fa-space-shuttle{--fa:"";--fa--fa:""}.fa-face-laugh{--fa:"";--fa--fa:""}.fa-laugh{--fa:"";--fa--fa:""}.fa-folder-open{--fa:"";--fa--fa:""}.fa-heart-circle-plus{--fa:"";--fa--fa:""}.fa-code-fork{--fa:"";--fa--fa:""}.fa-city{--fa:"";--fa--fa:""}.fa-microphone-lines{--fa:"";--fa--fa:""}.fa-microphone-alt{--fa:"";--fa--fa:""}.fa-pepper-hot{--fa:"";--fa--fa:""}.fa-unlock{--fa:"";--fa--fa:""}.fa-colon-sign{--fa:"";--fa--fa:""}.fa-headset{--fa:"";--fa--fa:""}.fa-store-slash{--fa:"";--fa--fa:""}.fa-road-circle-xmark{--fa:"";--fa--fa:""}.fa-user-minus{--fa:"";--fa--fa:""}.fa-mars-stroke-up{--fa:"";--fa--fa:""}.fa-mars-stroke-v{--fa:"";--fa--fa:""}.fa-champagne-glasses{--fa:"";--fa--fa:""}.fa-glass-cheers{--fa:"";--fa--fa:""}.fa-clipboard{--fa:"";--fa--fa:""}.fa-house-circle-exclamation{--fa:"";--fa--fa:""}.fa-file-arrow-up{--fa:"";--fa--fa:""}.fa-file-upload{--fa:"";--fa--fa:""}.fa-wifi{--fa:"";--fa--fa:""}.fa-wifi-3{--fa:"";--fa--fa:""}.fa-wifi-strong{--fa:"";--fa--fa:""}.fa-bath{--fa:"";--fa--fa:""}.fa-bathtub{--fa:"";--fa--fa:""}.fa-underline{--fa:"";--fa--fa:""}.fa-user-pen{--fa:"";--fa--fa:""}.fa-user-edit{--fa:"";--fa--fa:""}.fa-signature{--fa:"";--fa--fa:""}.fa-stroopwafel{--fa:"";--fa--fa:""}.fa-bold{--fa:"";--fa--fa:""}.fa-anchor-lock{--fa:"";--fa--fa:""}.fa-building-ngo{--fa:"";--fa--fa:""}.fa-manat-sign{--fa:"";--fa--fa:""}.fa-not-equal{--fa:"";--fa--fa:""}.fa-border-top-left{--fa:"";--fa--fa:""}.fa-border-style{--fa:"";--fa--fa:""}.fa-map-location-dot{--fa:"";--fa--fa:""}.fa-map-marked-alt{--fa:"";--fa--fa:""}.fa-jedi{--fa:"";--fa--fa:""}.fa-square-poll-vertical{--fa:"";--fa--fa:""}.fa-poll{--fa:"";--fa--fa:""}.fa-mug-hot{--fa:"";--fa--fa:""}.fa-car-battery{--fa:"";--fa--fa:""}.fa-battery-car{--fa:"";--fa--fa:""}.fa-gift{--fa:"";--fa--fa:""}.fa-dice-two{--fa:"";--fa--fa:""}.fa-chess-queen{--fa:"";--fa--fa:""}.fa-glasses{--fa:"";--fa--fa:""}.fa-chess-board{--fa:"";--fa--fa:""}.fa-building-circle-check{--fa:"";--fa--fa:""}.fa-person-chalkboard{--fa:"";--fa--fa:""}.fa-mars-stroke-right{--fa:"";--fa--fa:""}.fa-mars-stroke-h{--fa:"";--fa--fa:""}.fa-hand-back-fist{--fa:"";--fa--fa:""}.fa-hand-rock{--fa:"";--fa--fa:""}.fa-square-caret-up{--fa:"";--fa--fa:""}.fa-caret-square-up{--fa:"";--fa--fa:""}.fa-cloud-showers-water{--fa:"";--fa--fa:""}.fa-chart-bar{--fa:"";--fa--fa:""}.fa-bar-chart{--fa:"";--fa--fa:""}.fa-hands-bubbles{--fa:"";--fa--fa:""}.fa-hands-wash{--fa:"";--fa--fa:""}.fa-less-than-equal{--fa:"";--fa--fa:""}.fa-train{--fa:"";--fa--fa:""}.fa-eye-low-vision{--fa:"";--fa--fa:""}.fa-low-vision{--fa:"";--fa--fa:""}.fa-crow{--fa:"";--fa--fa:""}.fa-sailboat{--fa:"";--fa--fa:""}.fa-window-restore{--fa:"";--fa--fa:""}.fa-square-plus{--fa:"";--fa--fa:""}.fa-plus-square{--fa:"";--fa--fa:""}.fa-torii-gate{--fa:"";--fa--fa:""}.fa-frog{--fa:"";--fa--fa:""}.fa-bucket{--fa:"";--fa--fa:""}.fa-image{--fa:"";--fa--fa:""}.fa-microphone{--fa:"";--fa--fa:""}.fa-cow{--fa:"";--fa--fa:""}.fa-caret-up{--fa:"";--fa--fa:""}.fa-screwdriver{--fa:"";--fa--fa:""}.fa-folder-closed{--fa:"";--fa--fa:""}.fa-house-tsunami{--fa:"";--fa--fa:""}.fa-square-nfi{--fa:"";--fa--fa:""}.fa-arrow-up-from-ground-water{--fa:"";--fa--fa:""}.fa-martini-glass{--fa:"";--fa--fa:""}.fa-glass-martini-alt{--fa:"";--fa--fa:""}.fa-square-binary{--fa:"";--fa--fa:""}.fa-rotate-left{--fa:"";--fa--fa:""}.fa-rotate-back{--fa:"";--fa--fa:""}.fa-rotate-backward{--fa:"";--fa--fa:""}.fa-undo-alt{--fa:"";--fa--fa:""}.fa-table-columns{--fa:"";--fa--fa:""}.fa-columns{--fa:"";--fa--fa:""}.fa-lemon{--fa:"";--fa--fa:""}.fa-head-side-mask{--fa:"";--fa--fa:""}.fa-handshake{--fa:"";--fa--fa:""}.fa-gem{--fa:"";--fa--fa:""}.fa-dolly{--fa:"";--fa--fa:""}.fa-dolly-box{--fa:"";--fa--fa:""}.fa-smoking{--fa:"";--fa--fa:""}.fa-minimize{--fa:"";--fa--fa:""}.fa-compress-arrows-alt{--fa:"";--fa--fa:""}.fa-monument{--fa:"";--fa--fa:""}.fa-snowplow{--fa:"";--fa--fa:""}.fa-angles-right{--fa:"";--fa--fa:""}.fa-angle-double-right{--fa:"";--fa--fa:""}.fa-cannabis{--fa:"";--fa--fa:""}.fa-circle-play{--fa:"";--fa--fa:""}.fa-play-circle{--fa:"";--fa--fa:""}.fa-tablets{--fa:"";--fa--fa:""}.fa-ethernet{--fa:"";--fa--fa:""}.fa-euro-sign{--fa:"";--fa--fa:""}.fa-eur{--fa:"";--fa--fa:""}.fa-euro{--fa:"";--fa--fa:""}.fa-chair{--fa:"";--fa--fa:""}.fa-circle-check{--fa:"";--fa--fa:""}.fa-check-circle{--fa:"";--fa--fa:""}.fa-circle-stop{--fa:"";--fa--fa:""}.fa-stop-circle{--fa:"";--fa--fa:""}.fa-compass-drafting{--fa:"";--fa--fa:""}.fa-drafting-compass{--fa:"";--fa--fa:""}.fa-plate-wheat{--fa:"";--fa--fa:""}.fa-icicles{--fa:"";--fa--fa:""}.fa-person-shelter{--fa:"";--fa--fa:""}.fa-neuter{--fa:"";--fa--fa:""}.fa-id-badge{--fa:"";--fa--fa:""}.fa-marker{--fa:"";--fa--fa:""}.fa-face-laugh-beam{--fa:"";--fa--fa:""}.fa-laugh-beam{--fa:"";--fa--fa:""}.fa-helicopter-symbol{--fa:"";--fa--fa:""}.fa-universal-access{--fa:"";--fa--fa:""}.fa-circle-chevron-up{--fa:"";--fa--fa:""}.fa-chevron-circle-up{--fa:"";--fa--fa:""}.fa-lari-sign{--fa:"";--fa--fa:""}.fa-volcano{--fa:"";--fa--fa:""}.fa-person-walking-dashed-line-arrow-right{--fa:"";--fa--fa:""}.fa-sterling-sign{--fa:"";--fa--fa:""}.fa-gbp{--fa:"";--fa--fa:""}.fa-pound-sign{--fa:"";--fa--fa:""}.fa-viruses{--fa:"";--fa--fa:""}.fa-square-person-confined{--fa:"";--fa--fa:""}.fa-user-tie{--fa:"";--fa--fa:""}.fa-arrow-down-long{--fa:"";--fa--fa:""}.fa-long-arrow-down{--fa:"";--fa--fa:""}.fa-tent-arrow-down-to-line{--fa:"";--fa--fa:""}.fa-certificate{--fa:"";--fa--fa:""}.fa-reply-all{--fa:"";--fa--fa:""}.fa-mail-reply-all{--fa:"";--fa--fa:""}.fa-suitcase{--fa:"";--fa--fa:""}.fa-person-skating{--fa:"";--fa--fa:""}.fa-skating{--fa:"";--fa--fa:""}.fa-filter-circle-dollar{--fa:"";--fa--fa:""}.fa-funnel-dollar{--fa:"";--fa--fa:""}.fa-camera-retro{--fa:"";--fa--fa:""}.fa-circle-arrow-down{--fa:"";--fa--fa:""}.fa-arrow-circle-down{--fa:"";--fa--fa:""}.fa-file-import{--fa:"";--fa--fa:""}.fa-arrow-right-to-file{--fa:"";--fa--fa:""}.fa-square-arrow-up-right{--fa:"";--fa--fa:""}.fa-external-link-square{--fa:"";--fa--fa:""}.fa-box-open{--fa:"";--fa--fa:""}.fa-scroll{--fa:"";--fa--fa:""}.fa-spa{--fa:"";--fa--fa:""}.fa-location-pin-lock{--fa:"";--fa--fa:""}.fa-pause{--fa:"";--fa--fa:""}.fa-hill-avalanche{--fa:"";--fa--fa:""}.fa-temperature-empty{--fa:"";--fa--fa:""}.fa-temperature-0{--fa:"";--fa--fa:""}.fa-thermometer-0{--fa:"";--fa--fa:""}.fa-thermometer-empty{--fa:"";--fa--fa:""}.fa-bomb{--fa:"";--fa--fa:""}.fa-registered{--fa:"";--fa--fa:""}.fa-address-card{--fa:"";--fa--fa:""}.fa-contact-card{--fa:"";--fa--fa:""}.fa-vcard{--fa:"";--fa--fa:""}.fa-scale-unbalanced-flip{--fa:"";--fa--fa:""}.fa-balance-scale-right{--fa:"";--fa--fa:""}.fa-subscript{--fa:"";--fa--fa:""}.fa-diamond-turn-right{--fa:"";--fa--fa:""}.fa-directions{--fa:"";--fa--fa:""}.fa-burst{--fa:"";--fa--fa:""}.fa-house-laptop{--fa:"";--fa--fa:""}.fa-laptop-house{--fa:"";--fa--fa:""}.fa-face-tired{--fa:"";--fa--fa:""}.fa-tired{--fa:"";--fa--fa:""}.fa-money-bills{--fa:"";--fa--fa:""}.fa-smog{--fa:"";--fa--fa:""}.fa-crutch{--fa:"";--fa--fa:""}.fa-cloud-arrow-up{--fa:"";--fa--fa:""}.fa-cloud-upload{--fa:"";--fa--fa:""}.fa-cloud-upload-alt{--fa:"";--fa--fa:""}.fa-palette{--fa:"";--fa--fa:""}.fa-arrows-turn-right{--fa:"";--fa--fa:""}.fa-vest{--fa:"";--fa--fa:""}.fa-ferry{--fa:"";--fa--fa:""}.fa-arrows-down-to-people{--fa:"";--fa--fa:""}.fa-seedling{--fa:"";--fa--fa:""}.fa-sprout{--fa:"";--fa--fa:""}.fa-left-right{--fa:"";--fa--fa:""}.fa-arrows-alt-h{--fa:"";--fa--fa:""}.fa-boxes-packing{--fa:"";--fa--fa:""}.fa-circle-arrow-left{--fa:"";--fa--fa:""}.fa-arrow-circle-left{--fa:"";--fa--fa:""}.fa-group-arrows-rotate{--fa:"";--fa--fa:""}.fa-bowl-food{--fa:"";--fa--fa:""}.fa-candy-cane{--fa:"";--fa--fa:""}.fa-arrow-down-wide-short{--fa:"";--fa--fa:""}.fa-sort-amount-asc{--fa:"";--fa--fa:""}.fa-sort-amount-down{--fa:"";--fa--fa:""}.fa-cloud-bolt{--fa:"";--fa--fa:""}.fa-thunderstorm{--fa:"";--fa--fa:""}.fa-text-slash{--fa:"";--fa--fa:""}.fa-remove-format{--fa:"";--fa--fa:""}.fa-face-smile-wink{--fa:"";--fa--fa:""}.fa-smile-wink{--fa:"";--fa--fa:""}.fa-file-word{--fa:"";--fa--fa:""}.fa-file-powerpoint{--fa:"";--fa--fa:""}.fa-arrows-left-right{--fa:"";--fa--fa:""}.fa-arrows-h{--fa:"";--fa--fa:""}.fa-house-lock{--fa:"";--fa--fa:""}.fa-cloud-arrow-down{--fa:"";--fa--fa:""}.fa-cloud-download{--fa:"";--fa--fa:""}.fa-cloud-download-alt{--fa:"";--fa--fa:""}.fa-children{--fa:"";--fa--fa:""}.fa-chalkboard{--fa:"";--fa--fa:""}.fa-blackboard{--fa:"";--fa--fa:""}.fa-user-large-slash{--fa:"";--fa--fa:""}.fa-user-alt-slash{--fa:"";--fa--fa:""}.fa-envelope-open{--fa:"";--fa--fa:""}.fa-handshake-simple-slash{--fa:"";--fa--fa:""}.fa-handshake-alt-slash{--fa:"";--fa--fa:""}.fa-mattress-pillow{--fa:"";--fa--fa:""}.fa-guarani-sign{--fa:"";--fa--fa:""}.fa-arrows-rotate{--fa:"";--fa--fa:""}.fa-refresh{--fa:"";--fa--fa:""}.fa-sync{--fa:"";--fa--fa:""}.fa-fire-extinguisher{--fa:"";--fa--fa:""}.fa-cruzeiro-sign{--fa:"";--fa--fa:""}.fa-greater-than-equal{--fa:"";--fa--fa:""}.fa-shield-halved{--fa:"";--fa--fa:""}.fa-shield-alt{--fa:"";--fa--fa:""}.fa-book-atlas{--fa:"";--fa--fa:""}.fa-atlas{--fa:"";--fa--fa:""}.fa-virus{--fa:"";--fa--fa:""}.fa-envelope-circle-check{--fa:"";--fa--fa:""}.fa-layer-group{--fa:"";--fa--fa:""}.fa-arrows-to-dot{--fa:"";--fa--fa:""}.fa-archway{--fa:"";--fa--fa:""}.fa-heart-circle-check{--fa:"";--fa--fa:""}.fa-house-chimney-crack{--fa:"";--fa--fa:""}.fa-house-damage{--fa:"";--fa--fa:""}.fa-file-zipper{--fa:"";--fa--fa:""}.fa-file-archive{--fa:"";--fa--fa:""}.fa-square{--fa:"";--fa--fa:""}.fa-martini-glass-empty{--fa:"";--fa--fa:""}.fa-glass-martini{--fa:"";--fa--fa:""}.fa-couch{--fa:"";--fa--fa:""}.fa-cedi-sign{--fa:"";--fa--fa:""}.fa-italic{--fa:"";--fa--fa:""}.fa-table-cells-column-lock{--fa:"";--fa--fa:""}.fa-church{--fa:"";--fa--fa:""}.fa-comments-dollar{--fa:"";--fa--fa:""}.fa-democrat{--fa:"";--fa--fa:""}.fa-z{--fa:"Z";--fa--fa:"ZZ"}.fa-person-skiing{--fa:"";--fa--fa:""}.fa-skiing{--fa:"";--fa--fa:""}.fa-road-lock{--fa:"";--fa--fa:""}.fa-a{--fa:"A";--fa--fa:"AA"}.fa-temperature-arrow-down{--fa:"";--fa--fa:""}.fa-temperature-down{--fa:"";--fa--fa:""}.fa-feather-pointed{--fa:"";--fa--fa:""}.fa-feather-alt{--fa:"";--fa--fa:""}.fa-p{--fa:"P";--fa--fa:"PP"}.fa-snowflake{--fa:"";--fa--fa:""}.fa-newspaper{--fa:"";--fa--fa:""}.fa-rectangle-ad{--fa:"";--fa--fa:""}.fa-ad{--fa:"";--fa--fa:""}.fa-circle-arrow-right{--fa:"";--fa--fa:""}.fa-arrow-circle-right{--fa:"";--fa--fa:""}.fa-filter-circle-xmark{--fa:"";--fa--fa:""}.fa-locust{--fa:"";--fa--fa:""}.fa-sort{--fa:"";--fa--fa:""}.fa-unsorted{--fa:"";--fa--fa:""}.fa-list-ol{--fa:"";--fa--fa:""}.fa-list-1-2{--fa:"";--fa--fa:""}.fa-list-numeric{--fa:"";--fa--fa:""}.fa-person-dress-burst{--fa:"";--fa--fa:""}.fa-money-check-dollar{--fa:"";--fa--fa:""}.fa-money-check-alt{--fa:"";--fa--fa:""}.fa-vector-square{--fa:"";--fa--fa:""}.fa-bread-slice{--fa:"";--fa--fa:""}.fa-language{--fa:"";--fa--fa:""}.fa-face-kiss-wink-heart{--fa:"";--fa--fa:""}.fa-kiss-wink-heart{--fa:"";--fa--fa:""}.fa-filter{--fa:"";--fa--fa:""}.fa-question{--fa:"\?";--fa--fa:"\?\?"}.fa-file-signature{--fa:"";--fa--fa:""}.fa-up-down-left-right{--fa:"";--fa--fa:""}.fa-arrows-alt{--fa:"";--fa--fa:""}.fa-house-chimney-user{--fa:"";--fa--fa:""}.fa-hand-holding-heart{--fa:"";--fa--fa:""}.fa-puzzle-piece{--fa:"";--fa--fa:""}.fa-money-check{--fa:"";--fa--fa:""}.fa-star-half-stroke{--fa:"";--fa--fa:""}.fa-star-half-alt{--fa:"";--fa--fa:""}.fa-code{--fa:"";--fa--fa:""}.fa-whiskey-glass{--fa:"";--fa--fa:""}.fa-glass-whiskey{--fa:"";--fa--fa:""}.fa-building-circle-exclamation{--fa:"";--fa--fa:""}.fa-magnifying-glass-chart{--fa:"";--fa--fa:""}.fa-arrow-up-right-from-square{--fa:"";--fa--fa:""}.fa-external-link{--fa:"";--fa--fa:""}.fa-cubes-stacked{--fa:"";--fa--fa:""}.fa-won-sign{--fa:"";--fa--fa:""}.fa-krw{--fa:"";--fa--fa:""}.fa-won{--fa:"";--fa--fa:""}.fa-virus-covid{--fa:"";--fa--fa:""}.fa-austral-sign{--fa:"";--fa--fa:""}.fa-f{--fa:"F";--fa--fa:"FF"}.fa-leaf{--fa:"";--fa--fa:""}.fa-road{--fa:"";--fa--fa:""}.fa-taxi{--fa:"";--fa--fa:""}.fa-cab{--fa:"";--fa--fa:""}.fa-person-circle-plus{--fa:"";--fa--fa:""}.fa-chart-pie{--fa:"";--fa--fa:""}.fa-pie-chart{--fa:"";--fa--fa:""}.fa-bolt-lightning{--fa:"";--fa--fa:""}.fa-sack-xmark{--fa:"";--fa--fa:""}.fa-file-excel{--fa:"";--fa--fa:""}.fa-file-contract{--fa:"";--fa--fa:""}.fa-fish-fins{--fa:"";--fa--fa:""}.fa-building-flag{--fa:"";--fa--fa:""}.fa-face-grin-beam{--fa:"";--fa--fa:""}.fa-grin-beam{--fa:"";--fa--fa:""}.fa-object-ungroup{--fa:"";--fa--fa:""}.fa-poop{--fa:"";--fa--fa:""}.fa-location-pin{--fa:"";--fa--fa:""}.fa-map-marker{--fa:"";--fa--fa:""}.fa-kaaba{--fa:"";--fa--fa:""}.fa-toilet-paper{--fa:"";--fa--fa:""}.fa-helmet-safety{--fa:"";--fa--fa:""}.fa-hard-hat{--fa:"";--fa--fa:""}.fa-hat-hard{--fa:"";--fa--fa:""}.fa-eject{--fa:"";--fa--fa:""}.fa-circle-right{--fa:"";--fa--fa:""}.fa-arrow-alt-circle-right{--fa:"";--fa--fa:""}.fa-plane-circle-check{--fa:"";--fa--fa:""}.fa-face-rolling-eyes{--fa:"";--fa--fa:""}.fa-meh-rolling-eyes{--fa:"";--fa--fa:""}.fa-object-group{--fa:"";--fa--fa:""}.fa-chart-line{--fa:"";--fa--fa:""}.fa-line-chart{--fa:"";--fa--fa:""}.fa-mask-ventilator{--fa:"";--fa--fa:""}.fa-arrow-right{--fa:"";--fa--fa:""}.fa-signs-post{--fa:"";--fa--fa:""}.fa-map-signs{--fa:"";--fa--fa:""}.fa-cash-register{--fa:"";--fa--fa:""}.fa-person-circle-question{--fa:"";--fa--fa:""}.fa-h{--fa:"H";--fa--fa:"HH"}.fa-tarp{--fa:"";--fa--fa:""}.fa-screwdriver-wrench{--fa:"";--fa--fa:""}.fa-tools{--fa:"";--fa--fa:""}.fa-arrows-to-eye{--fa:"";--fa--fa:""}.fa-plug-circle-bolt{--fa:"";--fa--fa:""}.fa-heart{--fa:"";--fa--fa:""}.fa-mars-and-venus{--fa:"";--fa--fa:""}.fa-house-user{--fa:"";--fa--fa:""}.fa-home-user{--fa:"";--fa--fa:""}.fa-dumpster-fire{--fa:"";--fa--fa:""}.fa-house-crack{--fa:"";--fa--fa:""}.fa-martini-glass-citrus{--fa:"";--fa--fa:""}.fa-cocktail{--fa:"";--fa--fa:""}.fa-face-surprise{--fa:"";--fa--fa:""}.fa-surprise{--fa:"";--fa--fa:""}.fa-bottle-water{--fa:"";--fa--fa:""}.fa-circle-pause{--fa:"";--fa--fa:""}.fa-pause-circle{--fa:"";--fa--fa:""}.fa-toilet-paper-slash{--fa:"";--fa--fa:""}.fa-apple-whole{--fa:"";--fa--fa:""}.fa-apple-alt{--fa:"";--fa--fa:""}.fa-kitchen-set{--fa:"";--fa--fa:""}.fa-r{--fa:"R";--fa--fa:"RR"}.fa-temperature-quarter{--fa:"";--fa--fa:""}.fa-temperature-1{--fa:"";--fa--fa:""}.fa-thermometer-1{--fa:"";--fa--fa:""}.fa-thermometer-quarter{--fa:"";--fa--fa:""}.fa-cube{--fa:"";--fa--fa:""}.fa-bitcoin-sign{--fa:"";--fa--fa:""}.fa-shield-dog{--fa:"";--fa--fa:""}.fa-solar-panel{--fa:"";--fa--fa:""}.fa-lock-open{--fa:"";--fa--fa:""}.fa-elevator{--fa:"";--fa--fa:""}.fa-money-bill-transfer{--fa:"";--fa--fa:""}.fa-money-bill-trend-up{--fa:"";--fa--fa:""}.fa-house-flood-water-circle-arrow-right{--fa:"";--fa--fa:""}.fa-square-poll-horizontal{--fa:"";--fa--fa:""}.fa-poll-h{--fa:"";--fa--fa:""}.fa-circle{--fa:"";--fa--fa:""}.fa-backward-fast{--fa:"";--fa--fa:""}.fa-fast-backward{--fa:"";--fa--fa:""}.fa-recycle{--fa:"";--fa--fa:""}.fa-user-astronaut{--fa:"";--fa--fa:""}.fa-plane-slash{--fa:"";--fa--fa:""}.fa-trademark{--fa:"";--fa--fa:""}.fa-basketball{--fa:"";--fa--fa:""}.fa-basketball-ball{--fa:"";--fa--fa:""}.fa-satellite-dish{--fa:"";--fa--fa:""}.fa-circle-up{--fa:"";--fa--fa:""}.fa-arrow-alt-circle-up{--fa:"";--fa--fa:""}.fa-mobile-screen-button{--fa:"";--fa--fa:""}.fa-mobile-alt{--fa:"";--fa--fa:""}.fa-volume-high{--fa:"";--fa--fa:""}.fa-volume-up{--fa:"";--fa--fa:""}.fa-users-rays{--fa:"";--fa--fa:""}.fa-wallet{--fa:"";--fa--fa:""}.fa-clipboard-check{--fa:"";--fa--fa:""}.fa-file-audio{--fa:"";--fa--fa:""}.fa-burger{--fa:"";--fa--fa:""}.fa-hamburger{--fa:"";--fa--fa:""}.fa-wrench{--fa:"";--fa--fa:""}.fa-bugs{--fa:"";--fa--fa:""}.fa-rupee-sign{--fa:"";--fa--fa:""}.fa-rupee{--fa:"";--fa--fa:""}.fa-file-image{--fa:"";--fa--fa:""}.fa-circle-question{--fa:"";--fa--fa:""}.fa-question-circle{--fa:"";--fa--fa:""}.fa-plane-departure{--fa:"";--fa--fa:""}.fa-handshake-slash{--fa:"";--fa--fa:""}.fa-book-bookmark{--fa:"";--fa--fa:""}.fa-code-branch{--fa:"";--fa--fa:""}.fa-hat-cowboy{--fa:"";--fa--fa:""}.fa-bridge{--fa:"";--fa--fa:""}.fa-phone-flip{--fa:"";--fa--fa:""}.fa-phone-alt{--fa:"";--fa--fa:""}.fa-truck-front{--fa:"";--fa--fa:""}.fa-cat{--fa:"";--fa--fa:""}.fa-anchor-circle-exclamation{--fa:"";--fa--fa:""}.fa-truck-field{--fa:"";--fa--fa:""}.fa-route{--fa:"";--fa--fa:""}.fa-clipboard-question{--fa:"";--fa--fa:""}.fa-panorama{--fa:"";--fa--fa:""}.fa-comment-medical{--fa:"";--fa--fa:""}.fa-teeth-open{--fa:"";--fa--fa:""}.fa-file-circle-minus{--fa:"";--fa--fa:""}.fa-tags{--fa:"";--fa--fa:""}.fa-wine-glass{--fa:"";--fa--fa:""}.fa-forward-fast{--fa:"";--fa--fa:""}.fa-fast-forward{--fa:"";--fa--fa:""}.fa-face-meh-blank{--fa:"";--fa--fa:""}.fa-meh-blank{--fa:"";--fa--fa:""}.fa-square-parking{--fa:"";--fa--fa:""}.fa-parking{--fa:"";--fa--fa:""}.fa-house-signal{--fa:"";--fa--fa:""}.fa-bars-progress{--fa:"";--fa--fa:""}.fa-tasks-alt{--fa:"";--fa--fa:""}.fa-faucet-drip{--fa:"";--fa--fa:""}.fa-cart-flatbed{--fa:"";--fa--fa:""}.fa-dolly-flatbed{--fa:"";--fa--fa:""}.fa-ban-smoking{--fa:"";--fa--fa:""}.fa-smoking-ban{--fa:"";--fa--fa:""}.fa-terminal{--fa:"";--fa--fa:""}.fa-mobile-button{--fa:"";--fa--fa:""}.fa-house-medical-flag{--fa:"";--fa--fa:""}.fa-basket-shopping{--fa:"";--fa--fa:""}.fa-shopping-basket{--fa:"";--fa--fa:""}.fa-tape{--fa:"";--fa--fa:""}.fa-bus-simple{--fa:"";--fa--fa:""}.fa-bus-alt{--fa:"";--fa--fa:""}.fa-eye{--fa:"";--fa--fa:""}.fa-face-sad-cry{--fa:"";--fa--fa:""}.fa-sad-cry{--fa:"";--fa--fa:""}.fa-audio-description{--fa:"";--fa--fa:""}.fa-person-military-to-person{--fa:"";--fa--fa:""}.fa-file-shield{--fa:"";--fa--fa:""}.fa-user-slash{--fa:"";--fa--fa:""}.fa-pen{--fa:"";--fa--fa:""}.fa-tower-observation{--fa:"";--fa--fa:""}.fa-file-code{--fa:"";--fa--fa:""}.fa-signal{--fa:"";--fa--fa:""}.fa-signal-5{--fa:"";--fa--fa:""}.fa-signal-perfect{--fa:"";--fa--fa:""}.fa-bus{--fa:"";--fa--fa:""}.fa-heart-circle-xmark{--fa:"";--fa--fa:""}.fa-house-chimney{--fa:"";--fa--fa:""}.fa-home-lg{--fa:"";--fa--fa:""}.fa-window-maximize{--fa:"";--fa--fa:""}.fa-face-frown{--fa:"";--fa--fa:""}.fa-frown{--fa:"";--fa--fa:""}.fa-prescription{--fa:"";--fa--fa:""}.fa-shop{--fa:"";--fa--fa:""}.fa-store-alt{--fa:"";--fa--fa:""}.fa-floppy-disk{--fa:"";--fa--fa:""}.fa-save{--fa:"";--fa--fa:""}.fa-vihara{--fa:"";--fa--fa:""}.fa-scale-unbalanced{--fa:"";--fa--fa:""}.fa-balance-scale-left{--fa:"";--fa--fa:""}.fa-sort-up{--fa:"";--fa--fa:""}.fa-sort-asc{--fa:"";--fa--fa:""}.fa-comment-dots{--fa:"";--fa--fa:""}.fa-commenting{--fa:"";--fa--fa:""}.fa-plant-wilt{--fa:"";--fa--fa:""}.fa-diamond{--fa:"";--fa--fa:""}.fa-face-grin-squint{--fa:"";--fa--fa:""}.fa-grin-squint{--fa:"";--fa--fa:""}.fa-hand-holding-dollar{--fa:"";--fa--fa:""}.fa-hand-holding-usd{--fa:"";--fa--fa:""}.fa-chart-diagram{--fa:"";--fa--fa:""}.fa-bacterium{--fa:"";--fa--fa:""}.fa-hand-pointer{--fa:"";--fa--fa:""}.fa-drum-steelpan{--fa:"";--fa--fa:""}.fa-hand-scissors{--fa:"";--fa--fa:""}.fa-hands-praying{--fa:"";--fa--fa:""}.fa-praying-hands{--fa:"";--fa--fa:""}.fa-arrow-rotate-right{--fa:"";--fa--fa:""}.fa-arrow-right-rotate{--fa:"";--fa--fa:""}.fa-arrow-rotate-forward{--fa:"";--fa--fa:""}.fa-redo{--fa:"";--fa--fa:""}.fa-biohazard{--fa:"";--fa--fa:""}.fa-location-crosshairs{--fa:"";--fa--fa:""}.fa-location{--fa:"";--fa--fa:""}.fa-mars-double{--fa:"";--fa--fa:""}.fa-child-dress{--fa:"";--fa--fa:""}.fa-users-between-lines{--fa:"";--fa--fa:""}.fa-lungs-virus{--fa:"";--fa--fa:""}.fa-face-grin-tears{--fa:"";--fa--fa:""}.fa-grin-tears{--fa:"";--fa--fa:""}.fa-phone{--fa:"";--fa--fa:""}.fa-calendar-xmark{--fa:"";--fa--fa:""}.fa-calendar-times{--fa:"";--fa--fa:""}.fa-child-reaching{--fa:"";--fa--fa:""}.fa-head-side-virus{--fa:"";--fa--fa:""}.fa-user-gear{--fa:"";--fa--fa:""}.fa-user-cog{--fa:"";--fa--fa:""}.fa-arrow-up-1-9{--fa:"";--fa--fa:""}.fa-sort-numeric-up{--fa:"";--fa--fa:""}.fa-door-closed{--fa:"";--fa--fa:""}.fa-shield-virus{--fa:"";--fa--fa:""}.fa-dice-six{--fa:"";--fa--fa:""}.fa-mosquito-net{--fa:"";--fa--fa:""}.fa-file-fragment{--fa:"";--fa--fa:""}.fa-bridge-water{--fa:"";--fa--fa:""}.fa-person-booth{--fa:"";--fa--fa:""}.fa-text-width{--fa:"";--fa--fa:""}.fa-hat-wizard{--fa:"";--fa--fa:""}.fa-pen-fancy{--fa:"";--fa--fa:""}.fa-person-digging{--fa:"";--fa--fa:""}.fa-digging{--fa:"";--fa--fa:""}.fa-trash{--fa:"";--fa--fa:""}.fa-gauge-simple{--fa:"";--fa--fa:""}.fa-gauge-simple-med{--fa:"";--fa--fa:""}.fa-tachometer-average{--fa:"";--fa--fa:""}.fa-book-medical{--fa:"";--fa--fa:""}.fa-poo{--fa:"";--fa--fa:""}.fa-quote-right{--fa:"";--fa--fa:""}.fa-quote-right-alt{--fa:"";--fa--fa:""}.fa-shirt{--fa:"";--fa--fa:""}.fa-t-shirt{--fa:"";--fa--fa:""}.fa-tshirt{--fa:"";--fa--fa:""}.fa-cubes{--fa:"";--fa--fa:""}.fa-divide{--fa:"";--fa--fa:""}.fa-tenge-sign{--fa:"";--fa--fa:""}.fa-tenge{--fa:"";--fa--fa:""}.fa-headphones{--fa:"";--fa--fa:""}.fa-hands-holding{--fa:"";--fa--fa:""}.fa-hands-clapping{--fa:"";--fa--fa:""}.fa-republican{--fa:"";--fa--fa:""}.fa-arrow-left{--fa:"";--fa--fa:""}.fa-person-circle-xmark{--fa:"";--fa--fa:""}.fa-ruler{--fa:"";--fa--fa:""}.fa-align-left{--fa:"";--fa--fa:""}.fa-dice-d6{--fa:"";--fa--fa:""}.fa-restroom{--fa:"";--fa--fa:""}.fa-j{--fa:"J";--fa--fa:"JJ"}.fa-users-viewfinder{--fa:"";--fa--fa:""}.fa-file-video{--fa:"";--fa--fa:""}.fa-up-right-from-square{--fa:"";--fa--fa:""}.fa-external-link-alt{--fa:"";--fa--fa:""}.fa-table-cells{--fa:"";--fa--fa:""}.fa-th{--fa:"";--fa--fa:""}.fa-file-pdf{--fa:"";--fa--fa:""}.fa-book-bible{--fa:"";--fa--fa:""}.fa-bible{--fa:"";--fa--fa:""}.fa-o{--fa:"O";--fa--fa:"OO"}.fa-suitcase-medical{--fa:"";--fa--fa:""}.fa-medkit{--fa:"";--fa--fa:""}.fa-user-secret{--fa:"";--fa--fa:""}.fa-otter{--fa:"";--fa--fa:""}.fa-person-dress{--fa:"";--fa--fa:""}.fa-female{--fa:"";--fa--fa:""}.fa-comment-dollar{--fa:"";--fa--fa:""}.fa-business-time{--fa:"";--fa--fa:""}.fa-briefcase-clock{--fa:"";--fa--fa:""}.fa-table-cells-large{--fa:"";--fa--fa:""}.fa-th-large{--fa:"";--fa--fa:""}.fa-book-tanakh{--fa:"";--fa--fa:""}.fa-tanakh{--fa:"";--fa--fa:""}.fa-phone-volume{--fa:"";--fa--fa:""}.fa-volume-control-phone{--fa:"";--fa--fa:""}.fa-hat-cowboy-side{--fa:"";--fa--fa:""}.fa-clipboard-user{--fa:"";--fa--fa:""}.fa-child{--fa:"";--fa--fa:""}.fa-lira-sign{--fa:"";--fa--fa:""}.fa-satellite{--fa:"";--fa--fa:""}.fa-plane-lock{--fa:"";--fa--fa:""}.fa-tag{--fa:"";--fa--fa:""}.fa-comment{--fa:"";--fa--fa:""}.fa-cake-candles{--fa:"";--fa--fa:""}.fa-birthday-cake{--fa:"";--fa--fa:""}.fa-cake{--fa:"";--fa--fa:""}.fa-envelope{--fa:"";--fa--fa:""}.fa-angles-up{--fa:"";--fa--fa:""}.fa-angle-double-up{--fa:"";--fa--fa:""}.fa-paperclip{--fa:"";--fa--fa:""}.fa-arrow-right-to-city{--fa:"";--fa--fa:""}.fa-ribbon{--fa:"";--fa--fa:""}.fa-lungs{--fa:"";--fa--fa:""}.fa-arrow-up-9-1{--fa:"";--fa--fa:""}.fa-sort-numeric-up-alt{--fa:"";--fa--fa:""}.fa-litecoin-sign{--fa:"";--fa--fa:""}.fa-border-none{--fa:"";--fa--fa:""}.fa-circle-nodes{--fa:"";--fa--fa:""}.fa-parachute-box{--fa:"";--fa--fa:""}.fa-indent{--fa:"";--fa--fa:""}.fa-truck-field-un{--fa:"";--fa--fa:""}.fa-hourglass{--fa:"";--fa--fa:""}.fa-hourglass-empty{--fa:"";--fa--fa:""}.fa-mountain{--fa:"";--fa--fa:""}.fa-user-doctor{--fa:"";--fa--fa:""}.fa-user-md{--fa:"";--fa--fa:""}.fa-circle-info{--fa:"";--fa--fa:""}.fa-info-circle{--fa:"";--fa--fa:""}.fa-cloud-meatball{--fa:"";--fa--fa:""}.fa-camera{--fa:"";--fa--fa:""}.fa-camera-alt{--fa:"";--fa--fa:""}.fa-square-virus{--fa:"";--fa--fa:""}.fa-meteor{--fa:"";--fa--fa:""}.fa-car-on{--fa:"";--fa--fa:""}.fa-sleigh{--fa:"";--fa--fa:""}.fa-arrow-down-1-9{--fa:"";--fa--fa:""}.fa-sort-numeric-asc{--fa:"";--fa--fa:""}.fa-sort-numeric-down{--fa:"";--fa--fa:""}.fa-hand-holding-droplet{--fa:"";--fa--fa:""}.fa-hand-holding-water{--fa:"";--fa--fa:""}.fa-water{--fa:"";--fa--fa:""}.fa-calendar-check{--fa:"";--fa--fa:""}.fa-braille{--fa:"";--fa--fa:""}.fa-prescription-bottle-medical{--fa:"";--fa--fa:""}.fa-prescription-bottle-alt{--fa:"";--fa--fa:""}.fa-landmark{--fa:"";--fa--fa:""}.fa-truck{--fa:"";--fa--fa:""}.fa-crosshairs{--fa:"";--fa--fa:""}.fa-person-cane{--fa:"";--fa--fa:""}.fa-tent{--fa:"";--fa--fa:""}.fa-vest-patches{--fa:"";--fa--fa:""}.fa-check-double{--fa:"";--fa--fa:""}.fa-arrow-down-a-z{--fa:"";--fa--fa:""}.fa-sort-alpha-asc{--fa:"";--fa--fa:""}.fa-sort-alpha-down{--fa:"";--fa--fa:""}.fa-money-bill-wheat{--fa:"";--fa--fa:""}.fa-cookie{--fa:"";--fa--fa:""}.fa-arrow-rotate-left{--fa:"";--fa--fa:""}.fa-arrow-left-rotate{--fa:"";--fa--fa:""}.fa-arrow-rotate-back{--fa:"";--fa--fa:""}.fa-arrow-rotate-backward{--fa:"";--fa--fa:""}.fa-undo{--fa:"";--fa--fa:""}.fa-hard-drive{--fa:"";--fa--fa:""}.fa-hdd{--fa:"";--fa--fa:""}.fa-face-grin-squint-tears{--fa:"";--fa--fa:""}.fa-grin-squint-tears{--fa:"";--fa--fa:""}.fa-dumbbell{--fa:"";--fa--fa:""}.fa-rectangle-list{--fa:"";--fa--fa:""}.fa-list-alt{--fa:"";--fa--fa:""}.fa-tarp-droplet{--fa:"";--fa--fa:""}.fa-house-medical-circle-check{--fa:"";--fa--fa:""}.fa-person-skiing-nordic{--fa:"";--fa--fa:""}.fa-skiing-nordic{--fa:"";--fa--fa:""}.fa-calendar-plus{--fa:"";--fa--fa:""}.fa-plane-arrival{--fa:"";--fa--fa:""}.fa-circle-left{--fa:"";--fa--fa:""}.fa-arrow-alt-circle-left{--fa:"";--fa--fa:""}.fa-train-subway{--fa:"";--fa--fa:""}.fa-subway{--fa:"";--fa--fa:""}.fa-chart-gantt{--fa:"";--fa--fa:""}.fa-indian-rupee-sign{--fa:"";--fa--fa:""}.fa-indian-rupee{--fa:"";--fa--fa:""}.fa-inr{--fa:"";--fa--fa:""}.fa-crop-simple{--fa:"";--fa--fa:""}.fa-crop-alt{--fa:"";--fa--fa:""}.fa-money-bill-1{--fa:"";--fa--fa:""}.fa-money-bill-alt{--fa:"";--fa--fa:""}.fa-left-long{--fa:"";--fa--fa:""}.fa-long-arrow-alt-left{--fa:"";--fa--fa:""}.fa-dna{--fa:"";--fa--fa:""}.fa-virus-slash{--fa:"";--fa--fa:""}.fa-minus{--fa:"";--fa--fa:""}.fa-subtract{--fa:"";--fa--fa:""}.fa-chess{--fa:"";--fa--fa:""}.fa-arrow-left-long{--fa:"";--fa--fa:""}.fa-long-arrow-left{--fa:"";--fa--fa:""}.fa-plug-circle-check{--fa:"";--fa--fa:""}.fa-street-view{--fa:"";--fa--fa:""}.fa-franc-sign{--fa:"";--fa--fa:""}.fa-volume-off{--fa:"";--fa--fa:""}.fa-hands-asl-interpreting{--fa:"";--fa--fa:""}.fa-american-sign-language-interpreting{--fa:"";--fa--fa:""}.fa-asl-interpreting{--fa:"";--fa--fa:""}.fa-hands-american-sign-language-interpreting{--fa:"";--fa--fa:""}.fa-gear{--fa:"";--fa--fa:""}.fa-cog{--fa:"";--fa--fa:""}.fa-droplet-slash{--fa:"";--fa--fa:""}.fa-tint-slash{--fa:"";--fa--fa:""}.fa-mosque{--fa:"";--fa--fa:""}.fa-mosquito{--fa:"";--fa--fa:""}.fa-star-of-david{--fa:"";--fa--fa:""}.fa-person-military-rifle{--fa:"";--fa--fa:""}.fa-cart-shopping{--fa:"";--fa--fa:""}.fa-shopping-cart{--fa:"";--fa--fa:""}.fa-vials{--fa:"";--fa--fa:""}.fa-plug-circle-plus{--fa:"";--fa--fa:""}.fa-place-of-worship{--fa:"";--fa--fa:""}.fa-grip-vertical{--fa:"";--fa--fa:""}.fa-hexagon-nodes{--fa:"";--fa--fa:""}.fa-arrow-turn-up{--fa:"";--fa--fa:""}.fa-level-up{--fa:"";--fa--fa:""}.fa-u{--fa:"U";--fa--fa:"UU"}.fa-square-root-variable{--fa:"";--fa--fa:""}.fa-square-root-alt{--fa:"";--fa--fa:""}.fa-clock{--fa:"";--fa--fa:""}.fa-clock-four{--fa:"";--fa--fa:""}.fa-backward-step{--fa:"";--fa--fa:""}.fa-step-backward{--fa:"";--fa--fa:""}.fa-pallet{--fa:"";--fa--fa:""}.fa-faucet{--fa:"";--fa--fa:""}.fa-baseball-bat-ball{--fa:"";--fa--fa:""}.fa-s{--fa:"S";--fa--fa:"SS"}.fa-timeline{--fa:"";--fa--fa:""}.fa-keyboard{--fa:"";--fa--fa:""}.fa-caret-down{--fa:"";--fa--fa:""}.fa-house-chimney-medical{--fa:"";--fa--fa:""}.fa-clinic-medical{--fa:"";--fa--fa:""}.fa-temperature-three-quarters{--fa:"";--fa--fa:""}.fa-temperature-3{--fa:"";--fa--fa:""}.fa-thermometer-3{--fa:"";--fa--fa:""}.fa-thermometer-three-quarters{--fa:"";--fa--fa:""}.fa-mobile-screen{--fa:"";--fa--fa:""}.fa-mobile-android-alt{--fa:"";--fa--fa:""}.fa-plane-up{--fa:"";--fa--fa:""}.fa-piggy-bank{--fa:"";--fa--fa:""}.fa-battery-half{--fa:"";--fa--fa:""}.fa-battery-3{--fa:"";--fa--fa:""}.fa-mountain-city{--fa:"";--fa--fa:""}.fa-coins{--fa:"";--fa--fa:""}.fa-khanda{--fa:"";--fa--fa:""}.fa-sliders{--fa:"";--fa--fa:""}.fa-sliders-h{--fa:"";--fa--fa:""}.fa-folder-tree{--fa:"";--fa--fa:""}.fa-network-wired{--fa:"";--fa--fa:""}.fa-map-pin{--fa:"";--fa--fa:""}.fa-hamsa{--fa:"";--fa--fa:""}.fa-cent-sign{--fa:"";--fa--fa:""}.fa-flask{--fa:"";--fa--fa:""}.fa-person-pregnant{--fa:"";--fa--fa:""}.fa-wand-sparkles{--fa:"";--fa--fa:""}.fa-ellipsis-vertical{--fa:"";--fa--fa:""}.fa-ellipsis-v{--fa:"";--fa--fa:""}.fa-ticket{--fa:"";--fa--fa:""}.fa-power-off{--fa:"";--fa--fa:""}.fa-right-long{--fa:"";--fa--fa:""}.fa-long-arrow-alt-right{--fa:"";--fa--fa:""}.fa-flag-usa{--fa:"";--fa--fa:""}.fa-laptop-file{--fa:"";--fa--fa:""}.fa-tty{--fa:"";--fa--fa:""}.fa-teletype{--fa:"";--fa--fa:""}.fa-diagram-next{--fa:"";--fa--fa:""}.fa-person-rifle{--fa:"";--fa--fa:""}.fa-house-medical-circle-exclamation{--fa:"";--fa--fa:""}.fa-closed-captioning{--fa:"";--fa--fa:""}.fa-person-hiking{--fa:"";--fa--fa:""}.fa-hiking{--fa:"";--fa--fa:""}.fa-venus-double{--fa:"";--fa--fa:""}.fa-images{--fa:"";--fa--fa:""}.fa-calculator{--fa:"";--fa--fa:""}.fa-people-pulling{--fa:"";--fa--fa:""}.fa-n{--fa:"N";--fa--fa:"NN"}.fa-cable-car{--fa:"";--fa--fa:""}.fa-tram{--fa:"";--fa--fa:""}.fa-cloud-rain{--fa:"";--fa--fa:""}.fa-building-circle-xmark{--fa:"";--fa--fa:""}.fa-ship{--fa:"";--fa--fa:""}.fa-arrows-down-to-line{--fa:"";--fa--fa:""}.fa-download{--fa:"";--fa--fa:""}.fa-face-grin{--fa:"";--fa--fa:""}.fa-grin{--fa:"";--fa--fa:""}.fa-delete-left{--fa:"";--fa--fa:""}.fa-backspace{--fa:"";--fa--fa:""}.fa-eye-dropper{--fa:"";--fa--fa:""}.fa-eye-dropper-empty{--fa:"";--fa--fa:""}.fa-eyedropper{--fa:"";--fa--fa:""}.fa-file-circle-check{--fa:"";--fa--fa:""}.fa-forward{--fa:"";--fa--fa:""}.fa-mobile{--fa:"";--fa--fa:""}.fa-mobile-android{--fa:"";--fa--fa:""}.fa-mobile-phone{--fa:"";--fa--fa:""}.fa-face-meh{--fa:"";--fa--fa:""}.fa-meh{--fa:"";--fa--fa:""}.fa-align-center{--fa:"";--fa--fa:""}.fa-book-skull{--fa:"";--fa--fa:""}.fa-book-dead{--fa:"";--fa--fa:""}.fa-id-card{--fa:"";--fa--fa:""}.fa-drivers-license{--fa:"";--fa--fa:""}.fa-outdent{--fa:"";--fa--fa:""}.fa-dedent{--fa:"";--fa--fa:""}.fa-heart-circle-exclamation{--fa:"";--fa--fa:""}.fa-house{--fa:"";--fa--fa:""}.fa-home{--fa:"";--fa--fa:""}.fa-home-alt{--fa:"";--fa--fa:""}.fa-home-lg-alt{--fa:"";--fa--fa:""}.fa-calendar-week{--fa:"";--fa--fa:""}.fa-laptop-medical{--fa:"";--fa--fa:""}.fa-b{--fa:"B";--fa--fa:"BB"}.fa-file-medical{--fa:"";--fa--fa:""}.fa-dice-one{--fa:"";--fa--fa:""}.fa-kiwi-bird{--fa:"";--fa--fa:""}.fa-arrow-right-arrow-left{--fa:"";--fa--fa:""}.fa-exchange{--fa:"";--fa--fa:""}.fa-rotate-right{--fa:"";--fa--fa:""}.fa-redo-alt{--fa:"";--fa--fa:""}.fa-rotate-forward{--fa:"";--fa--fa:""}.fa-utensils{--fa:"";--fa--fa:""}.fa-cutlery{--fa:"";--fa--fa:""}.fa-arrow-up-wide-short{--fa:"";--fa--fa:""}.fa-sort-amount-up{--fa:"";--fa--fa:""}.fa-mill-sign{--fa:"";--fa--fa:""}.fa-bowl-rice{--fa:"";--fa--fa:""}.fa-skull{--fa:"";--fa--fa:""}.fa-tower-broadcast{--fa:"";--fa--fa:""}.fa-broadcast-tower{--fa:"";--fa--fa:""}.fa-truck-pickup{--fa:"";--fa--fa:""}.fa-up-long{--fa:"";--fa--fa:""}.fa-long-arrow-alt-up{--fa:"";--fa--fa:""}.fa-stop{--fa:"";--fa--fa:""}.fa-code-merge{--fa:"";--fa--fa:""}.fa-upload{--fa:"";--fa--fa:""}.fa-hurricane{--fa:"";--fa--fa:""}.fa-mound{--fa:"";--fa--fa:""}.fa-toilet-portable{--fa:"";--fa--fa:""}.fa-compact-disc{--fa:"";--fa--fa:""}.fa-file-arrow-down{--fa:"";--fa--fa:""}.fa-file-download{--fa:"";--fa--fa:""}.fa-caravan{--fa:"";--fa--fa:""}.fa-shield-cat{--fa:"";--fa--fa:""}.fa-bolt{--fa:"";--fa--fa:""}.fa-zap{--fa:"";--fa--fa:""}.fa-glass-water{--fa:"";--fa--fa:""}.fa-oil-well{--fa:"";--fa--fa:""}.fa-vault{--fa:"";--fa--fa:""}.fa-mars{--fa:"";--fa--fa:""}.fa-toilet{--fa:"";--fa--fa:""}.fa-plane-circle-xmark{--fa:"";--fa--fa:""}.fa-yen-sign{--fa:"";--fa--fa:""}.fa-cny{--fa:"";--fa--fa:""}.fa-jpy{--fa:"";--fa--fa:""}.fa-rmb{--fa:"";--fa--fa:""}.fa-yen{--fa:"";--fa--fa:""}.fa-ruble-sign{--fa:"";--fa--fa:""}.fa-rouble{--fa:"";--fa--fa:""}.fa-rub{--fa:"";--fa--fa:""}.fa-ruble{--fa:"";--fa--fa:""}.fa-sun{--fa:"";--fa--fa:""}.fa-guitar{--fa:"";--fa--fa:""}.fa-face-laugh-wink{--fa:"";--fa--fa:""}.fa-laugh-wink{--fa:"";--fa--fa:""}.fa-horse-head{--fa:"";--fa--fa:""}.fa-bore-hole{--fa:"";--fa--fa:""}.fa-industry{--fa:"";--fa--fa:""}.fa-circle-down{--fa:"";--fa--fa:""}.fa-arrow-alt-circle-down{--fa:"";--fa--fa:""}.fa-arrows-turn-to-dots{--fa:"";--fa--fa:""}.fa-florin-sign{--fa:"";--fa--fa:""}.fa-arrow-down-short-wide{--fa:"";--fa--fa:""}.fa-sort-amount-desc{--fa:"";--fa--fa:""}.fa-sort-amount-down-alt{--fa:"";--fa--fa:""}.fa-less-than{--fa:"\<";--fa--fa:"\<\<"}.fa-angle-down{--fa:"";--fa--fa:""}.fa-car-tunnel{--fa:"";--fa--fa:""}.fa-head-side-cough{--fa:"";--fa--fa:""}.fa-grip-lines{--fa:"";--fa--fa:""}.fa-thumbs-down{--fa:"";--fa--fa:""}.fa-user-lock{--fa:"";--fa--fa:""}.fa-arrow-right-long{--fa:"";--fa--fa:""}.fa-long-arrow-right{--fa:"";--fa--fa:""}.fa-anchor-circle-xmark{--fa:"";--fa--fa:""}.fa-ellipsis{--fa:"";--fa--fa:""}.fa-ellipsis-h{--fa:"";--fa--fa:""}.fa-chess-pawn{--fa:"";--fa--fa:""}.fa-kit-medical{--fa:"";--fa--fa:""}.fa-first-aid{--fa:"";--fa--fa:""}.fa-person-through-window{--fa:"";--fa--fa:""}.fa-toolbox{--fa:"";--fa--fa:""}.fa-hands-holding-circle{--fa:"";--fa--fa:""}.fa-bug{--fa:"";--fa--fa:""}.fa-credit-card{--fa:"";--fa--fa:""}.fa-credit-card-alt{--fa:"";--fa--fa:""}.fa-car{--fa:"";--fa--fa:""}.fa-automobile{--fa:"";--fa--fa:""}.fa-hand-holding-hand{--fa:"";--fa--fa:""}.fa-book-open-reader{--fa:"";--fa--fa:""}.fa-book-reader{--fa:"";--fa--fa:""}.fa-mountain-sun{--fa:"";--fa--fa:""}.fa-arrows-left-right-to-line{--fa:"";--fa--fa:""}.fa-dice-d20{--fa:"";--fa--fa:""}.fa-truck-droplet{--fa:"";--fa--fa:""}.fa-file-circle-xmark{--fa:"";--fa--fa:""}.fa-temperature-arrow-up{--fa:"";--fa--fa:""}.fa-temperature-up{--fa:"";--fa--fa:""}.fa-medal{--fa:"";--fa--fa:""}.fa-bed{--fa:"";--fa--fa:""}.fa-square-h{--fa:"";--fa--fa:""}.fa-h-square{--fa:"";--fa--fa:""}.fa-podcast{--fa:"";--fa--fa:""}.fa-temperature-full{--fa:"";--fa--fa:""}.fa-temperature-4{--fa:"";--fa--fa:""}.fa-thermometer-4{--fa:"";--fa--fa:""}.fa-thermometer-full{--fa:"";--fa--fa:""}.fa-bell{--fa:"";--fa--fa:""}.fa-superscript{--fa:"";--fa--fa:""}.fa-plug-circle-xmark{--fa:"";--fa--fa:""}.fa-star-of-life{--fa:"";--fa--fa:""}.fa-phone-slash{--fa:"";--fa--fa:""}.fa-paint-roller{--fa:"";--fa--fa:""}.fa-handshake-angle{--fa:"";--fa--fa:""}.fa-hands-helping{--fa:"";--fa--fa:""}.fa-location-dot{--fa:"";--fa--fa:""}.fa-map-marker-alt{--fa:"";--fa--fa:""}.fa-file{--fa:"";--fa--fa:""}.fa-greater-than{--fa:"\>";--fa--fa:"\>\>"}.fa-person-swimming{--fa:"";--fa--fa:""}.fa-swimmer{--fa:"";--fa--fa:""}.fa-arrow-down{--fa:"";--fa--fa:""}.fa-droplet{--fa:"";--fa--fa:""}.fa-tint{--fa:"";--fa--fa:""}.fa-eraser{--fa:"";--fa--fa:""}.fa-earth-americas{--fa:"";--fa--fa:""}.fa-earth{--fa:"";--fa--fa:""}.fa-earth-america{--fa:"";--fa--fa:""}.fa-globe-americas{--fa:"";--fa--fa:""}.fa-person-burst{--fa:"";--fa--fa:""}.fa-dove{--fa:"";--fa--fa:""}.fa-battery-empty{--fa:"";--fa--fa:""}.fa-battery-0{--fa:"";--fa--fa:""}.fa-socks{--fa:"";--fa--fa:""}.fa-inbox{--fa:"";--fa--fa:""}.fa-section{--fa:"";--fa--fa:""}.fa-gauge-high{--fa:"";--fa--fa:""}.fa-tachometer-alt{--fa:"";--fa--fa:""}.fa-tachometer-alt-fast{--fa:"";--fa--fa:""}.fa-envelope-open-text{--fa:"";--fa--fa:""}.fa-hospital{--fa:"";--fa--fa:""}.fa-hospital-alt{--fa:"";--fa--fa:""}.fa-hospital-wide{--fa:"";--fa--fa:""}.fa-wine-bottle{--fa:"";--fa--fa:""}.fa-chess-rook{--fa:"";--fa--fa:""}.fa-bars-staggered{--fa:"";--fa--fa:""}.fa-reorder{--fa:"";--fa--fa:""}.fa-stream{--fa:"";--fa--fa:""}.fa-dharmachakra{--fa:"";--fa--fa:""}.fa-hotdog{--fa:"";--fa--fa:""}.fa-person-walking-with-cane{--fa:"";--fa--fa:""}.fa-blind{--fa:"";--fa--fa:""}.fa-drum{--fa:"";--fa--fa:""}.fa-ice-cream{--fa:"";--fa--fa:""}.fa-heart-circle-bolt{--fa:"";--fa--fa:""}.fa-fax{--fa:"";--fa--fa:""}.fa-paragraph{--fa:"";--fa--fa:""}.fa-check-to-slot{--fa:"";--fa--fa:""}.fa-vote-yea{--fa:"";--fa--fa:""}.fa-star-half{--fa:"";--fa--fa:""}.fa-boxes-stacked{--fa:"";--fa--fa:""}.fa-boxes{--fa:"";--fa--fa:""}.fa-boxes-alt{--fa:"";--fa--fa:""}.fa-link{--fa:"";--fa--fa:""}.fa-chain{--fa:"";--fa--fa:""}.fa-ear-listen{--fa:"";--fa--fa:""}.fa-assistive-listening-systems{--fa:"";--fa--fa:""}.fa-tree-city{--fa:"";--fa--fa:""}.fa-play{--fa:"";--fa--fa:""}.fa-font{--fa:"";--fa--fa:""}.fa-table-cells-row-lock{--fa:"";--fa--fa:""}.fa-rupiah-sign{--fa:"";--fa--fa:""}.fa-magnifying-glass{--fa:"";--fa--fa:""}.fa-search{--fa:"";--fa--fa:""}.fa-table-tennis-paddle-ball{--fa:"";--fa--fa:""}.fa-ping-pong-paddle-ball{--fa:"";--fa--fa:""}.fa-table-tennis{--fa:"";--fa--fa:""}.fa-person-dots-from-line{--fa:"";--fa--fa:""}.fa-diagnoses{--fa:"";--fa--fa:""}.fa-trash-can-arrow-up{--fa:"";--fa--fa:""}.fa-trash-restore-alt{--fa:"";--fa--fa:""}.fa-naira-sign{--fa:"";--fa--fa:""}.fa-cart-arrow-down{--fa:"";--fa--fa:""}.fa-walkie-talkie{--fa:"";--fa--fa:""}.fa-file-pen{--fa:"";--fa--fa:""}.fa-file-edit{--fa:"";--fa--fa:""}.fa-receipt{--fa:"";--fa--fa:""}.fa-square-pen{--fa:"";--fa--fa:""}.fa-pen-square{--fa:"";--fa--fa:""}.fa-pencil-square{--fa:"";--fa--fa:""}.fa-suitcase-rolling{--fa:"";--fa--fa:""}.fa-person-circle-exclamation{--fa:"";--fa--fa:""}.fa-chevron-down{--fa:"";--fa--fa:""}.fa-battery-full{--fa:"";--fa--fa:""}.fa-battery{--fa:"";--fa--fa:""}.fa-battery-5{--fa:"";--fa--fa:""}.fa-skull-crossbones{--fa:"";--fa--fa:""}.fa-code-compare{--fa:"";--fa--fa:""}.fa-list-ul{--fa:"";--fa--fa:""}.fa-list-dots{--fa:"";--fa--fa:""}.fa-school-lock{--fa:"";--fa--fa:""}.fa-tower-cell{--fa:"";--fa--fa:""}.fa-down-long{--fa:"";--fa--fa:""}.fa-long-arrow-alt-down{--fa:"";--fa--fa:""}.fa-ranking-star{--fa:"";--fa--fa:""}.fa-chess-king{--fa:"";--fa--fa:""}.fa-person-harassing{--fa:"";--fa--fa:""}.fa-brazilian-real-sign{--fa:"";--fa--fa:""}.fa-landmark-dome{--fa:"";--fa--fa:""}.fa-landmark-alt{--fa:"";--fa--fa:""}.fa-arrow-up{--fa:"";--fa--fa:""}.fa-tv{--fa:"";--fa--fa:""}.fa-television{--fa:"";--fa--fa:""}.fa-tv-alt{--fa:"";--fa--fa:""}.fa-shrimp{--fa:"";--fa--fa:""}.fa-list-check{--fa:"";--fa--fa:""}.fa-tasks{--fa:"";--fa--fa:""}.fa-jug-detergent{--fa:"";--fa--fa:""}.fa-circle-user{--fa:"";--fa--fa:""}.fa-user-circle{--fa:"";--fa--fa:""}.fa-user-shield{--fa:"";--fa--fa:""}.fa-wind{--fa:"";--fa--fa:""}.fa-car-burst{--fa:"";--fa--fa:""}.fa-car-crash{--fa:"";--fa--fa:""}.fa-y{--fa:"Y";--fa--fa:"YY"}.fa-person-snowboarding{--fa:"";--fa--fa:""}.fa-snowboarding{--fa:"";--fa--fa:""}.fa-truck-fast{--fa:"";--fa--fa:""}.fa-shipping-fast{--fa:"";--fa--fa:""}.fa-fish{--fa:"";--fa--fa:""}.fa-user-graduate{--fa:"";--fa--fa:""}.fa-circle-half-stroke{--fa:"";--fa--fa:""}.fa-adjust{--fa:"";--fa--fa:""}.fa-clapperboard{--fa:"";--fa--fa:""}.fa-circle-radiation{--fa:"";--fa--fa:""}.fa-radiation-alt{--fa:"";--fa--fa:""}.fa-baseball{--fa:"";--fa--fa:""}.fa-baseball-ball{--fa:"";--fa--fa:""}.fa-jet-fighter-up{--fa:"";--fa--fa:""}.fa-diagram-project{--fa:"";--fa--fa:""}.fa-project-diagram{--fa:"";--fa--fa:""}.fa-copy{--fa:"";--fa--fa:""}.fa-volume-xmark{--fa:"";--fa--fa:""}.fa-volume-mute{--fa:"";--fa--fa:""}.fa-volume-times{--fa:"";--fa--fa:""}.fa-hand-sparkles{--fa:"";--fa--fa:""}.fa-grip{--fa:"";--fa--fa:""}.fa-grip-horizontal{--fa:"";--fa--fa:""}.fa-share-from-square{--fa:"";--fa--fa:""}.fa-share-square{--fa:"";--fa--fa:""}.fa-child-combatant{--fa:"";--fa--fa:""}.fa-child-rifle{--fa:"";--fa--fa:""}.fa-gun{--fa:"";--fa--fa:""}.fa-square-phone{--fa:"";--fa--fa:""}.fa-phone-square{--fa:"";--fa--fa:""}.fa-plus{--fa:"\+";--fa--fa:"\+\+"}.fa-add{--fa:"\+";--fa--fa:"\+\+"}.fa-expand{--fa:"";--fa--fa:""}.fa-computer{--fa:"";--fa--fa:""}.fa-xmark{--fa:"";--fa--fa:""}.fa-close{--fa:"";--fa--fa:""}.fa-multiply{--fa:"";--fa--fa:""}.fa-remove{--fa:"";--fa--fa:""}.fa-times{--fa:"";--fa--fa:""}.fa-arrows-up-down-left-right{--fa:"";--fa--fa:""}.fa-arrows{--fa:"";--fa--fa:""}.fa-chalkboard-user{--fa:"";--fa--fa:""}.fa-chalkboard-teacher{--fa:"";--fa--fa:""}.fa-peso-sign{--fa:"";--fa--fa:""}.fa-building-shield{--fa:"";--fa--fa:""}.fa-baby{--fa:"";--fa--fa:""}.fa-users-line{--fa:"";--fa--fa:""}.fa-quote-left{--fa:"";--fa--fa:""}.fa-quote-left-alt{--fa:"";--fa--fa:""}.fa-tractor{--fa:"";--fa--fa:""}.fa-trash-arrow-up{--fa:"";--fa--fa:""}.fa-trash-restore{--fa:"";--fa--fa:""}.fa-arrow-down-up-lock{--fa:"";--fa--fa:""}.fa-lines-leaning{--fa:"";--fa--fa:""}.fa-ruler-combined{--fa:"";--fa--fa:""}.fa-copyright{--fa:"";--fa--fa:""}.fa-equals{--fa:"\=";--fa--fa:"\=\="}.fa-blender{--fa:"";--fa--fa:""}.fa-teeth{--fa:"";--fa--fa:""}.fa-shekel-sign{--fa:"";--fa--fa:""}.fa-ils{--fa:"";--fa--fa:""}.fa-shekel{--fa:"";--fa--fa:""}.fa-sheqel{--fa:"";--fa--fa:""}.fa-sheqel-sign{--fa:"";--fa--fa:""}.fa-map{--fa:"";--fa--fa:""}.fa-rocket{--fa:"";--fa--fa:""}.fa-photo-film{--fa:"";--fa--fa:""}.fa-photo-video{--fa:"";--fa--fa:""}.fa-folder-minus{--fa:"";--fa--fa:""}.fa-hexagon-nodes-bolt{--fa:"";--fa--fa:""}.fa-store{--fa:"";--fa--fa:""}.fa-arrow-trend-up{--fa:"";--fa--fa:""}.fa-plug-circle-minus{--fa:"";--fa--fa:""}.fa-sign-hanging{--fa:"";--fa--fa:""}.fa-sign{--fa:"";--fa--fa:""}.fa-bezier-curve{--fa:"";--fa--fa:""}.fa-bell-slash{--fa:"";--fa--fa:""}.fa-tablet{--fa:"";--fa--fa:""}.fa-tablet-android{--fa:"";--fa--fa:""}.fa-school-flag{--fa:"";--fa--fa:""}.fa-fill{--fa:"";--fa--fa:""}.fa-angle-up{--fa:"";--fa--fa:""}.fa-drumstick-bite{--fa:"";--fa--fa:""}.fa-holly-berry{--fa:"";--fa--fa:""}.fa-chevron-left{--fa:"";--fa--fa:""}.fa-bacteria{--fa:"";--fa--fa:""}.fa-hand-lizard{--fa:"";--fa--fa:""}.fa-notdef{--fa:"";--fa--fa:""}.fa-disease{--fa:"";--fa--fa:""}.fa-briefcase-medical{--fa:"";--fa--fa:""}.fa-genderless{--fa:"";--fa--fa:""}.fa-chevron-right{--fa:"";--fa--fa:""}.fa-retweet{--fa:"";--fa--fa:""}.fa-car-rear{--fa:"";--fa--fa:""}.fa-car-alt{--fa:"";--fa--fa:""}.fa-pump-soap{--fa:"";--fa--fa:""}.fa-video-slash{--fa:"";--fa--fa:""}.fa-battery-quarter{--fa:"";--fa--fa:""}.fa-battery-2{--fa:"";--fa--fa:""}.fa-radio{--fa:"";--fa--fa:""}.fa-baby-carriage{--fa:"";--fa--fa:""}.fa-carriage-baby{--fa:"";--fa--fa:""}.fa-traffic-light{--fa:"";--fa--fa:""}.fa-thermometer{--fa:"";--fa--fa:""}.fa-vr-cardboard{--fa:"";--fa--fa:""}.fa-hand-middle-finger{--fa:"";--fa--fa:""}.fa-percent{--fa:"\%";--fa--fa:"\%\%"}.fa-percentage{--fa:"\%";--fa--fa:"\%\%"}.fa-truck-moving{--fa:"";--fa--fa:""}.fa-glass-water-droplet{--fa:"";--fa--fa:""}.fa-display{--fa:"";--fa--fa:""}.fa-face-smile{--fa:"";--fa--fa:""}.fa-smile{--fa:"";--fa--fa:""}.fa-thumbtack{--fa:"";--fa--fa:""}.fa-thumb-tack{--fa:"";--fa--fa:""}.fa-trophy{--fa:"";--fa--fa:""}.fa-person-praying{--fa:"";--fa--fa:""}.fa-pray{--fa:"";--fa--fa:""}.fa-hammer{--fa:"";--fa--fa:""}.fa-hand-peace{--fa:"";--fa--fa:""}.fa-rotate{--fa:"";--fa--fa:""}.fa-sync-alt{--fa:"";--fa--fa:""}.fa-spinner{--fa:"";--fa--fa:""}.fa-robot{--fa:"";--fa--fa:""}.fa-peace{--fa:"";--fa--fa:""}.fa-gears{--fa:"";--fa--fa:""}.fa-cogs{--fa:"";--fa--fa:""}.fa-warehouse{--fa:"";--fa--fa:""}.fa-arrow-up-right-dots{--fa:"";--fa--fa:""}.fa-splotch{--fa:"";--fa--fa:""}.fa-face-grin-hearts{--fa:"";--fa--fa:""}.fa-grin-hearts{--fa:"";--fa--fa:""}.fa-dice-four{--fa:"";--fa--fa:""}.fa-sim-card{--fa:"";--fa--fa:""}.fa-transgender{--fa:"";--fa--fa:""}.fa-transgender-alt{--fa:"";--fa--fa:""}.fa-mercury{--fa:"";--fa--fa:""}.fa-arrow-turn-down{--fa:"";--fa--fa:""}.fa-level-down{--fa:"";--fa--fa:""}.fa-person-falling-burst{--fa:"";--fa--fa:""}.fa-award{--fa:"";--fa--fa:""}.fa-ticket-simple{--fa:"";--fa--fa:""}.fa-ticket-alt{--fa:"";--fa--fa:""}.fa-building{--fa:"";--fa--fa:""}.fa-angles-left{--fa:"";--fa--fa:""}.fa-angle-double-left{--fa:"";--fa--fa:""}.fa-qrcode{--fa:"";--fa--fa:""}.fa-clock-rotate-left{--fa:"";--fa--fa:""}.fa-history{--fa:"";--fa--fa:""}.fa-face-grin-beam-sweat{--fa:"";--fa--fa:""}.fa-grin-beam-sweat{--fa:"";--fa--fa:""}.fa-file-export{--fa:"";--fa--fa:""}.fa-arrow-right-from-file{--fa:"";--fa--fa:""}.fa-shield{--fa:"";--fa--fa:""}.fa-shield-blank{--fa:"";--fa--fa:""}.fa-arrow-up-short-wide{--fa:"";--fa--fa:""}.fa-sort-amount-up-alt{--fa:"";--fa--fa:""}.fa-comment-nodes{--fa:"";--fa--fa:""}.fa-house-medical{--fa:"";--fa--fa:""}.fa-golf-ball-tee{--fa:"";--fa--fa:""}.fa-golf-ball{--fa:"";--fa--fa:""}.fa-circle-chevron-left{--fa:"";--fa--fa:""}.fa-chevron-circle-left{--fa:"";--fa--fa:""}.fa-house-chimney-window{--fa:"";--fa--fa:""}.fa-pen-nib{--fa:"";--fa--fa:""}.fa-tent-arrow-turn-left{--fa:"";--fa--fa:""}.fa-tents{--fa:"";--fa--fa:""}.fa-wand-magic{--fa:"";--fa--fa:""}.fa-magic{--fa:"";--fa--fa:""}.fa-dog{--fa:"";--fa--fa:""}.fa-carrot{--fa:"";--fa--fa:""}.fa-moon{--fa:"";--fa--fa:""}.fa-wine-glass-empty{--fa:"";--fa--fa:""}.fa-wine-glass-alt{--fa:"";--fa--fa:""}.fa-cheese{--fa:"";--fa--fa:""}.fa-yin-yang{--fa:"";--fa--fa:""}.fa-music{--fa:"";--fa--fa:""}.fa-code-commit{--fa:"";--fa--fa:""}.fa-temperature-low{--fa:"";--fa--fa:""}.fa-person-biking{--fa:"";--fa--fa:""}.fa-biking{--fa:"";--fa--fa:""}.fa-broom{--fa:"";--fa--fa:""}.fa-shield-heart{--fa:"";--fa--fa:""}.fa-gopuram{--fa:"";--fa--fa:""}.fa-earth-oceania{--fa:"";--fa--fa:""}.fa-globe-oceania{--fa:"";--fa--fa:""}.fa-square-xmark{--fa:"";--fa--fa:""}.fa-times-square{--fa:"";--fa--fa:""}.fa-xmark-square{--fa:"";--fa--fa:""}.fa-hashtag{--fa:"\#";--fa--fa:"\#\#"}.fa-up-right-and-down-left-from-center{--fa:"";--fa--fa:""}.fa-expand-alt{--fa:"";--fa--fa:""}.fa-oil-can{--fa:"";--fa--fa:""}.fa-t{--fa:"T";--fa--fa:"TT"}.fa-hippo{--fa:"";--fa--fa:""}.fa-chart-column{--fa:"";--fa--fa:""}.fa-infinity{--fa:"";--fa--fa:""}.fa-vial-circle-check{--fa:"";--fa--fa:""}.fa-person-arrow-down-to-line{--fa:"";--fa--fa:""}.fa-voicemail{--fa:"";--fa--fa:""}.fa-fan{--fa:"";--fa--fa:""}.fa-person-walking-luggage{--fa:"";--fa--fa:""}.fa-up-down{--fa:"";--fa--fa:""}.fa-arrows-alt-v{--fa:"";--fa--fa:""}.fa-cloud-moon-rain{--fa:"";--fa--fa:""}.fa-calendar{--fa:"";--fa--fa:""}.fa-trailer{--fa:"";--fa--fa:""}.fa-bahai{--fa:"";--fa--fa:""}.fa-haykal{--fa:"";--fa--fa:""}.fa-sd-card{--fa:"";--fa--fa:""}.fa-dragon{--fa:"";--fa--fa:""}.fa-shoe-prints{--fa:"";--fa--fa:""}.fa-circle-plus{--fa:"";--fa--fa:""}.fa-plus-circle{--fa:"";--fa--fa:""}.fa-face-grin-tongue-wink{--fa:"";--fa--fa:""}.fa-grin-tongue-wink{--fa:"";--fa--fa:""}.fa-hand-holding{--fa:"";--fa--fa:""}.fa-plug-circle-exclamation{--fa:"";--fa--fa:""}.fa-link-slash{--fa:"";--fa--fa:""}.fa-chain-broken{--fa:"";--fa--fa:""}.fa-chain-slash{--fa:"";--fa--fa:""}.fa-unlink{--fa:"";--fa--fa:""}.fa-clone{--fa:"";--fa--fa:""}.fa-person-walking-arrow-loop-left{--fa:"";--fa--fa:""}.fa-arrow-up-z-a{--fa:"";--fa--fa:""}.fa-sort-alpha-up-alt{--fa:"";--fa--fa:""}.fa-fire-flame-curved{--fa:"";--fa--fa:""}.fa-fire-alt{--fa:"";--fa--fa:""}.fa-tornado{--fa:"";--fa--fa:""}.fa-file-circle-plus{--fa:"";--fa--fa:""}.fa-book-quran{--fa:"";--fa--fa:""}.fa-quran{--fa:"";--fa--fa:""}.fa-anchor{--fa:"";--fa--fa:""}.fa-border-all{--fa:"";--fa--fa:""}.fa-face-angry{--fa:"";--fa--fa:""}.fa-angry{--fa:"";--fa--fa:""}.fa-cookie-bite{--fa:"";--fa--fa:""}.fa-arrow-trend-down{--fa:"";--fa--fa:""}.fa-rss{--fa:"";--fa--fa:""}.fa-feed{--fa:"";--fa--fa:""}.fa-draw-polygon{--fa:"";--fa--fa:""}.fa-scale-balanced{--fa:"";--fa--fa:""}.fa-balance-scale{--fa:"";--fa--fa:""}.fa-gauge-simple-high{--fa:"";--fa--fa:""}.fa-tachometer{--fa:"";--fa--fa:""}.fa-tachometer-fast{--fa:"";--fa--fa:""}.fa-shower{--fa:"";--fa--fa:""}.fa-desktop{--fa:"";--fa--fa:""}.fa-desktop-alt{--fa:"";--fa--fa:""}.fa-m{--fa:"M";--fa--fa:"MM"}.fa-table-list{--fa:"";--fa--fa:""}.fa-th-list{--fa:"";--fa--fa:""}.fa-comment-sms{--fa:"";--fa--fa:""}.fa-sms{--fa:"";--fa--fa:""}.fa-book{--fa:"";--fa--fa:""}.fa-user-plus{--fa:"";--fa--fa:""}.fa-check{--fa:"";--fa--fa:""}.fa-battery-three-quarters{--fa:"";--fa--fa:""}.fa-battery-4{--fa:"";--fa--fa:""}.fa-house-circle-check{--fa:"";--fa--fa:""}.fa-angle-left{--fa:"";--fa--fa:""}.fa-diagram-successor{--fa:"";--fa--fa:""}.fa-truck-arrow-right{--fa:"";--fa--fa:""}.fa-arrows-split-up-and-left{--fa:"";--fa--fa:""}.fa-hand-fist{--fa:"";--fa--fa:""}.fa-fist-raised{--fa:"";--fa--fa:""}.fa-cloud-moon{--fa:"";--fa--fa:""}.fa-briefcase{--fa:"";--fa--fa:""}.fa-person-falling{--fa:"";--fa--fa:""}.fa-image-portrait{--fa:"";--fa--fa:""}.fa-portrait{--fa:"";--fa--fa:""}.fa-user-tag{--fa:"";--fa--fa:""}.fa-rug{--fa:"";--fa--fa:""}.fa-earth-europe{--fa:"";--fa--fa:""}.fa-globe-europe{--fa:"";--fa--fa:""}.fa-cart-flatbed-suitcase{--fa:"";--fa--fa:""}.fa-luggage-cart{--fa:"";--fa--fa:""}.fa-rectangle-xmark{--fa:"";--fa--fa:""}.fa-rectangle-times{--fa:"";--fa--fa:""}.fa-times-rectangle{--fa:"";--fa--fa:""}.fa-window-close{--fa:"";--fa--fa:""}.fa-baht-sign{--fa:"";--fa--fa:""}.fa-book-open{--fa:"";--fa--fa:""}.fa-book-journal-whills{--fa:"";--fa--fa:""}.fa-journal-whills{--fa:"";--fa--fa:""}.fa-handcuffs{--fa:"";--fa--fa:""}.fa-triangle-exclamation{--fa:"";--fa--fa:""}.fa-exclamation-triangle{--fa:"";--fa--fa:""}.fa-warning{--fa:"";--fa--fa:""}.fa-database{--fa:"";--fa--fa:""}.fa-share{--fa:"";--fa--fa:""}.fa-mail-forward{--fa:"";--fa--fa:""}.fa-bottle-droplet{--fa:"";--fa--fa:""}.fa-mask-face{--fa:"";--fa--fa:""}.fa-hill-rockslide{--fa:"";--fa--fa:""}.fa-right-left{--fa:"";--fa--fa:""}.fa-exchange-alt{--fa:"";--fa--fa:""}.fa-paper-plane{--fa:"";--fa--fa:""}.fa-road-circle-exclamation{--fa:"";--fa--fa:""}.fa-dungeon{--fa:"";--fa--fa:""}.fa-align-right{--fa:"";--fa--fa:""}.fa-money-bill-1-wave{--fa:"";--fa--fa:""}.fa-money-bill-wave-alt{--fa:"";--fa--fa:""}.fa-life-ring{--fa:"";--fa--fa:""}.fa-hands{--fa:"";--fa--fa:""}.fa-sign-language{--fa:"";--fa--fa:""}.fa-signing{--fa:"";--fa--fa:""}.fa-calendar-day{--fa:"";--fa--fa:""}.fa-water-ladder{--fa:"";--fa--fa:""}.fa-ladder-water{--fa:"";--fa--fa:""}.fa-swimming-pool{--fa:"";--fa--fa:""}.fa-arrows-up-down{--fa:"";--fa--fa:""}.fa-arrows-v{--fa:"";--fa--fa:""}.fa-face-grimace{--fa:"";--fa--fa:""}.fa-grimace{--fa:"";--fa--fa:""}.fa-wheelchair-move{--fa:"";--fa--fa:""}.fa-wheelchair-alt{--fa:"";--fa--fa:""}.fa-turn-down{--fa:"";--fa--fa:""}.fa-level-down-alt{--fa:"";--fa--fa:""}.fa-person-walking-arrow-right{--fa:"";--fa--fa:""}.fa-square-envelope{--fa:"";--fa--fa:""}.fa-envelope-square{--fa:"";--fa--fa:""}.fa-dice{--fa:"";--fa--fa:""}.fa-bowling-ball{--fa:"";--fa--fa:""}.fa-brain{--fa:"";--fa--fa:""}.fa-bandage{--fa:"";--fa--fa:""}.fa-band-aid{--fa:"";--fa--fa:""}.fa-calendar-minus{--fa:"";--fa--fa:""}.fa-circle-xmark{--fa:"";--fa--fa:""}.fa-times-circle{--fa:"";--fa--fa:""}.fa-xmark-circle{--fa:"";--fa--fa:""}.fa-gifts{--fa:"";--fa--fa:""}.fa-hotel{--fa:"";--fa--fa:""}.fa-earth-asia{--fa:"";--fa--fa:""}.fa-globe-asia{--fa:"";--fa--fa:""}.fa-id-card-clip{--fa:"";--fa--fa:""}.fa-id-card-alt{--fa:"";--fa--fa:""}.fa-magnifying-glass-plus{--fa:"";--fa--fa:""}.fa-search-plus{--fa:"";--fa--fa:""}.fa-thumbs-up{--fa:"";--fa--fa:""}.fa-user-clock{--fa:"";--fa--fa:""}.fa-hand-dots{--fa:"";--fa--fa:""}.fa-allergies{--fa:"";--fa--fa:""}.fa-file-invoice{--fa:"";--fa--fa:""}.fa-window-minimize{--fa:"";--fa--fa:""}.fa-mug-saucer{--fa:"";--fa--fa:""}.fa-coffee{--fa:"";--fa--fa:""}.fa-brush{--fa:"";--fa--fa:""}.fa-file-half-dashed{--fa:"";--fa--fa:""}.fa-mask{--fa:"";--fa--fa:""}.fa-magnifying-glass-minus{--fa:"";--fa--fa:""}.fa-search-minus{--fa:"";--fa--fa:""}.fa-ruler-vertical{--fa:"";--fa--fa:""}.fa-user-large{--fa:"";--fa--fa:""}.fa-user-alt{--fa:"";--fa--fa:""}.fa-train-tram{--fa:"";--fa--fa:""}.fa-user-nurse{--fa:"";--fa--fa:""}.fa-syringe{--fa:"";--fa--fa:""}.fa-cloud-sun{--fa:"";--fa--fa:""}.fa-stopwatch-20{--fa:"";--fa--fa:""}.fa-square-full{--fa:"";--fa--fa:""}.fa-magnet{--fa:"";--fa--fa:""}.fa-jar{--fa:"";--fa--fa:""}.fa-note-sticky{--fa:"";--fa--fa:""}.fa-sticky-note{--fa:"";--fa--fa:""}.fa-bug-slash{--fa:"";--fa--fa:""}.fa-arrow-up-from-water-pump{--fa:"";--fa--fa:""}.fa-bone{--fa:"";--fa--fa:""}.fa-table-cells-row-unlock{--fa:"";--fa--fa:""}.fa-user-injured{--fa:"";--fa--fa:""}.fa-face-sad-tear{--fa:"";--fa--fa:""}.fa-sad-tear{--fa:"";--fa--fa:""}.fa-plane{--fa:"";--fa--fa:""}.fa-tent-arrows-down{--fa:"";--fa--fa:""}.fa-exclamation{--fa:"\!";--fa--fa:"\!\!"}.fa-arrows-spin{--fa:"";--fa--fa:""}.fa-print{--fa:"";--fa--fa:""}.fa-turkish-lira-sign{--fa:"";--fa--fa:""}.fa-try{--fa:"";--fa--fa:""}.fa-turkish-lira{--fa:"";--fa--fa:""}.fa-dollar-sign{--fa:"\$";--fa--fa:"\$\$"}.fa-dollar{--fa:"\$";--fa--fa:"\$\$"}.fa-usd{--fa:"\$";--fa--fa:"\$\$"}.fa-x{--fa:"X";--fa--fa:"XX"}.fa-magnifying-glass-dollar{--fa:"";--fa--fa:""}.fa-search-dollar{--fa:"";--fa--fa:""}.fa-users-gear{--fa:"";--fa--fa:""}.fa-users-cog{--fa:"";--fa--fa:""}.fa-person-military-pointing{--fa:"";--fa--fa:""}.fa-building-columns{--fa:"";--fa--fa:""}.fa-bank{--fa:"";--fa--fa:""}.fa-institution{--fa:"";--fa--fa:""}.fa-museum{--fa:"";--fa--fa:""}.fa-university{--fa:"";--fa--fa:""}.fa-umbrella{--fa:"";--fa--fa:""}.fa-trowel{--fa:"";--fa--fa:""}.fa-d{--fa:"D";--fa--fa:"DD"}.fa-stapler{--fa:"";--fa--fa:""}.fa-masks-theater{--fa:"";--fa--fa:""}.fa-theater-masks{--fa:"";--fa--fa:""}.fa-kip-sign{--fa:"";--fa--fa:""}.fa-hand-point-left{--fa:"";--fa--fa:""}.fa-handshake-simple{--fa:"";--fa--fa:""}.fa-handshake-alt{--fa:"";--fa--fa:""}.fa-jet-fighter{--fa:"";--fa--fa:""}.fa-fighter-jet{--fa:"";--fa--fa:""}.fa-square-share-nodes{--fa:"";--fa--fa:""}.fa-share-alt-square{--fa:"";--fa--fa:""}.fa-barcode{--fa:"";--fa--fa:""}.fa-plus-minus{--fa:"";--fa--fa:""}.fa-video{--fa:"";--fa--fa:""}.fa-video-camera{--fa:"";--fa--fa:""}.fa-graduation-cap{--fa:"";--fa--fa:""}.fa-mortar-board{--fa:"";--fa--fa:""}.fa-hand-holding-medical{--fa:"";--fa--fa:""}.fa-person-circle-check{--fa:"";--fa--fa:""}.fa-turn-up{--fa:"";--fa--fa:""}.fa-level-up-alt{--fa:"";--fa--fa:""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}/*!
+ * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2024 Fonticons, Inc.
*/:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url("../fonts/fa-solid-900.woff2") format("woff2"),url("../fonts/fa-solid-900.ttf") format("truetype")}.fas,.fa-solid{font-weight:900}*{margin:0;padding:0}html,body{height:100%}body{font-family:sans-serif;line-height:1.5;min-height:100%}.wrap{width:80%;max-width:1100px;margin:auto;position:relative}.logospace{float:left}html[dir=rtl] .logospace{float:right}.menuspace{float:right}html[dir=rtl] .menuspace{float:left}.center{text-align:center}.v-center{display:table-cell;vertical-align:middle}i{font-style:italic}h1{margin:1em 0;font-size:2em;font-weight:900}h2{margin:1em 0;font-size:1.5em;font-weight:700;color:#1c1c1c;border-bottom:solid 1px #bbb}h3{font-weight:500;color:#2e3436;padding:0;margin-top:0}p{padding:.5em 0;margin-bottom:1em}a{color:#191970}a:hover,a:focus,a.pure-menu-link:hover,a.pure-menu-link:focus,.pure-menu-selected a.pure-menu-link:hover,.pure-menu-selected a.pure-menu-link:focus{color:#fff;background-color:#444;padding:.5em 1em}a:hover,a:focus{padding:.15rem}.overflow{overflow:hidden}ul{padding-left:1.5em}strong,b{font-weight:bold}pre,code,kbd,samp,tt{font-family:monospace;font-size:.9rem;padding:0 .2rem}.xmldata{font-family:monospace}#layout,#menu,#foot,.menu-link{-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}#layout.active #menu{right:11em;width:11em}#menu{margin-right:-11em;width:11em;position:fixed;top:0;right:0;bottom:0;z-index:1000;background:#e8410c;overflow-y:auto;-webkit-overflow-scrolling:touch}#menu a{color:#fff;border:none;padding:.6em 0 .6em .6em}#menu .pure-menu,#menu .pure-menu ul{border:none;background:rgba(0,0,0,0)}#menu .pure-menu ul,#menu .pure-menu .menu-item-divided{border-top:1px solid #db0100}#menu .pure-menu-selected,#menu .pure-menu-heading{background:#b8002c;color:#000}#menu .pure-menu-selected a{color:#fff}#menu .pure-menu-heading{font-size:110%;color:#fff;margin:0;text-transform:none}.menu-link{position:relative;display:block;top:0;right:0;background:rgba(0,0,0,0);z-index:10;height:2rem;padding:2rem 0;text-decoration:none}.menu-link:hover,.menu-link:focus{padding:2rem 0;background:none !important}.menu-link span{position:relative;display:block;color:#fff}.menu-link span,.menu-link span::before,.menu-link span::after{background-color:rgba(0,0,0,0)}.menu-link span:focus,.menu-link span:hover{color:rgba(1,1,1,.8)}@media screen and (max-width: 40em){#layout.active{position:relative;right:11em}#menuLink.menu-link.active{position:fixed;right:13em}#foot.active{margin-right:11em}}#header{height:6rem;background:linear-gradient(141deg, #b8002c 0%, #db0100 51%, #e8410c 75%)}.logo-header{min-width:8em;height:6rem;max-width:70%}#logo{font-family:sans-serif;font-size:2.5em;color:#fff;text-shadow:0 3px 2px #532900}.simple{font-weight:300}.saml{font-family:Verdana,sans-serif;letter-spacing:-0.12em;font-weight:600;margin-left:-0.05em}.language-menu{font-family:sans-serif;font-weight:400;min-width:10rem;padding:0em .6em !important}.language-bar{height:6rem}#layout{right:0;padding-right:0;min-height:100%;margin:0 auto -6rem}#content{padding-top:2em;padding-bottom:2rem}.message-box{background-color:#f4f4f4;border-left:.3125rem solid #444;box-shadow:0 5px 8px -6px rgba(0,0,0,.2);margin:1rem 0;padding:1.3rem;position:relative}.message-box.error{background-color:#f7e4e1;border-left-color:#cc4b37}.message-box.warning{background-color:#fffdbf;border-left-color:#f9f56b}.message-box.success{background-color:#daf7e6;border-left-color:#46cc48}.auth_methods{margin-top:2em;width:35%}.code-box{margin-bottom:1em;border:1px solid #ccc}.code-box a{padding:.5em}.code-box-content{word-break:break-all;font-size:1em;line-height:1.15;padding:.5em 1em;display:inline-block;min-height:1em;height:100%;white-space:pre-wrap;font-family:monospace}.code-box-content::selection{color:#000;background:#fffdbf}.code-box-title{border-bottom:1px solid #ccc;background-color:#e0e0e0;padding:.5em 0 .5em .5em}pre#xmlmetadata{width:98%}#bottom,#push{height:6rem}#footer{width:100%;background:linear-gradient(141deg, #b8002c 0%, #db0100 51%, #e8410c 75%);height:4rem;padding:2rem 0 0;text-align:center;color:#fff}#footer a,#footer a:visited{color:#fff}#footer a:focus,#footer a:hover,#footer a:visited:focus,#footer a:visited:hover{background-color:#fff;color:#000;padding:.15rem;margin-left:-0.15rem;margin-top:-0.15rem;text-decoration:none}.copyrights{padding-top:.5rem;height:3.5rem;font-size:.8rem}.logo-footer-space{position:absolute;right:0;top:50%;transform:translate(0, -50%)}html[dir=rtl] .logo-footer-space{right:auto;left:0}.logo-footer{height:4rem}.text-area{margin-top:.5em;width:100%;font-size:.9em;line-height:1.15}.file-upload input[type=url][disabled]{cursor:pointer;color:inherit}input[type=file]{color:#000}.center-form{display:flex;justify-content:center}.login-form-start,.login-form-submit{margin-top:3ex}input#username:disabled{color:#000}.v-center-right{position:absolute;left:0;top:50%;transform:translate(0, -50%)}.pure-button,.pure-form input.edge,.pure-form textarea.edge{border-radius:0}.pure-form input[type=checkbox]{margin-right:.8ex;vertical-align:baseline}.pure-control-group{margin-bottom:1ex}.pure-form-aligned .pure-controls{margin:0 0 0 11em}.pure-select{float:right}html[dir=rtl] .pure-select{float:left}.code-box-title .clipboard-btn{background-color:#f0f0f0;border:1px solid #ccc;position:absolute;right:0;height:inherit;margin-top:-2em;margin-right:4px}.pure-button{margin-left:1ex}.pure-button:hover,.pure-button:focus{background-color:#555;padding:.5em 1em;color:#fff}.pure-button-red{background-color:#db0100;color:#fff}.pure-button-red:hover,.pure-button-red:focus{background-color:#555;padding:.5em 1em}.pure-button.hollow{background-color:#fff;color:#6f6f6f;border:solid 1px #e6e6e6}.pure-button.hollow:hover{background-image:none}.pure-button.hollow[disabled]{cursor:auto;opacity:initial;pointer-events:auto;-webkit-user-drag:auto;-webkit-user-select:auto;-moz-user-select:text;-ms-user-select:text;user-select:text}.pure-button.hljs{display:inline-block;border:0;background-color:rgba(0,0,0,0)}.pure-button.hljs:hover,.pure-button.hljs:focus{background-color:#f0f0f0;color:#000}.pure-button-group .pure-button:first-child,.pure-button-group .pure-button:last-child{border-radius:0}.pure-button-group.two-elements .pure-button{margin:0;line-height:unset;border:1px solid #e6e6e6}.pure-button-group.two-elements form{display:inline}.pure-button-group.two-elements .pure-button:first-child{border-right:none}.pure-button-group.two-elements .pure-button:last-child{border-right:1px solid #e6e6e6}.pure-button-group .pure-button.show-files{max-width:450px;overflow:hidden}.top-right-corner{position:absolute;right:1.75em}input#postLoginSubmitButton{display:none}.fa{font-family:"Font Awesome 6 Free",sans-serif !important;font-weight:400}span.fa,i.fa{padding:0 .5em}.message-box span.fa,.message-box i.fa{padding:0}.pure-table-attributes{table-layout:fixed;width:100%}.attrname{text-align:right}.attrvalue{overflow-wrap:break-word}table.attributes ul{padding:inherit}@media screen and (max-width: 40em){.pure-form .pure-input-sm-1-1{width:100%}}@media screen and (max-width: 40em){.wrap{width:90%}.pure-form-aligned .pure-controls{margin:.5em 0 0;float:left}#layout{padding-top:0;margin-bottom:-4rem}.auth_methods{width:60%}#logo{font-size:1.8em}#footer{height:2.5rem;padding-top:1.5rem}#footer .copyrights{height:1rem;padding-top:0}}@media screen and (max-width: 0),screen and (min-width: 40em){.show-for-small-only{display:none !important}.input-sm-placeholder{display:inline-block}}@media screen and (min-width: 40em){.hide-for-large{display:none !important}}@media screen and (max-width: 40em){.show-for-large{display:none !important}}div.preferredidp{border:1px dashed #ccc;background:#eee;padding:2px 2em}.clear{clear:both}.breathe-top{margin-top:1em}.expandable{border:solid 1px #bbb;width:100%}.expandable .general{padding:1em}.expandable .content{display:none;padding:1em}.expandable .expander{cursor:pointer;text-align:center;padding:.25em;display:block;color:#000;background-color:#f4f4f4;border-top:solid 1px #bbb}.expandable .expander:focus,.expandable .expander:hover{background-color:#555;color:#fff}.expandable .expander::after{content:"";font-family:"Font Awesome 6 Free",sans-serif;font-weight:400}.expandable.expanded .content{display:block;border-left:solid .25em #555;border-right:solid .25em #555}.expandable.expanded .expander{border-bottom:none;border-top:solid 1px #bbb;border-left:solid .25em #555;border-right:solid .25em #555}.expandable.expanded .expander::after{content:""}.hidden{display:none}.idp{border:1px solid silver;padding:1ex;margin:1ex}.idp .idpname{font-size:larger;font-weight:bold}.idp .idpdesc{font-size:small;color:gray}.right{float:right}.left{float:left}
diff --git a/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css.map b/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css.map
index 6b894663d..5ff09a658 100644
--- a/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css.map
+++ b/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css.map
@@ -1 +1 @@
-{"version":3,"file":"css/stylesheet.css","mappings":"AAAA;;;CAGC;;AAED;;;;;;;;;;;;;CAaC,SAAS;CACT,UAAU;CACV,SAAS;CACT,eAAe;CACf,aAAa;CACb,wBAAwB;AACzB;AACA,gDAAgD;AAChD;;CAEC,cAAc;AACf;AACA,kDAAkD;AAClD;IACI,aAAa;AACjB;AACA;CACC,cAAc;AACf;AACA;CACC,gBAAgB;AACjB;AACA;CACC,YAAY;AACb;AACA;;CAEC,WAAW;CACX,aAAa;AACd;AACA;CACC,yBAAyB;CACzB,iBAAiB;AAClB;;ACnDA;;;;;CAKC;AACD;;;CAGC;AACD,2EAA2E;;AAE3E;+EAC+E;;AAE/E;;;EAGE;;AAEF;EACE,iBAAiB,EAAE,MAAM;EACzB,8BAA8B,EAAE,MAAM;AACxC;;AAEA;+EAC+E;;AAE/E;;EAEE;;AAEF;EACE,SAAS;AACX;;AAEA;;EAEE;;AAEF;EACE,cAAc;AAChB;;AAEA;;;EAGE;;AAEF;EACE,cAAc;EACd,gBAAgB;AAClB;;AAEA;+EAC+E;;AAE/E;;;EAGE;;AAEF;EACE,uBAAuB,EAAE,MAAM;EAC/B,SAAS,EAAE,MAAM;EACjB,iBAAiB,EAAE,MAAM;AAC3B;;AAEA;;;EAGE;;AAEF;EACE,iCAAiC,EAAE,MAAM;EACzC,cAAc,EAAE,MAAM;AACxB;;AAEA;+EAC+E;;AAE/E;;EAEE;;AAEF;EACE,6BAA6B;AAC/B;;AAEA;;;EAGE;;AAEF;EACE,mBAAmB,EAAE,MAAM;EAC3B,0BAA0B,EAAE,MAAM;EAClC,yCAAyC;UACjC,iCAAiC,EAAE,MAAM;AACnD;;AAEA;;EAEE;;AAEF;;EAEE,mBAAmB;AACrB;;AAEA;;;EAGE;;AAEF;;;EAGE,iCAAiC,EAAE,MAAM;EACzC,cAAc,EAAE,MAAM;AACxB;;AAEA;;EAEE;;AAEF;EACE,cAAc;AAChB;;AAEA;;;EAGE;;AAEF;;EAEE,cAAc;EACd,cAAc;EACd,kBAAkB;EAClB,wBAAwB;AAC1B;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,WAAW;AACb;;AAEA;+EAC+E;;AAE/E;;EAEE;;AAEF;EACE,kBAAkB;AACpB;;AAEA;+EAC+E;;AAE/E;;;EAGE;;AAEF;;;;;EAKE,oBAAoB,EAAE,MAAM;EAC5B,eAAe,EAAE,MAAM;EACvB,iBAAiB,EAAE,MAAM;EACzB,SAAS,EAAE,MAAM;AACnB;;AAEA;;;EAGE;;AAEF;QACQ,MAAM;EACZ,iBAAiB;AACnB;;AAEA;;;EAGE;;AAEF;SACS,MAAM;EACb,oBAAoB;AACtB;;AAEA;;EAEE;;AAEF;;;;EAIE,0BAA0B;AAC5B;;AAEA;;EAEE;;AAEF;;;;EAIE,kBAAkB;EAClB,UAAU;AACZ;;AAEA;;EAEE;;AAEF;;;;EAIE,8BAA8B;AAChC;;AAEA;;EAEE;;AAEF;EACE,8BAA8B;AAChC;;AAEA;;;;;EAKE;;AAEF;EACE,sBAAsB,EAAE,MAAM;EAC9B,cAAc,EAAE,MAAM;EACtB,cAAc,EAAE,MAAM;EACtB,eAAe,EAAE,MAAM;EACvB,UAAU,EAAE,MAAM;EAClB,mBAAmB,EAAE,MAAM;AAC7B;;AAEA;;EAEE;;AAEF;EACE,wBAAwB;AAC1B;;AAEA;;EAEE;;AAEF;EACE,cAAc;AAChB;;AAEA;;;EAGE;;AAEF;;EAEE,sBAAsB,EAAE,MAAM;EAC9B,UAAU,EAAE,MAAM;AACpB;;AAEA;;EAEE;;AAEF;;EAEE,YAAY;AACd;;AAEA;;;EAGE;;AAEF;EACE,6BAA6B,EAAE,MAAM;EACrC,oBAAoB,EAAE,MAAM;AAC9B;;AAEA;;EAEE;;AAEF;EACE,wBAAwB;AAC1B;;AAEA;;;EAGE;;AAEF;EACE,0BAA0B,EAAE,MAAM;EAClC,aAAa,EAAE,MAAM;AACvB;;AAEA;+EAC+E;;AAE/E;;EAEE;;AAEF;EACE,cAAc;AAChB;;AAEA;;EAEE;;AAEF;EACE,kBAAkB;AACpB;;AAEA;+EAC+E;;AAE/E;;EAEE;;AAEF;EACE,aAAa;AACf;;AAEA;;EAEE;;AAEF;EACE,aAAa;AACf;;AAEA,0BAA0B;;AAE1B;;+EAE+E;;AAE/E;;EAEE;;AAEF;IACI,uBAAuB;AAC3B;;AAEA;;EAEE;;AAEF;;IAEI,wBAAwB;AAC5B;;AAEA;;;EAGE;AACF;IACI,eAAe;IACf,YAAY;IACZ,cAAc;AAClB;;AAEA,oFAAoF;;AAEpF;IACI,aAAa;IACb,mBAAmB;;IAEnB,6CAA6C;IAC7C,yBAAyB;AAC7B;;AAEA;IACI,qBAAqB;IACrB,mBAAmB;AACvB;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8CI,qBAAqB;IACrB,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;AACxB;;AAEA;IACI,cAAc;AAClB;;AAEA;;IAEI,cAAc;AAClB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,UAAU;AACd;;AAEA;IACI,eAAe;AACnB;;AAEA;;IAEI,UAAU;AACd;;AAEA;IACI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,UAAU;AACd;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,eAAe;AACnB;;AAEA;;IAEI,UAAU;AACd;;AAEA;IACI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,UAAU;AACd;;AAEA;;IAEI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,eAAe;AACnB;;AAEA;;IAEI,UAAU;AACd;;AAEA;IACI,eAAe;AACnB;;AAEA;IACI,UAAU;AACd;;AAEA;;IAEI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,eAAe;AACnB;;AAEA;;;;IAII,WAAW;AACf;AACA;IACI,cAAc;IACd,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,sBAAsB;IACtB,kBAAkB;IAClB,eAAe;IACf,uBAAuB;IACvB,yBAAyB;YACjB,iBAAiB;IACzB,sBAAsB;AAC1B;;AAEA,+CAA+C;AAC/C;IACI,UAAU;IACV,SAAS;AACb;;AAEA,2BAA2B;AAC3B;IACI,uBAAuB,EAAE,+CAA+C;IACxE,6BAA6B,EAAE,qDAAqD;AACxF;;AAEA;;IAEI,qBAAqB;AACzB;;AAEA;IACI,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;AACxB;;AAEA,6BAA6B;;AAE7B;IACI,oBAAoB;IACpB,eAAe;IACf,kBAAkB;IAClB,0BAA0B;IAC1B,6BAA6B;IAC7B,yBAAyB;IACzB,qBAAqB;IACrB,kBAAkB;AACtB;;AAEA;;;IAGI,wFAAwF;AAC5F;AACA;IACI,UAAU;AACd;AACA;;IAEI,8EAA8E;IAC9E,kBAAkB;AACtB;;AAEA;;;;;IAKI,YAAY;IACZ,sBAAsB;IACtB,aAAa;IACb,mBAAmB;IACnB,gBAAgB;IAChB,oBAAoB;AACxB;;AAEA;IACI,aAAa;AACjB;;AAEA;;;;IAII,kCAAkC;IAClC,WAAW;AACf;;AAEA,kBAAkB;AAClB;IACI,SAAS;IACT,gBAAgB;IAChB,0CAA0C;;AAE9C;;AAEA;IACI,2BAA2B;IAC3B,8BAA8B;AAClC;AACA;IACI,4BAA4B;IAC5B,+BAA+B;IAC/B,kBAAkB;AACtB;;AAEA,0BAA0B;AAC1B;;;;;CAKC;;AAED;;;;;;;;;;;;;;;;IAgBI,oBAAoB;IACpB,qBAAqB;IACrB,sBAAsB;IACtB,gCAAgC;IAChC,kBAAkB;IAClB,sBAAsB;IACtB,sBAAsB;AAC1B;;AAEA;;;CAGC;AACD;IACI,oBAAoB;IACpB,qBAAqB;IACrB,sBAAsB;IACtB,gCAAgC;IAChC,kBAAkB;IAClB,sBAAsB;AAC1B;;;AAGA,+EAA+E;AAC/E,+FAA+F;AAC/F;IACI,oBAAoB;AACxB;;;AAGA;;;;;;;;;;;;;;;;IAgBI,UAAU;IACV,qBAAqB;AACzB;;AAEA;;;CAGC;AACD;IACI,UAAU;IACV,qBAAqB;AACzB;;AAEA;;;IAGI,2BAA2B;IAC3B,yBAAyB;AAC7B;AACA;;IAEI,eAAe;IACf,cAAc;AAClB;;AAEA;;;;;;;;;;;;;;;;IAgBI,mBAAmB;IACnB,yBAAyB;IACzB,cAAc;AAClB;;AAEA;;;CAGC;AACD;IACI,mBAAmB;IACnB,yBAAyB;IACzB,cAAc;AAClB;AACA;;;IAGI,sBAAsB,EAAE,wBAAwB;IAChD,WAAW,EAAE,oBAAoB;IACjC,kBAAkB;AACtB;;AAEA;;;IAGI,cAAc;IACd,qBAAqB;AACzB;AACA;;;IAGI,sBAAsB;AAC1B;AACA;IACI,sDAAsD;IACtD,cAAc;IACd,sBAAsB;IACtB,uBAAuB;AAC3B;AACA;IACI,YAAY;AAChB;AACA;IACI,qBAAqB;AACzB;AACA;IACI,SAAS;IACT,wBAAwB;IACxB,SAAS;AACb;AACA;IACI,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,oBAAoB;IACpB,WAAW;IACX,gCAAgC;AACpC;;AAEA;;;;;;;;;;;;;;;;;;IAkBI,cAAc;IACd,gBAAgB;AACpB;;AAEA;;;CAGC;AACD;IACI,cAAc;IACd,gBAAgB;AACpB;AACA;;;;IAII,qBAAqB;IACrB,sBAAsB;AAC1B;AACA;IACI,mBAAmB;AACvB;;AAEA,kBAAkB;AAClB;IACI,oBAAoB;AACxB;AACA;IACI,iBAAiB;IACjB,qBAAqB;IACrB,sBAAsB;IACtB,WAAW;IACX,iBAAiB;AACrB;AACA;IACI,sBAAsB;AAC1B;;AAEA,mBAAmB;AACnB;;IAEI,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA,mBAAmB;AACnB;IACI,mBAAmB;AACvB;AACA;;IAEI,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;AACb;AACA;;IAEI,UAAU;AACd;AACA;;IAEI,QAAQ;IACR,0BAA0B;IAC1B,SAAS;AACb;AACA;;IAEI,QAAQ;IACR,kBAAkB;IAClB,SAAS;AACb;AACA;;IAEI,SAAS;IACT,0BAA0B;IAC1B,SAAS;AACb;AACA;IACI,gBAAgB;AACpB;;AAEA;IACI,WAAW;AACf;AACA;IACI,UAAU;AACd;AACA;IACI,UAAU;AACd;AACA;IACI,UAAU;AACd;AACA;IACI,UAAU;AACd;AACA;IACI,UAAU;AACd;;AAEA,0BAA0B;AAC1B;IACI,qBAAqB;IACrB,mBAAmB;IACnB,WAAW;IACX,sBAAsB;IACtB,kBAAkB;AACtB;;AAEA,yBAAyB;AACzB;IACI,cAAc;IACd,WAAW;IACX,kBAAkB;AACtB;;AAEA;IACI;QACI,iBAAiB;IACrB;;IAEA;;;;;;;;;;;;;;;;QAgBI,oBAAoB;QACpB,cAAc;IAClB;;IAEA;;;;;;;;;;;;;;;QAeI,gBAAgB;IACpB;;IAEA;QACI,oBAAoB;QACpB,gBAAgB;QAChB,cAAc;QACd,WAAW;IACf;;IAEA;QACI,mBAAmB;IACvB;;IAEA;;QAEI,cAAc;QACd,iBAAiB;QACjB,8EAA8E;QAC9E,sBAAsB;IAC1B;AACJ;;AAEA,oDAAoD;AACpD;IACI,sBAAsB;AAC1B;;AAEA;IACI,eAAe;IACf,OAAO;IACP,MAAM;IACN,UAAU;AACd;;AAEA;;IAEI,kBAAkB;AACtB;;AAEA;IACI,gBAAgB;IAChB,SAAS;IACT,UAAU;AACd;;AAEA;IACI,UAAU;IACV,SAAS;IACT,YAAY;AAChB;;AAEA;;IAEI,cAAc;IACd,qBAAqB;IACrB,mBAAmB;AACvB;;AAEA,oBAAoB;AACpB;IACI,WAAW;IACX,mBAAmB;AACvB;;AAEA;IACI,qBAAqB;AACzB;;AAEA,qEAAqE;AACrE;;;IAGI,qBAAqB;IACrB,sBAAsB;AAC1B;;AAEA,6CAA6C;AAC7C;IACI,cAAc;AAClB;;AAEA;IACI,aAAa;IACb,kBAAkB;IAClB,UAAU;IACV,MAAM;IACN,SAAS;IACT,UAAU;IACV,UAAU;AACd;;AAEA;IACI,OAAO;IACP,SAAS;IACT,cAAc;AAClB;;AAEA;;IAEI,cAAc;IACd,kBAAkB;AACtB;;AAEA,6CAA6C;AAC7C;IACI,mBAAmB;IACnB,gBAAgB;IAChB,gBAAgB;AACpB;;AAEA,+CAA+C;AAC/C;IACI,gBAAgB;AACpB;;AAEA,qBAAqB;AACrB;IACI,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,cAAc;AAClB;;AAEA;IACI,qBAAqB;AACzB;;AAEA;IACI,mBAAmB;IACnB,kBAAkB;IAClB,gBAAgB;IAChB,kEAAkE;IAClE,eAAe;AACnB;;AAEA,yBAAyB;;AAEzB;;IAEI,sBAAsB;IACtB,WAAW;IACX,cAAc;AAClB;;AAEA;IACI,UAAU;IACV,aAAa;IACb,eAAe;AACnB;;AAEA,0DAA0D;AAC1D;IACI,cAAc;IACd,WAAW;AACf;;AAEA;IACI,yBAAyB;IACzB,cAAc;AAClB;;AAEA;IACI,WAAW;AACf;;AAEA;IACI,sBAAsB;AAC1B;;AAEA;;IAEI,iBAAiB;AACrB;;AAEA;IACI,WAAW;AACf;;AAEA;IACI,6BAA6B;IAC7B,eAAe;AACnB;;AAEA;;;IAGI,sBAAsB;AAC1B;;AAEA;;IAEI,WAAW;AACf;;AAEA;IACI,4DAA4D;IAC5D,yBAAyB;IACzB,iBAAiB;IACjB,iBAAiB;IACjB,yBAAyB;AAC7B;;AAEA;IACI,WAAW;IACX,oCAAoC;IACpC,cAAc;IACd,kBAAkB;AACtB;;AAEA;;IAEI,8BAA8B,CAAC,yBAAyB;IACxD,uBAAuB;IACvB,kBAAkB;IAClB,SAAS;IACT,iBAAiB,EAAE,kDAAkD;IACrE,kBAAkB,EAAE,iBAAiB;AACzC;;AAEA;IACI,yBAAyB;IACzB,WAAW;IACX,gBAAgB;IAChB,sBAAsB;AAC1B;;AAEA;;;;CAIC;AACD;IACI,6BAA6B;AACjC;AACA;IACI,yBAAyB;AAC7B;;AAEA,2CAA2C;AAC3C;IACI,yBAAyB;AAC7B;;AAEA,oBAAoB;AACpB;IACI,gCAAgC;AACpC;AACA;IACI,sBAAsB;AAC1B;;;AAGA,+BAA+B;;AAE/B;;IAEI,uBAAuB;IACvB,gCAAgC;AACpC;AACA;IACI,sBAAsB;AAC1B;;AC9xCA;EACE,cAAc;EACd,gBAAgB;EAChB;AACF;AACA;EACE;AACF;AACA;;;;;;CAMC;AACD;;;;;;;CAOC;AACD;;;;;;;;;;;;;;;;;CAiBC;AACD;EACE,cAAc;EACd,gBAAgB;EAChB;AACF;AACA;EACE;AACF;AACA;EACE,cAAc;EACd;AACF;AACA;;EAEE,yBAAyB;EACzB;AACF;AACA,4CAA4C;AAC5C;;;;AAIA;AACA,gEAAgE;AAChE;EACE;AACF;AACA,+DAA+D;AAC/D;EACE;AACF;AACA,yEAAyE;AACzE;;;EAGE;AACF;AACA;EACE;AACF;AACA,+EAA+E;AAC/E;;;;;;EAME;AACF;AACA,2EAA2E;AAC3E;;;;;;EAME;AACF;AACA,0DAA0D;AAC1D;;;EAGE;AACF;AACA;EACE,iBAAiB;EACjB;AACF;AACA,kEAAkE;AAClE;;;;EAIE;AACF;AACA,4EAA4E;AAC5E,aAAa;AACb;;;;;EAKE;AACF;AACA,yDAAyD;AACzD;;;;;EAKE;AACF;AACA,sEAAsE;AACtE,uBAAuB;AACvB,0BAA0B;AAC1B,yBAAyB;AACzB,2BAA2B;AAC3B;;;;EAIE;AACF;AACA;EACE,cAAc;EACd;AACF;AACA,+EAA+E;AAC/E;;;CAGC;AACD;;;EAGE;AACF;AACA,8BAA8B;AAC9B;;EAEE;AACF,C;AChKQ;;;;ECFR,CCGA,IACE,0DACA,iCAGF,gFASE,kCACA,mCACA,wCACA,kBACA,oBACA,cACA,oBAGF,4CAKE,kCAGF,gBAEE,oCC/BA,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,QACE,eAMF,QCIA,iBACA,iBACA,sBDNA,OCIA,gBACA,0BACA,sBDNA,OCIA,iBACA,0BACA,6BDNA,OCIA,iBACA,kBACA,uBDNA,OCIA,gBACA,0BACA,wBDNA,QCIA,cACA,qBACA,yBCfF,OACE,kBACA,YCIwB,CCN1B,OACE,qBACA,uCACA,eAEA,4BAGF,OACE,sCACA,kBACA,kBACA,8BACA,oBCbF,WACE,0CACA,6CACA,2CACA,4CACA,sDAGF,cACE,WACA,0CAGF,eACE,YACA,yCCfF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,kEAGF,WACE,yBACA,8CACA,0DACA,oDACA,wEACA,wFAGF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,mFAGF,cACE,4BACA,8CACA,0DACA,oDACA,wEACA,mFAGF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,kEAGF,UACE,wBACA,8CACA,0DACA,oDACA,wEACA,6DAGF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,6DAGF,iBACE,kCAGF,yBAEE,uBACA,0DACA,oDACA,wEACA,+DAMF,uCACE,gGASE,qBACA,uBACA,4BACA,oBACA,wBAIJ,mBACE,0BACA,iDAGF,qBACE,uCACA,4GACA,wIACA,4GACA,yEACA,wCACA,0CAGF,mBACE,yCAGF,wBACE,QACE,yCACA,mBAEF,IACE,UACA,mDAIJ,mBACE,IACE,kHAIJ,oBACE,4BACA,2BACA,gCACA,gCACA,6BACA,4BACA,6BACA,4BACA,iCAGF,mBACE,0BACA,+BCnJF,cACE,wBAGF,eACE,yBAGF,eACE,yBAGF,oBACE,uBAGF,kBACE,uBAGF,mDAEE,wBAGF,cACE,4CC1BF,UACE,qBACA,WACA,gBACA,kBACA,qBLmCwB,CKlCxB,WLmCwB,CKhC1B,0BAEE,OACA,kBACA,kBACA,WACA,sCAGF,aACE,oBAGF,aACE,cAGF,YACE,8BCvBA,opqECHF,qBTqBE,kBACA,UACA,WACA,UACA,YACA,gBACA,sBACA,mBACA,eAKA,iEAbA,kBACA,UACA,WACA,UACA,YACA,gBACA,sBACA,mBACA,eUjCF;;;;EAAA,CAQA,YACE,iDACA,wDAIF,WACE,kCACA,kBACA,gBACA,kBR6BwB,CQ5BxB,2GAIF,eAEE,gBdRF,EACE,SACA,UAGF,UAEE,YAGF,KACE,uBACA,gBACA,gBAGF,MACE,UACA,iBACA,YACA,kBAGF,WACE,WAGF,yBACE,YAGF,WACE,YAGF,yBACE,WAGF,QACE,kBAGF,UAEE,mBACA,sBAGF,EACE,kBAGF,GACE,aACA,cACA,gBAGF,GACE,aACA,gBACA,gBACA,cACA,6BAGF,GACE,gBACA,cACA,UACA,aAGF,EACE,eACA,kBAGF,EACE,cAEA,oJAME,WACA,sBACA,iBAGF,gBAEE,eAIJ,UACE,gBAGF,GACE,mBAGF,SAEE,iBAGF,qBAKE,sBACA,gBACA,gBAGF,SACE,sBAUF,+BAIE,oCACA,iCACA,gCACA,+BACA,4BAMF,qBACE,WACA,WAOF,MACE,mBACA,WACA,eACA,MACA,QACA,SACA,aACA,kBArLiF,CAsLjF,gBACA,iCAMF,QACE,WACA,YACA,yBAMF,qCAEE,YACA,yBAMF,wDAEE,6BAMF,mDAEE,kBAzNkB,CA0NlB,WAMF,4BACE,WAMF,yBACE,eACA,WACA,SACA,oBAcF,WACE,kBACA,cACA,MACA,QACA,yBACA,WACA,YACA,eACA,qBAEA,kCAEE,eACA,2BAIJ,gBACE,kBACA,cACA,WAGF,+DAGE,+BAGF,4CAEE,qBAKF,oCACE,eACE,kBACA,WAKF,2BACE,eACA,WAGF,aACE,mBAOJ,QACE,YACA,yEAGF,aACE,cACA,YACA,cAGF,MACE,uBACA,gBACA,WACA,8BAGF,QACE,gBAGF,MACE,+BACA,uBACA,gBACA,oBAGF,eACE,uBACA,gBACA,gBACA,4BAGF,cACE,YAMF,QACE,QACA,gBACA,gBAGA,oBAGF,SACE,gBACA,oBAGF,aACE,yBACA,gCACA,yCACA,cACA,eACA,kBAGF,mBACE,yBACA,0BAGF,qBACE,wBA/Wa,CAgXb,0BAGF,qBACE,yBACA,0BAGF,cACE,eACA,UAGF,UACE,kBACA,sBAEA,YACE,aAIJ,kBACE,qBACA,cACA,iBACA,iBACA,qBACA,eACA,YACA,qBACA,sBAEA,6BACE,WACA,kBAnZW,CAuZf,gBACE,6BACA,yBACA,yBAGF,gBACE,UAOF,cAEE,YAGF,QACE,WACA,yEACA,YACA,iBACA,kBACA,WAEA,4BAEE,WAEA,gFAEE,sBACA,WACA,eACA,qBACA,oBACA,qBAKN,YACE,kBACA,cACA,gBAGF,mBACE,kBACA,QACA,QACA,6BAGF,iCACE,WACA,OAGF,aACE,YAMF,WACE,gBACA,WACA,eACA,iBAGF,uCACE,eACA,cAGF,iBACE,WAGF,aACE,aACA,uBAGF,qCAEE,eAGF,wBACE,WAGF,gBACE,kBACA,OACA,QACA,6BAIF,4DAGE,gBAGF,gCACE,kBACA,wBAGF,oBACE,kBAGF,kCACE,kBAGF,aACE,YAGF,2BACE,WAMF,+BACE,yBACA,sBACA,kBACA,QACA,eACA,gBACA,iBAGF,aACE,gBAEA,sCAEE,sBACA,iBACA,WAIJ,iBACE,yBACA,WAEA,8CAEE,sBACA,iBAIJ,oBACE,sBACA,cACA,yBAGF,0BACE,sBAGF,8BACE,YACA,gBACA,oBACA,uBACA,yBACA,sBACA,qBACA,iBAGF,kBACE,qBACA,SACA,+BAEA,gDAEE,yBACA,WAIJ,uFAEE,gBAGF,6CACE,SACA,kBACA,yBAGF,qCACE,eAGF,yDACE,kBAGF,wDACE,+BAGF,2CACE,gBACA,gBAGF,kBACE,kBACA,aAGF,4BACE,aAMF,IACE,wDACA,gBAGF,aAEE,eAGF,uCAEE,UAMF,uBACE,mBACA,WAGF,UACE,iBAGF,WACE,yBAGF,oBACE,gBAOF,oCACE,8BACE,YAIJ,oCACE,MACE,UAGF,kCACE,gBACA,WAGF,QACE,cACA,oBAGF,cACE,UAGF,MACE,gBAGF,QACE,cACA,mBAEA,oBACE,YACA,eAKN,8DACE,qBACE,wBAGF,sBACE,sBAIJ,oCACE,gBACE,yBAIJ,oCACE,gBACE,yBAQJ,iBACE,uBACA,gBACA,gBAGF,OACE,WAGF,aACE,eAGF,YACE,sBACA,WAEA,qBACE,YAGF,qBACE,aACA,YAGF,sBACE,eACA,kBACA,cACA,cACA,WACA,yBACA,0BAEA,wDAEE,sBACA,WAGF,6BACE,YACA,6CACA,gBAKF,8BACE,cACA,6BACA,8BAGF,+BACE,mBACA,0BACA,6BACA,8BAEA,sCACE,YAMR,QACE,aAGF,KACE,wBACA,YACA,WAGF,cACE,iBACA,iBAGF,cACE,gBACA,WAGF,OACE,YAGF,MACE,W","sources":["webpack://simplesamlphp-assets/./node_modules/reset-css/reset.css","webpack://simplesamlphp-assets/./node_modules/purecss/build/pure.css","webpack://simplesamlphp-assets/./node_modules/highlight.js/styles/base16/zenburn.css","webpack://simplesamlphp-assets/./resources/css/default.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_core.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_sizing.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_mixins.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_fixed-width.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_variables.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_list.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_bordered-pulled.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_animated.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_rotated-flipped.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_stacked.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_icons.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_screen-reader.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/solid.scss"],"sourcesContent":["/* http://meyerweb.com/eric/tools/css/reset/\n v5.0.1 | 20191019\n License: none (public domain)\n*/\n\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmain, menu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tfont-size: 100%;\n\tfont: inherit;\n\tvertical-align: baseline;\n}\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, main, menu, nav, section {\n\tdisplay: block;\n}\n/* HTML5 hidden-attribute fix for newer browsers */\n*[hidden] {\n display: none;\n}\nbody {\n\tline-height: 1;\n}\nmenu, ol, ul {\n\tlist-style: none;\n}\nblockquote, q {\n\tquotes: none;\n}\nblockquote:before, blockquote:after,\nq:before, q:after {\n\tcontent: '';\n\tcontent: none;\n}\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n","/*!\nPure v3.0.0\nCopyright 2013 Yahoo!\nLicensed under the BSD License.\nhttps://github.com/pure-css/pure/blob/master/LICENSE\n*/\n/*!\nnormalize.css v | MIT License | https://necolas.github.io/normalize.css/\nCopyright (c) Nicolas Gallagher and Jonathan Neal\n*/\n/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\n/*csslint important:false*/\n\n/* ==========================================================================\n Pure Base Extras\n ========================================================================== */\n\n/**\n * Extra rules that Pure adds on top of Normalize.css\n */\n\nhtml {\n font-family: sans-serif;\n}\n\n/**\n * Always hide an element when it has the `hidden` HTML attribute.\n */\n\n.hidden,\n[hidden] {\n display: none !important;\n}\n\n/**\n * Add this class to an image to make it fit within it's fluid parent wrapper while maintaining\n * aspect ratio.\n */\n.pure-img {\n max-width: 100%;\n height: auto;\n display: block;\n}\n\n/*csslint regex-selectors:false, known-properties:false, duplicate-properties:false*/\n\n.pure-g {\n display: flex;\n flex-flow: row wrap;\n\n /* Prevents distributing space between rows */\n align-content: flex-start;\n}\n\n.pure-u {\n display: inline-block;\n vertical-align: top;\n}\n\n.pure-u-1,\n.pure-u-1-1,\n.pure-u-1-2,\n.pure-u-1-3,\n.pure-u-2-3,\n.pure-u-1-4,\n.pure-u-3-4,\n.pure-u-1-5,\n.pure-u-2-5,\n.pure-u-3-5,\n.pure-u-4-5,\n.pure-u-5-5,\n.pure-u-1-6,\n.pure-u-5-6,\n.pure-u-1-8,\n.pure-u-3-8,\n.pure-u-5-8,\n.pure-u-7-8,\n.pure-u-1-12,\n.pure-u-5-12,\n.pure-u-7-12,\n.pure-u-11-12,\n.pure-u-1-24,\n.pure-u-2-24,\n.pure-u-3-24,\n.pure-u-4-24,\n.pure-u-5-24,\n.pure-u-6-24,\n.pure-u-7-24,\n.pure-u-8-24,\n.pure-u-9-24,\n.pure-u-10-24,\n.pure-u-11-24,\n.pure-u-12-24,\n.pure-u-13-24,\n.pure-u-14-24,\n.pure-u-15-24,\n.pure-u-16-24,\n.pure-u-17-24,\n.pure-u-18-24,\n.pure-u-19-24,\n.pure-u-20-24,\n.pure-u-21-24,\n.pure-u-22-24,\n.pure-u-23-24,\n.pure-u-24-24 {\n display: inline-block;\n letter-spacing: normal;\n word-spacing: normal;\n vertical-align: top;\n text-rendering: auto;\n}\n\n.pure-u-1-24 {\n width: 4.1667%;\n}\n\n.pure-u-1-12,\n.pure-u-2-24 {\n width: 8.3333%;\n}\n\n.pure-u-1-8,\n.pure-u-3-24 {\n width: 12.5000%;\n}\n\n.pure-u-1-6,\n.pure-u-4-24 {\n width: 16.6667%;\n}\n\n.pure-u-1-5 {\n width: 20%;\n}\n\n.pure-u-5-24 {\n width: 20.8333%;\n}\n\n.pure-u-1-4,\n.pure-u-6-24 {\n width: 25%;\n}\n\n.pure-u-7-24 {\n width: 29.1667%;\n}\n\n.pure-u-1-3,\n.pure-u-8-24 {\n width: 33.3333%;\n}\n\n.pure-u-3-8,\n.pure-u-9-24 {\n width: 37.5000%;\n}\n\n.pure-u-2-5 {\n width: 40%;\n}\n\n.pure-u-5-12,\n.pure-u-10-24 {\n width: 41.6667%;\n}\n\n.pure-u-11-24 {\n width: 45.8333%;\n}\n\n.pure-u-1-2,\n.pure-u-12-24 {\n width: 50%;\n}\n\n.pure-u-13-24 {\n width: 54.1667%;\n}\n\n.pure-u-7-12,\n.pure-u-14-24 {\n width: 58.3333%;\n}\n\n.pure-u-3-5 {\n width: 60%;\n}\n\n.pure-u-5-8,\n.pure-u-15-24 {\n width: 62.5000%;\n}\n\n.pure-u-2-3,\n.pure-u-16-24 {\n width: 66.6667%;\n}\n\n.pure-u-17-24 {\n width: 70.8333%;\n}\n\n.pure-u-3-4,\n.pure-u-18-24 {\n width: 75%;\n}\n\n.pure-u-19-24 {\n width: 79.1667%;\n}\n\n.pure-u-4-5 {\n width: 80%;\n}\n\n.pure-u-5-6,\n.pure-u-20-24 {\n width: 83.3333%;\n}\n\n.pure-u-7-8,\n.pure-u-21-24 {\n width: 87.5000%;\n}\n\n.pure-u-11-12,\n.pure-u-22-24 {\n width: 91.6667%;\n}\n\n.pure-u-23-24 {\n width: 95.8333%;\n}\n\n.pure-u-1,\n.pure-u-1-1,\n.pure-u-5-5,\n.pure-u-24-24 {\n width: 100%;\n}\n.pure-button {\n /* Structure */\n display: inline-block;\n line-height: normal;\n white-space: nowrap;\n vertical-align: middle;\n text-align: center;\n cursor: pointer;\n -webkit-user-drag: none;\n -webkit-user-select: none;\n user-select: none;\n box-sizing: border-box;\n}\n\n/* Firefox: Get rid of the inner focus border */\n.pure-button::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\n\n/* Inherit .pure-g styles */\n.pure-button-group {\n letter-spacing: -0.31em; /* Webkit: collapse white-space between units */\n text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLegibility */\n}\n\n.opera-only :-o-prefocus,\n.pure-button-group {\n word-spacing: -0.43em;\n}\n\n.pure-button-group .pure-button {\n letter-spacing: normal;\n word-spacing: normal;\n vertical-align: top;\n text-rendering: auto;\n}\n\n/*csslint outline-none:false*/\n\n.pure-button {\n font-family: inherit;\n font-size: 100%;\n padding: 0.5em 1em;\n color: rgba(0, 0, 0, 0.80);\n border: none rgba(0, 0, 0, 0);\n background-color: #E6E6E6;\n text-decoration: none;\n border-radius: 2px;\n}\n\n.pure-button-hover,\n.pure-button:hover,\n.pure-button:focus {\n background-image: linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10));\n}\n.pure-button:focus {\n outline: 0;\n}\n.pure-button-active,\n.pure-button:active {\n box-shadow: 0 0 0 1px rgba(0,0,0, 0.15) inset, 0 0 6px rgba(0,0,0, 0.20) inset;\n border-color: #000;\n}\n\n.pure-button[disabled],\n.pure-button-disabled,\n.pure-button-disabled:hover,\n.pure-button-disabled:focus,\n.pure-button-disabled:active {\n border: none;\n background-image: none;\n opacity: 0.40;\n cursor: not-allowed;\n box-shadow: none;\n pointer-events: none;\n}\n\n.pure-button-hidden {\n display: none;\n}\n\n.pure-button-primary,\n.pure-button-selected,\na.pure-button-primary,\na.pure-button-selected {\n background-color: rgb(0, 120, 231);\n color: #fff;\n}\n\n/* Button Groups */\n.pure-button-group .pure-button {\n margin: 0;\n border-radius: 0;\n border-right: 1px solid rgba(0, 0, 0, 0.2);\n\n}\n\n.pure-button-group .pure-button:first-child {\n border-top-left-radius: 2px;\n border-bottom-left-radius: 2px;\n}\n.pure-button-group .pure-button:last-child {\n border-top-right-radius: 2px;\n border-bottom-right-radius: 2px;\n border-right: none;\n}\n\n/*csslint box-model:false*/\n/*\nBox-model set to false because we're setting a height on select elements, which\nalso have border and padding. This is done because some browsers don't render\nthe padding. We explicitly set the box-model for select elements to border-box,\nso we can ignore the csslint warning.\n*/\n\n.pure-form input[type=\"text\"],\n.pure-form input[type=\"password\"],\n.pure-form input[type=\"email\"],\n.pure-form input[type=\"url\"],\n.pure-form input[type=\"date\"],\n.pure-form input[type=\"month\"],\n.pure-form input[type=\"time\"],\n.pure-form input[type=\"datetime\"],\n.pure-form input[type=\"datetime-local\"],\n.pure-form input[type=\"week\"],\n.pure-form input[type=\"number\"],\n.pure-form input[type=\"search\"],\n.pure-form input[type=\"tel\"],\n.pure-form input[type=\"color\"],\n.pure-form select,\n.pure-form textarea {\n padding: 0.5em 0.6em;\n display: inline-block;\n border: 1px solid #ccc;\n box-shadow: inset 0 1px 3px #ddd;\n border-radius: 4px;\n vertical-align: middle;\n box-sizing: border-box;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form input:not([type]) {\n padding: 0.5em 0.6em;\n display: inline-block;\n border: 1px solid #ccc;\n box-shadow: inset 0 1px 3px #ddd;\n border-radius: 4px;\n box-sizing: border-box;\n}\n\n\n/* Chrome (as of v.32/34 on OS X) needs additional room for color to display. */\n/* May be able to remove this tweak as color inputs become more standardized across browsers. */\n.pure-form input[type=\"color\"] {\n padding: 0.2em 0.5em;\n}\n\n\n.pure-form input[type=\"text\"]:focus,\n.pure-form input[type=\"password\"]:focus,\n.pure-form input[type=\"email\"]:focus,\n.pure-form input[type=\"url\"]:focus,\n.pure-form input[type=\"date\"]:focus,\n.pure-form input[type=\"month\"]:focus,\n.pure-form input[type=\"time\"]:focus,\n.pure-form input[type=\"datetime\"]:focus,\n.pure-form input[type=\"datetime-local\"]:focus,\n.pure-form input[type=\"week\"]:focus,\n.pure-form input[type=\"number\"]:focus,\n.pure-form input[type=\"search\"]:focus,\n.pure-form input[type=\"tel\"]:focus,\n.pure-form input[type=\"color\"]:focus,\n.pure-form select:focus,\n.pure-form textarea:focus {\n outline: 0;\n border-color: #129FEA;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form input:not([type]):focus {\n outline: 0;\n border-color: #129FEA;\n}\n\n.pure-form input[type=\"file\"]:focus,\n.pure-form input[type=\"radio\"]:focus,\n.pure-form input[type=\"checkbox\"]:focus {\n outline: thin solid #129FEA;\n outline: 1px auto #129FEA;\n}\n.pure-form .pure-checkbox,\n.pure-form .pure-radio {\n margin: 0.5em 0;\n display: block;\n}\n\n.pure-form input[type=\"text\"][disabled],\n.pure-form input[type=\"password\"][disabled],\n.pure-form input[type=\"email\"][disabled],\n.pure-form input[type=\"url\"][disabled],\n.pure-form input[type=\"date\"][disabled],\n.pure-form input[type=\"month\"][disabled],\n.pure-form input[type=\"time\"][disabled],\n.pure-form input[type=\"datetime\"][disabled],\n.pure-form input[type=\"datetime-local\"][disabled],\n.pure-form input[type=\"week\"][disabled],\n.pure-form input[type=\"number\"][disabled],\n.pure-form input[type=\"search\"][disabled],\n.pure-form input[type=\"tel\"][disabled],\n.pure-form input[type=\"color\"][disabled],\n.pure-form select[disabled],\n.pure-form textarea[disabled] {\n cursor: not-allowed;\n background-color: #eaeded;\n color: #cad2d3;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form input:not([type])[disabled] {\n cursor: not-allowed;\n background-color: #eaeded;\n color: #cad2d3;\n}\n.pure-form input[readonly],\n.pure-form select[readonly],\n.pure-form textarea[readonly] {\n background-color: #eee; /* menu hover bg color */\n color: #777; /* menu text color */\n border-color: #ccc;\n}\n\n.pure-form input:focus:invalid,\n.pure-form textarea:focus:invalid,\n.pure-form select:focus:invalid {\n color: #b94a48;\n border-color: #e9322d;\n}\n.pure-form input[type=\"file\"]:focus:invalid:focus,\n.pure-form input[type=\"radio\"]:focus:invalid:focus,\n.pure-form input[type=\"checkbox\"]:focus:invalid:focus {\n outline-color: #e9322d;\n}\n.pure-form select {\n /* Normalizes the height; padding is not sufficient. */\n height: 2.25em;\n border: 1px solid #ccc;\n background-color: white;\n}\n.pure-form select[multiple] {\n height: auto;\n}\n.pure-form label {\n margin: 0.5em 0 0.2em;\n}\n.pure-form fieldset {\n margin: 0;\n padding: 0.35em 0 0.75em;\n border: 0;\n}\n.pure-form legend {\n display: block;\n width: 100%;\n padding: 0.3em 0;\n margin-bottom: 0.3em;\n color: #333;\n border-bottom: 1px solid #e5e5e5;\n}\n\n.pure-form-stacked input[type=\"text\"],\n.pure-form-stacked input[type=\"password\"],\n.pure-form-stacked input[type=\"email\"],\n.pure-form-stacked input[type=\"url\"],\n.pure-form-stacked input[type=\"date\"],\n.pure-form-stacked input[type=\"month\"],\n.pure-form-stacked input[type=\"time\"],\n.pure-form-stacked input[type=\"datetime\"],\n.pure-form-stacked input[type=\"datetime-local\"],\n.pure-form-stacked input[type=\"week\"],\n.pure-form-stacked input[type=\"number\"],\n.pure-form-stacked input[type=\"search\"],\n.pure-form-stacked input[type=\"tel\"],\n.pure-form-stacked input[type=\"color\"],\n.pure-form-stacked input[type=\"file\"],\n.pure-form-stacked select,\n.pure-form-stacked label,\n.pure-form-stacked textarea {\n display: block;\n margin: 0.25em 0;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form-stacked input:not([type]) {\n display: block;\n margin: 0.25em 0;\n}\n.pure-form-aligned input,\n.pure-form-aligned textarea,\n.pure-form-aligned select,\n.pure-form-message-inline {\n display: inline-block;\n vertical-align: middle;\n}\n.pure-form-aligned textarea {\n vertical-align: top;\n}\n\n/* Aligned Forms */\n.pure-form-aligned .pure-control-group {\n margin-bottom: 0.5em;\n}\n.pure-form-aligned .pure-control-group label {\n text-align: right;\n display: inline-block;\n vertical-align: middle;\n width: 10em;\n margin: 0 1em 0 0;\n}\n.pure-form-aligned .pure-controls {\n margin: 1.5em 0 0 11em;\n}\n\n/* Rounded Inputs */\n.pure-form input.pure-input-rounded,\n.pure-form .pure-input-rounded {\n border-radius: 2em;\n padding: 0.5em 1em;\n}\n\n/* Grouped Inputs */\n.pure-form .pure-group fieldset {\n margin-bottom: 10px;\n}\n.pure-form .pure-group input,\n.pure-form .pure-group textarea {\n display: block;\n padding: 10px;\n margin: 0 0 -1px;\n border-radius: 0;\n position: relative;\n top: -1px;\n}\n.pure-form .pure-group input:focus,\n.pure-form .pure-group textarea:focus {\n z-index: 3;\n}\n.pure-form .pure-group input:first-child,\n.pure-form .pure-group textarea:first-child {\n top: 1px;\n border-radius: 4px 4px 0 0;\n margin: 0;\n}\n.pure-form .pure-group input:first-child:last-child,\n.pure-form .pure-group textarea:first-child:last-child {\n top: 1px;\n border-radius: 4px;\n margin: 0;\n}\n.pure-form .pure-group input:last-child,\n.pure-form .pure-group textarea:last-child {\n top: -2px;\n border-radius: 0 0 4px 4px;\n margin: 0;\n}\n.pure-form .pure-group button {\n margin: 0.35em 0;\n}\n\n.pure-form .pure-input-1 {\n width: 100%;\n}\n.pure-form .pure-input-3-4 {\n width: 75%;\n}\n.pure-form .pure-input-2-3 {\n width: 66%;\n}\n.pure-form .pure-input-1-2 {\n width: 50%;\n}\n.pure-form .pure-input-1-3 {\n width: 33%;\n}\n.pure-form .pure-input-1-4 {\n width: 25%;\n}\n\n/* Inline help for forms */\n.pure-form-message-inline {\n display: inline-block;\n padding-left: 0.3em;\n color: #666;\n vertical-align: middle;\n font-size: 0.875em;\n}\n\n/* Block help for forms */\n.pure-form-message {\n display: block;\n color: #666;\n font-size: 0.875em;\n}\n\n@media only screen and (max-width : 480px) {\n .pure-form button[type=\"submit\"] {\n margin: 0.7em 0 0;\n }\n\n .pure-form input:not([type]),\n .pure-form input[type=\"text\"],\n .pure-form input[type=\"password\"],\n .pure-form input[type=\"email\"],\n .pure-form input[type=\"url\"],\n .pure-form input[type=\"date\"],\n .pure-form input[type=\"month\"],\n .pure-form input[type=\"time\"],\n .pure-form input[type=\"datetime\"],\n .pure-form input[type=\"datetime-local\"],\n .pure-form input[type=\"week\"],\n .pure-form input[type=\"number\"],\n .pure-form input[type=\"search\"],\n .pure-form input[type=\"tel\"],\n .pure-form input[type=\"color\"],\n .pure-form label {\n margin-bottom: 0.3em;\n display: block;\n }\n\n .pure-group input:not([type]),\n .pure-group input[type=\"text\"],\n .pure-group input[type=\"password\"],\n .pure-group input[type=\"email\"],\n .pure-group input[type=\"url\"],\n .pure-group input[type=\"date\"],\n .pure-group input[type=\"month\"],\n .pure-group input[type=\"time\"],\n .pure-group input[type=\"datetime\"],\n .pure-group input[type=\"datetime-local\"],\n .pure-group input[type=\"week\"],\n .pure-group input[type=\"number\"],\n .pure-group input[type=\"search\"],\n .pure-group input[type=\"tel\"],\n .pure-group input[type=\"color\"] {\n margin-bottom: 0;\n }\n\n .pure-form-aligned .pure-control-group label {\n margin-bottom: 0.3em;\n text-align: left;\n display: block;\n width: 100%;\n }\n\n .pure-form-aligned .pure-controls {\n margin: 1.5em 0 0 0;\n }\n\n .pure-form-message-inline,\n .pure-form-message {\n display: block;\n font-size: 0.75em;\n /* Increased bottom padding to make it group with its related input element. */\n padding: 0.2em 0 0.8em;\n }\n}\n\n/*csslint adjoining-classes: false, box-model:false*/\n.pure-menu {\n box-sizing: border-box;\n}\n\n.pure-menu-fixed {\n position: fixed;\n left: 0;\n top: 0;\n z-index: 3;\n}\n\n.pure-menu-list,\n.pure-menu-item {\n position: relative;\n}\n\n.pure-menu-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.pure-menu-item {\n padding: 0;\n margin: 0;\n height: 100%;\n}\n\n.pure-menu-link,\n.pure-menu-heading {\n display: block;\n text-decoration: none;\n white-space: nowrap;\n}\n\n/* HORIZONTAL MENU */\n.pure-menu-horizontal {\n width: 100%;\n white-space: nowrap;\n}\n\n.pure-menu-horizontal .pure-menu-list {\n display: inline-block;\n}\n\n/* Initial menus should be inline-block so that they are horizontal */\n.pure-menu-horizontal .pure-menu-item,\n.pure-menu-horizontal .pure-menu-heading,\n.pure-menu-horizontal .pure-menu-separator {\n display: inline-block;\n vertical-align: middle;\n}\n\n/* Submenus should still be display: block; */\n.pure-menu-item .pure-menu-item {\n display: block;\n}\n\n.pure-menu-children {\n display: none;\n position: absolute;\n left: 100%;\n top: 0;\n margin: 0;\n padding: 0;\n z-index: 3;\n}\n\n.pure-menu-horizontal .pure-menu-children {\n left: 0;\n top: auto;\n width: inherit;\n}\n\n.pure-menu-allow-hover:hover > .pure-menu-children,\n.pure-menu-active > .pure-menu-children {\n display: block;\n position: absolute;\n}\n\n/* Vertical Menus - show the dropdown arrow */\n.pure-menu-has-children > .pure-menu-link:after {\n padding-left: 0.5em;\n content: \"\\25B8\";\n font-size: small;\n}\n\n/* Horizontal Menus - show the dropdown arrow */\n.pure-menu-horizontal .pure-menu-has-children > .pure-menu-link:after {\n content: \"\\25BE\";\n}\n\n/* scrollable menus */\n.pure-menu-scrollable {\n overflow-y: scroll;\n overflow-x: hidden;\n}\n\n.pure-menu-scrollable .pure-menu-list {\n display: block;\n}\n\n.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list {\n display: inline-block;\n}\n\n.pure-menu-horizontal.pure-menu-scrollable {\n white-space: nowrap;\n overflow-y: hidden;\n overflow-x: auto;\n /* a little extra padding for this style to allow for scrollbars */\n padding: .5em 0;\n}\n\n/* misc default styling */\n\n.pure-menu-separator,\n.pure-menu-horizontal .pure-menu-children .pure-menu-separator {\n background-color: #ccc;\n height: 1px;\n margin: .3em 0;\n}\n\n.pure-menu-horizontal .pure-menu-separator {\n width: 1px;\n height: 1.3em;\n margin: 0 .3em ;\n}\n\n/* Need to reset the separator since submenu is vertical */\n.pure-menu-horizontal .pure-menu-children .pure-menu-separator {\n display: block;\n width: auto;\n}\n\n.pure-menu-heading {\n text-transform: uppercase;\n color: #565d64;\n}\n\n.pure-menu-link {\n color: #777;\n}\n\n.pure-menu-children {\n background-color: #fff;\n}\n\n.pure-menu-link,\n.pure-menu-heading {\n padding: .5em 1em;\n}\n\n.pure-menu-disabled {\n opacity: .5;\n}\n\n.pure-menu-disabled .pure-menu-link:hover {\n background-color: transparent;\n cursor: default;\n}\n\n.pure-menu-active > .pure-menu-link,\n.pure-menu-link:hover,\n.pure-menu-link:focus {\n background-color: #eee;\n}\n\n.pure-menu-selected > .pure-menu-link,\n.pure-menu-selected > .pure-menu-link:visited {\n color: #000;\n}\n\n.pure-table {\n /* Remove spacing between table cells (from Normalize.css) */\n border-collapse: collapse;\n border-spacing: 0;\n empty-cells: show;\n border: 1px solid #cbcbcb;\n}\n\n.pure-table caption {\n color: #000;\n font: italic 85%/1 arial, sans-serif;\n padding: 1em 0;\n text-align: center;\n}\n\n.pure-table td,\n.pure-table th {\n border-left: 1px solid #cbcbcb;/* inner column border */\n border-width: 0 0 0 1px;\n font-size: inherit;\n margin: 0;\n overflow: visible; /*to make ths where the title is really long work*/\n padding: 0.5em 1em; /* cell padding */\n}\n\n.pure-table thead {\n background-color: #e0e0e0;\n color: #000;\n text-align: left;\n vertical-align: bottom;\n}\n\n/*\nstriping:\n even - #fff (white)\n odd - #f2f2f2 (light gray)\n*/\n.pure-table td {\n background-color: transparent;\n}\n.pure-table-odd td {\n background-color: #f2f2f2;\n}\n\n/* nth-child selector for modern browsers */\n.pure-table-striped tr:nth-child(2n-1) td {\n background-color: #f2f2f2;\n}\n\n/* BORDERED TABLES */\n.pure-table-bordered td {\n border-bottom: 1px solid #cbcbcb;\n}\n.pure-table-bordered tbody > tr:last-child > td {\n border-bottom-width: 0;\n}\n\n\n/* HORIZONTAL BORDERED TABLES */\n\n.pure-table-horizontal td,\n.pure-table-horizontal th {\n border-width: 0 0 1px 0;\n border-bottom: 1px solid #cbcbcb;\n}\n.pure-table-horizontal tbody > tr:last-child > td {\n border-bottom-width: 0;\n}\n","pre code.hljs {\n display: block;\n overflow-x: auto;\n padding: 1em\n}\ncode.hljs {\n padding: 3px 5px\n}\n/*!\n Theme: Zenburn\n Author: elnawe\n License: ~ MIT (or more permissive) [via base16-schemes-source]\n Maintainer: @highlightjs/core-team\n Version: 2021.09.0\n*/\n/*\n WARNING: DO NOT EDIT THIS FILE DIRECTLY.\n\n This theme file was auto-generated from the Base16 scheme zenburn\n by the Highlight.js Base16 template builder.\n\n - https://github.com/highlightjs/base16-highlightjs\n*/\n/*\nbase00 #383838 Default Background\nbase01 #404040 Lighter Background (Used for status bars, line number and folding marks)\nbase02 #606060 Selection Background\nbase03 #6f6f6f Comments, Invisibles, Line Highlighting\nbase04 #808080 Dark Foreground (Used for status bars)\nbase05 #dcdccc Default Foreground, Caret, Delimiters, Operators\nbase06 #c0c0c0 Light Foreground (Not often used)\nbase07 #ffffff Light Background (Not often used)\nbase08 #dca3a3 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted\nbase09 #dfaf8f Integers, Boolean, Constants, XML Attributes, Markup Link Url\nbase0A #e0cf9f Classes, Markup Bold, Search Text Background\nbase0B #5f7f5f Strings, Inherited Class, Markup Code, Diff Inserted\nbase0C #93e0e3 Support, Regular Expressions, Escape Characters, Markup Quotes\nbase0D #7cb8bb Functions, Methods, Attribute IDs, Headings\nbase0E #dc8cc3 Keywords, Storage, Selector, Markup Italic, Diff Changed\nbase0F #000000 Deprecated, Opening/Closing Embedded Language Tags, e.g. \n*/\npre code.hljs {\n display: block;\n overflow-x: auto;\n padding: 1em\n}\ncode.hljs {\n padding: 3px 5px\n}\n.hljs {\n color: #dcdccc;\n background: #383838\n}\n.hljs::selection,\n.hljs ::selection {\n background-color: #606060;\n color: #dcdccc\n}\n/* purposely do not highlight these things */\n.hljs-formula,\n.hljs-params,\n.hljs-property {\n \n}\n/* base03 - #6f6f6f - Comments, Invisibles, Line Highlighting */\n.hljs-comment {\n color: #6f6f6f\n}\n/* base04 - #808080 - Dark Foreground (Used for status bars) */\n.hljs-tag {\n color: #808080\n}\n/* base05 - #dcdccc - Default Foreground, Caret, Delimiters, Operators */\n.hljs-subst,\n.hljs-punctuation,\n.hljs-operator {\n color: #dcdccc\n}\n.hljs-operator {\n opacity: 0.7\n}\n/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */\n.hljs-bullet,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-selector-tag,\n.hljs-name,\n.hljs-deletion {\n color: #dca3a3\n}\n/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */\n.hljs-symbol,\n.hljs-number,\n.hljs-link,\n.hljs-attr,\n.hljs-variable.constant_,\n.hljs-literal {\n color: #dfaf8f\n}\n/* base0A - Classes, Markup Bold, Search Text Background */\n.hljs-title,\n.hljs-class .hljs-title,\n.hljs-title.class_ {\n color: #e0cf9f\n}\n.hljs-strong {\n font-weight: bold;\n color: #e0cf9f\n}\n/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */\n.hljs-code,\n.hljs-addition,\n.hljs-title.class_.inherited__,\n.hljs-string {\n color: #5f7f5f\n}\n/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */\n/* guessing */\n.hljs-built_in,\n.hljs-doctag,\n.hljs-quote,\n.hljs-keyword.hljs-atrule,\n.hljs-regexp {\n color: #93e0e3\n}\n/* base0D - Functions, Methods, Attribute IDs, Headings */\n.hljs-function .hljs-title,\n.hljs-attribute,\n.ruby .hljs-property,\n.hljs-title.function_,\n.hljs-section {\n color: #7cb8bb\n}\n/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */\n/* .hljs-selector-id, */\n/* .hljs-selector-class, */\n/* .hljs-selector-attr, */\n/* .hljs-selector-pseudo, */\n.hljs-type,\n.hljs-template-tag,\n.diff .hljs-meta,\n.hljs-keyword {\n color: #dc8cc3\n}\n.hljs-emphasis {\n color: #dc8cc3;\n font-style: italic\n}\n/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */\n/*\n prevent top level .keyword and .string scopes\n from leaking into meta by accident\n*/\n.hljs-meta,\n.hljs-meta .hljs-keyword,\n.hljs-meta .hljs-string {\n color: #000000\n}\n/* for v10 compatible themes */\n.hljs-meta .hljs-keyword,\n.hljs-meta-keyword {\n font-weight: bold\n}","$primaryBackground: #b8002c; $transitionBackground: #db0100; $secondaryBackground: #e8410c;\n@import \"../../node_modules/reset-css/reset.css\";\n@import \"../../node_modules/purecss/build/pure.css\";\n$fa-font-path: '../fonts';\n@import \"../../node_modules/\\@fortawesome/fontawesome-free/scss/fontawesome\";\n@import \"../../node_modules/\\@fortawesome/fontawesome-free/scss/solid\";\n@import \"../../node_modules/highlight.js/styles/base16/zenburn.css\";\n\n/*************\n * VARIABLES *\n *************/\n\n$light-yellow: #fffdbf;\n\n/************************************************************\n * GENERAL\n ************************************************************/\n* {\n margin: 0;\n padding: 0;\n}\n\nhtml,\nbody {\n height: 100%;\n}\n\nbody {\n font-family: sans-serif;\n line-height: 1.5;\n min-height: 100%;\n}\n\n.wrap {\n width: 80%;\n max-width: 1100px;\n margin: auto;\n position: relative;\n}\n\n.logospace {\n float: left;\n}\n\nhtml[dir=\"rtl\"] .logospace {\n float: right;\n}\n\n.menuspace {\n float: right;\n}\n\nhtml[dir=\"rtl\"] .menuspace {\n float: left;\n}\n\n.center {\n text-align: center;\n}\n\n.v-center {\n /* specify a height to center vertically */\n display: table-cell;\n vertical-align: middle;\n}\n\ni {\n font-style: italic;\n}\n\nh1 {\n margin: 1em 0;\n font-size: 2em;\n font-weight: 900;\n}\n\nh2 {\n margin: 1em 0;\n font-size: 1.5em;\n font-weight: 700;\n color: #1c1c1c;\n border-bottom: solid 1px #bbb;\n}\n\nh3 {\n font-weight: 500;\n color: #2e3436;\n padding: 0;\n margin-top: 0;\n}\n\np {\n padding: 0.5em 0;\n margin-bottom: 1em;\n}\n\na {\n color: midnightblue;\n\n &:hover,\n &:focus,\n &.pure-menu-link:hover,\n &.pure-menu-link:focus,\n .pure-menu-selected &.pure-menu-link:hover,\n .pure-menu-selected &.pure-menu-link:focus {\n color: white;\n background-color: #444;\n padding: 0.5em 1em;\n }\n\n &:hover,\n &:focus {\n padding: 0.15rem;\n }\n}\n\n.overflow {\n overflow: hidden;\n}\n\nul {\n padding-left: 1.5em;\n}\n\nstrong,\nb {\n font-weight: bold;\n}\n\npre,\ncode,\nkbd,\nsamp,\ntt {\n font-family: monospace;\n font-size: 0.9rem;\n padding: 0 0.2rem;\n}\n\n.xmldata {\n font-family: monospace;\n}\n\n/* ***********************************************************\n * SLIDING SIDE-MENU FOR SMALL SCREENS\n *************************************************************/\n\n/*\nAdd transition to containers so they can push in and out.\n*/\n#layout,\n#menu,\n#foot,\n.menu-link {\n -webkit-transition: all 0.2s ease-out;\n -moz-transition: all 0.2s ease-out;\n -ms-transition: all 0.2s ease-out;\n -o-transition: all 0.2s ease-out;\n transition: all 0.2s ease-out;\n}\n\n/*\nThis is the parent `
` that contains the menu and the content area.\n*/\n#layout.active #menu {\n right: 11em;\n width: 11em;\n}\n\n/*\nThe `#menu` `
` is the parent `
` that contains the `.pure-menu` that\nappears on the left side of the page.\n*/\n#menu {\n margin-right: -11em; /* \"#menu\" width */\n width: 11em;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 1000; /* so the menu or its navicon stays above all content */\n background: $secondaryBackground;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n/*\nAll anchors inside the menu should be styled like this.\n*/\n#menu a {\n color: #fff;\n border: none;\n padding: 0.6em 0 0.6em 0.6em;\n}\n\n/*\nRemove all background/borders, since we are applying them to #menu.\n*/\n#menu .pure-menu,\n#menu .pure-menu ul {\n border: none;\n background: transparent;\n}\n\n/*\nAdd that light border to separate items into groups.\n*/\n#menu .pure-menu ul,\n#menu .pure-menu .menu-item-divided {\n border-top: 1px solid $transitionBackground;\n}\n\n/*\nThis styles the selected menu item `
`.\n*/\n#menu .pure-menu-selected,\n#menu .pure-menu-heading {\n background: $primaryBackground;\n color: black;\n}\n\n/*\nThis styles a link within a selected menu item ``.\n*/\n#menu .pure-menu-selected a {\n color: #fff;\n}\n\n/*\nThis styles the menu heading.\n*/\n#menu .pure-menu-heading {\n font-size: 110%;\n color: #fff;\n margin: 0;\n text-transform: none;\n}\n\n/* -- Dynamic Button For Responsive Menu -- */\n\n/*\nThe button to open/close the Menu is custom-made and not part of Pure. Here's\nhow it works:\n*/\n\n/*\n`.menu-link` represents the responsive menu toggle that shows/hides on\nsmall screens.\n*/\n.menu-link {\n position: relative;\n display: block; /* show this only on small screens */\n top: 0;\n right: 0; /* \"#menu width\" */\n background: transparent;\n z-index: 10;\n height: 2rem;\n padding: 2rem 0;\n text-decoration: none;\n\n &:hover,\n &:focus {\n padding: 2rem 0;\n background: none !important;\n }\n}\n\n.menu-link span {\n position: relative;\n display: block;\n color: #fff;\n}\n\n.menu-link span,\n.menu-link span::before,\n.menu-link span::after {\n background-color: transparent;\n}\n\n.menu-link span:focus,\n.menu-link span:hover {\n color: #010101cc;\n}\n\n/* -- Responsive Styles (Media Queries) ------------------------------------- */\n\n@media screen and (max-width: 40em) {\n #layout.active {\n position: relative;\n right: 11em;\n\n /* moves to right as many ems as the one used by the menu */\n }\n\n #menuLink.menu-link.active {\n position: fixed;\n right: 13em;\n }\n\n #foot.active {\n margin-right: 11em;\n }\n}\n\n/************************************************************\nHEADER\n*************************************************************/\n#header {\n height: 6rem;\n background: linear-gradient(141deg, $primaryBackground 0%, $transitionBackground 51%, $secondaryBackground 75%);\n}\n\n.logo-header {\n min-width: 8em;\n height: 6rem;\n max-width: 70%;\n}\n\n#logo {\n font-family: sans-serif;\n font-size: 2.5em;\n color: white;\n text-shadow: 0 3px 2px #532900;\n}\n\n.simple {\n font-weight: 300;\n}\n\n.saml {\n font-family: Verdana, sans-serif;\n letter-spacing: -0.12em;\n font-weight: 600;\n margin-left: -0.05em;\n}\n\n.language-menu {\n font-family: sans-serif;\n font-weight: 400;\n min-width: 10rem;\n padding: 0em 0.6em !important;\n}\n\n.language-bar {\n height: 6rem;\n}\n\n/************************************************************\nCONTENT\n*************************************************************/\n#layout {\n right: 0;\n padding-right: 0;\n min-height: 100%;\n\n /* negative margin = footer height + padding-top + padding-bottom */\n margin: 0 auto -6rem;\n}\n\n#content {\n padding-top: 2em;\n padding-bottom: 2rem;\n}\n\n.message-box {\n background-color: #f4f4f4;\n border-left: 0.3125rem solid #444;\n box-shadow: 0 5px 8px -6px #0003;\n margin: 1rem 0;\n padding: 1.3rem;\n position: relative;\n}\n\n.message-box.error {\n background-color: #f7e4e1;\n border-left-color: #cc4b37;\n}\n\n.message-box.warning {\n background-color: $light-yellow;\n border-left-color: #f9f56b;\n}\n\n.message-box.success {\n background-color: #daf7e6;\n border-left-color: #46cc48;\n}\n\n.auth_methods {\n margin-top: 2em;\n width: 35%;\n}\n\n.code-box {\n margin-bottom: 1em;\n border: 1px solid #ccc;\n\n a {\n padding: 0.5em;\n }\n}\n\n.code-box-content {\n word-break: break-all;\n font-size: 1em;\n line-height: 1.15;\n padding: 0.5em 1em;\n display: inline-block;\n min-height: 1em;\n height: 100%;\n white-space: pre-wrap;\n font-family: monospace;\n\n &::selection {\n color: black;\n background: $light-yellow;\n }\n}\n\n.code-box-title {\n border-bottom: 1px solid #ccc;\n background-color: #e0e0e0;\n padding: 0.5em 0 0.5em 0.5em;\n}\n\npre#xmlmetadata {\n width: 98%;\n}\n\n/************************************************************\n * FOOTER\n ************************************************************/\n\n#bottom,\n#push {\n height: 6rem;\n}\n\n#footer {\n width: 100%;\n background: linear-gradient(141deg, $primaryBackground 0%, $transitionBackground 51%, $secondaryBackground 75%);\n height: 4rem;\n padding: 2rem 0 0;\n text-align: center;\n color: white;\n\n a,\n a:visited {\n color: white;\n\n &:focus,\n &:hover {\n background-color: white;\n color: black;\n padding: 0.15rem;\n margin-left: -0.15rem;\n margin-top: -0.15rem;\n text-decoration: none;\n }\n }\n}\n\n.copyrights {\n padding-top: 0.5rem;\n height: 3.5rem;\n font-size: 0.8rem;\n}\n\n.logo-footer-space {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translate(0, -50%);\n}\n\nhtml[dir=\"rtl\"] .logo-footer-space {\n right: auto;\n left: 0;\n}\n\n.logo-footer {\n height: 4rem;\n}\n\n/* ***********************************************************\nFORMS\n************************************************************ */\n.text-area {\n margin-top: 0.5em;\n width: 100%;\n font-size: 0.9em;\n line-height: 1.15;\n}\n\n.file-upload input[type=\"url\"][disabled] {\n cursor: pointer;\n color: inherit;\n}\n\ninput[type=\"file\"] {\n color: black;\n}\n\n.center-form {\n display: flex;\n justify-content: center;\n}\n\n.login-form-start,\n.login-form-submit {\n margin-top: 3ex;\n}\n\ninput#username:disabled {\n color: #000000;\n}\n\n.v-center-right {\n position: absolute;\n left: 0;\n top: 50%;\n transform: translate(0, -50%);\n}\n\n/* PURE */\n.pure-button,\n.pure-form input.edge,\n.pure-form textarea.edge {\n border-radius: 0;\n}\n\n.pure-form input[type=\"checkbox\"] {\n margin-right: 0.8ex;\n vertical-align: baseline;\n}\n\n.pure-control-group {\n margin-bottom: 1ex;\n}\n\n.pure-form-aligned .pure-controls {\n margin: 0 0 0 11em;\n}\n\n.pure-select {\n float: right;\n}\n\nhtml[dir=\"rtl\"] .pure-select {\n float: left;\n}\n\n/************************************************************\n * BUTTONS\n ************************************************************/\n.code-box-title .clipboard-btn {\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n position: absolute;\n right: 0;\n height: inherit;\n margin-top: -2em;\n margin-right: 4px;\n}\n\n.pure-button {\n margin-left: 1ex;\n\n &:hover,\n &:focus {\n background-color: #555;\n padding: 0.5em 1em;\n color: #fff;\n }\n}\n\n.pure-button-red {\n background-color: #db0100;\n color: #fff;\n\n &:hover,\n &:focus {\n background-color: #555;\n padding: 0.5em 1em;\n }\n}\n\n.pure-button.hollow {\n background-color: #fff;\n color: #6f6f6f;\n border: solid 1px #e6e6e6;\n}\n\n.pure-button.hollow:hover {\n background-image: none;\n}\n\n.pure-button.hollow[disabled] {\n cursor: auto;\n opacity: initial;\n pointer-events: auto;\n -webkit-user-drag: auto;\n -webkit-user-select: auto;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n\n.pure-button.hljs {\n display: inline-block;\n border: 0;\n background-color: transparent;\n\n &:hover,\n &:focus {\n background-color: #f0f0f0;\n color: black;\n }\n}\n\n.pure-button-group .pure-button:first-child,\n.pure-button-group .pure-button:last-child {\n border-radius: 0;\n}\n\n.pure-button-group.two-elements .pure-button {\n margin: 0;\n line-height: unset;\n border: 1px solid #e6e6e6;\n}\n\n.pure-button-group.two-elements form {\n display: inline;\n}\n\n.pure-button-group.two-elements .pure-button:first-child {\n border-right: none;\n}\n\n.pure-button-group.two-elements .pure-button:last-child {\n border-right: 1px solid #e6e6e6;\n}\n\n.pure-button-group .pure-button.show-files {\n max-width: 450px;\n overflow: hidden;\n}\n\n.top-right-corner {\n position: absolute;\n right: 1.75em;\n}\n\ninput#postLoginSubmitButton {\n display: none;\n}\n\n/************************************************************\n * IMAGES\n ************************************************************/\n.fa {\n font-family: \"Font Awesome 6 Free\", sans-serif !important;\n font-weight: 400;\n}\n\nspan.fa,\ni.fa {\n padding: 0 0.5em;\n}\n\n.message-box span.fa,\n.message-box i.fa {\n padding: 0;\n}\n\n/************************************************************\n * TABLES\n ************************************************************/\n.pure-table-attributes {\n table-layout: fixed;\n width: 100%;\n}\n\n.attrname {\n text-align: right;\n}\n\n.attrvalue {\n overflow-wrap: break-word;\n}\n\ntable.attributes ul {\n padding: inherit;\n}\n\n/************************************************************\n * MEDIA QUERIES\n ************************************************************/\n\n@media screen and (max-width: 40em) {\n .pure-form .pure-input-sm-1-1 {\n width: 100%;\n }\n}\n\n@media screen and (max-width: 40em) {\n .wrap {\n width: 90%;\n }\n\n .pure-form-aligned .pure-controls {\n margin: 0.5em 0 0;\n float: left;\n }\n\n #layout {\n padding-top: 0;\n margin-bottom: -4rem;\n }\n\n .auth_methods {\n width: 60%;\n }\n\n #logo {\n font-size: 1.8em;\n }\n\n #footer {\n height: 2.5rem;\n padding-top: 1.5rem;\n\n .copyrights {\n height: 1rem;\n padding-top: 0;\n }\n }\n}\n\n@media screen and (max-width: 0), screen and (min-width: 40em) {\n .show-for-small-only {\n display: none !important;\n }\n\n .input-sm-placeholder {\n display: inline-block;\n }\n}\n\n@media screen and (min-width: 40em) {\n .hide-for-large {\n display: none !important;\n }\n}\n\n@media screen and (max-width: 40em) {\n .show-for-large {\n display: none !important;\n }\n}\n\n/*********\n * Utils *\n *********/\n\ndiv.preferredidp {\n border: 1px dashed #ccc;\n background: #eee;\n padding: 2px 2em;\n}\n\n.clear {\n clear: both;\n}\n\n.breathe-top {\n margin-top: 1em;\n}\n\n.expandable {\n border: solid 1px #bbb;\n width: 100%;\n\n .general {\n padding: 1em;\n }\n\n .content {\n display: none;\n padding: 1em;\n }\n\n .expander {\n cursor: pointer;\n text-align: center;\n padding: 0.25em;\n display: block;\n color: black;\n background-color: #f4f4f4;\n border-top: solid 1px #bbb;\n\n &:focus,\n &:hover {\n background-color: #555;\n color: white;\n }\n\n &::after {\n content: \"\\f078\";\n font-family: \"Font Awesome 6 Free\", sans-serif;\n font-weight: 400;\n }\n }\n\n &.expanded {\n .content {\n display: block;\n border-left: solid 0.25em #555;\n border-right: solid 0.25em #555;\n }\n\n .expander {\n border-bottom: none;\n border-top: solid 1px #bbb;\n border-left: solid 0.25em #555;\n border-right: solid 0.25em #555;\n\n &::after {\n content: \"\\f077\";\n }\n }\n }\n}\n\n.hidden {\n display: none;\n}\n\n.idp {\n border: 1px solid silver;\n padding: 1ex;\n margin: 1ex;\n}\n\n.idp .idpname {\n font-size: larger;\n font-weight: bold;\n}\n\n.idp .idpdesc {\n font-size: small;\n color: gray;\n}\n\n.right {\n float: right;\n}\n\n.left {\n float: left;\n}\n","/*!\n * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n// Font Awesome core compile (Web Fonts-based)\n// -------------------------\n\n@import 'functions';\n@import 'variables';\n@import 'mixins';\n@import 'core';\n@import 'sizing';\n@import 'fixed-width';\n@import 'list';\n@import 'bordered-pulled';\n@import 'animated';\n@import 'rotated-flipped';\n@import 'stacked';\n@import 'icons';\n@import 'screen-reader';\n","// base icon class definition\n// -------------------------\n\n.#{$fa-css-prefix} {\n font-family: var(--#{$fa-css-prefix}-style-family, '#{$fa-style-family}');\n font-weight: var(--#{$fa-css-prefix}-style, #{$fa-style});\n}\n\n.#{$fa-css-prefix}-solid,\n.#{$fa-css-prefix}-regular,\n.#{$fa-css-prefix}-brands,\n.fas,\n.far,\n.fab,\n.#{$fa-css-prefix}-sharp-solid,\n.#{$fa-css-prefix}-classic,\n.#{$fa-css-prefix} {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: var(--#{$fa-css-prefix}-display, #{$fa-display});\n font-style: normal;\n font-variant: normal;\n line-height: 1;\n text-rendering: auto;\n}\n\n.fas,\n.#{$fa-css-prefix}-classic,\n.#{$fa-css-prefix}-solid,\n.far,\n.#{$fa-css-prefix}-regular {\n font-family: 'Font Awesome 6 Free';\n}\n\n.fab,\n.#{$fa-css-prefix}-brands {\n font-family: 'Font Awesome 6 Brands';\n}\n\n\n%fa-icon {\n @include fa-icon;\n}\n","// sizing icons\n// -------------------------\n\n// literal magnification scale\n@for $i from 1 through 10 {\n .#{$fa-css-prefix}-#{$i}x {\n font-size: $i * 1em;\n }\n}\n\n// step-based scale (with alignment)\n@each $size, $value in $fa-sizes {\n .#{$fa-css-prefix}-#{$size} {\n @include fa-size($value);\n }\n}\n","// mixins\n// --------------------------\n\n// base rendering for an icon\n@mixin fa-icon {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n display: inline-block;\n font-style: normal;\n font-variant: normal;\n font-weight: normal;\n line-height: 1;\n}\n\n// sets relative font-sizing and alignment (in _sizing)\n@mixin fa-size ($font-size) {\n font-size: fa-divide($font-size, $fa-size-scale-base) * 1em; // converts step in sizing scale into an em-based value that's relative to the scale's base\n line-height: fa-divide(1, $font-size) * 1em; // sets the line-height of the icon back to that of it's parent\n vertical-align: (fa-divide(6, $font-size) - fa-divide(3, 8)) * 1em; // vertically centers the icon taking into account the surrounding text's descender\n}\n\n// only display content to screen readers\n// see: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// see: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n@mixin fa-sr-only() {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n// use in conjunction with .sr-only to only display content when it's focused\n@mixin fa-sr-only-focusable() {\n &:not(:focus) {\n @include fa-sr-only();\n }\n}\n\n// sets a specific icon family to use alongside style + icon mixins\n\n// convenience mixins for declaring pseudo-elements by CSS variable,\n// including all style-specific font properties, and both the ::before\n// and ::after elements in the duotone case.\n@mixin fa-icon-solid($fa-var) {\n @extend %fa-icon;\n @extend .fa-solid;\n\n &::before {\n content: unquote(\"\\\"#{ $fa-var }\\\"\");\n }\n}\n@mixin fa-icon-regular($fa-var) {\n @extend %fa-icon;\n @extend .fa-regular;\n\n &::before {\n content: unquote(\"\\\"#{ $fa-var }\\\"\");\n }\n}\n@mixin fa-icon-brands($fa-var) {\n @extend %fa-icon;\n @extend .fa-brands;\n\n &::before {\n content: unquote(\"\\\"#{ $fa-var }\\\"\");\n }\n}\n","// fixed-width icons\n// -------------------------\n\n.#{$fa-css-prefix}-fw {\n text-align: center;\n width: $fa-fw-width;\n}\n","// variables\n// --------------------------\n\n$fa-css-prefix : fa !default;\n$fa-style : 900 !default;\n$fa-style-family : \"Font Awesome 6 Free\" !default;\n\n$fa-display : inline-block !default;\n\n$fa-fw-width : fa-divide(20em, 16) !default;\n$fa-inverse : #fff !default;\n\n$fa-border-color : #eee !default;\n$fa-border-padding : .2em .25em .15em !default;\n$fa-border-radius : .1em !default;\n$fa-border-style : solid !default;\n$fa-border-width : .08em !default;\n\n$fa-size-scale-2xs : 10 !default;\n$fa-size-scale-xs : 12 !default;\n$fa-size-scale-sm : 14 !default;\n$fa-size-scale-base : 16 !default;\n$fa-size-scale-lg : 20 !default;\n$fa-size-scale-xl : 24 !default;\n$fa-size-scale-2xl : 32 !default;\n\n$fa-sizes: (\n \"2xs\" : $fa-size-scale-2xs,\n \"xs\" : $fa-size-scale-xs,\n \"sm\" : $fa-size-scale-sm,\n \"lg\" : $fa-size-scale-lg,\n \"xl\" : $fa-size-scale-xl,\n \"2xl\" : $fa-size-scale-2xl\n) !default;\n\n$fa-li-width : 2em !default;\n$fa-li-margin : $fa-li-width * fa-divide(5, 4) !default;\n\n$fa-pull-margin : .3em !default;\n\n$fa-primary-opacity : 1 !default;\n$fa-secondary-opacity : .4 !default;\n\n$fa-stack-vertical-align: middle !default;\n$fa-stack-width : ($fa-fw-width * 2) !default;\n$fa-stack-z-index : auto !default;\n\n$fa-font-display : block !default;\n$fa-font-path : \"../webfonts\" !default;\n\n$fa-var-0: \\30;\n$fa-var-1: \\31;\n$fa-var-2: \\32;\n$fa-var-3: \\33;\n$fa-var-4: \\34;\n$fa-var-5: \\35;\n$fa-var-6: \\36;\n$fa-var-7: \\37;\n$fa-var-8: \\38;\n$fa-var-9: \\39;\n$fa-var-fill-drip: \\f576;\n$fa-var-arrows-to-circle: \\e4bd;\n$fa-var-circle-chevron-right: \\f138;\n$fa-var-chevron-circle-right: \\f138;\n$fa-var-at: \\40;\n$fa-var-trash-can: \\f2ed;\n$fa-var-trash-alt: \\f2ed;\n$fa-var-text-height: \\f034;\n$fa-var-user-xmark: \\f235;\n$fa-var-user-times: \\f235;\n$fa-var-stethoscope: \\f0f1;\n$fa-var-message: \\f27a;\n$fa-var-comment-alt: \\f27a;\n$fa-var-info: \\f129;\n$fa-var-down-left-and-up-right-to-center: \\f422;\n$fa-var-compress-alt: \\f422;\n$fa-var-explosion: \\e4e9;\n$fa-var-file-lines: \\f15c;\n$fa-var-file-alt: \\f15c;\n$fa-var-file-text: \\f15c;\n$fa-var-wave-square: \\f83e;\n$fa-var-ring: \\f70b;\n$fa-var-building-un: \\e4d9;\n$fa-var-dice-three: \\f527;\n$fa-var-calendar-days: \\f073;\n$fa-var-calendar-alt: \\f073;\n$fa-var-anchor-circle-check: \\e4aa;\n$fa-var-building-circle-arrow-right: \\e4d1;\n$fa-var-volleyball: \\f45f;\n$fa-var-volleyball-ball: \\f45f;\n$fa-var-arrows-up-to-line: \\e4c2;\n$fa-var-sort-down: \\f0dd;\n$fa-var-sort-desc: \\f0dd;\n$fa-var-circle-minus: \\f056;\n$fa-var-minus-circle: \\f056;\n$fa-var-door-open: \\f52b;\n$fa-var-right-from-bracket: \\f2f5;\n$fa-var-sign-out-alt: \\f2f5;\n$fa-var-atom: \\f5d2;\n$fa-var-soap: \\e06e;\n$fa-var-icons: \\f86d;\n$fa-var-heart-music-camera-bolt: \\f86d;\n$fa-var-microphone-lines-slash: \\f539;\n$fa-var-microphone-alt-slash: \\f539;\n$fa-var-bridge-circle-check: \\e4c9;\n$fa-var-pump-medical: \\e06a;\n$fa-var-fingerprint: \\f577;\n$fa-var-hand-point-right: \\f0a4;\n$fa-var-magnifying-glass-location: \\f689;\n$fa-var-search-location: \\f689;\n$fa-var-forward-step: \\f051;\n$fa-var-step-forward: \\f051;\n$fa-var-face-smile-beam: \\f5b8;\n$fa-var-smile-beam: \\f5b8;\n$fa-var-flag-checkered: \\f11e;\n$fa-var-football: \\f44e;\n$fa-var-football-ball: \\f44e;\n$fa-var-school-circle-exclamation: \\e56c;\n$fa-var-crop: \\f125;\n$fa-var-angles-down: \\f103;\n$fa-var-angle-double-down: \\f103;\n$fa-var-users-rectangle: \\e594;\n$fa-var-people-roof: \\e537;\n$fa-var-people-line: \\e534;\n$fa-var-beer-mug-empty: \\f0fc;\n$fa-var-beer: \\f0fc;\n$fa-var-diagram-predecessor: \\e477;\n$fa-var-arrow-up-long: \\f176;\n$fa-var-long-arrow-up: \\f176;\n$fa-var-fire-flame-simple: \\f46a;\n$fa-var-burn: \\f46a;\n$fa-var-person: \\f183;\n$fa-var-male: \\f183;\n$fa-var-laptop: \\f109;\n$fa-var-file-csv: \\f6dd;\n$fa-var-menorah: \\f676;\n$fa-var-truck-plane: \\e58f;\n$fa-var-record-vinyl: \\f8d9;\n$fa-var-face-grin-stars: \\f587;\n$fa-var-grin-stars: \\f587;\n$fa-var-bong: \\f55c;\n$fa-var-spaghetti-monster-flying: \\f67b;\n$fa-var-pastafarianism: \\f67b;\n$fa-var-arrow-down-up-across-line: \\e4af;\n$fa-var-spoon: \\f2e5;\n$fa-var-utensil-spoon: \\f2e5;\n$fa-var-jar-wheat: \\e517;\n$fa-var-envelopes-bulk: \\f674;\n$fa-var-mail-bulk: \\f674;\n$fa-var-file-circle-exclamation: \\e4eb;\n$fa-var-circle-h: \\f47e;\n$fa-var-hospital-symbol: \\f47e;\n$fa-var-pager: \\f815;\n$fa-var-address-book: \\f2b9;\n$fa-var-contact-book: \\f2b9;\n$fa-var-strikethrough: \\f0cc;\n$fa-var-k: \\4b;\n$fa-var-landmark-flag: \\e51c;\n$fa-var-pencil: \\f303;\n$fa-var-pencil-alt: \\f303;\n$fa-var-backward: \\f04a;\n$fa-var-caret-right: \\f0da;\n$fa-var-comments: \\f086;\n$fa-var-paste: \\f0ea;\n$fa-var-file-clipboard: \\f0ea;\n$fa-var-code-pull-request: \\e13c;\n$fa-var-clipboard-list: \\f46d;\n$fa-var-truck-ramp-box: \\f4de;\n$fa-var-truck-loading: \\f4de;\n$fa-var-user-check: \\f4fc;\n$fa-var-vial-virus: \\e597;\n$fa-var-sheet-plastic: \\e571;\n$fa-var-blog: \\f781;\n$fa-var-user-ninja: \\f504;\n$fa-var-person-arrow-up-from-line: \\e539;\n$fa-var-scroll-torah: \\f6a0;\n$fa-var-torah: \\f6a0;\n$fa-var-broom-ball: \\f458;\n$fa-var-quidditch: \\f458;\n$fa-var-quidditch-broom-ball: \\f458;\n$fa-var-toggle-off: \\f204;\n$fa-var-box-archive: \\f187;\n$fa-var-archive: \\f187;\n$fa-var-person-drowning: \\e545;\n$fa-var-arrow-down-9-1: \\f886;\n$fa-var-sort-numeric-desc: \\f886;\n$fa-var-sort-numeric-down-alt: \\f886;\n$fa-var-face-grin-tongue-squint: \\f58a;\n$fa-var-grin-tongue-squint: \\f58a;\n$fa-var-spray-can: \\f5bd;\n$fa-var-truck-monster: \\f63b;\n$fa-var-w: \\57;\n$fa-var-earth-africa: \\f57c;\n$fa-var-globe-africa: \\f57c;\n$fa-var-rainbow: \\f75b;\n$fa-var-circle-notch: \\f1ce;\n$fa-var-tablet-screen-button: \\f3fa;\n$fa-var-tablet-alt: \\f3fa;\n$fa-var-paw: \\f1b0;\n$fa-var-cloud: \\f0c2;\n$fa-var-trowel-bricks: \\e58a;\n$fa-var-face-flushed: \\f579;\n$fa-var-flushed: \\f579;\n$fa-var-hospital-user: \\f80d;\n$fa-var-tent-arrow-left-right: \\e57f;\n$fa-var-gavel: \\f0e3;\n$fa-var-legal: \\f0e3;\n$fa-var-binoculars: \\f1e5;\n$fa-var-microphone-slash: \\f131;\n$fa-var-box-tissue: \\e05b;\n$fa-var-motorcycle: \\f21c;\n$fa-var-bell-concierge: \\f562;\n$fa-var-concierge-bell: \\f562;\n$fa-var-pen-ruler: \\f5ae;\n$fa-var-pencil-ruler: \\f5ae;\n$fa-var-people-arrows: \\e068;\n$fa-var-people-arrows-left-right: \\e068;\n$fa-var-mars-and-venus-burst: \\e523;\n$fa-var-square-caret-right: \\f152;\n$fa-var-caret-square-right: \\f152;\n$fa-var-scissors: \\f0c4;\n$fa-var-cut: \\f0c4;\n$fa-var-sun-plant-wilt: \\e57a;\n$fa-var-toilets-portable: \\e584;\n$fa-var-hockey-puck: \\f453;\n$fa-var-table: \\f0ce;\n$fa-var-magnifying-glass-arrow-right: \\e521;\n$fa-var-tachograph-digital: \\f566;\n$fa-var-digital-tachograph: \\f566;\n$fa-var-users-slash: \\e073;\n$fa-var-clover: \\e139;\n$fa-var-reply: \\f3e5;\n$fa-var-mail-reply: \\f3e5;\n$fa-var-star-and-crescent: \\f699;\n$fa-var-house-fire: \\e50c;\n$fa-var-square-minus: \\f146;\n$fa-var-minus-square: \\f146;\n$fa-var-helicopter: \\f533;\n$fa-var-compass: \\f14e;\n$fa-var-square-caret-down: \\f150;\n$fa-var-caret-square-down: \\f150;\n$fa-var-file-circle-question: \\e4ef;\n$fa-var-laptop-code: \\f5fc;\n$fa-var-swatchbook: \\f5c3;\n$fa-var-prescription-bottle: \\f485;\n$fa-var-bars: \\f0c9;\n$fa-var-navicon: \\f0c9;\n$fa-var-people-group: \\e533;\n$fa-var-hourglass-end: \\f253;\n$fa-var-hourglass-3: \\f253;\n$fa-var-heart-crack: \\f7a9;\n$fa-var-heart-broken: \\f7a9;\n$fa-var-square-up-right: \\f360;\n$fa-var-external-link-square-alt: \\f360;\n$fa-var-face-kiss-beam: \\f597;\n$fa-var-kiss-beam: \\f597;\n$fa-var-film: \\f008;\n$fa-var-ruler-horizontal: \\f547;\n$fa-var-people-robbery: \\e536;\n$fa-var-lightbulb: \\f0eb;\n$fa-var-caret-left: \\f0d9;\n$fa-var-circle-exclamation: \\f06a;\n$fa-var-exclamation-circle: \\f06a;\n$fa-var-school-circle-xmark: \\e56d;\n$fa-var-arrow-right-from-bracket: \\f08b;\n$fa-var-sign-out: \\f08b;\n$fa-var-circle-chevron-down: \\f13a;\n$fa-var-chevron-circle-down: \\f13a;\n$fa-var-unlock-keyhole: \\f13e;\n$fa-var-unlock-alt: \\f13e;\n$fa-var-cloud-showers-heavy: \\f740;\n$fa-var-headphones-simple: \\f58f;\n$fa-var-headphones-alt: \\f58f;\n$fa-var-sitemap: \\f0e8;\n$fa-var-circle-dollar-to-slot: \\f4b9;\n$fa-var-donate: \\f4b9;\n$fa-var-memory: \\f538;\n$fa-var-road-spikes: \\e568;\n$fa-var-fire-burner: \\e4f1;\n$fa-var-flag: \\f024;\n$fa-var-hanukiah: \\f6e6;\n$fa-var-feather: \\f52d;\n$fa-var-volume-low: \\f027;\n$fa-var-volume-down: \\f027;\n$fa-var-comment-slash: \\f4b3;\n$fa-var-cloud-sun-rain: \\f743;\n$fa-var-compress: \\f066;\n$fa-var-wheat-awn: \\e2cd;\n$fa-var-wheat-alt: \\e2cd;\n$fa-var-ankh: \\f644;\n$fa-var-hands-holding-child: \\e4fa;\n$fa-var-asterisk: \\2a;\n$fa-var-square-check: \\f14a;\n$fa-var-check-square: \\f14a;\n$fa-var-peseta-sign: \\e221;\n$fa-var-heading: \\f1dc;\n$fa-var-header: \\f1dc;\n$fa-var-ghost: \\f6e2;\n$fa-var-list: \\f03a;\n$fa-var-list-squares: \\f03a;\n$fa-var-square-phone-flip: \\f87b;\n$fa-var-phone-square-alt: \\f87b;\n$fa-var-cart-plus: \\f217;\n$fa-var-gamepad: \\f11b;\n$fa-var-circle-dot: \\f192;\n$fa-var-dot-circle: \\f192;\n$fa-var-face-dizzy: \\f567;\n$fa-var-dizzy: \\f567;\n$fa-var-egg: \\f7fb;\n$fa-var-house-medical-circle-xmark: \\e513;\n$fa-var-campground: \\f6bb;\n$fa-var-folder-plus: \\f65e;\n$fa-var-futbol: \\f1e3;\n$fa-var-futbol-ball: \\f1e3;\n$fa-var-soccer-ball: \\f1e3;\n$fa-var-paintbrush: \\f1fc;\n$fa-var-paint-brush: \\f1fc;\n$fa-var-lock: \\f023;\n$fa-var-gas-pump: \\f52f;\n$fa-var-hot-tub-person: \\f593;\n$fa-var-hot-tub: \\f593;\n$fa-var-map-location: \\f59f;\n$fa-var-map-marked: \\f59f;\n$fa-var-house-flood-water: \\e50e;\n$fa-var-tree: \\f1bb;\n$fa-var-bridge-lock: \\e4cc;\n$fa-var-sack-dollar: \\f81d;\n$fa-var-pen-to-square: \\f044;\n$fa-var-edit: \\f044;\n$fa-var-car-side: \\f5e4;\n$fa-var-share-nodes: \\f1e0;\n$fa-var-share-alt: \\f1e0;\n$fa-var-heart-circle-minus: \\e4ff;\n$fa-var-hourglass-half: \\f252;\n$fa-var-hourglass-2: \\f252;\n$fa-var-microscope: \\f610;\n$fa-var-sink: \\e06d;\n$fa-var-bag-shopping: \\f290;\n$fa-var-shopping-bag: \\f290;\n$fa-var-arrow-down-z-a: \\f881;\n$fa-var-sort-alpha-desc: \\f881;\n$fa-var-sort-alpha-down-alt: \\f881;\n$fa-var-mitten: \\f7b5;\n$fa-var-person-rays: \\e54d;\n$fa-var-users: \\f0c0;\n$fa-var-eye-slash: \\f070;\n$fa-var-flask-vial: \\e4f3;\n$fa-var-hand: \\f256;\n$fa-var-hand-paper: \\f256;\n$fa-var-om: \\f679;\n$fa-var-worm: \\e599;\n$fa-var-house-circle-xmark: \\e50b;\n$fa-var-plug: \\f1e6;\n$fa-var-chevron-up: \\f077;\n$fa-var-hand-spock: \\f259;\n$fa-var-stopwatch: \\f2f2;\n$fa-var-face-kiss: \\f596;\n$fa-var-kiss: \\f596;\n$fa-var-bridge-circle-xmark: \\e4cb;\n$fa-var-face-grin-tongue: \\f589;\n$fa-var-grin-tongue: \\f589;\n$fa-var-chess-bishop: \\f43a;\n$fa-var-face-grin-wink: \\f58c;\n$fa-var-grin-wink: \\f58c;\n$fa-var-ear-deaf: \\f2a4;\n$fa-var-deaf: \\f2a4;\n$fa-var-deafness: \\f2a4;\n$fa-var-hard-of-hearing: \\f2a4;\n$fa-var-road-circle-check: \\e564;\n$fa-var-dice-five: \\f523;\n$fa-var-square-rss: \\f143;\n$fa-var-rss-square: \\f143;\n$fa-var-land-mine-on: \\e51b;\n$fa-var-i-cursor: \\f246;\n$fa-var-stamp: \\f5bf;\n$fa-var-stairs: \\e289;\n$fa-var-i: \\49;\n$fa-var-hryvnia-sign: \\f6f2;\n$fa-var-hryvnia: \\f6f2;\n$fa-var-pills: \\f484;\n$fa-var-face-grin-wide: \\f581;\n$fa-var-grin-alt: \\f581;\n$fa-var-tooth: \\f5c9;\n$fa-var-v: \\56;\n$fa-var-bangladeshi-taka-sign: \\e2e6;\n$fa-var-bicycle: \\f206;\n$fa-var-staff-snake: \\e579;\n$fa-var-rod-asclepius: \\e579;\n$fa-var-rod-snake: \\e579;\n$fa-var-staff-aesculapius: \\e579;\n$fa-var-head-side-cough-slash: \\e062;\n$fa-var-truck-medical: \\f0f9;\n$fa-var-ambulance: \\f0f9;\n$fa-var-wheat-awn-circle-exclamation: \\e598;\n$fa-var-snowman: \\f7d0;\n$fa-var-mortar-pestle: \\f5a7;\n$fa-var-road-barrier: \\e562;\n$fa-var-school: \\f549;\n$fa-var-igloo: \\f7ae;\n$fa-var-joint: \\f595;\n$fa-var-angle-right: \\f105;\n$fa-var-horse: \\f6f0;\n$fa-var-q: \\51;\n$fa-var-g: \\47;\n$fa-var-notes-medical: \\f481;\n$fa-var-temperature-half: \\f2c9;\n$fa-var-temperature-2: \\f2c9;\n$fa-var-thermometer-2: \\f2c9;\n$fa-var-thermometer-half: \\f2c9;\n$fa-var-dong-sign: \\e169;\n$fa-var-capsules: \\f46b;\n$fa-var-poo-storm: \\f75a;\n$fa-var-poo-bolt: \\f75a;\n$fa-var-face-frown-open: \\f57a;\n$fa-var-frown-open: \\f57a;\n$fa-var-hand-point-up: \\f0a6;\n$fa-var-money-bill: \\f0d6;\n$fa-var-bookmark: \\f02e;\n$fa-var-align-justify: \\f039;\n$fa-var-umbrella-beach: \\f5ca;\n$fa-var-helmet-un: \\e503;\n$fa-var-bullseye: \\f140;\n$fa-var-bacon: \\f7e5;\n$fa-var-hand-point-down: \\f0a7;\n$fa-var-arrow-up-from-bracket: \\e09a;\n$fa-var-folder: \\f07b;\n$fa-var-folder-blank: \\f07b;\n$fa-var-file-waveform: \\f478;\n$fa-var-file-medical-alt: \\f478;\n$fa-var-radiation: \\f7b9;\n$fa-var-chart-simple: \\e473;\n$fa-var-mars-stroke: \\f229;\n$fa-var-vial: \\f492;\n$fa-var-gauge: \\f624;\n$fa-var-dashboard: \\f624;\n$fa-var-gauge-med: \\f624;\n$fa-var-tachometer-alt-average: \\f624;\n$fa-var-wand-magic-sparkles: \\e2ca;\n$fa-var-magic-wand-sparkles: \\e2ca;\n$fa-var-e: \\45;\n$fa-var-pen-clip: \\f305;\n$fa-var-pen-alt: \\f305;\n$fa-var-bridge-circle-exclamation: \\e4ca;\n$fa-var-user: \\f007;\n$fa-var-school-circle-check: \\e56b;\n$fa-var-dumpster: \\f793;\n$fa-var-van-shuttle: \\f5b6;\n$fa-var-shuttle-van: \\f5b6;\n$fa-var-building-user: \\e4da;\n$fa-var-square-caret-left: \\f191;\n$fa-var-caret-square-left: \\f191;\n$fa-var-highlighter: \\f591;\n$fa-var-key: \\f084;\n$fa-var-bullhorn: \\f0a1;\n$fa-var-globe: \\f0ac;\n$fa-var-synagogue: \\f69b;\n$fa-var-person-half-dress: \\e548;\n$fa-var-road-bridge: \\e563;\n$fa-var-location-arrow: \\f124;\n$fa-var-c: \\43;\n$fa-var-tablet-button: \\f10a;\n$fa-var-building-lock: \\e4d6;\n$fa-var-pizza-slice: \\f818;\n$fa-var-money-bill-wave: \\f53a;\n$fa-var-chart-area: \\f1fe;\n$fa-var-area-chart: \\f1fe;\n$fa-var-house-flag: \\e50d;\n$fa-var-person-circle-minus: \\e540;\n$fa-var-ban: \\f05e;\n$fa-var-cancel: \\f05e;\n$fa-var-camera-rotate: \\e0d8;\n$fa-var-spray-can-sparkles: \\f5d0;\n$fa-var-air-freshener: \\f5d0;\n$fa-var-star: \\f005;\n$fa-var-repeat: \\f363;\n$fa-var-cross: \\f654;\n$fa-var-box: \\f466;\n$fa-var-venus-mars: \\f228;\n$fa-var-arrow-pointer: \\f245;\n$fa-var-mouse-pointer: \\f245;\n$fa-var-maximize: \\f31e;\n$fa-var-expand-arrows-alt: \\f31e;\n$fa-var-charging-station: \\f5e7;\n$fa-var-shapes: \\f61f;\n$fa-var-triangle-circle-square: \\f61f;\n$fa-var-shuffle: \\f074;\n$fa-var-random: \\f074;\n$fa-var-person-running: \\f70c;\n$fa-var-running: \\f70c;\n$fa-var-mobile-retro: \\e527;\n$fa-var-grip-lines-vertical: \\f7a5;\n$fa-var-spider: \\f717;\n$fa-var-hands-bound: \\e4f9;\n$fa-var-file-invoice-dollar: \\f571;\n$fa-var-plane-circle-exclamation: \\e556;\n$fa-var-x-ray: \\f497;\n$fa-var-spell-check: \\f891;\n$fa-var-slash: \\f715;\n$fa-var-computer-mouse: \\f8cc;\n$fa-var-mouse: \\f8cc;\n$fa-var-arrow-right-to-bracket: \\f090;\n$fa-var-sign-in: \\f090;\n$fa-var-shop-slash: \\e070;\n$fa-var-store-alt-slash: \\e070;\n$fa-var-server: \\f233;\n$fa-var-virus-covid-slash: \\e4a9;\n$fa-var-shop-lock: \\e4a5;\n$fa-var-hourglass-start: \\f251;\n$fa-var-hourglass-1: \\f251;\n$fa-var-blender-phone: \\f6b6;\n$fa-var-building-wheat: \\e4db;\n$fa-var-person-breastfeeding: \\e53a;\n$fa-var-right-to-bracket: \\f2f6;\n$fa-var-sign-in-alt: \\f2f6;\n$fa-var-venus: \\f221;\n$fa-var-passport: \\f5ab;\n$fa-var-thumbtack-slash: \\e68f;\n$fa-var-thumb-tack-slash: \\e68f;\n$fa-var-heart-pulse: \\f21e;\n$fa-var-heartbeat: \\f21e;\n$fa-var-people-carry-box: \\f4ce;\n$fa-var-people-carry: \\f4ce;\n$fa-var-temperature-high: \\f769;\n$fa-var-microchip: \\f2db;\n$fa-var-crown: \\f521;\n$fa-var-weight-hanging: \\f5cd;\n$fa-var-xmarks-lines: \\e59a;\n$fa-var-file-prescription: \\f572;\n$fa-var-weight-scale: \\f496;\n$fa-var-weight: \\f496;\n$fa-var-user-group: \\f500;\n$fa-var-user-friends: \\f500;\n$fa-var-arrow-up-a-z: \\f15e;\n$fa-var-sort-alpha-up: \\f15e;\n$fa-var-chess-knight: \\f441;\n$fa-var-face-laugh-squint: \\f59b;\n$fa-var-laugh-squint: \\f59b;\n$fa-var-wheelchair: \\f193;\n$fa-var-circle-arrow-up: \\f0aa;\n$fa-var-arrow-circle-up: \\f0aa;\n$fa-var-toggle-on: \\f205;\n$fa-var-person-walking: \\f554;\n$fa-var-walking: \\f554;\n$fa-var-l: \\4c;\n$fa-var-fire: \\f06d;\n$fa-var-bed-pulse: \\f487;\n$fa-var-procedures: \\f487;\n$fa-var-shuttle-space: \\f197;\n$fa-var-space-shuttle: \\f197;\n$fa-var-face-laugh: \\f599;\n$fa-var-laugh: \\f599;\n$fa-var-folder-open: \\f07c;\n$fa-var-heart-circle-plus: \\e500;\n$fa-var-code-fork: \\e13b;\n$fa-var-city: \\f64f;\n$fa-var-microphone-lines: \\f3c9;\n$fa-var-microphone-alt: \\f3c9;\n$fa-var-pepper-hot: \\f816;\n$fa-var-unlock: \\f09c;\n$fa-var-colon-sign: \\e140;\n$fa-var-headset: \\f590;\n$fa-var-store-slash: \\e071;\n$fa-var-road-circle-xmark: \\e566;\n$fa-var-user-minus: \\f503;\n$fa-var-mars-stroke-up: \\f22a;\n$fa-var-mars-stroke-v: \\f22a;\n$fa-var-champagne-glasses: \\f79f;\n$fa-var-glass-cheers: \\f79f;\n$fa-var-clipboard: \\f328;\n$fa-var-house-circle-exclamation: \\e50a;\n$fa-var-file-arrow-up: \\f574;\n$fa-var-file-upload: \\f574;\n$fa-var-wifi: \\f1eb;\n$fa-var-wifi-3: \\f1eb;\n$fa-var-wifi-strong: \\f1eb;\n$fa-var-bath: \\f2cd;\n$fa-var-bathtub: \\f2cd;\n$fa-var-underline: \\f0cd;\n$fa-var-user-pen: \\f4ff;\n$fa-var-user-edit: \\f4ff;\n$fa-var-signature: \\f5b7;\n$fa-var-stroopwafel: \\f551;\n$fa-var-bold: \\f032;\n$fa-var-anchor-lock: \\e4ad;\n$fa-var-building-ngo: \\e4d7;\n$fa-var-manat-sign: \\e1d5;\n$fa-var-not-equal: \\f53e;\n$fa-var-border-top-left: \\f853;\n$fa-var-border-style: \\f853;\n$fa-var-map-location-dot: \\f5a0;\n$fa-var-map-marked-alt: \\f5a0;\n$fa-var-jedi: \\f669;\n$fa-var-square-poll-vertical: \\f681;\n$fa-var-poll: \\f681;\n$fa-var-mug-hot: \\f7b6;\n$fa-var-car-battery: \\f5df;\n$fa-var-battery-car: \\f5df;\n$fa-var-gift: \\f06b;\n$fa-var-dice-two: \\f528;\n$fa-var-chess-queen: \\f445;\n$fa-var-glasses: \\f530;\n$fa-var-chess-board: \\f43c;\n$fa-var-building-circle-check: \\e4d2;\n$fa-var-person-chalkboard: \\e53d;\n$fa-var-mars-stroke-right: \\f22b;\n$fa-var-mars-stroke-h: \\f22b;\n$fa-var-hand-back-fist: \\f255;\n$fa-var-hand-rock: \\f255;\n$fa-var-square-caret-up: \\f151;\n$fa-var-caret-square-up: \\f151;\n$fa-var-cloud-showers-water: \\e4e4;\n$fa-var-chart-bar: \\f080;\n$fa-var-bar-chart: \\f080;\n$fa-var-hands-bubbles: \\e05e;\n$fa-var-hands-wash: \\e05e;\n$fa-var-less-than-equal: \\f537;\n$fa-var-train: \\f238;\n$fa-var-eye-low-vision: \\f2a8;\n$fa-var-low-vision: \\f2a8;\n$fa-var-crow: \\f520;\n$fa-var-sailboat: \\e445;\n$fa-var-window-restore: \\f2d2;\n$fa-var-square-plus: \\f0fe;\n$fa-var-plus-square: \\f0fe;\n$fa-var-torii-gate: \\f6a1;\n$fa-var-frog: \\f52e;\n$fa-var-bucket: \\e4cf;\n$fa-var-image: \\f03e;\n$fa-var-microphone: \\f130;\n$fa-var-cow: \\f6c8;\n$fa-var-caret-up: \\f0d8;\n$fa-var-screwdriver: \\f54a;\n$fa-var-folder-closed: \\e185;\n$fa-var-house-tsunami: \\e515;\n$fa-var-square-nfi: \\e576;\n$fa-var-arrow-up-from-ground-water: \\e4b5;\n$fa-var-martini-glass: \\f57b;\n$fa-var-glass-martini-alt: \\f57b;\n$fa-var-rotate-left: \\f2ea;\n$fa-var-rotate-back: \\f2ea;\n$fa-var-rotate-backward: \\f2ea;\n$fa-var-undo-alt: \\f2ea;\n$fa-var-table-columns: \\f0db;\n$fa-var-columns: \\f0db;\n$fa-var-lemon: \\f094;\n$fa-var-head-side-mask: \\e063;\n$fa-var-handshake: \\f2b5;\n$fa-var-gem: \\f3a5;\n$fa-var-dolly: \\f472;\n$fa-var-dolly-box: \\f472;\n$fa-var-smoking: \\f48d;\n$fa-var-minimize: \\f78c;\n$fa-var-compress-arrows-alt: \\f78c;\n$fa-var-monument: \\f5a6;\n$fa-var-snowplow: \\f7d2;\n$fa-var-angles-right: \\f101;\n$fa-var-angle-double-right: \\f101;\n$fa-var-cannabis: \\f55f;\n$fa-var-circle-play: \\f144;\n$fa-var-play-circle: \\f144;\n$fa-var-tablets: \\f490;\n$fa-var-ethernet: \\f796;\n$fa-var-euro-sign: \\f153;\n$fa-var-eur: \\f153;\n$fa-var-euro: \\f153;\n$fa-var-chair: \\f6c0;\n$fa-var-circle-check: \\f058;\n$fa-var-check-circle: \\f058;\n$fa-var-circle-stop: \\f28d;\n$fa-var-stop-circle: \\f28d;\n$fa-var-compass-drafting: \\f568;\n$fa-var-drafting-compass: \\f568;\n$fa-var-plate-wheat: \\e55a;\n$fa-var-icicles: \\f7ad;\n$fa-var-person-shelter: \\e54f;\n$fa-var-neuter: \\f22c;\n$fa-var-id-badge: \\f2c1;\n$fa-var-marker: \\f5a1;\n$fa-var-face-laugh-beam: \\f59a;\n$fa-var-laugh-beam: \\f59a;\n$fa-var-helicopter-symbol: \\e502;\n$fa-var-universal-access: \\f29a;\n$fa-var-circle-chevron-up: \\f139;\n$fa-var-chevron-circle-up: \\f139;\n$fa-var-lari-sign: \\e1c8;\n$fa-var-volcano: \\f770;\n$fa-var-person-walking-dashed-line-arrow-right: \\e553;\n$fa-var-sterling-sign: \\f154;\n$fa-var-gbp: \\f154;\n$fa-var-pound-sign: \\f154;\n$fa-var-viruses: \\e076;\n$fa-var-square-person-confined: \\e577;\n$fa-var-user-tie: \\f508;\n$fa-var-arrow-down-long: \\f175;\n$fa-var-long-arrow-down: \\f175;\n$fa-var-tent-arrow-down-to-line: \\e57e;\n$fa-var-certificate: \\f0a3;\n$fa-var-reply-all: \\f122;\n$fa-var-mail-reply-all: \\f122;\n$fa-var-suitcase: \\f0f2;\n$fa-var-person-skating: \\f7c5;\n$fa-var-skating: \\f7c5;\n$fa-var-filter-circle-dollar: \\f662;\n$fa-var-funnel-dollar: \\f662;\n$fa-var-camera-retro: \\f083;\n$fa-var-circle-arrow-down: \\f0ab;\n$fa-var-arrow-circle-down: \\f0ab;\n$fa-var-file-import: \\f56f;\n$fa-var-arrow-right-to-file: \\f56f;\n$fa-var-square-arrow-up-right: \\f14c;\n$fa-var-external-link-square: \\f14c;\n$fa-var-box-open: \\f49e;\n$fa-var-scroll: \\f70e;\n$fa-var-spa: \\f5bb;\n$fa-var-location-pin-lock: \\e51f;\n$fa-var-pause: \\f04c;\n$fa-var-hill-avalanche: \\e507;\n$fa-var-temperature-empty: \\f2cb;\n$fa-var-temperature-0: \\f2cb;\n$fa-var-thermometer-0: \\f2cb;\n$fa-var-thermometer-empty: \\f2cb;\n$fa-var-bomb: \\f1e2;\n$fa-var-registered: \\f25d;\n$fa-var-address-card: \\f2bb;\n$fa-var-contact-card: \\f2bb;\n$fa-var-vcard: \\f2bb;\n$fa-var-scale-unbalanced-flip: \\f516;\n$fa-var-balance-scale-right: \\f516;\n$fa-var-subscript: \\f12c;\n$fa-var-diamond-turn-right: \\f5eb;\n$fa-var-directions: \\f5eb;\n$fa-var-burst: \\e4dc;\n$fa-var-house-laptop: \\e066;\n$fa-var-laptop-house: \\e066;\n$fa-var-face-tired: \\f5c8;\n$fa-var-tired: \\f5c8;\n$fa-var-money-bills: \\e1f3;\n$fa-var-smog: \\f75f;\n$fa-var-crutch: \\f7f7;\n$fa-var-cloud-arrow-up: \\f0ee;\n$fa-var-cloud-upload: \\f0ee;\n$fa-var-cloud-upload-alt: \\f0ee;\n$fa-var-palette: \\f53f;\n$fa-var-arrows-turn-right: \\e4c0;\n$fa-var-vest: \\e085;\n$fa-var-ferry: \\e4ea;\n$fa-var-arrows-down-to-people: \\e4b9;\n$fa-var-seedling: \\f4d8;\n$fa-var-sprout: \\f4d8;\n$fa-var-left-right: \\f337;\n$fa-var-arrows-alt-h: \\f337;\n$fa-var-boxes-packing: \\e4c7;\n$fa-var-circle-arrow-left: \\f0a8;\n$fa-var-arrow-circle-left: \\f0a8;\n$fa-var-group-arrows-rotate: \\e4f6;\n$fa-var-bowl-food: \\e4c6;\n$fa-var-candy-cane: \\f786;\n$fa-var-arrow-down-wide-short: \\f160;\n$fa-var-sort-amount-asc: \\f160;\n$fa-var-sort-amount-down: \\f160;\n$fa-var-cloud-bolt: \\f76c;\n$fa-var-thunderstorm: \\f76c;\n$fa-var-text-slash: \\f87d;\n$fa-var-remove-format: \\f87d;\n$fa-var-face-smile-wink: \\f4da;\n$fa-var-smile-wink: \\f4da;\n$fa-var-file-word: \\f1c2;\n$fa-var-file-powerpoint: \\f1c4;\n$fa-var-arrows-left-right: \\f07e;\n$fa-var-arrows-h: \\f07e;\n$fa-var-house-lock: \\e510;\n$fa-var-cloud-arrow-down: \\f0ed;\n$fa-var-cloud-download: \\f0ed;\n$fa-var-cloud-download-alt: \\f0ed;\n$fa-var-children: \\e4e1;\n$fa-var-chalkboard: \\f51b;\n$fa-var-blackboard: \\f51b;\n$fa-var-user-large-slash: \\f4fa;\n$fa-var-user-alt-slash: \\f4fa;\n$fa-var-envelope-open: \\f2b6;\n$fa-var-handshake-simple-slash: \\e05f;\n$fa-var-handshake-alt-slash: \\e05f;\n$fa-var-mattress-pillow: \\e525;\n$fa-var-guarani-sign: \\e19a;\n$fa-var-arrows-rotate: \\f021;\n$fa-var-refresh: \\f021;\n$fa-var-sync: \\f021;\n$fa-var-fire-extinguisher: \\f134;\n$fa-var-cruzeiro-sign: \\e152;\n$fa-var-greater-than-equal: \\f532;\n$fa-var-shield-halved: \\f3ed;\n$fa-var-shield-alt: \\f3ed;\n$fa-var-book-atlas: \\f558;\n$fa-var-atlas: \\f558;\n$fa-var-virus: \\e074;\n$fa-var-envelope-circle-check: \\e4e8;\n$fa-var-layer-group: \\f5fd;\n$fa-var-arrows-to-dot: \\e4be;\n$fa-var-archway: \\f557;\n$fa-var-heart-circle-check: \\e4fd;\n$fa-var-house-chimney-crack: \\f6f1;\n$fa-var-house-damage: \\f6f1;\n$fa-var-file-zipper: \\f1c6;\n$fa-var-file-archive: \\f1c6;\n$fa-var-square: \\f0c8;\n$fa-var-martini-glass-empty: \\f000;\n$fa-var-glass-martini: \\f000;\n$fa-var-couch: \\f4b8;\n$fa-var-cedi-sign: \\e0df;\n$fa-var-italic: \\f033;\n$fa-var-table-cells-column-lock: \\e678;\n$fa-var-church: \\f51d;\n$fa-var-comments-dollar: \\f653;\n$fa-var-democrat: \\f747;\n$fa-var-z: \\5a;\n$fa-var-person-skiing: \\f7c9;\n$fa-var-skiing: \\f7c9;\n$fa-var-road-lock: \\e567;\n$fa-var-a: \\41;\n$fa-var-temperature-arrow-down: \\e03f;\n$fa-var-temperature-down: \\e03f;\n$fa-var-feather-pointed: \\f56b;\n$fa-var-feather-alt: \\f56b;\n$fa-var-p: \\50;\n$fa-var-snowflake: \\f2dc;\n$fa-var-newspaper: \\f1ea;\n$fa-var-rectangle-ad: \\f641;\n$fa-var-ad: \\f641;\n$fa-var-circle-arrow-right: \\f0a9;\n$fa-var-arrow-circle-right: \\f0a9;\n$fa-var-filter-circle-xmark: \\e17b;\n$fa-var-locust: \\e520;\n$fa-var-sort: \\f0dc;\n$fa-var-unsorted: \\f0dc;\n$fa-var-list-ol: \\f0cb;\n$fa-var-list-1-2: \\f0cb;\n$fa-var-list-numeric: \\f0cb;\n$fa-var-person-dress-burst: \\e544;\n$fa-var-money-check-dollar: \\f53d;\n$fa-var-money-check-alt: \\f53d;\n$fa-var-vector-square: \\f5cb;\n$fa-var-bread-slice: \\f7ec;\n$fa-var-language: \\f1ab;\n$fa-var-face-kiss-wink-heart: \\f598;\n$fa-var-kiss-wink-heart: \\f598;\n$fa-var-filter: \\f0b0;\n$fa-var-question: \\3f;\n$fa-var-file-signature: \\f573;\n$fa-var-up-down-left-right: \\f0b2;\n$fa-var-arrows-alt: \\f0b2;\n$fa-var-house-chimney-user: \\e065;\n$fa-var-hand-holding-heart: \\f4be;\n$fa-var-puzzle-piece: \\f12e;\n$fa-var-money-check: \\f53c;\n$fa-var-star-half-stroke: \\f5c0;\n$fa-var-star-half-alt: \\f5c0;\n$fa-var-code: \\f121;\n$fa-var-whiskey-glass: \\f7a0;\n$fa-var-glass-whiskey: \\f7a0;\n$fa-var-building-circle-exclamation: \\e4d3;\n$fa-var-magnifying-glass-chart: \\e522;\n$fa-var-arrow-up-right-from-square: \\f08e;\n$fa-var-external-link: \\f08e;\n$fa-var-cubes-stacked: \\e4e6;\n$fa-var-won-sign: \\f159;\n$fa-var-krw: \\f159;\n$fa-var-won: \\f159;\n$fa-var-virus-covid: \\e4a8;\n$fa-var-austral-sign: \\e0a9;\n$fa-var-f: \\46;\n$fa-var-leaf: \\f06c;\n$fa-var-road: \\f018;\n$fa-var-taxi: \\f1ba;\n$fa-var-cab: \\f1ba;\n$fa-var-person-circle-plus: \\e541;\n$fa-var-chart-pie: \\f200;\n$fa-var-pie-chart: \\f200;\n$fa-var-bolt-lightning: \\e0b7;\n$fa-var-sack-xmark: \\e56a;\n$fa-var-file-excel: \\f1c3;\n$fa-var-file-contract: \\f56c;\n$fa-var-fish-fins: \\e4f2;\n$fa-var-building-flag: \\e4d5;\n$fa-var-face-grin-beam: \\f582;\n$fa-var-grin-beam: \\f582;\n$fa-var-object-ungroup: \\f248;\n$fa-var-poop: \\f619;\n$fa-var-location-pin: \\f041;\n$fa-var-map-marker: \\f041;\n$fa-var-kaaba: \\f66b;\n$fa-var-toilet-paper: \\f71e;\n$fa-var-helmet-safety: \\f807;\n$fa-var-hard-hat: \\f807;\n$fa-var-hat-hard: \\f807;\n$fa-var-eject: \\f052;\n$fa-var-circle-right: \\f35a;\n$fa-var-arrow-alt-circle-right: \\f35a;\n$fa-var-plane-circle-check: \\e555;\n$fa-var-face-rolling-eyes: \\f5a5;\n$fa-var-meh-rolling-eyes: \\f5a5;\n$fa-var-object-group: \\f247;\n$fa-var-chart-line: \\f201;\n$fa-var-line-chart: \\f201;\n$fa-var-mask-ventilator: \\e524;\n$fa-var-arrow-right: \\f061;\n$fa-var-signs-post: \\f277;\n$fa-var-map-signs: \\f277;\n$fa-var-cash-register: \\f788;\n$fa-var-person-circle-question: \\e542;\n$fa-var-h: \\48;\n$fa-var-tarp: \\e57b;\n$fa-var-screwdriver-wrench: \\f7d9;\n$fa-var-tools: \\f7d9;\n$fa-var-arrows-to-eye: \\e4bf;\n$fa-var-plug-circle-bolt: \\e55b;\n$fa-var-heart: \\f004;\n$fa-var-mars-and-venus: \\f224;\n$fa-var-house-user: \\e1b0;\n$fa-var-home-user: \\e1b0;\n$fa-var-dumpster-fire: \\f794;\n$fa-var-house-crack: \\e3b1;\n$fa-var-martini-glass-citrus: \\f561;\n$fa-var-cocktail: \\f561;\n$fa-var-face-surprise: \\f5c2;\n$fa-var-surprise: \\f5c2;\n$fa-var-bottle-water: \\e4c5;\n$fa-var-circle-pause: \\f28b;\n$fa-var-pause-circle: \\f28b;\n$fa-var-toilet-paper-slash: \\e072;\n$fa-var-apple-whole: \\f5d1;\n$fa-var-apple-alt: \\f5d1;\n$fa-var-kitchen-set: \\e51a;\n$fa-var-r: \\52;\n$fa-var-temperature-quarter: \\f2ca;\n$fa-var-temperature-1: \\f2ca;\n$fa-var-thermometer-1: \\f2ca;\n$fa-var-thermometer-quarter: \\f2ca;\n$fa-var-cube: \\f1b2;\n$fa-var-bitcoin-sign: \\e0b4;\n$fa-var-shield-dog: \\e573;\n$fa-var-solar-panel: \\f5ba;\n$fa-var-lock-open: \\f3c1;\n$fa-var-elevator: \\e16d;\n$fa-var-money-bill-transfer: \\e528;\n$fa-var-money-bill-trend-up: \\e529;\n$fa-var-house-flood-water-circle-arrow-right: \\e50f;\n$fa-var-square-poll-horizontal: \\f682;\n$fa-var-poll-h: \\f682;\n$fa-var-circle: \\f111;\n$fa-var-backward-fast: \\f049;\n$fa-var-fast-backward: \\f049;\n$fa-var-recycle: \\f1b8;\n$fa-var-user-astronaut: \\f4fb;\n$fa-var-plane-slash: \\e069;\n$fa-var-trademark: \\f25c;\n$fa-var-basketball: \\f434;\n$fa-var-basketball-ball: \\f434;\n$fa-var-satellite-dish: \\f7c0;\n$fa-var-circle-up: \\f35b;\n$fa-var-arrow-alt-circle-up: \\f35b;\n$fa-var-mobile-screen-button: \\f3cd;\n$fa-var-mobile-alt: \\f3cd;\n$fa-var-volume-high: \\f028;\n$fa-var-volume-up: \\f028;\n$fa-var-users-rays: \\e593;\n$fa-var-wallet: \\f555;\n$fa-var-clipboard-check: \\f46c;\n$fa-var-file-audio: \\f1c7;\n$fa-var-burger: \\f805;\n$fa-var-hamburger: \\f805;\n$fa-var-wrench: \\f0ad;\n$fa-var-bugs: \\e4d0;\n$fa-var-rupee-sign: \\f156;\n$fa-var-rupee: \\f156;\n$fa-var-file-image: \\f1c5;\n$fa-var-circle-question: \\f059;\n$fa-var-question-circle: \\f059;\n$fa-var-plane-departure: \\f5b0;\n$fa-var-handshake-slash: \\e060;\n$fa-var-book-bookmark: \\e0bb;\n$fa-var-code-branch: \\f126;\n$fa-var-hat-cowboy: \\f8c0;\n$fa-var-bridge: \\e4c8;\n$fa-var-phone-flip: \\f879;\n$fa-var-phone-alt: \\f879;\n$fa-var-truck-front: \\e2b7;\n$fa-var-cat: \\f6be;\n$fa-var-anchor-circle-exclamation: \\e4ab;\n$fa-var-truck-field: \\e58d;\n$fa-var-route: \\f4d7;\n$fa-var-clipboard-question: \\e4e3;\n$fa-var-panorama: \\e209;\n$fa-var-comment-medical: \\f7f5;\n$fa-var-teeth-open: \\f62f;\n$fa-var-file-circle-minus: \\e4ed;\n$fa-var-tags: \\f02c;\n$fa-var-wine-glass: \\f4e3;\n$fa-var-forward-fast: \\f050;\n$fa-var-fast-forward: \\f050;\n$fa-var-face-meh-blank: \\f5a4;\n$fa-var-meh-blank: \\f5a4;\n$fa-var-square-parking: \\f540;\n$fa-var-parking: \\f540;\n$fa-var-house-signal: \\e012;\n$fa-var-bars-progress: \\f828;\n$fa-var-tasks-alt: \\f828;\n$fa-var-faucet-drip: \\e006;\n$fa-var-cart-flatbed: \\f474;\n$fa-var-dolly-flatbed: \\f474;\n$fa-var-ban-smoking: \\f54d;\n$fa-var-smoking-ban: \\f54d;\n$fa-var-terminal: \\f120;\n$fa-var-mobile-button: \\f10b;\n$fa-var-house-medical-flag: \\e514;\n$fa-var-basket-shopping: \\f291;\n$fa-var-shopping-basket: \\f291;\n$fa-var-tape: \\f4db;\n$fa-var-bus-simple: \\f55e;\n$fa-var-bus-alt: \\f55e;\n$fa-var-eye: \\f06e;\n$fa-var-face-sad-cry: \\f5b3;\n$fa-var-sad-cry: \\f5b3;\n$fa-var-audio-description: \\f29e;\n$fa-var-person-military-to-person: \\e54c;\n$fa-var-file-shield: \\e4f0;\n$fa-var-user-slash: \\f506;\n$fa-var-pen: \\f304;\n$fa-var-tower-observation: \\e586;\n$fa-var-file-code: \\f1c9;\n$fa-var-signal: \\f012;\n$fa-var-signal-5: \\f012;\n$fa-var-signal-perfect: \\f012;\n$fa-var-bus: \\f207;\n$fa-var-heart-circle-xmark: \\e501;\n$fa-var-house-chimney: \\e3af;\n$fa-var-home-lg: \\e3af;\n$fa-var-window-maximize: \\f2d0;\n$fa-var-face-frown: \\f119;\n$fa-var-frown: \\f119;\n$fa-var-prescription: \\f5b1;\n$fa-var-shop: \\f54f;\n$fa-var-store-alt: \\f54f;\n$fa-var-floppy-disk: \\f0c7;\n$fa-var-save: \\f0c7;\n$fa-var-vihara: \\f6a7;\n$fa-var-scale-unbalanced: \\f515;\n$fa-var-balance-scale-left: \\f515;\n$fa-var-sort-up: \\f0de;\n$fa-var-sort-asc: \\f0de;\n$fa-var-comment-dots: \\f4ad;\n$fa-var-commenting: \\f4ad;\n$fa-var-plant-wilt: \\e5aa;\n$fa-var-diamond: \\f219;\n$fa-var-face-grin-squint: \\f585;\n$fa-var-grin-squint: \\f585;\n$fa-var-hand-holding-dollar: \\f4c0;\n$fa-var-hand-holding-usd: \\f4c0;\n$fa-var-bacterium: \\e05a;\n$fa-var-hand-pointer: \\f25a;\n$fa-var-drum-steelpan: \\f56a;\n$fa-var-hand-scissors: \\f257;\n$fa-var-hands-praying: \\f684;\n$fa-var-praying-hands: \\f684;\n$fa-var-arrow-rotate-right: \\f01e;\n$fa-var-arrow-right-rotate: \\f01e;\n$fa-var-arrow-rotate-forward: \\f01e;\n$fa-var-redo: \\f01e;\n$fa-var-biohazard: \\f780;\n$fa-var-location-crosshairs: \\f601;\n$fa-var-location: \\f601;\n$fa-var-mars-double: \\f227;\n$fa-var-child-dress: \\e59c;\n$fa-var-users-between-lines: \\e591;\n$fa-var-lungs-virus: \\e067;\n$fa-var-face-grin-tears: \\f588;\n$fa-var-grin-tears: \\f588;\n$fa-var-phone: \\f095;\n$fa-var-calendar-xmark: \\f273;\n$fa-var-calendar-times: \\f273;\n$fa-var-child-reaching: \\e59d;\n$fa-var-head-side-virus: \\e064;\n$fa-var-user-gear: \\f4fe;\n$fa-var-user-cog: \\f4fe;\n$fa-var-arrow-up-1-9: \\f163;\n$fa-var-sort-numeric-up: \\f163;\n$fa-var-door-closed: \\f52a;\n$fa-var-shield-virus: \\e06c;\n$fa-var-dice-six: \\f526;\n$fa-var-mosquito-net: \\e52c;\n$fa-var-bridge-water: \\e4ce;\n$fa-var-person-booth: \\f756;\n$fa-var-text-width: \\f035;\n$fa-var-hat-wizard: \\f6e8;\n$fa-var-pen-fancy: \\f5ac;\n$fa-var-person-digging: \\f85e;\n$fa-var-digging: \\f85e;\n$fa-var-trash: \\f1f8;\n$fa-var-gauge-simple: \\f629;\n$fa-var-gauge-simple-med: \\f629;\n$fa-var-tachometer-average: \\f629;\n$fa-var-book-medical: \\f7e6;\n$fa-var-poo: \\f2fe;\n$fa-var-quote-right: \\f10e;\n$fa-var-quote-right-alt: \\f10e;\n$fa-var-shirt: \\f553;\n$fa-var-t-shirt: \\f553;\n$fa-var-tshirt: \\f553;\n$fa-var-cubes: \\f1b3;\n$fa-var-divide: \\f529;\n$fa-var-tenge-sign: \\f7d7;\n$fa-var-tenge: \\f7d7;\n$fa-var-headphones: \\f025;\n$fa-var-hands-holding: \\f4c2;\n$fa-var-hands-clapping: \\e1a8;\n$fa-var-republican: \\f75e;\n$fa-var-arrow-left: \\f060;\n$fa-var-person-circle-xmark: \\e543;\n$fa-var-ruler: \\f545;\n$fa-var-align-left: \\f036;\n$fa-var-dice-d6: \\f6d1;\n$fa-var-restroom: \\f7bd;\n$fa-var-j: \\4a;\n$fa-var-users-viewfinder: \\e595;\n$fa-var-file-video: \\f1c8;\n$fa-var-up-right-from-square: \\f35d;\n$fa-var-external-link-alt: \\f35d;\n$fa-var-table-cells: \\f00a;\n$fa-var-th: \\f00a;\n$fa-var-file-pdf: \\f1c1;\n$fa-var-book-bible: \\f647;\n$fa-var-bible: \\f647;\n$fa-var-o: \\4f;\n$fa-var-suitcase-medical: \\f0fa;\n$fa-var-medkit: \\f0fa;\n$fa-var-user-secret: \\f21b;\n$fa-var-otter: \\f700;\n$fa-var-person-dress: \\f182;\n$fa-var-female: \\f182;\n$fa-var-comment-dollar: \\f651;\n$fa-var-business-time: \\f64a;\n$fa-var-briefcase-clock: \\f64a;\n$fa-var-table-cells-large: \\f009;\n$fa-var-th-large: \\f009;\n$fa-var-book-tanakh: \\f827;\n$fa-var-tanakh: \\f827;\n$fa-var-phone-volume: \\f2a0;\n$fa-var-volume-control-phone: \\f2a0;\n$fa-var-hat-cowboy-side: \\f8c1;\n$fa-var-clipboard-user: \\f7f3;\n$fa-var-child: \\f1ae;\n$fa-var-lira-sign: \\f195;\n$fa-var-satellite: \\f7bf;\n$fa-var-plane-lock: \\e558;\n$fa-var-tag: \\f02b;\n$fa-var-comment: \\f075;\n$fa-var-cake-candles: \\f1fd;\n$fa-var-birthday-cake: \\f1fd;\n$fa-var-cake: \\f1fd;\n$fa-var-envelope: \\f0e0;\n$fa-var-angles-up: \\f102;\n$fa-var-angle-double-up: \\f102;\n$fa-var-paperclip: \\f0c6;\n$fa-var-arrow-right-to-city: \\e4b3;\n$fa-var-ribbon: \\f4d6;\n$fa-var-lungs: \\f604;\n$fa-var-arrow-up-9-1: \\f887;\n$fa-var-sort-numeric-up-alt: \\f887;\n$fa-var-litecoin-sign: \\e1d3;\n$fa-var-border-none: \\f850;\n$fa-var-circle-nodes: \\e4e2;\n$fa-var-parachute-box: \\f4cd;\n$fa-var-indent: \\f03c;\n$fa-var-truck-field-un: \\e58e;\n$fa-var-hourglass: \\f254;\n$fa-var-hourglass-empty: \\f254;\n$fa-var-mountain: \\f6fc;\n$fa-var-user-doctor: \\f0f0;\n$fa-var-user-md: \\f0f0;\n$fa-var-circle-info: \\f05a;\n$fa-var-info-circle: \\f05a;\n$fa-var-cloud-meatball: \\f73b;\n$fa-var-camera: \\f030;\n$fa-var-camera-alt: \\f030;\n$fa-var-square-virus: \\e578;\n$fa-var-meteor: \\f753;\n$fa-var-car-on: \\e4dd;\n$fa-var-sleigh: \\f7cc;\n$fa-var-arrow-down-1-9: \\f162;\n$fa-var-sort-numeric-asc: \\f162;\n$fa-var-sort-numeric-down: \\f162;\n$fa-var-hand-holding-droplet: \\f4c1;\n$fa-var-hand-holding-water: \\f4c1;\n$fa-var-water: \\f773;\n$fa-var-calendar-check: \\f274;\n$fa-var-braille: \\f2a1;\n$fa-var-prescription-bottle-medical: \\f486;\n$fa-var-prescription-bottle-alt: \\f486;\n$fa-var-landmark: \\f66f;\n$fa-var-truck: \\f0d1;\n$fa-var-crosshairs: \\f05b;\n$fa-var-person-cane: \\e53c;\n$fa-var-tent: \\e57d;\n$fa-var-vest-patches: \\e086;\n$fa-var-check-double: \\f560;\n$fa-var-arrow-down-a-z: \\f15d;\n$fa-var-sort-alpha-asc: \\f15d;\n$fa-var-sort-alpha-down: \\f15d;\n$fa-var-money-bill-wheat: \\e52a;\n$fa-var-cookie: \\f563;\n$fa-var-arrow-rotate-left: \\f0e2;\n$fa-var-arrow-left-rotate: \\f0e2;\n$fa-var-arrow-rotate-back: \\f0e2;\n$fa-var-arrow-rotate-backward: \\f0e2;\n$fa-var-undo: \\f0e2;\n$fa-var-hard-drive: \\f0a0;\n$fa-var-hdd: \\f0a0;\n$fa-var-face-grin-squint-tears: \\f586;\n$fa-var-grin-squint-tears: \\f586;\n$fa-var-dumbbell: \\f44b;\n$fa-var-rectangle-list: \\f022;\n$fa-var-list-alt: \\f022;\n$fa-var-tarp-droplet: \\e57c;\n$fa-var-house-medical-circle-check: \\e511;\n$fa-var-person-skiing-nordic: \\f7ca;\n$fa-var-skiing-nordic: \\f7ca;\n$fa-var-calendar-plus: \\f271;\n$fa-var-plane-arrival: \\f5af;\n$fa-var-circle-left: \\f359;\n$fa-var-arrow-alt-circle-left: \\f359;\n$fa-var-train-subway: \\f239;\n$fa-var-subway: \\f239;\n$fa-var-chart-gantt: \\e0e4;\n$fa-var-indian-rupee-sign: \\e1bc;\n$fa-var-indian-rupee: \\e1bc;\n$fa-var-inr: \\e1bc;\n$fa-var-crop-simple: \\f565;\n$fa-var-crop-alt: \\f565;\n$fa-var-money-bill-1: \\f3d1;\n$fa-var-money-bill-alt: \\f3d1;\n$fa-var-left-long: \\f30a;\n$fa-var-long-arrow-alt-left: \\f30a;\n$fa-var-dna: \\f471;\n$fa-var-virus-slash: \\e075;\n$fa-var-minus: \\f068;\n$fa-var-subtract: \\f068;\n$fa-var-chess: \\f439;\n$fa-var-arrow-left-long: \\f177;\n$fa-var-long-arrow-left: \\f177;\n$fa-var-plug-circle-check: \\e55c;\n$fa-var-street-view: \\f21d;\n$fa-var-franc-sign: \\e18f;\n$fa-var-volume-off: \\f026;\n$fa-var-hands-asl-interpreting: \\f2a3;\n$fa-var-american-sign-language-interpreting: \\f2a3;\n$fa-var-asl-interpreting: \\f2a3;\n$fa-var-hands-american-sign-language-interpreting: \\f2a3;\n$fa-var-gear: \\f013;\n$fa-var-cog: \\f013;\n$fa-var-droplet-slash: \\f5c7;\n$fa-var-tint-slash: \\f5c7;\n$fa-var-mosque: \\f678;\n$fa-var-mosquito: \\e52b;\n$fa-var-star-of-david: \\f69a;\n$fa-var-person-military-rifle: \\e54b;\n$fa-var-cart-shopping: \\f07a;\n$fa-var-shopping-cart: \\f07a;\n$fa-var-vials: \\f493;\n$fa-var-plug-circle-plus: \\e55f;\n$fa-var-place-of-worship: \\f67f;\n$fa-var-grip-vertical: \\f58e;\n$fa-var-arrow-turn-up: \\f148;\n$fa-var-level-up: \\f148;\n$fa-var-u: \\55;\n$fa-var-square-root-variable: \\f698;\n$fa-var-square-root-alt: \\f698;\n$fa-var-clock: \\f017;\n$fa-var-clock-four: \\f017;\n$fa-var-backward-step: \\f048;\n$fa-var-step-backward: \\f048;\n$fa-var-pallet: \\f482;\n$fa-var-faucet: \\e005;\n$fa-var-baseball-bat-ball: \\f432;\n$fa-var-s: \\53;\n$fa-var-timeline: \\e29c;\n$fa-var-keyboard: \\f11c;\n$fa-var-caret-down: \\f0d7;\n$fa-var-house-chimney-medical: \\f7f2;\n$fa-var-clinic-medical: \\f7f2;\n$fa-var-temperature-three-quarters: \\f2c8;\n$fa-var-temperature-3: \\f2c8;\n$fa-var-thermometer-3: \\f2c8;\n$fa-var-thermometer-three-quarters: \\f2c8;\n$fa-var-mobile-screen: \\f3cf;\n$fa-var-mobile-android-alt: \\f3cf;\n$fa-var-plane-up: \\e22d;\n$fa-var-piggy-bank: \\f4d3;\n$fa-var-battery-half: \\f242;\n$fa-var-battery-3: \\f242;\n$fa-var-mountain-city: \\e52e;\n$fa-var-coins: \\f51e;\n$fa-var-khanda: \\f66d;\n$fa-var-sliders: \\f1de;\n$fa-var-sliders-h: \\f1de;\n$fa-var-folder-tree: \\f802;\n$fa-var-network-wired: \\f6ff;\n$fa-var-map-pin: \\f276;\n$fa-var-hamsa: \\f665;\n$fa-var-cent-sign: \\e3f5;\n$fa-var-flask: \\f0c3;\n$fa-var-person-pregnant: \\e31e;\n$fa-var-wand-sparkles: \\f72b;\n$fa-var-ellipsis-vertical: \\f142;\n$fa-var-ellipsis-v: \\f142;\n$fa-var-ticket: \\f145;\n$fa-var-power-off: \\f011;\n$fa-var-right-long: \\f30b;\n$fa-var-long-arrow-alt-right: \\f30b;\n$fa-var-flag-usa: \\f74d;\n$fa-var-laptop-file: \\e51d;\n$fa-var-tty: \\f1e4;\n$fa-var-teletype: \\f1e4;\n$fa-var-diagram-next: \\e476;\n$fa-var-person-rifle: \\e54e;\n$fa-var-house-medical-circle-exclamation: \\e512;\n$fa-var-closed-captioning: \\f20a;\n$fa-var-person-hiking: \\f6ec;\n$fa-var-hiking: \\f6ec;\n$fa-var-venus-double: \\f226;\n$fa-var-images: \\f302;\n$fa-var-calculator: \\f1ec;\n$fa-var-people-pulling: \\e535;\n$fa-var-n: \\4e;\n$fa-var-cable-car: \\f7da;\n$fa-var-tram: \\f7da;\n$fa-var-cloud-rain: \\f73d;\n$fa-var-building-circle-xmark: \\e4d4;\n$fa-var-ship: \\f21a;\n$fa-var-arrows-down-to-line: \\e4b8;\n$fa-var-download: \\f019;\n$fa-var-face-grin: \\f580;\n$fa-var-grin: \\f580;\n$fa-var-delete-left: \\f55a;\n$fa-var-backspace: \\f55a;\n$fa-var-eye-dropper: \\f1fb;\n$fa-var-eye-dropper-empty: \\f1fb;\n$fa-var-eyedropper: \\f1fb;\n$fa-var-file-circle-check: \\e5a0;\n$fa-var-forward: \\f04e;\n$fa-var-mobile: \\f3ce;\n$fa-var-mobile-android: \\f3ce;\n$fa-var-mobile-phone: \\f3ce;\n$fa-var-face-meh: \\f11a;\n$fa-var-meh: \\f11a;\n$fa-var-align-center: \\f037;\n$fa-var-book-skull: \\f6b7;\n$fa-var-book-dead: \\f6b7;\n$fa-var-id-card: \\f2c2;\n$fa-var-drivers-license: \\f2c2;\n$fa-var-outdent: \\f03b;\n$fa-var-dedent: \\f03b;\n$fa-var-heart-circle-exclamation: \\e4fe;\n$fa-var-house: \\f015;\n$fa-var-home: \\f015;\n$fa-var-home-alt: \\f015;\n$fa-var-home-lg-alt: \\f015;\n$fa-var-calendar-week: \\f784;\n$fa-var-laptop-medical: \\f812;\n$fa-var-b: \\42;\n$fa-var-file-medical: \\f477;\n$fa-var-dice-one: \\f525;\n$fa-var-kiwi-bird: \\f535;\n$fa-var-arrow-right-arrow-left: \\f0ec;\n$fa-var-exchange: \\f0ec;\n$fa-var-rotate-right: \\f2f9;\n$fa-var-redo-alt: \\f2f9;\n$fa-var-rotate-forward: \\f2f9;\n$fa-var-utensils: \\f2e7;\n$fa-var-cutlery: \\f2e7;\n$fa-var-arrow-up-wide-short: \\f161;\n$fa-var-sort-amount-up: \\f161;\n$fa-var-mill-sign: \\e1ed;\n$fa-var-bowl-rice: \\e2eb;\n$fa-var-skull: \\f54c;\n$fa-var-tower-broadcast: \\f519;\n$fa-var-broadcast-tower: \\f519;\n$fa-var-truck-pickup: \\f63c;\n$fa-var-up-long: \\f30c;\n$fa-var-long-arrow-alt-up: \\f30c;\n$fa-var-stop: \\f04d;\n$fa-var-code-merge: \\f387;\n$fa-var-upload: \\f093;\n$fa-var-hurricane: \\f751;\n$fa-var-mound: \\e52d;\n$fa-var-toilet-portable: \\e583;\n$fa-var-compact-disc: \\f51f;\n$fa-var-file-arrow-down: \\f56d;\n$fa-var-file-download: \\f56d;\n$fa-var-caravan: \\f8ff;\n$fa-var-shield-cat: \\e572;\n$fa-var-bolt: \\f0e7;\n$fa-var-zap: \\f0e7;\n$fa-var-glass-water: \\e4f4;\n$fa-var-oil-well: \\e532;\n$fa-var-vault: \\e2c5;\n$fa-var-mars: \\f222;\n$fa-var-toilet: \\f7d8;\n$fa-var-plane-circle-xmark: \\e557;\n$fa-var-yen-sign: \\f157;\n$fa-var-cny: \\f157;\n$fa-var-jpy: \\f157;\n$fa-var-rmb: \\f157;\n$fa-var-yen: \\f157;\n$fa-var-ruble-sign: \\f158;\n$fa-var-rouble: \\f158;\n$fa-var-rub: \\f158;\n$fa-var-ruble: \\f158;\n$fa-var-sun: \\f185;\n$fa-var-guitar: \\f7a6;\n$fa-var-face-laugh-wink: \\f59c;\n$fa-var-laugh-wink: \\f59c;\n$fa-var-horse-head: \\f7ab;\n$fa-var-bore-hole: \\e4c3;\n$fa-var-industry: \\f275;\n$fa-var-circle-down: \\f358;\n$fa-var-arrow-alt-circle-down: \\f358;\n$fa-var-arrows-turn-to-dots: \\e4c1;\n$fa-var-florin-sign: \\e184;\n$fa-var-arrow-down-short-wide: \\f884;\n$fa-var-sort-amount-desc: \\f884;\n$fa-var-sort-amount-down-alt: \\f884;\n$fa-var-less-than: \\3c;\n$fa-var-angle-down: \\f107;\n$fa-var-car-tunnel: \\e4de;\n$fa-var-head-side-cough: \\e061;\n$fa-var-grip-lines: \\f7a4;\n$fa-var-thumbs-down: \\f165;\n$fa-var-user-lock: \\f502;\n$fa-var-arrow-right-long: \\f178;\n$fa-var-long-arrow-right: \\f178;\n$fa-var-anchor-circle-xmark: \\e4ac;\n$fa-var-ellipsis: \\f141;\n$fa-var-ellipsis-h: \\f141;\n$fa-var-chess-pawn: \\f443;\n$fa-var-kit-medical: \\f479;\n$fa-var-first-aid: \\f479;\n$fa-var-person-through-window: \\e5a9;\n$fa-var-toolbox: \\f552;\n$fa-var-hands-holding-circle: \\e4fb;\n$fa-var-bug: \\f188;\n$fa-var-credit-card: \\f09d;\n$fa-var-credit-card-alt: \\f09d;\n$fa-var-car: \\f1b9;\n$fa-var-automobile: \\f1b9;\n$fa-var-hand-holding-hand: \\e4f7;\n$fa-var-book-open-reader: \\f5da;\n$fa-var-book-reader: \\f5da;\n$fa-var-mountain-sun: \\e52f;\n$fa-var-arrows-left-right-to-line: \\e4ba;\n$fa-var-dice-d20: \\f6cf;\n$fa-var-truck-droplet: \\e58c;\n$fa-var-file-circle-xmark: \\e5a1;\n$fa-var-temperature-arrow-up: \\e040;\n$fa-var-temperature-up: \\e040;\n$fa-var-medal: \\f5a2;\n$fa-var-bed: \\f236;\n$fa-var-square-h: \\f0fd;\n$fa-var-h-square: \\f0fd;\n$fa-var-podcast: \\f2ce;\n$fa-var-temperature-full: \\f2c7;\n$fa-var-temperature-4: \\f2c7;\n$fa-var-thermometer-4: \\f2c7;\n$fa-var-thermometer-full: \\f2c7;\n$fa-var-bell: \\f0f3;\n$fa-var-superscript: \\f12b;\n$fa-var-plug-circle-xmark: \\e560;\n$fa-var-star-of-life: \\f621;\n$fa-var-phone-slash: \\f3dd;\n$fa-var-paint-roller: \\f5aa;\n$fa-var-handshake-angle: \\f4c4;\n$fa-var-hands-helping: \\f4c4;\n$fa-var-location-dot: \\f3c5;\n$fa-var-map-marker-alt: \\f3c5;\n$fa-var-file: \\f15b;\n$fa-var-greater-than: \\3e;\n$fa-var-person-swimming: \\f5c4;\n$fa-var-swimmer: \\f5c4;\n$fa-var-arrow-down: \\f063;\n$fa-var-droplet: \\f043;\n$fa-var-tint: \\f043;\n$fa-var-eraser: \\f12d;\n$fa-var-earth-americas: \\f57d;\n$fa-var-earth: \\f57d;\n$fa-var-earth-america: \\f57d;\n$fa-var-globe-americas: \\f57d;\n$fa-var-person-burst: \\e53b;\n$fa-var-dove: \\f4ba;\n$fa-var-battery-empty: \\f244;\n$fa-var-battery-0: \\f244;\n$fa-var-socks: \\f696;\n$fa-var-inbox: \\f01c;\n$fa-var-section: \\e447;\n$fa-var-gauge-high: \\f625;\n$fa-var-tachometer-alt: \\f625;\n$fa-var-tachometer-alt-fast: \\f625;\n$fa-var-envelope-open-text: \\f658;\n$fa-var-hospital: \\f0f8;\n$fa-var-hospital-alt: \\f0f8;\n$fa-var-hospital-wide: \\f0f8;\n$fa-var-wine-bottle: \\f72f;\n$fa-var-chess-rook: \\f447;\n$fa-var-bars-staggered: \\f550;\n$fa-var-reorder: \\f550;\n$fa-var-stream: \\f550;\n$fa-var-dharmachakra: \\f655;\n$fa-var-hotdog: \\f80f;\n$fa-var-person-walking-with-cane: \\f29d;\n$fa-var-blind: \\f29d;\n$fa-var-drum: \\f569;\n$fa-var-ice-cream: \\f810;\n$fa-var-heart-circle-bolt: \\e4fc;\n$fa-var-fax: \\f1ac;\n$fa-var-paragraph: \\f1dd;\n$fa-var-check-to-slot: \\f772;\n$fa-var-vote-yea: \\f772;\n$fa-var-star-half: \\f089;\n$fa-var-boxes-stacked: \\f468;\n$fa-var-boxes: \\f468;\n$fa-var-boxes-alt: \\f468;\n$fa-var-link: \\f0c1;\n$fa-var-chain: \\f0c1;\n$fa-var-ear-listen: \\f2a2;\n$fa-var-assistive-listening-systems: \\f2a2;\n$fa-var-tree-city: \\e587;\n$fa-var-play: \\f04b;\n$fa-var-font: \\f031;\n$fa-var-table-cells-row-lock: \\e67a;\n$fa-var-rupiah-sign: \\e23d;\n$fa-var-magnifying-glass: \\f002;\n$fa-var-search: \\f002;\n$fa-var-table-tennis-paddle-ball: \\f45d;\n$fa-var-ping-pong-paddle-ball: \\f45d;\n$fa-var-table-tennis: \\f45d;\n$fa-var-person-dots-from-line: \\f470;\n$fa-var-diagnoses: \\f470;\n$fa-var-trash-can-arrow-up: \\f82a;\n$fa-var-trash-restore-alt: \\f82a;\n$fa-var-naira-sign: \\e1f6;\n$fa-var-cart-arrow-down: \\f218;\n$fa-var-walkie-talkie: \\f8ef;\n$fa-var-file-pen: \\f31c;\n$fa-var-file-edit: \\f31c;\n$fa-var-receipt: \\f543;\n$fa-var-square-pen: \\f14b;\n$fa-var-pen-square: \\f14b;\n$fa-var-pencil-square: \\f14b;\n$fa-var-suitcase-rolling: \\f5c1;\n$fa-var-person-circle-exclamation: \\e53f;\n$fa-var-chevron-down: \\f078;\n$fa-var-battery-full: \\f240;\n$fa-var-battery: \\f240;\n$fa-var-battery-5: \\f240;\n$fa-var-skull-crossbones: \\f714;\n$fa-var-code-compare: \\e13a;\n$fa-var-list-ul: \\f0ca;\n$fa-var-list-dots: \\f0ca;\n$fa-var-school-lock: \\e56f;\n$fa-var-tower-cell: \\e585;\n$fa-var-down-long: \\f309;\n$fa-var-long-arrow-alt-down: \\f309;\n$fa-var-ranking-star: \\e561;\n$fa-var-chess-king: \\f43f;\n$fa-var-person-harassing: \\e549;\n$fa-var-brazilian-real-sign: \\e46c;\n$fa-var-landmark-dome: \\f752;\n$fa-var-landmark-alt: \\f752;\n$fa-var-arrow-up: \\f062;\n$fa-var-tv: \\f26c;\n$fa-var-television: \\f26c;\n$fa-var-tv-alt: \\f26c;\n$fa-var-shrimp: \\e448;\n$fa-var-list-check: \\f0ae;\n$fa-var-tasks: \\f0ae;\n$fa-var-jug-detergent: \\e519;\n$fa-var-circle-user: \\f2bd;\n$fa-var-user-circle: \\f2bd;\n$fa-var-user-shield: \\f505;\n$fa-var-wind: \\f72e;\n$fa-var-car-burst: \\f5e1;\n$fa-var-car-crash: \\f5e1;\n$fa-var-y: \\59;\n$fa-var-person-snowboarding: \\f7ce;\n$fa-var-snowboarding: \\f7ce;\n$fa-var-truck-fast: \\f48b;\n$fa-var-shipping-fast: \\f48b;\n$fa-var-fish: \\f578;\n$fa-var-user-graduate: \\f501;\n$fa-var-circle-half-stroke: \\f042;\n$fa-var-adjust: \\f042;\n$fa-var-clapperboard: \\e131;\n$fa-var-circle-radiation: \\f7ba;\n$fa-var-radiation-alt: \\f7ba;\n$fa-var-baseball: \\f433;\n$fa-var-baseball-ball: \\f433;\n$fa-var-jet-fighter-up: \\e518;\n$fa-var-diagram-project: \\f542;\n$fa-var-project-diagram: \\f542;\n$fa-var-copy: \\f0c5;\n$fa-var-volume-xmark: \\f6a9;\n$fa-var-volume-mute: \\f6a9;\n$fa-var-volume-times: \\f6a9;\n$fa-var-hand-sparkles: \\e05d;\n$fa-var-grip: \\f58d;\n$fa-var-grip-horizontal: \\f58d;\n$fa-var-share-from-square: \\f14d;\n$fa-var-share-square: \\f14d;\n$fa-var-child-combatant: \\e4e0;\n$fa-var-child-rifle: \\e4e0;\n$fa-var-gun: \\e19b;\n$fa-var-square-phone: \\f098;\n$fa-var-phone-square: \\f098;\n$fa-var-plus: \\2b;\n$fa-var-add: \\2b;\n$fa-var-expand: \\f065;\n$fa-var-computer: \\e4e5;\n$fa-var-xmark: \\f00d;\n$fa-var-close: \\f00d;\n$fa-var-multiply: \\f00d;\n$fa-var-remove: \\f00d;\n$fa-var-times: \\f00d;\n$fa-var-arrows-up-down-left-right: \\f047;\n$fa-var-arrows: \\f047;\n$fa-var-chalkboard-user: \\f51c;\n$fa-var-chalkboard-teacher: \\f51c;\n$fa-var-peso-sign: \\e222;\n$fa-var-building-shield: \\e4d8;\n$fa-var-baby: \\f77c;\n$fa-var-users-line: \\e592;\n$fa-var-quote-left: \\f10d;\n$fa-var-quote-left-alt: \\f10d;\n$fa-var-tractor: \\f722;\n$fa-var-trash-arrow-up: \\f829;\n$fa-var-trash-restore: \\f829;\n$fa-var-arrow-down-up-lock: \\e4b0;\n$fa-var-lines-leaning: \\e51e;\n$fa-var-ruler-combined: \\f546;\n$fa-var-copyright: \\f1f9;\n$fa-var-equals: \\3d;\n$fa-var-blender: \\f517;\n$fa-var-teeth: \\f62e;\n$fa-var-shekel-sign: \\f20b;\n$fa-var-ils: \\f20b;\n$fa-var-shekel: \\f20b;\n$fa-var-sheqel: \\f20b;\n$fa-var-sheqel-sign: \\f20b;\n$fa-var-map: \\f279;\n$fa-var-rocket: \\f135;\n$fa-var-photo-film: \\f87c;\n$fa-var-photo-video: \\f87c;\n$fa-var-folder-minus: \\f65d;\n$fa-var-store: \\f54e;\n$fa-var-arrow-trend-up: \\e098;\n$fa-var-plug-circle-minus: \\e55e;\n$fa-var-sign-hanging: \\f4d9;\n$fa-var-sign: \\f4d9;\n$fa-var-bezier-curve: \\f55b;\n$fa-var-bell-slash: \\f1f6;\n$fa-var-tablet: \\f3fb;\n$fa-var-tablet-android: \\f3fb;\n$fa-var-school-flag: \\e56e;\n$fa-var-fill: \\f575;\n$fa-var-angle-up: \\f106;\n$fa-var-drumstick-bite: \\f6d7;\n$fa-var-holly-berry: \\f7aa;\n$fa-var-chevron-left: \\f053;\n$fa-var-bacteria: \\e059;\n$fa-var-hand-lizard: \\f258;\n$fa-var-notdef: \\e1fe;\n$fa-var-disease: \\f7fa;\n$fa-var-briefcase-medical: \\f469;\n$fa-var-genderless: \\f22d;\n$fa-var-chevron-right: \\f054;\n$fa-var-retweet: \\f079;\n$fa-var-car-rear: \\f5de;\n$fa-var-car-alt: \\f5de;\n$fa-var-pump-soap: \\e06b;\n$fa-var-video-slash: \\f4e2;\n$fa-var-battery-quarter: \\f243;\n$fa-var-battery-2: \\f243;\n$fa-var-radio: \\f8d7;\n$fa-var-baby-carriage: \\f77d;\n$fa-var-carriage-baby: \\f77d;\n$fa-var-traffic-light: \\f637;\n$fa-var-thermometer: \\f491;\n$fa-var-vr-cardboard: \\f729;\n$fa-var-hand-middle-finger: \\f806;\n$fa-var-percent: \\25;\n$fa-var-percentage: \\25;\n$fa-var-truck-moving: \\f4df;\n$fa-var-glass-water-droplet: \\e4f5;\n$fa-var-display: \\e163;\n$fa-var-face-smile: \\f118;\n$fa-var-smile: \\f118;\n$fa-var-thumbtack: \\f08d;\n$fa-var-thumb-tack: \\f08d;\n$fa-var-trophy: \\f091;\n$fa-var-person-praying: \\f683;\n$fa-var-pray: \\f683;\n$fa-var-hammer: \\f6e3;\n$fa-var-hand-peace: \\f25b;\n$fa-var-rotate: \\f2f1;\n$fa-var-sync-alt: \\f2f1;\n$fa-var-spinner: \\f110;\n$fa-var-robot: \\f544;\n$fa-var-peace: \\f67c;\n$fa-var-gears: \\f085;\n$fa-var-cogs: \\f085;\n$fa-var-warehouse: \\f494;\n$fa-var-arrow-up-right-dots: \\e4b7;\n$fa-var-splotch: \\f5bc;\n$fa-var-face-grin-hearts: \\f584;\n$fa-var-grin-hearts: \\f584;\n$fa-var-dice-four: \\f524;\n$fa-var-sim-card: \\f7c4;\n$fa-var-transgender: \\f225;\n$fa-var-transgender-alt: \\f225;\n$fa-var-mercury: \\f223;\n$fa-var-arrow-turn-down: \\f149;\n$fa-var-level-down: \\f149;\n$fa-var-person-falling-burst: \\e547;\n$fa-var-award: \\f559;\n$fa-var-ticket-simple: \\f3ff;\n$fa-var-ticket-alt: \\f3ff;\n$fa-var-building: \\f1ad;\n$fa-var-angles-left: \\f100;\n$fa-var-angle-double-left: \\f100;\n$fa-var-qrcode: \\f029;\n$fa-var-clock-rotate-left: \\f1da;\n$fa-var-history: \\f1da;\n$fa-var-face-grin-beam-sweat: \\f583;\n$fa-var-grin-beam-sweat: \\f583;\n$fa-var-file-export: \\f56e;\n$fa-var-arrow-right-from-file: \\f56e;\n$fa-var-shield: \\f132;\n$fa-var-shield-blank: \\f132;\n$fa-var-arrow-up-short-wide: \\f885;\n$fa-var-sort-amount-up-alt: \\f885;\n$fa-var-house-medical: \\e3b2;\n$fa-var-golf-ball-tee: \\f450;\n$fa-var-golf-ball: \\f450;\n$fa-var-circle-chevron-left: \\f137;\n$fa-var-chevron-circle-left: \\f137;\n$fa-var-house-chimney-window: \\e00d;\n$fa-var-pen-nib: \\f5ad;\n$fa-var-tent-arrow-turn-left: \\e580;\n$fa-var-tents: \\e582;\n$fa-var-wand-magic: \\f0d0;\n$fa-var-magic: \\f0d0;\n$fa-var-dog: \\f6d3;\n$fa-var-carrot: \\f787;\n$fa-var-moon: \\f186;\n$fa-var-wine-glass-empty: \\f5ce;\n$fa-var-wine-glass-alt: \\f5ce;\n$fa-var-cheese: \\f7ef;\n$fa-var-yin-yang: \\f6ad;\n$fa-var-music: \\f001;\n$fa-var-code-commit: \\f386;\n$fa-var-temperature-low: \\f76b;\n$fa-var-person-biking: \\f84a;\n$fa-var-biking: \\f84a;\n$fa-var-broom: \\f51a;\n$fa-var-shield-heart: \\e574;\n$fa-var-gopuram: \\f664;\n$fa-var-earth-oceania: \\e47b;\n$fa-var-globe-oceania: \\e47b;\n$fa-var-square-xmark: \\f2d3;\n$fa-var-times-square: \\f2d3;\n$fa-var-xmark-square: \\f2d3;\n$fa-var-hashtag: \\23;\n$fa-var-up-right-and-down-left-from-center: \\f424;\n$fa-var-expand-alt: \\f424;\n$fa-var-oil-can: \\f613;\n$fa-var-t: \\54;\n$fa-var-hippo: \\f6ed;\n$fa-var-chart-column: \\e0e3;\n$fa-var-infinity: \\f534;\n$fa-var-vial-circle-check: \\e596;\n$fa-var-person-arrow-down-to-line: \\e538;\n$fa-var-voicemail: \\f897;\n$fa-var-fan: \\f863;\n$fa-var-person-walking-luggage: \\e554;\n$fa-var-up-down: \\f338;\n$fa-var-arrows-alt-v: \\f338;\n$fa-var-cloud-moon-rain: \\f73c;\n$fa-var-calendar: \\f133;\n$fa-var-trailer: \\e041;\n$fa-var-bahai: \\f666;\n$fa-var-haykal: \\f666;\n$fa-var-sd-card: \\f7c2;\n$fa-var-dragon: \\f6d5;\n$fa-var-shoe-prints: \\f54b;\n$fa-var-circle-plus: \\f055;\n$fa-var-plus-circle: \\f055;\n$fa-var-face-grin-tongue-wink: \\f58b;\n$fa-var-grin-tongue-wink: \\f58b;\n$fa-var-hand-holding: \\f4bd;\n$fa-var-plug-circle-exclamation: \\e55d;\n$fa-var-link-slash: \\f127;\n$fa-var-chain-broken: \\f127;\n$fa-var-chain-slash: \\f127;\n$fa-var-unlink: \\f127;\n$fa-var-clone: \\f24d;\n$fa-var-person-walking-arrow-loop-left: \\e551;\n$fa-var-arrow-up-z-a: \\f882;\n$fa-var-sort-alpha-up-alt: \\f882;\n$fa-var-fire-flame-curved: \\f7e4;\n$fa-var-fire-alt: \\f7e4;\n$fa-var-tornado: \\f76f;\n$fa-var-file-circle-plus: \\e494;\n$fa-var-book-quran: \\f687;\n$fa-var-quran: \\f687;\n$fa-var-anchor: \\f13d;\n$fa-var-border-all: \\f84c;\n$fa-var-face-angry: \\f556;\n$fa-var-angry: \\f556;\n$fa-var-cookie-bite: \\f564;\n$fa-var-arrow-trend-down: \\e097;\n$fa-var-rss: \\f09e;\n$fa-var-feed: \\f09e;\n$fa-var-draw-polygon: \\f5ee;\n$fa-var-scale-balanced: \\f24e;\n$fa-var-balance-scale: \\f24e;\n$fa-var-gauge-simple-high: \\f62a;\n$fa-var-tachometer: \\f62a;\n$fa-var-tachometer-fast: \\f62a;\n$fa-var-shower: \\f2cc;\n$fa-var-desktop: \\f390;\n$fa-var-desktop-alt: \\f390;\n$fa-var-m: \\4d;\n$fa-var-table-list: \\f00b;\n$fa-var-th-list: \\f00b;\n$fa-var-comment-sms: \\f7cd;\n$fa-var-sms: \\f7cd;\n$fa-var-book: \\f02d;\n$fa-var-user-plus: \\f234;\n$fa-var-check: \\f00c;\n$fa-var-battery-three-quarters: \\f241;\n$fa-var-battery-4: \\f241;\n$fa-var-house-circle-check: \\e509;\n$fa-var-angle-left: \\f104;\n$fa-var-diagram-successor: \\e47a;\n$fa-var-truck-arrow-right: \\e58b;\n$fa-var-arrows-split-up-and-left: \\e4bc;\n$fa-var-hand-fist: \\f6de;\n$fa-var-fist-raised: \\f6de;\n$fa-var-cloud-moon: \\f6c3;\n$fa-var-briefcase: \\f0b1;\n$fa-var-person-falling: \\e546;\n$fa-var-image-portrait: \\f3e0;\n$fa-var-portrait: \\f3e0;\n$fa-var-user-tag: \\f507;\n$fa-var-rug: \\e569;\n$fa-var-earth-europe: \\f7a2;\n$fa-var-globe-europe: \\f7a2;\n$fa-var-cart-flatbed-suitcase: \\f59d;\n$fa-var-luggage-cart: \\f59d;\n$fa-var-rectangle-xmark: \\f410;\n$fa-var-rectangle-times: \\f410;\n$fa-var-times-rectangle: \\f410;\n$fa-var-window-close: \\f410;\n$fa-var-baht-sign: \\e0ac;\n$fa-var-book-open: \\f518;\n$fa-var-book-journal-whills: \\f66a;\n$fa-var-journal-whills: \\f66a;\n$fa-var-handcuffs: \\e4f8;\n$fa-var-triangle-exclamation: \\f071;\n$fa-var-exclamation-triangle: \\f071;\n$fa-var-warning: \\f071;\n$fa-var-database: \\f1c0;\n$fa-var-share: \\f064;\n$fa-var-mail-forward: \\f064;\n$fa-var-bottle-droplet: \\e4c4;\n$fa-var-mask-face: \\e1d7;\n$fa-var-hill-rockslide: \\e508;\n$fa-var-right-left: \\f362;\n$fa-var-exchange-alt: \\f362;\n$fa-var-paper-plane: \\f1d8;\n$fa-var-road-circle-exclamation: \\e565;\n$fa-var-dungeon: \\f6d9;\n$fa-var-align-right: \\f038;\n$fa-var-money-bill-1-wave: \\f53b;\n$fa-var-money-bill-wave-alt: \\f53b;\n$fa-var-life-ring: \\f1cd;\n$fa-var-hands: \\f2a7;\n$fa-var-sign-language: \\f2a7;\n$fa-var-signing: \\f2a7;\n$fa-var-calendar-day: \\f783;\n$fa-var-water-ladder: \\f5c5;\n$fa-var-ladder-water: \\f5c5;\n$fa-var-swimming-pool: \\f5c5;\n$fa-var-arrows-up-down: \\f07d;\n$fa-var-arrows-v: \\f07d;\n$fa-var-face-grimace: \\f57f;\n$fa-var-grimace: \\f57f;\n$fa-var-wheelchair-move: \\e2ce;\n$fa-var-wheelchair-alt: \\e2ce;\n$fa-var-turn-down: \\f3be;\n$fa-var-level-down-alt: \\f3be;\n$fa-var-person-walking-arrow-right: \\e552;\n$fa-var-square-envelope: \\f199;\n$fa-var-envelope-square: \\f199;\n$fa-var-dice: \\f522;\n$fa-var-bowling-ball: \\f436;\n$fa-var-brain: \\f5dc;\n$fa-var-bandage: \\f462;\n$fa-var-band-aid: \\f462;\n$fa-var-calendar-minus: \\f272;\n$fa-var-circle-xmark: \\f057;\n$fa-var-times-circle: \\f057;\n$fa-var-xmark-circle: \\f057;\n$fa-var-gifts: \\f79c;\n$fa-var-hotel: \\f594;\n$fa-var-earth-asia: \\f57e;\n$fa-var-globe-asia: \\f57e;\n$fa-var-id-card-clip: \\f47f;\n$fa-var-id-card-alt: \\f47f;\n$fa-var-magnifying-glass-plus: \\f00e;\n$fa-var-search-plus: \\f00e;\n$fa-var-thumbs-up: \\f164;\n$fa-var-user-clock: \\f4fd;\n$fa-var-hand-dots: \\f461;\n$fa-var-allergies: \\f461;\n$fa-var-file-invoice: \\f570;\n$fa-var-window-minimize: \\f2d1;\n$fa-var-mug-saucer: \\f0f4;\n$fa-var-coffee: \\f0f4;\n$fa-var-brush: \\f55d;\n$fa-var-mask: \\f6fa;\n$fa-var-magnifying-glass-minus: \\f010;\n$fa-var-search-minus: \\f010;\n$fa-var-ruler-vertical: \\f548;\n$fa-var-user-large: \\f406;\n$fa-var-user-alt: \\f406;\n$fa-var-train-tram: \\e5b4;\n$fa-var-user-nurse: \\f82f;\n$fa-var-syringe: \\f48e;\n$fa-var-cloud-sun: \\f6c4;\n$fa-var-stopwatch-20: \\e06f;\n$fa-var-square-full: \\f45c;\n$fa-var-magnet: \\f076;\n$fa-var-jar: \\e516;\n$fa-var-note-sticky: \\f249;\n$fa-var-sticky-note: \\f249;\n$fa-var-bug-slash: \\e490;\n$fa-var-arrow-up-from-water-pump: \\e4b6;\n$fa-var-bone: \\f5d7;\n$fa-var-table-cells-row-unlock: \\e691;\n$fa-var-user-injured: \\f728;\n$fa-var-face-sad-tear: \\f5b4;\n$fa-var-sad-tear: \\f5b4;\n$fa-var-plane: \\f072;\n$fa-var-tent-arrows-down: \\e581;\n$fa-var-exclamation: \\21;\n$fa-var-arrows-spin: \\e4bb;\n$fa-var-print: \\f02f;\n$fa-var-turkish-lira-sign: \\e2bb;\n$fa-var-try: \\e2bb;\n$fa-var-turkish-lira: \\e2bb;\n$fa-var-dollar-sign: \\24;\n$fa-var-dollar: \\24;\n$fa-var-usd: \\24;\n$fa-var-x: \\58;\n$fa-var-magnifying-glass-dollar: \\f688;\n$fa-var-search-dollar: \\f688;\n$fa-var-users-gear: \\f509;\n$fa-var-users-cog: \\f509;\n$fa-var-person-military-pointing: \\e54a;\n$fa-var-building-columns: \\f19c;\n$fa-var-bank: \\f19c;\n$fa-var-institution: \\f19c;\n$fa-var-museum: \\f19c;\n$fa-var-university: \\f19c;\n$fa-var-umbrella: \\f0e9;\n$fa-var-trowel: \\e589;\n$fa-var-d: \\44;\n$fa-var-stapler: \\e5af;\n$fa-var-masks-theater: \\f630;\n$fa-var-theater-masks: \\f630;\n$fa-var-kip-sign: \\e1c4;\n$fa-var-hand-point-left: \\f0a5;\n$fa-var-handshake-simple: \\f4c6;\n$fa-var-handshake-alt: \\f4c6;\n$fa-var-jet-fighter: \\f0fb;\n$fa-var-fighter-jet: \\f0fb;\n$fa-var-square-share-nodes: \\f1e1;\n$fa-var-share-alt-square: \\f1e1;\n$fa-var-barcode: \\f02a;\n$fa-var-plus-minus: \\e43c;\n$fa-var-video: \\f03d;\n$fa-var-video-camera: \\f03d;\n$fa-var-graduation-cap: \\f19d;\n$fa-var-mortar-board: \\f19d;\n$fa-var-hand-holding-medical: \\e05c;\n$fa-var-person-circle-check: \\e53e;\n$fa-var-turn-up: \\f3bf;\n$fa-var-level-up-alt: \\f3bf;\n\n$fa-var-monero: \\f3d0;\n$fa-var-hooli: \\f427;\n$fa-var-yelp: \\f1e9;\n$fa-var-cc-visa: \\f1f0;\n$fa-var-lastfm: \\f202;\n$fa-var-shopware: \\f5b5;\n$fa-var-creative-commons-nc: \\f4e8;\n$fa-var-aws: \\f375;\n$fa-var-redhat: \\f7bc;\n$fa-var-yoast: \\f2b1;\n$fa-var-cloudflare: \\e07d;\n$fa-var-ups: \\f7e0;\n$fa-var-pixiv: \\e640;\n$fa-var-wpexplorer: \\f2de;\n$fa-var-dyalog: \\f399;\n$fa-var-bity: \\f37a;\n$fa-var-stackpath: \\f842;\n$fa-var-buysellads: \\f20d;\n$fa-var-first-order: \\f2b0;\n$fa-var-modx: \\f285;\n$fa-var-guilded: \\e07e;\n$fa-var-vnv: \\f40b;\n$fa-var-square-js: \\f3b9;\n$fa-var-js-square: \\f3b9;\n$fa-var-microsoft: \\f3ca;\n$fa-var-qq: \\f1d6;\n$fa-var-orcid: \\f8d2;\n$fa-var-java: \\f4e4;\n$fa-var-invision: \\f7b0;\n$fa-var-creative-commons-pd-alt: \\f4ed;\n$fa-var-centercode: \\f380;\n$fa-var-glide-g: \\f2a6;\n$fa-var-drupal: \\f1a9;\n$fa-var-jxl: \\e67b;\n$fa-var-dart-lang: \\e693;\n$fa-var-hire-a-helper: \\f3b0;\n$fa-var-creative-commons-by: \\f4e7;\n$fa-var-unity: \\e049;\n$fa-var-whmcs: \\f40d;\n$fa-var-rocketchat: \\f3e8;\n$fa-var-vk: \\f189;\n$fa-var-untappd: \\f405;\n$fa-var-mailchimp: \\f59e;\n$fa-var-css3-alt: \\f38b;\n$fa-var-square-reddit: \\f1a2;\n$fa-var-reddit-square: \\f1a2;\n$fa-var-vimeo-v: \\f27d;\n$fa-var-contao: \\f26d;\n$fa-var-square-font-awesome: \\e5ad;\n$fa-var-deskpro: \\f38f;\n$fa-var-brave: \\e63c;\n$fa-var-sistrix: \\f3ee;\n$fa-var-square-instagram: \\e055;\n$fa-var-instagram-square: \\e055;\n$fa-var-battle-net: \\f835;\n$fa-var-the-red-yeti: \\f69d;\n$fa-var-square-hacker-news: \\f3af;\n$fa-var-hacker-news-square: \\f3af;\n$fa-var-edge: \\f282;\n$fa-var-threads: \\e618;\n$fa-var-napster: \\f3d2;\n$fa-var-square-snapchat: \\f2ad;\n$fa-var-snapchat-square: \\f2ad;\n$fa-var-google-plus-g: \\f0d5;\n$fa-var-artstation: \\f77a;\n$fa-var-markdown: \\f60f;\n$fa-var-sourcetree: \\f7d3;\n$fa-var-google-plus: \\f2b3;\n$fa-var-diaspora: \\f791;\n$fa-var-foursquare: \\f180;\n$fa-var-stack-overflow: \\f16c;\n$fa-var-github-alt: \\f113;\n$fa-var-phoenix-squadron: \\f511;\n$fa-var-pagelines: \\f18c;\n$fa-var-algolia: \\f36c;\n$fa-var-red-river: \\f3e3;\n$fa-var-creative-commons-sa: \\f4ef;\n$fa-var-safari: \\f267;\n$fa-var-google: \\f1a0;\n$fa-var-square-font-awesome-stroke: \\f35c;\n$fa-var-font-awesome-alt: \\f35c;\n$fa-var-atlassian: \\f77b;\n$fa-var-linkedin-in: \\f0e1;\n$fa-var-digital-ocean: \\f391;\n$fa-var-nimblr: \\f5a8;\n$fa-var-chromecast: \\f838;\n$fa-var-evernote: \\f839;\n$fa-var-hacker-news: \\f1d4;\n$fa-var-creative-commons-sampling: \\f4f0;\n$fa-var-adversal: \\f36a;\n$fa-var-creative-commons: \\f25e;\n$fa-var-watchman-monitoring: \\e087;\n$fa-var-fonticons: \\f280;\n$fa-var-weixin: \\f1d7;\n$fa-var-shirtsinbulk: \\f214;\n$fa-var-codepen: \\f1cb;\n$fa-var-git-alt: \\f841;\n$fa-var-lyft: \\f3c3;\n$fa-var-rev: \\f5b2;\n$fa-var-windows: \\f17a;\n$fa-var-wizards-of-the-coast: \\f730;\n$fa-var-square-viadeo: \\f2aa;\n$fa-var-viadeo-square: \\f2aa;\n$fa-var-meetup: \\f2e0;\n$fa-var-centos: \\f789;\n$fa-var-adn: \\f170;\n$fa-var-cloudsmith: \\f384;\n$fa-var-opensuse: \\e62b;\n$fa-var-pied-piper-alt: \\f1a8;\n$fa-var-square-dribbble: \\f397;\n$fa-var-dribbble-square: \\f397;\n$fa-var-codiepie: \\f284;\n$fa-var-node: \\f419;\n$fa-var-mix: \\f3cb;\n$fa-var-steam: \\f1b6;\n$fa-var-cc-apple-pay: \\f416;\n$fa-var-scribd: \\f28a;\n$fa-var-debian: \\e60b;\n$fa-var-openid: \\f19b;\n$fa-var-instalod: \\e081;\n$fa-var-expeditedssl: \\f23e;\n$fa-var-sellcast: \\f2da;\n$fa-var-square-twitter: \\f081;\n$fa-var-twitter-square: \\f081;\n$fa-var-r-project: \\f4f7;\n$fa-var-delicious: \\f1a5;\n$fa-var-freebsd: \\f3a4;\n$fa-var-vuejs: \\f41f;\n$fa-var-accusoft: \\f369;\n$fa-var-ioxhost: \\f208;\n$fa-var-fonticons-fi: \\f3a2;\n$fa-var-app-store: \\f36f;\n$fa-var-cc-mastercard: \\f1f1;\n$fa-var-itunes-note: \\f3b5;\n$fa-var-golang: \\e40f;\n$fa-var-kickstarter: \\f3bb;\n$fa-var-square-kickstarter: \\f3bb;\n$fa-var-grav: \\f2d6;\n$fa-var-weibo: \\f18a;\n$fa-var-uncharted: \\e084;\n$fa-var-firstdraft: \\f3a1;\n$fa-var-square-youtube: \\f431;\n$fa-var-youtube-square: \\f431;\n$fa-var-wikipedia-w: \\f266;\n$fa-var-wpressr: \\f3e4;\n$fa-var-rendact: \\f3e4;\n$fa-var-angellist: \\f209;\n$fa-var-galactic-republic: \\f50c;\n$fa-var-nfc-directional: \\e530;\n$fa-var-skype: \\f17e;\n$fa-var-joget: \\f3b7;\n$fa-var-fedora: \\f798;\n$fa-var-stripe-s: \\f42a;\n$fa-var-meta: \\e49b;\n$fa-var-laravel: \\f3bd;\n$fa-var-hotjar: \\f3b1;\n$fa-var-bluetooth-b: \\f294;\n$fa-var-square-letterboxd: \\e62e;\n$fa-var-sticker-mule: \\f3f7;\n$fa-var-creative-commons-zero: \\f4f3;\n$fa-var-hips: \\f452;\n$fa-var-behance: \\f1b4;\n$fa-var-reddit: \\f1a1;\n$fa-var-discord: \\f392;\n$fa-var-chrome: \\f268;\n$fa-var-app-store-ios: \\f370;\n$fa-var-cc-discover: \\f1f2;\n$fa-var-wpbeginner: \\f297;\n$fa-var-confluence: \\f78d;\n$fa-var-shoelace: \\e60c;\n$fa-var-mdb: \\f8ca;\n$fa-var-dochub: \\f394;\n$fa-var-accessible-icon: \\f368;\n$fa-var-ebay: \\f4f4;\n$fa-var-amazon: \\f270;\n$fa-var-unsplash: \\e07c;\n$fa-var-yarn: \\f7e3;\n$fa-var-square-steam: \\f1b7;\n$fa-var-steam-square: \\f1b7;\n$fa-var-500px: \\f26e;\n$fa-var-square-vimeo: \\f194;\n$fa-var-vimeo-square: \\f194;\n$fa-var-asymmetrik: \\f372;\n$fa-var-font-awesome: \\f2b4;\n$fa-var-font-awesome-flag: \\f2b4;\n$fa-var-font-awesome-logo-full: \\f2b4;\n$fa-var-gratipay: \\f184;\n$fa-var-apple: \\f179;\n$fa-var-hive: \\e07f;\n$fa-var-gitkraken: \\f3a6;\n$fa-var-keybase: \\f4f5;\n$fa-var-apple-pay: \\f415;\n$fa-var-padlet: \\e4a0;\n$fa-var-amazon-pay: \\f42c;\n$fa-var-square-github: \\f092;\n$fa-var-github-square: \\f092;\n$fa-var-stumbleupon: \\f1a4;\n$fa-var-fedex: \\f797;\n$fa-var-phoenix-framework: \\f3dc;\n$fa-var-shopify: \\e057;\n$fa-var-neos: \\f612;\n$fa-var-square-threads: \\e619;\n$fa-var-hackerrank: \\f5f7;\n$fa-var-researchgate: \\f4f8;\n$fa-var-swift: \\f8e1;\n$fa-var-angular: \\f420;\n$fa-var-speakap: \\f3f3;\n$fa-var-angrycreative: \\f36e;\n$fa-var-y-combinator: \\f23b;\n$fa-var-empire: \\f1d1;\n$fa-var-envira: \\f299;\n$fa-var-google-scholar: \\e63b;\n$fa-var-square-gitlab: \\e5ae;\n$fa-var-gitlab-square: \\e5ae;\n$fa-var-studiovinari: \\f3f8;\n$fa-var-pied-piper: \\f2ae;\n$fa-var-wordpress: \\f19a;\n$fa-var-product-hunt: \\f288;\n$fa-var-firefox: \\f269;\n$fa-var-linode: \\f2b8;\n$fa-var-goodreads: \\f3a8;\n$fa-var-square-odnoklassniki: \\f264;\n$fa-var-odnoklassniki-square: \\f264;\n$fa-var-jsfiddle: \\f1cc;\n$fa-var-sith: \\f512;\n$fa-var-themeisle: \\f2b2;\n$fa-var-page4: \\f3d7;\n$fa-var-hashnode: \\e499;\n$fa-var-react: \\f41b;\n$fa-var-cc-paypal: \\f1f4;\n$fa-var-squarespace: \\f5be;\n$fa-var-cc-stripe: \\f1f5;\n$fa-var-creative-commons-share: \\f4f2;\n$fa-var-bitcoin: \\f379;\n$fa-var-keycdn: \\f3ba;\n$fa-var-opera: \\f26a;\n$fa-var-itch-io: \\f83a;\n$fa-var-umbraco: \\f8e8;\n$fa-var-galactic-senate: \\f50d;\n$fa-var-ubuntu: \\f7df;\n$fa-var-draft2digital: \\f396;\n$fa-var-stripe: \\f429;\n$fa-var-houzz: \\f27c;\n$fa-var-gg: \\f260;\n$fa-var-dhl: \\f790;\n$fa-var-square-pinterest: \\f0d3;\n$fa-var-pinterest-square: \\f0d3;\n$fa-var-xing: \\f168;\n$fa-var-blackberry: \\f37b;\n$fa-var-creative-commons-pd: \\f4ec;\n$fa-var-playstation: \\f3df;\n$fa-var-quinscape: \\f459;\n$fa-var-less: \\f41d;\n$fa-var-blogger-b: \\f37d;\n$fa-var-opencart: \\f23d;\n$fa-var-vine: \\f1ca;\n$fa-var-signal-messenger: \\e663;\n$fa-var-paypal: \\f1ed;\n$fa-var-gitlab: \\f296;\n$fa-var-typo3: \\f42b;\n$fa-var-reddit-alien: \\f281;\n$fa-var-yahoo: \\f19e;\n$fa-var-dailymotion: \\e052;\n$fa-var-affiliatetheme: \\f36b;\n$fa-var-pied-piper-pp: \\f1a7;\n$fa-var-bootstrap: \\f836;\n$fa-var-odnoklassniki: \\f263;\n$fa-var-nfc-symbol: \\e531;\n$fa-var-mintbit: \\e62f;\n$fa-var-ethereum: \\f42e;\n$fa-var-speaker-deck: \\f83c;\n$fa-var-creative-commons-nc-eu: \\f4e9;\n$fa-var-patreon: \\f3d9;\n$fa-var-avianex: \\f374;\n$fa-var-ello: \\f5f1;\n$fa-var-gofore: \\f3a7;\n$fa-var-bimobject: \\f378;\n$fa-var-brave-reverse: \\e63d;\n$fa-var-facebook-f: \\f39e;\n$fa-var-square-google-plus: \\f0d4;\n$fa-var-google-plus-square: \\f0d4;\n$fa-var-web-awesome: \\e682;\n$fa-var-mandalorian: \\f50f;\n$fa-var-first-order-alt: \\f50a;\n$fa-var-osi: \\f41a;\n$fa-var-google-wallet: \\f1ee;\n$fa-var-d-and-d-beyond: \\f6ca;\n$fa-var-periscope: \\f3da;\n$fa-var-fulcrum: \\f50b;\n$fa-var-cloudscale: \\f383;\n$fa-var-forumbee: \\f211;\n$fa-var-mizuni: \\f3cc;\n$fa-var-schlix: \\f3ea;\n$fa-var-square-xing: \\f169;\n$fa-var-xing-square: \\f169;\n$fa-var-bandcamp: \\f2d5;\n$fa-var-wpforms: \\f298;\n$fa-var-cloudversify: \\f385;\n$fa-var-usps: \\f7e1;\n$fa-var-megaport: \\f5a3;\n$fa-var-magento: \\f3c4;\n$fa-var-spotify: \\f1bc;\n$fa-var-optin-monster: \\f23c;\n$fa-var-fly: \\f417;\n$fa-var-aviato: \\f421;\n$fa-var-itunes: \\f3b4;\n$fa-var-cuttlefish: \\f38c;\n$fa-var-blogger: \\f37c;\n$fa-var-flickr: \\f16e;\n$fa-var-viber: \\f409;\n$fa-var-soundcloud: \\f1be;\n$fa-var-digg: \\f1a6;\n$fa-var-tencent-weibo: \\f1d5;\n$fa-var-letterboxd: \\e62d;\n$fa-var-symfony: \\f83d;\n$fa-var-maxcdn: \\f136;\n$fa-var-etsy: \\f2d7;\n$fa-var-facebook-messenger: \\f39f;\n$fa-var-audible: \\f373;\n$fa-var-think-peaks: \\f731;\n$fa-var-bilibili: \\e3d9;\n$fa-var-erlang: \\f39d;\n$fa-var-x-twitter: \\e61b;\n$fa-var-cotton-bureau: \\f89e;\n$fa-var-dashcube: \\f210;\n$fa-var-42-group: \\e080;\n$fa-var-innosoft: \\e080;\n$fa-var-stack-exchange: \\f18d;\n$fa-var-elementor: \\f430;\n$fa-var-square-pied-piper: \\e01e;\n$fa-var-pied-piper-square: \\e01e;\n$fa-var-creative-commons-nd: \\f4eb;\n$fa-var-palfed: \\f3d8;\n$fa-var-superpowers: \\f2dd;\n$fa-var-resolving: \\f3e7;\n$fa-var-xbox: \\f412;\n$fa-var-square-web-awesome-stroke: \\e684;\n$fa-var-searchengin: \\f3eb;\n$fa-var-tiktok: \\e07b;\n$fa-var-square-facebook: \\f082;\n$fa-var-facebook-square: \\f082;\n$fa-var-renren: \\f18b;\n$fa-var-linux: \\f17c;\n$fa-var-glide: \\f2a5;\n$fa-var-linkedin: \\f08c;\n$fa-var-hubspot: \\f3b2;\n$fa-var-deploydog: \\f38e;\n$fa-var-twitch: \\f1e8;\n$fa-var-flutter: \\e694;\n$fa-var-ravelry: \\f2d9;\n$fa-var-mixer: \\e056;\n$fa-var-square-lastfm: \\f203;\n$fa-var-lastfm-square: \\f203;\n$fa-var-vimeo: \\f40a;\n$fa-var-mendeley: \\f7b3;\n$fa-var-uniregistry: \\f404;\n$fa-var-figma: \\f799;\n$fa-var-creative-commons-remix: \\f4ee;\n$fa-var-cc-amazon-pay: \\f42d;\n$fa-var-dropbox: \\f16b;\n$fa-var-instagram: \\f16d;\n$fa-var-cmplid: \\e360;\n$fa-var-upwork: \\e641;\n$fa-var-facebook: \\f09a;\n$fa-var-gripfire: \\f3ac;\n$fa-var-jedi-order: \\f50e;\n$fa-var-uikit: \\f403;\n$fa-var-fort-awesome-alt: \\f3a3;\n$fa-var-phabricator: \\f3db;\n$fa-var-ussunnah: \\f407;\n$fa-var-earlybirds: \\f39a;\n$fa-var-trade-federation: \\f513;\n$fa-var-autoprefixer: \\f41c;\n$fa-var-whatsapp: \\f232;\n$fa-var-square-upwork: \\e67c;\n$fa-var-slideshare: \\f1e7;\n$fa-var-google-play: \\f3ab;\n$fa-var-viadeo: \\f2a9;\n$fa-var-line: \\f3c0;\n$fa-var-google-drive: \\f3aa;\n$fa-var-servicestack: \\f3ec;\n$fa-var-simplybuilt: \\f215;\n$fa-var-bitbucket: \\f171;\n$fa-var-imdb: \\f2d8;\n$fa-var-deezer: \\e077;\n$fa-var-raspberry-pi: \\f7bb;\n$fa-var-jira: \\f7b1;\n$fa-var-docker: \\f395;\n$fa-var-screenpal: \\e570;\n$fa-var-bluetooth: \\f293;\n$fa-var-gitter: \\f426;\n$fa-var-d-and-d: \\f38d;\n$fa-var-microblog: \\e01a;\n$fa-var-cc-diners-club: \\f24c;\n$fa-var-gg-circle: \\f261;\n$fa-var-pied-piper-hat: \\f4e5;\n$fa-var-kickstarter-k: \\f3bc;\n$fa-var-yandex: \\f413;\n$fa-var-readme: \\f4d5;\n$fa-var-html5: \\f13b;\n$fa-var-sellsy: \\f213;\n$fa-var-square-web-awesome: \\e683;\n$fa-var-sass: \\f41e;\n$fa-var-wirsindhandwerk: \\e2d0;\n$fa-var-wsh: \\e2d0;\n$fa-var-buromobelexperte: \\f37f;\n$fa-var-salesforce: \\f83b;\n$fa-var-octopus-deploy: \\e082;\n$fa-var-medapps: \\f3c6;\n$fa-var-ns8: \\f3d5;\n$fa-var-pinterest-p: \\f231;\n$fa-var-apper: \\f371;\n$fa-var-fort-awesome: \\f286;\n$fa-var-waze: \\f83f;\n$fa-var-bluesky: \\e671;\n$fa-var-cc-jcb: \\f24b;\n$fa-var-snapchat: \\f2ab;\n$fa-var-snapchat-ghost: \\f2ab;\n$fa-var-fantasy-flight-games: \\f6dc;\n$fa-var-rust: \\e07a;\n$fa-var-wix: \\f5cf;\n$fa-var-square-behance: \\f1b5;\n$fa-var-behance-square: \\f1b5;\n$fa-var-supple: \\f3f9;\n$fa-var-webflow: \\e65c;\n$fa-var-rebel: \\f1d0;\n$fa-var-css3: \\f13c;\n$fa-var-staylinked: \\f3f5;\n$fa-var-kaggle: \\f5fa;\n$fa-var-space-awesome: \\e5ac;\n$fa-var-deviantart: \\f1bd;\n$fa-var-cpanel: \\f388;\n$fa-var-goodreads-g: \\f3a9;\n$fa-var-square-git: \\f1d2;\n$fa-var-git-square: \\f1d2;\n$fa-var-square-tumblr: \\f174;\n$fa-var-tumblr-square: \\f174;\n$fa-var-trello: \\f181;\n$fa-var-creative-commons-nc-jp: \\f4ea;\n$fa-var-get-pocket: \\f265;\n$fa-var-perbyte: \\e083;\n$fa-var-grunt: \\f3ad;\n$fa-var-weebly: \\f5cc;\n$fa-var-connectdevelop: \\f20e;\n$fa-var-leanpub: \\f212;\n$fa-var-black-tie: \\f27e;\n$fa-var-themeco: \\f5c6;\n$fa-var-python: \\f3e2;\n$fa-var-android: \\f17b;\n$fa-var-bots: \\e340;\n$fa-var-free-code-camp: \\f2c5;\n$fa-var-hornbill: \\f592;\n$fa-var-js: \\f3b8;\n$fa-var-ideal: \\e013;\n$fa-var-git: \\f1d3;\n$fa-var-dev: \\f6cc;\n$fa-var-sketch: \\f7c6;\n$fa-var-yandex-international: \\f414;\n$fa-var-cc-amex: \\f1f3;\n$fa-var-uber: \\f402;\n$fa-var-github: \\f09b;\n$fa-var-php: \\f457;\n$fa-var-alipay: \\f642;\n$fa-var-youtube: \\f167;\n$fa-var-skyatlas: \\f216;\n$fa-var-firefox-browser: \\e007;\n$fa-var-replyd: \\f3e6;\n$fa-var-suse: \\f7d6;\n$fa-var-jenkins: \\f3b6;\n$fa-var-twitter: \\f099;\n$fa-var-rockrms: \\f3e9;\n$fa-var-pinterest: \\f0d2;\n$fa-var-buffer: \\f837;\n$fa-var-npm: \\f3d4;\n$fa-var-yammer: \\f840;\n$fa-var-btc: \\f15a;\n$fa-var-dribbble: \\f17d;\n$fa-var-stumbleupon-circle: \\f1a3;\n$fa-var-internet-explorer: \\f26b;\n$fa-var-stubber: \\e5c7;\n$fa-var-telegram: \\f2c6;\n$fa-var-telegram-plane: \\f2c6;\n$fa-var-old-republic: \\f510;\n$fa-var-odysee: \\e5c6;\n$fa-var-square-whatsapp: \\f40c;\n$fa-var-whatsapp-square: \\f40c;\n$fa-var-node-js: \\f3d3;\n$fa-var-edge-legacy: \\e078;\n$fa-var-slack: \\f198;\n$fa-var-slack-hash: \\f198;\n$fa-var-medrt: \\f3c8;\n$fa-var-usb: \\f287;\n$fa-var-tumblr: \\f173;\n$fa-var-vaadin: \\f408;\n$fa-var-quora: \\f2c4;\n$fa-var-square-x-twitter: \\e61a;\n$fa-var-reacteurope: \\f75d;\n$fa-var-medium: \\f23a;\n$fa-var-medium-m: \\f23a;\n$fa-var-amilia: \\f36d;\n$fa-var-mixcloud: \\f289;\n$fa-var-flipboard: \\f44d;\n$fa-var-viacoin: \\f237;\n$fa-var-critical-role: \\f6c9;\n$fa-var-sitrox: \\e44a;\n$fa-var-discourse: \\f393;\n$fa-var-joomla: \\f1aa;\n$fa-var-mastodon: \\f4f6;\n$fa-var-airbnb: \\f834;\n$fa-var-wolf-pack-battalion: \\f514;\n$fa-var-buy-n-large: \\f8a6;\n$fa-var-gulp: \\f3ae;\n$fa-var-creative-commons-sampling-plus: \\f4f1;\n$fa-var-strava: \\f428;\n$fa-var-ember: \\f423;\n$fa-var-canadian-maple-leaf: \\f785;\n$fa-var-teamspeak: \\f4f9;\n$fa-var-pushed: \\f3e1;\n$fa-var-wordpress-simple: \\f411;\n$fa-var-nutritionix: \\f3d6;\n$fa-var-wodu: \\e088;\n$fa-var-google-pay: \\e079;\n$fa-var-intercom: \\f7af;\n$fa-var-zhihu: \\f63f;\n$fa-var-korvue: \\f42f;\n$fa-var-pix: \\e43a;\n$fa-var-steam-symbol: \\f3f6;\n\n$fa-icons: (\n \"0\": $fa-var-0,\n \"1\": $fa-var-1,\n \"2\": $fa-var-2,\n \"3\": $fa-var-3,\n \"4\": $fa-var-4,\n \"5\": $fa-var-5,\n \"6\": $fa-var-6,\n \"7\": $fa-var-7,\n \"8\": $fa-var-8,\n \"9\": $fa-var-9,\n \"fill-drip\": $fa-var-fill-drip,\n \"arrows-to-circle\": $fa-var-arrows-to-circle,\n \"circle-chevron-right\": $fa-var-circle-chevron-right,\n \"chevron-circle-right\": $fa-var-chevron-circle-right,\n \"at\": $fa-var-at,\n \"trash-can\": $fa-var-trash-can,\n \"trash-alt\": $fa-var-trash-alt,\n \"text-height\": $fa-var-text-height,\n \"user-xmark\": $fa-var-user-xmark,\n \"user-times\": $fa-var-user-times,\n \"stethoscope\": $fa-var-stethoscope,\n \"message\": $fa-var-message,\n \"comment-alt\": $fa-var-comment-alt,\n \"info\": $fa-var-info,\n \"down-left-and-up-right-to-center\": $fa-var-down-left-and-up-right-to-center,\n \"compress-alt\": $fa-var-compress-alt,\n \"explosion\": $fa-var-explosion,\n \"file-lines\": $fa-var-file-lines,\n \"file-alt\": $fa-var-file-alt,\n \"file-text\": $fa-var-file-text,\n \"wave-square\": $fa-var-wave-square,\n \"ring\": $fa-var-ring,\n \"building-un\": $fa-var-building-un,\n \"dice-three\": $fa-var-dice-three,\n \"calendar-days\": $fa-var-calendar-days,\n \"calendar-alt\": $fa-var-calendar-alt,\n \"anchor-circle-check\": $fa-var-anchor-circle-check,\n \"building-circle-arrow-right\": $fa-var-building-circle-arrow-right,\n \"volleyball\": $fa-var-volleyball,\n \"volleyball-ball\": $fa-var-volleyball-ball,\n \"arrows-up-to-line\": $fa-var-arrows-up-to-line,\n \"sort-down\": $fa-var-sort-down,\n \"sort-desc\": $fa-var-sort-desc,\n \"circle-minus\": $fa-var-circle-minus,\n \"minus-circle\": $fa-var-minus-circle,\n \"door-open\": $fa-var-door-open,\n \"right-from-bracket\": $fa-var-right-from-bracket,\n \"sign-out-alt\": $fa-var-sign-out-alt,\n \"atom\": $fa-var-atom,\n \"soap\": $fa-var-soap,\n \"icons\": $fa-var-icons,\n \"heart-music-camera-bolt\": $fa-var-heart-music-camera-bolt,\n \"microphone-lines-slash\": $fa-var-microphone-lines-slash,\n \"microphone-alt-slash\": $fa-var-microphone-alt-slash,\n \"bridge-circle-check\": $fa-var-bridge-circle-check,\n \"pump-medical\": $fa-var-pump-medical,\n \"fingerprint\": $fa-var-fingerprint,\n \"hand-point-right\": $fa-var-hand-point-right,\n \"magnifying-glass-location\": $fa-var-magnifying-glass-location,\n \"search-location\": $fa-var-search-location,\n \"forward-step\": $fa-var-forward-step,\n \"step-forward\": $fa-var-step-forward,\n \"face-smile-beam\": $fa-var-face-smile-beam,\n \"smile-beam\": $fa-var-smile-beam,\n \"flag-checkered\": $fa-var-flag-checkered,\n \"football\": $fa-var-football,\n \"football-ball\": $fa-var-football-ball,\n \"school-circle-exclamation\": $fa-var-school-circle-exclamation,\n \"crop\": $fa-var-crop,\n \"angles-down\": $fa-var-angles-down,\n \"angle-double-down\": $fa-var-angle-double-down,\n \"users-rectangle\": $fa-var-users-rectangle,\n \"people-roof\": $fa-var-people-roof,\n \"people-line\": $fa-var-people-line,\n \"beer-mug-empty\": $fa-var-beer-mug-empty,\n \"beer\": $fa-var-beer,\n \"diagram-predecessor\": $fa-var-diagram-predecessor,\n \"arrow-up-long\": $fa-var-arrow-up-long,\n \"long-arrow-up\": $fa-var-long-arrow-up,\n \"fire-flame-simple\": $fa-var-fire-flame-simple,\n \"burn\": $fa-var-burn,\n \"person\": $fa-var-person,\n \"male\": $fa-var-male,\n \"laptop\": $fa-var-laptop,\n \"file-csv\": $fa-var-file-csv,\n \"menorah\": $fa-var-menorah,\n \"truck-plane\": $fa-var-truck-plane,\n \"record-vinyl\": $fa-var-record-vinyl,\n \"face-grin-stars\": $fa-var-face-grin-stars,\n \"grin-stars\": $fa-var-grin-stars,\n \"bong\": $fa-var-bong,\n \"spaghetti-monster-flying\": $fa-var-spaghetti-monster-flying,\n \"pastafarianism\": $fa-var-pastafarianism,\n \"arrow-down-up-across-line\": $fa-var-arrow-down-up-across-line,\n \"spoon\": $fa-var-spoon,\n \"utensil-spoon\": $fa-var-utensil-spoon,\n \"jar-wheat\": $fa-var-jar-wheat,\n \"envelopes-bulk\": $fa-var-envelopes-bulk,\n \"mail-bulk\": $fa-var-mail-bulk,\n \"file-circle-exclamation\": $fa-var-file-circle-exclamation,\n \"circle-h\": $fa-var-circle-h,\n \"hospital-symbol\": $fa-var-hospital-symbol,\n \"pager\": $fa-var-pager,\n \"address-book\": $fa-var-address-book,\n \"contact-book\": $fa-var-contact-book,\n \"strikethrough\": $fa-var-strikethrough,\n \"k\": $fa-var-k,\n \"landmark-flag\": $fa-var-landmark-flag,\n \"pencil\": $fa-var-pencil,\n \"pencil-alt\": $fa-var-pencil-alt,\n \"backward\": $fa-var-backward,\n \"caret-right\": $fa-var-caret-right,\n \"comments\": $fa-var-comments,\n \"paste\": $fa-var-paste,\n \"file-clipboard\": $fa-var-file-clipboard,\n \"code-pull-request\": $fa-var-code-pull-request,\n \"clipboard-list\": $fa-var-clipboard-list,\n \"truck-ramp-box\": $fa-var-truck-ramp-box,\n \"truck-loading\": $fa-var-truck-loading,\n \"user-check\": $fa-var-user-check,\n \"vial-virus\": $fa-var-vial-virus,\n \"sheet-plastic\": $fa-var-sheet-plastic,\n \"blog\": $fa-var-blog,\n \"user-ninja\": $fa-var-user-ninja,\n \"person-arrow-up-from-line\": $fa-var-person-arrow-up-from-line,\n \"scroll-torah\": $fa-var-scroll-torah,\n \"torah\": $fa-var-torah,\n \"broom-ball\": $fa-var-broom-ball,\n \"quidditch\": $fa-var-quidditch,\n \"quidditch-broom-ball\": $fa-var-quidditch-broom-ball,\n \"toggle-off\": $fa-var-toggle-off,\n \"box-archive\": $fa-var-box-archive,\n \"archive\": $fa-var-archive,\n \"person-drowning\": $fa-var-person-drowning,\n \"arrow-down-9-1\": $fa-var-arrow-down-9-1,\n \"sort-numeric-desc\": $fa-var-sort-numeric-desc,\n \"sort-numeric-down-alt\": $fa-var-sort-numeric-down-alt,\n \"face-grin-tongue-squint\": $fa-var-face-grin-tongue-squint,\n \"grin-tongue-squint\": $fa-var-grin-tongue-squint,\n \"spray-can\": $fa-var-spray-can,\n \"truck-monster\": $fa-var-truck-monster,\n \"w\": $fa-var-w,\n \"earth-africa\": $fa-var-earth-africa,\n \"globe-africa\": $fa-var-globe-africa,\n \"rainbow\": $fa-var-rainbow,\n \"circle-notch\": $fa-var-circle-notch,\n \"tablet-screen-button\": $fa-var-tablet-screen-button,\n \"tablet-alt\": $fa-var-tablet-alt,\n \"paw\": $fa-var-paw,\n \"cloud\": $fa-var-cloud,\n \"trowel-bricks\": $fa-var-trowel-bricks,\n \"face-flushed\": $fa-var-face-flushed,\n \"flushed\": $fa-var-flushed,\n \"hospital-user\": $fa-var-hospital-user,\n \"tent-arrow-left-right\": $fa-var-tent-arrow-left-right,\n \"gavel\": $fa-var-gavel,\n \"legal\": $fa-var-legal,\n \"binoculars\": $fa-var-binoculars,\n \"microphone-slash\": $fa-var-microphone-slash,\n \"box-tissue\": $fa-var-box-tissue,\n \"motorcycle\": $fa-var-motorcycle,\n \"bell-concierge\": $fa-var-bell-concierge,\n \"concierge-bell\": $fa-var-concierge-bell,\n \"pen-ruler\": $fa-var-pen-ruler,\n \"pencil-ruler\": $fa-var-pencil-ruler,\n \"people-arrows\": $fa-var-people-arrows,\n \"people-arrows-left-right\": $fa-var-people-arrows-left-right,\n \"mars-and-venus-burst\": $fa-var-mars-and-venus-burst,\n \"square-caret-right\": $fa-var-square-caret-right,\n \"caret-square-right\": $fa-var-caret-square-right,\n \"scissors\": $fa-var-scissors,\n \"cut\": $fa-var-cut,\n \"sun-plant-wilt\": $fa-var-sun-plant-wilt,\n \"toilets-portable\": $fa-var-toilets-portable,\n \"hockey-puck\": $fa-var-hockey-puck,\n \"table\": $fa-var-table,\n \"magnifying-glass-arrow-right\": $fa-var-magnifying-glass-arrow-right,\n \"tachograph-digital\": $fa-var-tachograph-digital,\n \"digital-tachograph\": $fa-var-digital-tachograph,\n \"users-slash\": $fa-var-users-slash,\n \"clover\": $fa-var-clover,\n \"reply\": $fa-var-reply,\n \"mail-reply\": $fa-var-mail-reply,\n \"star-and-crescent\": $fa-var-star-and-crescent,\n \"house-fire\": $fa-var-house-fire,\n \"square-minus\": $fa-var-square-minus,\n \"minus-square\": $fa-var-minus-square,\n \"helicopter\": $fa-var-helicopter,\n \"compass\": $fa-var-compass,\n \"square-caret-down\": $fa-var-square-caret-down,\n \"caret-square-down\": $fa-var-caret-square-down,\n \"file-circle-question\": $fa-var-file-circle-question,\n \"laptop-code\": $fa-var-laptop-code,\n \"swatchbook\": $fa-var-swatchbook,\n \"prescription-bottle\": $fa-var-prescription-bottle,\n \"bars\": $fa-var-bars,\n \"navicon\": $fa-var-navicon,\n \"people-group\": $fa-var-people-group,\n \"hourglass-end\": $fa-var-hourglass-end,\n \"hourglass-3\": $fa-var-hourglass-3,\n \"heart-crack\": $fa-var-heart-crack,\n \"heart-broken\": $fa-var-heart-broken,\n \"square-up-right\": $fa-var-square-up-right,\n \"external-link-square-alt\": $fa-var-external-link-square-alt,\n \"face-kiss-beam\": $fa-var-face-kiss-beam,\n \"kiss-beam\": $fa-var-kiss-beam,\n \"film\": $fa-var-film,\n \"ruler-horizontal\": $fa-var-ruler-horizontal,\n \"people-robbery\": $fa-var-people-robbery,\n \"lightbulb\": $fa-var-lightbulb,\n \"caret-left\": $fa-var-caret-left,\n \"circle-exclamation\": $fa-var-circle-exclamation,\n \"exclamation-circle\": $fa-var-exclamation-circle,\n \"school-circle-xmark\": $fa-var-school-circle-xmark,\n \"arrow-right-from-bracket\": $fa-var-arrow-right-from-bracket,\n \"sign-out\": $fa-var-sign-out,\n \"circle-chevron-down\": $fa-var-circle-chevron-down,\n \"chevron-circle-down\": $fa-var-chevron-circle-down,\n \"unlock-keyhole\": $fa-var-unlock-keyhole,\n \"unlock-alt\": $fa-var-unlock-alt,\n \"cloud-showers-heavy\": $fa-var-cloud-showers-heavy,\n \"headphones-simple\": $fa-var-headphones-simple,\n \"headphones-alt\": $fa-var-headphones-alt,\n \"sitemap\": $fa-var-sitemap,\n \"circle-dollar-to-slot\": $fa-var-circle-dollar-to-slot,\n \"donate\": $fa-var-donate,\n \"memory\": $fa-var-memory,\n \"road-spikes\": $fa-var-road-spikes,\n \"fire-burner\": $fa-var-fire-burner,\n \"flag\": $fa-var-flag,\n \"hanukiah\": $fa-var-hanukiah,\n \"feather\": $fa-var-feather,\n \"volume-low\": $fa-var-volume-low,\n \"volume-down\": $fa-var-volume-down,\n \"comment-slash\": $fa-var-comment-slash,\n \"cloud-sun-rain\": $fa-var-cloud-sun-rain,\n \"compress\": $fa-var-compress,\n \"wheat-awn\": $fa-var-wheat-awn,\n \"wheat-alt\": $fa-var-wheat-alt,\n \"ankh\": $fa-var-ankh,\n \"hands-holding-child\": $fa-var-hands-holding-child,\n \"asterisk\": $fa-var-asterisk,\n \"square-check\": $fa-var-square-check,\n \"check-square\": $fa-var-check-square,\n \"peseta-sign\": $fa-var-peseta-sign,\n \"heading\": $fa-var-heading,\n \"header\": $fa-var-header,\n \"ghost\": $fa-var-ghost,\n \"list\": $fa-var-list,\n \"list-squares\": $fa-var-list-squares,\n \"square-phone-flip\": $fa-var-square-phone-flip,\n \"phone-square-alt\": $fa-var-phone-square-alt,\n \"cart-plus\": $fa-var-cart-plus,\n \"gamepad\": $fa-var-gamepad,\n \"circle-dot\": $fa-var-circle-dot,\n \"dot-circle\": $fa-var-dot-circle,\n \"face-dizzy\": $fa-var-face-dizzy,\n \"dizzy\": $fa-var-dizzy,\n \"egg\": $fa-var-egg,\n \"house-medical-circle-xmark\": $fa-var-house-medical-circle-xmark,\n \"campground\": $fa-var-campground,\n \"folder-plus\": $fa-var-folder-plus,\n \"futbol\": $fa-var-futbol,\n \"futbol-ball\": $fa-var-futbol-ball,\n \"soccer-ball\": $fa-var-soccer-ball,\n \"paintbrush\": $fa-var-paintbrush,\n \"paint-brush\": $fa-var-paint-brush,\n \"lock\": $fa-var-lock,\n \"gas-pump\": $fa-var-gas-pump,\n \"hot-tub-person\": $fa-var-hot-tub-person,\n \"hot-tub\": $fa-var-hot-tub,\n \"map-location\": $fa-var-map-location,\n \"map-marked\": $fa-var-map-marked,\n \"house-flood-water\": $fa-var-house-flood-water,\n \"tree\": $fa-var-tree,\n \"bridge-lock\": $fa-var-bridge-lock,\n \"sack-dollar\": $fa-var-sack-dollar,\n \"pen-to-square\": $fa-var-pen-to-square,\n \"edit\": $fa-var-edit,\n \"car-side\": $fa-var-car-side,\n \"share-nodes\": $fa-var-share-nodes,\n \"share-alt\": $fa-var-share-alt,\n \"heart-circle-minus\": $fa-var-heart-circle-minus,\n \"hourglass-half\": $fa-var-hourglass-half,\n \"hourglass-2\": $fa-var-hourglass-2,\n \"microscope\": $fa-var-microscope,\n \"sink\": $fa-var-sink,\n \"bag-shopping\": $fa-var-bag-shopping,\n \"shopping-bag\": $fa-var-shopping-bag,\n \"arrow-down-z-a\": $fa-var-arrow-down-z-a,\n \"sort-alpha-desc\": $fa-var-sort-alpha-desc,\n \"sort-alpha-down-alt\": $fa-var-sort-alpha-down-alt,\n \"mitten\": $fa-var-mitten,\n \"person-rays\": $fa-var-person-rays,\n \"users\": $fa-var-users,\n \"eye-slash\": $fa-var-eye-slash,\n \"flask-vial\": $fa-var-flask-vial,\n \"hand\": $fa-var-hand,\n \"hand-paper\": $fa-var-hand-paper,\n \"om\": $fa-var-om,\n \"worm\": $fa-var-worm,\n \"house-circle-xmark\": $fa-var-house-circle-xmark,\n \"plug\": $fa-var-plug,\n \"chevron-up\": $fa-var-chevron-up,\n \"hand-spock\": $fa-var-hand-spock,\n \"stopwatch\": $fa-var-stopwatch,\n \"face-kiss\": $fa-var-face-kiss,\n \"kiss\": $fa-var-kiss,\n \"bridge-circle-xmark\": $fa-var-bridge-circle-xmark,\n \"face-grin-tongue\": $fa-var-face-grin-tongue,\n \"grin-tongue\": $fa-var-grin-tongue,\n \"chess-bishop\": $fa-var-chess-bishop,\n \"face-grin-wink\": $fa-var-face-grin-wink,\n \"grin-wink\": $fa-var-grin-wink,\n \"ear-deaf\": $fa-var-ear-deaf,\n \"deaf\": $fa-var-deaf,\n \"deafness\": $fa-var-deafness,\n \"hard-of-hearing\": $fa-var-hard-of-hearing,\n \"road-circle-check\": $fa-var-road-circle-check,\n \"dice-five\": $fa-var-dice-five,\n \"square-rss\": $fa-var-square-rss,\n \"rss-square\": $fa-var-rss-square,\n \"land-mine-on\": $fa-var-land-mine-on,\n \"i-cursor\": $fa-var-i-cursor,\n \"stamp\": $fa-var-stamp,\n \"stairs\": $fa-var-stairs,\n \"i\": $fa-var-i,\n \"hryvnia-sign\": $fa-var-hryvnia-sign,\n \"hryvnia\": $fa-var-hryvnia,\n \"pills\": $fa-var-pills,\n \"face-grin-wide\": $fa-var-face-grin-wide,\n \"grin-alt\": $fa-var-grin-alt,\n \"tooth\": $fa-var-tooth,\n \"v\": $fa-var-v,\n \"bangladeshi-taka-sign\": $fa-var-bangladeshi-taka-sign,\n \"bicycle\": $fa-var-bicycle,\n \"staff-snake\": $fa-var-staff-snake,\n \"rod-asclepius\": $fa-var-rod-asclepius,\n \"rod-snake\": $fa-var-rod-snake,\n \"staff-aesculapius\": $fa-var-staff-aesculapius,\n \"head-side-cough-slash\": $fa-var-head-side-cough-slash,\n \"truck-medical\": $fa-var-truck-medical,\n \"ambulance\": $fa-var-ambulance,\n \"wheat-awn-circle-exclamation\": $fa-var-wheat-awn-circle-exclamation,\n \"snowman\": $fa-var-snowman,\n \"mortar-pestle\": $fa-var-mortar-pestle,\n \"road-barrier\": $fa-var-road-barrier,\n \"school\": $fa-var-school,\n \"igloo\": $fa-var-igloo,\n \"joint\": $fa-var-joint,\n \"angle-right\": $fa-var-angle-right,\n \"horse\": $fa-var-horse,\n \"q\": $fa-var-q,\n \"g\": $fa-var-g,\n \"notes-medical\": $fa-var-notes-medical,\n \"temperature-half\": $fa-var-temperature-half,\n \"temperature-2\": $fa-var-temperature-2,\n \"thermometer-2\": $fa-var-thermometer-2,\n \"thermometer-half\": $fa-var-thermometer-half,\n \"dong-sign\": $fa-var-dong-sign,\n \"capsules\": $fa-var-capsules,\n \"poo-storm\": $fa-var-poo-storm,\n \"poo-bolt\": $fa-var-poo-bolt,\n \"face-frown-open\": $fa-var-face-frown-open,\n \"frown-open\": $fa-var-frown-open,\n \"hand-point-up\": $fa-var-hand-point-up,\n \"money-bill\": $fa-var-money-bill,\n \"bookmark\": $fa-var-bookmark,\n \"align-justify\": $fa-var-align-justify,\n \"umbrella-beach\": $fa-var-umbrella-beach,\n \"helmet-un\": $fa-var-helmet-un,\n \"bullseye\": $fa-var-bullseye,\n \"bacon\": $fa-var-bacon,\n \"hand-point-down\": $fa-var-hand-point-down,\n \"arrow-up-from-bracket\": $fa-var-arrow-up-from-bracket,\n \"folder\": $fa-var-folder,\n \"folder-blank\": $fa-var-folder-blank,\n \"file-waveform\": $fa-var-file-waveform,\n \"file-medical-alt\": $fa-var-file-medical-alt,\n \"radiation\": $fa-var-radiation,\n \"chart-simple\": $fa-var-chart-simple,\n \"mars-stroke\": $fa-var-mars-stroke,\n \"vial\": $fa-var-vial,\n \"gauge\": $fa-var-gauge,\n \"dashboard\": $fa-var-dashboard,\n \"gauge-med\": $fa-var-gauge-med,\n \"tachometer-alt-average\": $fa-var-tachometer-alt-average,\n \"wand-magic-sparkles\": $fa-var-wand-magic-sparkles,\n \"magic-wand-sparkles\": $fa-var-magic-wand-sparkles,\n \"e\": $fa-var-e,\n \"pen-clip\": $fa-var-pen-clip,\n \"pen-alt\": $fa-var-pen-alt,\n \"bridge-circle-exclamation\": $fa-var-bridge-circle-exclamation,\n \"user\": $fa-var-user,\n \"school-circle-check\": $fa-var-school-circle-check,\n \"dumpster\": $fa-var-dumpster,\n \"van-shuttle\": $fa-var-van-shuttle,\n \"shuttle-van\": $fa-var-shuttle-van,\n \"building-user\": $fa-var-building-user,\n \"square-caret-left\": $fa-var-square-caret-left,\n \"caret-square-left\": $fa-var-caret-square-left,\n \"highlighter\": $fa-var-highlighter,\n \"key\": $fa-var-key,\n \"bullhorn\": $fa-var-bullhorn,\n \"globe\": $fa-var-globe,\n \"synagogue\": $fa-var-synagogue,\n \"person-half-dress\": $fa-var-person-half-dress,\n \"road-bridge\": $fa-var-road-bridge,\n \"location-arrow\": $fa-var-location-arrow,\n \"c\": $fa-var-c,\n \"tablet-button\": $fa-var-tablet-button,\n \"building-lock\": $fa-var-building-lock,\n \"pizza-slice\": $fa-var-pizza-slice,\n \"money-bill-wave\": $fa-var-money-bill-wave,\n \"chart-area\": $fa-var-chart-area,\n \"area-chart\": $fa-var-area-chart,\n \"house-flag\": $fa-var-house-flag,\n \"person-circle-minus\": $fa-var-person-circle-minus,\n \"ban\": $fa-var-ban,\n \"cancel\": $fa-var-cancel,\n \"camera-rotate\": $fa-var-camera-rotate,\n \"spray-can-sparkles\": $fa-var-spray-can-sparkles,\n \"air-freshener\": $fa-var-air-freshener,\n \"star\": $fa-var-star,\n \"repeat\": $fa-var-repeat,\n \"cross\": $fa-var-cross,\n \"box\": $fa-var-box,\n \"venus-mars\": $fa-var-venus-mars,\n \"arrow-pointer\": $fa-var-arrow-pointer,\n \"mouse-pointer\": $fa-var-mouse-pointer,\n \"maximize\": $fa-var-maximize,\n \"expand-arrows-alt\": $fa-var-expand-arrows-alt,\n \"charging-station\": $fa-var-charging-station,\n \"shapes\": $fa-var-shapes,\n \"triangle-circle-square\": $fa-var-triangle-circle-square,\n \"shuffle\": $fa-var-shuffle,\n \"random\": $fa-var-random,\n \"person-running\": $fa-var-person-running,\n \"running\": $fa-var-running,\n \"mobile-retro\": $fa-var-mobile-retro,\n \"grip-lines-vertical\": $fa-var-grip-lines-vertical,\n \"spider\": $fa-var-spider,\n \"hands-bound\": $fa-var-hands-bound,\n \"file-invoice-dollar\": $fa-var-file-invoice-dollar,\n \"plane-circle-exclamation\": $fa-var-plane-circle-exclamation,\n \"x-ray\": $fa-var-x-ray,\n \"spell-check\": $fa-var-spell-check,\n \"slash\": $fa-var-slash,\n \"computer-mouse\": $fa-var-computer-mouse,\n \"mouse\": $fa-var-mouse,\n \"arrow-right-to-bracket\": $fa-var-arrow-right-to-bracket,\n \"sign-in\": $fa-var-sign-in,\n \"shop-slash\": $fa-var-shop-slash,\n \"store-alt-slash\": $fa-var-store-alt-slash,\n \"server\": $fa-var-server,\n \"virus-covid-slash\": $fa-var-virus-covid-slash,\n \"shop-lock\": $fa-var-shop-lock,\n \"hourglass-start\": $fa-var-hourglass-start,\n \"hourglass-1\": $fa-var-hourglass-1,\n \"blender-phone\": $fa-var-blender-phone,\n \"building-wheat\": $fa-var-building-wheat,\n \"person-breastfeeding\": $fa-var-person-breastfeeding,\n \"right-to-bracket\": $fa-var-right-to-bracket,\n \"sign-in-alt\": $fa-var-sign-in-alt,\n \"venus\": $fa-var-venus,\n \"passport\": $fa-var-passport,\n \"thumbtack-slash\": $fa-var-thumbtack-slash,\n \"thumb-tack-slash\": $fa-var-thumb-tack-slash,\n \"heart-pulse\": $fa-var-heart-pulse,\n \"heartbeat\": $fa-var-heartbeat,\n \"people-carry-box\": $fa-var-people-carry-box,\n \"people-carry\": $fa-var-people-carry,\n \"temperature-high\": $fa-var-temperature-high,\n \"microchip\": $fa-var-microchip,\n \"crown\": $fa-var-crown,\n \"weight-hanging\": $fa-var-weight-hanging,\n \"xmarks-lines\": $fa-var-xmarks-lines,\n \"file-prescription\": $fa-var-file-prescription,\n \"weight-scale\": $fa-var-weight-scale,\n \"weight\": $fa-var-weight,\n \"user-group\": $fa-var-user-group,\n \"user-friends\": $fa-var-user-friends,\n \"arrow-up-a-z\": $fa-var-arrow-up-a-z,\n \"sort-alpha-up\": $fa-var-sort-alpha-up,\n \"chess-knight\": $fa-var-chess-knight,\n \"face-laugh-squint\": $fa-var-face-laugh-squint,\n \"laugh-squint\": $fa-var-laugh-squint,\n \"wheelchair\": $fa-var-wheelchair,\n \"circle-arrow-up\": $fa-var-circle-arrow-up,\n \"arrow-circle-up\": $fa-var-arrow-circle-up,\n \"toggle-on\": $fa-var-toggle-on,\n \"person-walking\": $fa-var-person-walking,\n \"walking\": $fa-var-walking,\n \"l\": $fa-var-l,\n \"fire\": $fa-var-fire,\n \"bed-pulse\": $fa-var-bed-pulse,\n \"procedures\": $fa-var-procedures,\n \"shuttle-space\": $fa-var-shuttle-space,\n \"space-shuttle\": $fa-var-space-shuttle,\n \"face-laugh\": $fa-var-face-laugh,\n \"laugh\": $fa-var-laugh,\n \"folder-open\": $fa-var-folder-open,\n \"heart-circle-plus\": $fa-var-heart-circle-plus,\n \"code-fork\": $fa-var-code-fork,\n \"city\": $fa-var-city,\n \"microphone-lines\": $fa-var-microphone-lines,\n \"microphone-alt\": $fa-var-microphone-alt,\n \"pepper-hot\": $fa-var-pepper-hot,\n \"unlock\": $fa-var-unlock,\n \"colon-sign\": $fa-var-colon-sign,\n \"headset\": $fa-var-headset,\n \"store-slash\": $fa-var-store-slash,\n \"road-circle-xmark\": $fa-var-road-circle-xmark,\n \"user-minus\": $fa-var-user-minus,\n \"mars-stroke-up\": $fa-var-mars-stroke-up,\n \"mars-stroke-v\": $fa-var-mars-stroke-v,\n \"champagne-glasses\": $fa-var-champagne-glasses,\n \"glass-cheers\": $fa-var-glass-cheers,\n \"clipboard\": $fa-var-clipboard,\n \"house-circle-exclamation\": $fa-var-house-circle-exclamation,\n \"file-arrow-up\": $fa-var-file-arrow-up,\n \"file-upload\": $fa-var-file-upload,\n \"wifi\": $fa-var-wifi,\n \"wifi-3\": $fa-var-wifi-3,\n \"wifi-strong\": $fa-var-wifi-strong,\n \"bath\": $fa-var-bath,\n \"bathtub\": $fa-var-bathtub,\n \"underline\": $fa-var-underline,\n \"user-pen\": $fa-var-user-pen,\n \"user-edit\": $fa-var-user-edit,\n \"signature\": $fa-var-signature,\n \"stroopwafel\": $fa-var-stroopwafel,\n \"bold\": $fa-var-bold,\n \"anchor-lock\": $fa-var-anchor-lock,\n \"building-ngo\": $fa-var-building-ngo,\n \"manat-sign\": $fa-var-manat-sign,\n \"not-equal\": $fa-var-not-equal,\n \"border-top-left\": $fa-var-border-top-left,\n \"border-style\": $fa-var-border-style,\n \"map-location-dot\": $fa-var-map-location-dot,\n \"map-marked-alt\": $fa-var-map-marked-alt,\n \"jedi\": $fa-var-jedi,\n \"square-poll-vertical\": $fa-var-square-poll-vertical,\n \"poll\": $fa-var-poll,\n \"mug-hot\": $fa-var-mug-hot,\n \"car-battery\": $fa-var-car-battery,\n \"battery-car\": $fa-var-battery-car,\n \"gift\": $fa-var-gift,\n \"dice-two\": $fa-var-dice-two,\n \"chess-queen\": $fa-var-chess-queen,\n \"glasses\": $fa-var-glasses,\n \"chess-board\": $fa-var-chess-board,\n \"building-circle-check\": $fa-var-building-circle-check,\n \"person-chalkboard\": $fa-var-person-chalkboard,\n \"mars-stroke-right\": $fa-var-mars-stroke-right,\n \"mars-stroke-h\": $fa-var-mars-stroke-h,\n \"hand-back-fist\": $fa-var-hand-back-fist,\n \"hand-rock\": $fa-var-hand-rock,\n \"square-caret-up\": $fa-var-square-caret-up,\n \"caret-square-up\": $fa-var-caret-square-up,\n \"cloud-showers-water\": $fa-var-cloud-showers-water,\n \"chart-bar\": $fa-var-chart-bar,\n \"bar-chart\": $fa-var-bar-chart,\n \"hands-bubbles\": $fa-var-hands-bubbles,\n \"hands-wash\": $fa-var-hands-wash,\n \"less-than-equal\": $fa-var-less-than-equal,\n \"train\": $fa-var-train,\n \"eye-low-vision\": $fa-var-eye-low-vision,\n \"low-vision\": $fa-var-low-vision,\n \"crow\": $fa-var-crow,\n \"sailboat\": $fa-var-sailboat,\n \"window-restore\": $fa-var-window-restore,\n \"square-plus\": $fa-var-square-plus,\n \"plus-square\": $fa-var-plus-square,\n \"torii-gate\": $fa-var-torii-gate,\n \"frog\": $fa-var-frog,\n \"bucket\": $fa-var-bucket,\n \"image\": $fa-var-image,\n \"microphone\": $fa-var-microphone,\n \"cow\": $fa-var-cow,\n \"caret-up\": $fa-var-caret-up,\n \"screwdriver\": $fa-var-screwdriver,\n \"folder-closed\": $fa-var-folder-closed,\n \"house-tsunami\": $fa-var-house-tsunami,\n \"square-nfi\": $fa-var-square-nfi,\n \"arrow-up-from-ground-water\": $fa-var-arrow-up-from-ground-water,\n \"martini-glass\": $fa-var-martini-glass,\n \"glass-martini-alt\": $fa-var-glass-martini-alt,\n \"rotate-left\": $fa-var-rotate-left,\n \"rotate-back\": $fa-var-rotate-back,\n \"rotate-backward\": $fa-var-rotate-backward,\n \"undo-alt\": $fa-var-undo-alt,\n \"table-columns\": $fa-var-table-columns,\n \"columns\": $fa-var-columns,\n \"lemon\": $fa-var-lemon,\n \"head-side-mask\": $fa-var-head-side-mask,\n \"handshake\": $fa-var-handshake,\n \"gem\": $fa-var-gem,\n \"dolly\": $fa-var-dolly,\n \"dolly-box\": $fa-var-dolly-box,\n \"smoking\": $fa-var-smoking,\n \"minimize\": $fa-var-minimize,\n \"compress-arrows-alt\": $fa-var-compress-arrows-alt,\n \"monument\": $fa-var-monument,\n \"snowplow\": $fa-var-snowplow,\n \"angles-right\": $fa-var-angles-right,\n \"angle-double-right\": $fa-var-angle-double-right,\n \"cannabis\": $fa-var-cannabis,\n \"circle-play\": $fa-var-circle-play,\n \"play-circle\": $fa-var-play-circle,\n \"tablets\": $fa-var-tablets,\n \"ethernet\": $fa-var-ethernet,\n \"euro-sign\": $fa-var-euro-sign,\n \"eur\": $fa-var-eur,\n \"euro\": $fa-var-euro,\n \"chair\": $fa-var-chair,\n \"circle-check\": $fa-var-circle-check,\n \"check-circle\": $fa-var-check-circle,\n \"circle-stop\": $fa-var-circle-stop,\n \"stop-circle\": $fa-var-stop-circle,\n \"compass-drafting\": $fa-var-compass-drafting,\n \"drafting-compass\": $fa-var-drafting-compass,\n \"plate-wheat\": $fa-var-plate-wheat,\n \"icicles\": $fa-var-icicles,\n \"person-shelter\": $fa-var-person-shelter,\n \"neuter\": $fa-var-neuter,\n \"id-badge\": $fa-var-id-badge,\n \"marker\": $fa-var-marker,\n \"face-laugh-beam\": $fa-var-face-laugh-beam,\n \"laugh-beam\": $fa-var-laugh-beam,\n \"helicopter-symbol\": $fa-var-helicopter-symbol,\n \"universal-access\": $fa-var-universal-access,\n \"circle-chevron-up\": $fa-var-circle-chevron-up,\n \"chevron-circle-up\": $fa-var-chevron-circle-up,\n \"lari-sign\": $fa-var-lari-sign,\n \"volcano\": $fa-var-volcano,\n \"person-walking-dashed-line-arrow-right\": $fa-var-person-walking-dashed-line-arrow-right,\n \"sterling-sign\": $fa-var-sterling-sign,\n \"gbp\": $fa-var-gbp,\n \"pound-sign\": $fa-var-pound-sign,\n \"viruses\": $fa-var-viruses,\n \"square-person-confined\": $fa-var-square-person-confined,\n \"user-tie\": $fa-var-user-tie,\n \"arrow-down-long\": $fa-var-arrow-down-long,\n \"long-arrow-down\": $fa-var-long-arrow-down,\n \"tent-arrow-down-to-line\": $fa-var-tent-arrow-down-to-line,\n \"certificate\": $fa-var-certificate,\n \"reply-all\": $fa-var-reply-all,\n \"mail-reply-all\": $fa-var-mail-reply-all,\n \"suitcase\": $fa-var-suitcase,\n \"person-skating\": $fa-var-person-skating,\n \"skating\": $fa-var-skating,\n \"filter-circle-dollar\": $fa-var-filter-circle-dollar,\n \"funnel-dollar\": $fa-var-funnel-dollar,\n \"camera-retro\": $fa-var-camera-retro,\n \"circle-arrow-down\": $fa-var-circle-arrow-down,\n \"arrow-circle-down\": $fa-var-arrow-circle-down,\n \"file-import\": $fa-var-file-import,\n \"arrow-right-to-file\": $fa-var-arrow-right-to-file,\n \"square-arrow-up-right\": $fa-var-square-arrow-up-right,\n \"external-link-square\": $fa-var-external-link-square,\n \"box-open\": $fa-var-box-open,\n \"scroll\": $fa-var-scroll,\n \"spa\": $fa-var-spa,\n \"location-pin-lock\": $fa-var-location-pin-lock,\n \"pause\": $fa-var-pause,\n \"hill-avalanche\": $fa-var-hill-avalanche,\n \"temperature-empty\": $fa-var-temperature-empty,\n \"temperature-0\": $fa-var-temperature-0,\n \"thermometer-0\": $fa-var-thermometer-0,\n \"thermometer-empty\": $fa-var-thermometer-empty,\n \"bomb\": $fa-var-bomb,\n \"registered\": $fa-var-registered,\n \"address-card\": $fa-var-address-card,\n \"contact-card\": $fa-var-contact-card,\n \"vcard\": $fa-var-vcard,\n \"scale-unbalanced-flip\": $fa-var-scale-unbalanced-flip,\n \"balance-scale-right\": $fa-var-balance-scale-right,\n \"subscript\": $fa-var-subscript,\n \"diamond-turn-right\": $fa-var-diamond-turn-right,\n \"directions\": $fa-var-directions,\n \"burst\": $fa-var-burst,\n \"house-laptop\": $fa-var-house-laptop,\n \"laptop-house\": $fa-var-laptop-house,\n \"face-tired\": $fa-var-face-tired,\n \"tired\": $fa-var-tired,\n \"money-bills\": $fa-var-money-bills,\n \"smog\": $fa-var-smog,\n \"crutch\": $fa-var-crutch,\n \"cloud-arrow-up\": $fa-var-cloud-arrow-up,\n \"cloud-upload\": $fa-var-cloud-upload,\n \"cloud-upload-alt\": $fa-var-cloud-upload-alt,\n \"palette\": $fa-var-palette,\n \"arrows-turn-right\": $fa-var-arrows-turn-right,\n \"vest\": $fa-var-vest,\n \"ferry\": $fa-var-ferry,\n \"arrows-down-to-people\": $fa-var-arrows-down-to-people,\n \"seedling\": $fa-var-seedling,\n \"sprout\": $fa-var-sprout,\n \"left-right\": $fa-var-left-right,\n \"arrows-alt-h\": $fa-var-arrows-alt-h,\n \"boxes-packing\": $fa-var-boxes-packing,\n \"circle-arrow-left\": $fa-var-circle-arrow-left,\n \"arrow-circle-left\": $fa-var-arrow-circle-left,\n \"group-arrows-rotate\": $fa-var-group-arrows-rotate,\n \"bowl-food\": $fa-var-bowl-food,\n \"candy-cane\": $fa-var-candy-cane,\n \"arrow-down-wide-short\": $fa-var-arrow-down-wide-short,\n \"sort-amount-asc\": $fa-var-sort-amount-asc,\n \"sort-amount-down\": $fa-var-sort-amount-down,\n \"cloud-bolt\": $fa-var-cloud-bolt,\n \"thunderstorm\": $fa-var-thunderstorm,\n \"text-slash\": $fa-var-text-slash,\n \"remove-format\": $fa-var-remove-format,\n \"face-smile-wink\": $fa-var-face-smile-wink,\n \"smile-wink\": $fa-var-smile-wink,\n \"file-word\": $fa-var-file-word,\n \"file-powerpoint\": $fa-var-file-powerpoint,\n \"arrows-left-right\": $fa-var-arrows-left-right,\n \"arrows-h\": $fa-var-arrows-h,\n \"house-lock\": $fa-var-house-lock,\n \"cloud-arrow-down\": $fa-var-cloud-arrow-down,\n \"cloud-download\": $fa-var-cloud-download,\n \"cloud-download-alt\": $fa-var-cloud-download-alt,\n \"children\": $fa-var-children,\n \"chalkboard\": $fa-var-chalkboard,\n \"blackboard\": $fa-var-blackboard,\n \"user-large-slash\": $fa-var-user-large-slash,\n \"user-alt-slash\": $fa-var-user-alt-slash,\n \"envelope-open\": $fa-var-envelope-open,\n \"handshake-simple-slash\": $fa-var-handshake-simple-slash,\n \"handshake-alt-slash\": $fa-var-handshake-alt-slash,\n \"mattress-pillow\": $fa-var-mattress-pillow,\n \"guarani-sign\": $fa-var-guarani-sign,\n \"arrows-rotate\": $fa-var-arrows-rotate,\n \"refresh\": $fa-var-refresh,\n \"sync\": $fa-var-sync,\n \"fire-extinguisher\": $fa-var-fire-extinguisher,\n \"cruzeiro-sign\": $fa-var-cruzeiro-sign,\n \"greater-than-equal\": $fa-var-greater-than-equal,\n \"shield-halved\": $fa-var-shield-halved,\n \"shield-alt\": $fa-var-shield-alt,\n \"book-atlas\": $fa-var-book-atlas,\n \"atlas\": $fa-var-atlas,\n \"virus\": $fa-var-virus,\n \"envelope-circle-check\": $fa-var-envelope-circle-check,\n \"layer-group\": $fa-var-layer-group,\n \"arrows-to-dot\": $fa-var-arrows-to-dot,\n \"archway\": $fa-var-archway,\n \"heart-circle-check\": $fa-var-heart-circle-check,\n \"house-chimney-crack\": $fa-var-house-chimney-crack,\n \"house-damage\": $fa-var-house-damage,\n \"file-zipper\": $fa-var-file-zipper,\n \"file-archive\": $fa-var-file-archive,\n \"square\": $fa-var-square,\n \"martini-glass-empty\": $fa-var-martini-glass-empty,\n \"glass-martini\": $fa-var-glass-martini,\n \"couch\": $fa-var-couch,\n \"cedi-sign\": $fa-var-cedi-sign,\n \"italic\": $fa-var-italic,\n \"table-cells-column-lock\": $fa-var-table-cells-column-lock,\n \"church\": $fa-var-church,\n \"comments-dollar\": $fa-var-comments-dollar,\n \"democrat\": $fa-var-democrat,\n \"z\": $fa-var-z,\n \"person-skiing\": $fa-var-person-skiing,\n \"skiing\": $fa-var-skiing,\n \"road-lock\": $fa-var-road-lock,\n \"a\": $fa-var-a,\n \"temperature-arrow-down\": $fa-var-temperature-arrow-down,\n \"temperature-down\": $fa-var-temperature-down,\n \"feather-pointed\": $fa-var-feather-pointed,\n \"feather-alt\": $fa-var-feather-alt,\n \"p\": $fa-var-p,\n \"snowflake\": $fa-var-snowflake,\n \"newspaper\": $fa-var-newspaper,\n \"rectangle-ad\": $fa-var-rectangle-ad,\n \"ad\": $fa-var-ad,\n \"circle-arrow-right\": $fa-var-circle-arrow-right,\n \"arrow-circle-right\": $fa-var-arrow-circle-right,\n \"filter-circle-xmark\": $fa-var-filter-circle-xmark,\n \"locust\": $fa-var-locust,\n \"sort\": $fa-var-sort,\n \"unsorted\": $fa-var-unsorted,\n \"list-ol\": $fa-var-list-ol,\n \"list-1-2\": $fa-var-list-1-2,\n \"list-numeric\": $fa-var-list-numeric,\n \"person-dress-burst\": $fa-var-person-dress-burst,\n \"money-check-dollar\": $fa-var-money-check-dollar,\n \"money-check-alt\": $fa-var-money-check-alt,\n \"vector-square\": $fa-var-vector-square,\n \"bread-slice\": $fa-var-bread-slice,\n \"language\": $fa-var-language,\n \"face-kiss-wink-heart\": $fa-var-face-kiss-wink-heart,\n \"kiss-wink-heart\": $fa-var-kiss-wink-heart,\n \"filter\": $fa-var-filter,\n \"question\": $fa-var-question,\n \"file-signature\": $fa-var-file-signature,\n \"up-down-left-right\": $fa-var-up-down-left-right,\n \"arrows-alt\": $fa-var-arrows-alt,\n \"house-chimney-user\": $fa-var-house-chimney-user,\n \"hand-holding-heart\": $fa-var-hand-holding-heart,\n \"puzzle-piece\": $fa-var-puzzle-piece,\n \"money-check\": $fa-var-money-check,\n \"star-half-stroke\": $fa-var-star-half-stroke,\n \"star-half-alt\": $fa-var-star-half-alt,\n \"code\": $fa-var-code,\n \"whiskey-glass\": $fa-var-whiskey-glass,\n \"glass-whiskey\": $fa-var-glass-whiskey,\n \"building-circle-exclamation\": $fa-var-building-circle-exclamation,\n \"magnifying-glass-chart\": $fa-var-magnifying-glass-chart,\n \"arrow-up-right-from-square\": $fa-var-arrow-up-right-from-square,\n \"external-link\": $fa-var-external-link,\n \"cubes-stacked\": $fa-var-cubes-stacked,\n \"won-sign\": $fa-var-won-sign,\n \"krw\": $fa-var-krw,\n \"won\": $fa-var-won,\n \"virus-covid\": $fa-var-virus-covid,\n \"austral-sign\": $fa-var-austral-sign,\n \"f\": $fa-var-f,\n \"leaf\": $fa-var-leaf,\n \"road\": $fa-var-road,\n \"taxi\": $fa-var-taxi,\n \"cab\": $fa-var-cab,\n \"person-circle-plus\": $fa-var-person-circle-plus,\n \"chart-pie\": $fa-var-chart-pie,\n \"pie-chart\": $fa-var-pie-chart,\n \"bolt-lightning\": $fa-var-bolt-lightning,\n \"sack-xmark\": $fa-var-sack-xmark,\n \"file-excel\": $fa-var-file-excel,\n \"file-contract\": $fa-var-file-contract,\n \"fish-fins\": $fa-var-fish-fins,\n \"building-flag\": $fa-var-building-flag,\n \"face-grin-beam\": $fa-var-face-grin-beam,\n \"grin-beam\": $fa-var-grin-beam,\n \"object-ungroup\": $fa-var-object-ungroup,\n \"poop\": $fa-var-poop,\n \"location-pin\": $fa-var-location-pin,\n \"map-marker\": $fa-var-map-marker,\n \"kaaba\": $fa-var-kaaba,\n \"toilet-paper\": $fa-var-toilet-paper,\n \"helmet-safety\": $fa-var-helmet-safety,\n \"hard-hat\": $fa-var-hard-hat,\n \"hat-hard\": $fa-var-hat-hard,\n \"eject\": $fa-var-eject,\n \"circle-right\": $fa-var-circle-right,\n \"arrow-alt-circle-right\": $fa-var-arrow-alt-circle-right,\n \"plane-circle-check\": $fa-var-plane-circle-check,\n \"face-rolling-eyes\": $fa-var-face-rolling-eyes,\n \"meh-rolling-eyes\": $fa-var-meh-rolling-eyes,\n \"object-group\": $fa-var-object-group,\n \"chart-line\": $fa-var-chart-line,\n \"line-chart\": $fa-var-line-chart,\n \"mask-ventilator\": $fa-var-mask-ventilator,\n \"arrow-right\": $fa-var-arrow-right,\n \"signs-post\": $fa-var-signs-post,\n \"map-signs\": $fa-var-map-signs,\n \"cash-register\": $fa-var-cash-register,\n \"person-circle-question\": $fa-var-person-circle-question,\n \"h\": $fa-var-h,\n \"tarp\": $fa-var-tarp,\n \"screwdriver-wrench\": $fa-var-screwdriver-wrench,\n \"tools\": $fa-var-tools,\n \"arrows-to-eye\": $fa-var-arrows-to-eye,\n \"plug-circle-bolt\": $fa-var-plug-circle-bolt,\n \"heart\": $fa-var-heart,\n \"mars-and-venus\": $fa-var-mars-and-venus,\n \"house-user\": $fa-var-house-user,\n \"home-user\": $fa-var-home-user,\n \"dumpster-fire\": $fa-var-dumpster-fire,\n \"house-crack\": $fa-var-house-crack,\n \"martini-glass-citrus\": $fa-var-martini-glass-citrus,\n \"cocktail\": $fa-var-cocktail,\n \"face-surprise\": $fa-var-face-surprise,\n \"surprise\": $fa-var-surprise,\n \"bottle-water\": $fa-var-bottle-water,\n \"circle-pause\": $fa-var-circle-pause,\n \"pause-circle\": $fa-var-pause-circle,\n \"toilet-paper-slash\": $fa-var-toilet-paper-slash,\n \"apple-whole\": $fa-var-apple-whole,\n \"apple-alt\": $fa-var-apple-alt,\n \"kitchen-set\": $fa-var-kitchen-set,\n \"r\": $fa-var-r,\n \"temperature-quarter\": $fa-var-temperature-quarter,\n \"temperature-1\": $fa-var-temperature-1,\n \"thermometer-1\": $fa-var-thermometer-1,\n \"thermometer-quarter\": $fa-var-thermometer-quarter,\n \"cube\": $fa-var-cube,\n \"bitcoin-sign\": $fa-var-bitcoin-sign,\n \"shield-dog\": $fa-var-shield-dog,\n \"solar-panel\": $fa-var-solar-panel,\n \"lock-open\": $fa-var-lock-open,\n \"elevator\": $fa-var-elevator,\n \"money-bill-transfer\": $fa-var-money-bill-transfer,\n \"money-bill-trend-up\": $fa-var-money-bill-trend-up,\n \"house-flood-water-circle-arrow-right\": $fa-var-house-flood-water-circle-arrow-right,\n \"square-poll-horizontal\": $fa-var-square-poll-horizontal,\n \"poll-h\": $fa-var-poll-h,\n \"circle\": $fa-var-circle,\n \"backward-fast\": $fa-var-backward-fast,\n \"fast-backward\": $fa-var-fast-backward,\n \"recycle\": $fa-var-recycle,\n \"user-astronaut\": $fa-var-user-astronaut,\n \"plane-slash\": $fa-var-plane-slash,\n \"trademark\": $fa-var-trademark,\n \"basketball\": $fa-var-basketball,\n \"basketball-ball\": $fa-var-basketball-ball,\n \"satellite-dish\": $fa-var-satellite-dish,\n \"circle-up\": $fa-var-circle-up,\n \"arrow-alt-circle-up\": $fa-var-arrow-alt-circle-up,\n \"mobile-screen-button\": $fa-var-mobile-screen-button,\n \"mobile-alt\": $fa-var-mobile-alt,\n \"volume-high\": $fa-var-volume-high,\n \"volume-up\": $fa-var-volume-up,\n \"users-rays\": $fa-var-users-rays,\n \"wallet\": $fa-var-wallet,\n \"clipboard-check\": $fa-var-clipboard-check,\n \"file-audio\": $fa-var-file-audio,\n \"burger\": $fa-var-burger,\n \"hamburger\": $fa-var-hamburger,\n \"wrench\": $fa-var-wrench,\n \"bugs\": $fa-var-bugs,\n \"rupee-sign\": $fa-var-rupee-sign,\n \"rupee\": $fa-var-rupee,\n \"file-image\": $fa-var-file-image,\n \"circle-question\": $fa-var-circle-question,\n \"question-circle\": $fa-var-question-circle,\n \"plane-departure\": $fa-var-plane-departure,\n \"handshake-slash\": $fa-var-handshake-slash,\n \"book-bookmark\": $fa-var-book-bookmark,\n \"code-branch\": $fa-var-code-branch,\n \"hat-cowboy\": $fa-var-hat-cowboy,\n \"bridge\": $fa-var-bridge,\n \"phone-flip\": $fa-var-phone-flip,\n \"phone-alt\": $fa-var-phone-alt,\n \"truck-front\": $fa-var-truck-front,\n \"cat\": $fa-var-cat,\n \"anchor-circle-exclamation\": $fa-var-anchor-circle-exclamation,\n \"truck-field\": $fa-var-truck-field,\n \"route\": $fa-var-route,\n \"clipboard-question\": $fa-var-clipboard-question,\n \"panorama\": $fa-var-panorama,\n \"comment-medical\": $fa-var-comment-medical,\n \"teeth-open\": $fa-var-teeth-open,\n \"file-circle-minus\": $fa-var-file-circle-minus,\n \"tags\": $fa-var-tags,\n \"wine-glass\": $fa-var-wine-glass,\n \"forward-fast\": $fa-var-forward-fast,\n \"fast-forward\": $fa-var-fast-forward,\n \"face-meh-blank\": $fa-var-face-meh-blank,\n \"meh-blank\": $fa-var-meh-blank,\n \"square-parking\": $fa-var-square-parking,\n \"parking\": $fa-var-parking,\n \"house-signal\": $fa-var-house-signal,\n \"bars-progress\": $fa-var-bars-progress,\n \"tasks-alt\": $fa-var-tasks-alt,\n \"faucet-drip\": $fa-var-faucet-drip,\n \"cart-flatbed\": $fa-var-cart-flatbed,\n \"dolly-flatbed\": $fa-var-dolly-flatbed,\n \"ban-smoking\": $fa-var-ban-smoking,\n \"smoking-ban\": $fa-var-smoking-ban,\n \"terminal\": $fa-var-terminal,\n \"mobile-button\": $fa-var-mobile-button,\n \"house-medical-flag\": $fa-var-house-medical-flag,\n \"basket-shopping\": $fa-var-basket-shopping,\n \"shopping-basket\": $fa-var-shopping-basket,\n \"tape\": $fa-var-tape,\n \"bus-simple\": $fa-var-bus-simple,\n \"bus-alt\": $fa-var-bus-alt,\n \"eye\": $fa-var-eye,\n \"face-sad-cry\": $fa-var-face-sad-cry,\n \"sad-cry\": $fa-var-sad-cry,\n \"audio-description\": $fa-var-audio-description,\n \"person-military-to-person\": $fa-var-person-military-to-person,\n \"file-shield\": $fa-var-file-shield,\n \"user-slash\": $fa-var-user-slash,\n \"pen\": $fa-var-pen,\n \"tower-observation\": $fa-var-tower-observation,\n \"file-code\": $fa-var-file-code,\n \"signal\": $fa-var-signal,\n \"signal-5\": $fa-var-signal-5,\n \"signal-perfect\": $fa-var-signal-perfect,\n \"bus\": $fa-var-bus,\n \"heart-circle-xmark\": $fa-var-heart-circle-xmark,\n \"house-chimney\": $fa-var-house-chimney,\n \"home-lg\": $fa-var-home-lg,\n \"window-maximize\": $fa-var-window-maximize,\n \"face-frown\": $fa-var-face-frown,\n \"frown\": $fa-var-frown,\n \"prescription\": $fa-var-prescription,\n \"shop\": $fa-var-shop,\n \"store-alt\": $fa-var-store-alt,\n \"floppy-disk\": $fa-var-floppy-disk,\n \"save\": $fa-var-save,\n \"vihara\": $fa-var-vihara,\n \"scale-unbalanced\": $fa-var-scale-unbalanced,\n \"balance-scale-left\": $fa-var-balance-scale-left,\n \"sort-up\": $fa-var-sort-up,\n \"sort-asc\": $fa-var-sort-asc,\n \"comment-dots\": $fa-var-comment-dots,\n \"commenting\": $fa-var-commenting,\n \"plant-wilt\": $fa-var-plant-wilt,\n \"diamond\": $fa-var-diamond,\n \"face-grin-squint\": $fa-var-face-grin-squint,\n \"grin-squint\": $fa-var-grin-squint,\n \"hand-holding-dollar\": $fa-var-hand-holding-dollar,\n \"hand-holding-usd\": $fa-var-hand-holding-usd,\n \"bacterium\": $fa-var-bacterium,\n \"hand-pointer\": $fa-var-hand-pointer,\n \"drum-steelpan\": $fa-var-drum-steelpan,\n \"hand-scissors\": $fa-var-hand-scissors,\n \"hands-praying\": $fa-var-hands-praying,\n \"praying-hands\": $fa-var-praying-hands,\n \"arrow-rotate-right\": $fa-var-arrow-rotate-right,\n \"arrow-right-rotate\": $fa-var-arrow-right-rotate,\n \"arrow-rotate-forward\": $fa-var-arrow-rotate-forward,\n \"redo\": $fa-var-redo,\n \"biohazard\": $fa-var-biohazard,\n \"location-crosshairs\": $fa-var-location-crosshairs,\n \"location\": $fa-var-location,\n \"mars-double\": $fa-var-mars-double,\n \"child-dress\": $fa-var-child-dress,\n \"users-between-lines\": $fa-var-users-between-lines,\n \"lungs-virus\": $fa-var-lungs-virus,\n \"face-grin-tears\": $fa-var-face-grin-tears,\n \"grin-tears\": $fa-var-grin-tears,\n \"phone\": $fa-var-phone,\n \"calendar-xmark\": $fa-var-calendar-xmark,\n \"calendar-times\": $fa-var-calendar-times,\n \"child-reaching\": $fa-var-child-reaching,\n \"head-side-virus\": $fa-var-head-side-virus,\n \"user-gear\": $fa-var-user-gear,\n \"user-cog\": $fa-var-user-cog,\n \"arrow-up-1-9\": $fa-var-arrow-up-1-9,\n \"sort-numeric-up\": $fa-var-sort-numeric-up,\n \"door-closed\": $fa-var-door-closed,\n \"shield-virus\": $fa-var-shield-virus,\n \"dice-six\": $fa-var-dice-six,\n \"mosquito-net\": $fa-var-mosquito-net,\n \"bridge-water\": $fa-var-bridge-water,\n \"person-booth\": $fa-var-person-booth,\n \"text-width\": $fa-var-text-width,\n \"hat-wizard\": $fa-var-hat-wizard,\n \"pen-fancy\": $fa-var-pen-fancy,\n \"person-digging\": $fa-var-person-digging,\n \"digging\": $fa-var-digging,\n \"trash\": $fa-var-trash,\n \"gauge-simple\": $fa-var-gauge-simple,\n \"gauge-simple-med\": $fa-var-gauge-simple-med,\n \"tachometer-average\": $fa-var-tachometer-average,\n \"book-medical\": $fa-var-book-medical,\n \"poo\": $fa-var-poo,\n \"quote-right\": $fa-var-quote-right,\n \"quote-right-alt\": $fa-var-quote-right-alt,\n \"shirt\": $fa-var-shirt,\n \"t-shirt\": $fa-var-t-shirt,\n \"tshirt\": $fa-var-tshirt,\n \"cubes\": $fa-var-cubes,\n \"divide\": $fa-var-divide,\n \"tenge-sign\": $fa-var-tenge-sign,\n \"tenge\": $fa-var-tenge,\n \"headphones\": $fa-var-headphones,\n \"hands-holding\": $fa-var-hands-holding,\n \"hands-clapping\": $fa-var-hands-clapping,\n \"republican\": $fa-var-republican,\n \"arrow-left\": $fa-var-arrow-left,\n \"person-circle-xmark\": $fa-var-person-circle-xmark,\n \"ruler\": $fa-var-ruler,\n \"align-left\": $fa-var-align-left,\n \"dice-d6\": $fa-var-dice-d6,\n \"restroom\": $fa-var-restroom,\n \"j\": $fa-var-j,\n \"users-viewfinder\": $fa-var-users-viewfinder,\n \"file-video\": $fa-var-file-video,\n \"up-right-from-square\": $fa-var-up-right-from-square,\n \"external-link-alt\": $fa-var-external-link-alt,\n \"table-cells\": $fa-var-table-cells,\n \"th\": $fa-var-th,\n \"file-pdf\": $fa-var-file-pdf,\n \"book-bible\": $fa-var-book-bible,\n \"bible\": $fa-var-bible,\n \"o\": $fa-var-o,\n \"suitcase-medical\": $fa-var-suitcase-medical,\n \"medkit\": $fa-var-medkit,\n \"user-secret\": $fa-var-user-secret,\n \"otter\": $fa-var-otter,\n \"person-dress\": $fa-var-person-dress,\n \"female\": $fa-var-female,\n \"comment-dollar\": $fa-var-comment-dollar,\n \"business-time\": $fa-var-business-time,\n \"briefcase-clock\": $fa-var-briefcase-clock,\n \"table-cells-large\": $fa-var-table-cells-large,\n \"th-large\": $fa-var-th-large,\n \"book-tanakh\": $fa-var-book-tanakh,\n \"tanakh\": $fa-var-tanakh,\n \"phone-volume\": $fa-var-phone-volume,\n \"volume-control-phone\": $fa-var-volume-control-phone,\n \"hat-cowboy-side\": $fa-var-hat-cowboy-side,\n \"clipboard-user\": $fa-var-clipboard-user,\n \"child\": $fa-var-child,\n \"lira-sign\": $fa-var-lira-sign,\n \"satellite\": $fa-var-satellite,\n \"plane-lock\": $fa-var-plane-lock,\n \"tag\": $fa-var-tag,\n \"comment\": $fa-var-comment,\n \"cake-candles\": $fa-var-cake-candles,\n \"birthday-cake\": $fa-var-birthday-cake,\n \"cake\": $fa-var-cake,\n \"envelope\": $fa-var-envelope,\n \"angles-up\": $fa-var-angles-up,\n \"angle-double-up\": $fa-var-angle-double-up,\n \"paperclip\": $fa-var-paperclip,\n \"arrow-right-to-city\": $fa-var-arrow-right-to-city,\n \"ribbon\": $fa-var-ribbon,\n \"lungs\": $fa-var-lungs,\n \"arrow-up-9-1\": $fa-var-arrow-up-9-1,\n \"sort-numeric-up-alt\": $fa-var-sort-numeric-up-alt,\n \"litecoin-sign\": $fa-var-litecoin-sign,\n \"border-none\": $fa-var-border-none,\n \"circle-nodes\": $fa-var-circle-nodes,\n \"parachute-box\": $fa-var-parachute-box,\n \"indent\": $fa-var-indent,\n \"truck-field-un\": $fa-var-truck-field-un,\n \"hourglass\": $fa-var-hourglass,\n \"hourglass-empty\": $fa-var-hourglass-empty,\n \"mountain\": $fa-var-mountain,\n \"user-doctor\": $fa-var-user-doctor,\n \"user-md\": $fa-var-user-md,\n \"circle-info\": $fa-var-circle-info,\n \"info-circle\": $fa-var-info-circle,\n \"cloud-meatball\": $fa-var-cloud-meatball,\n \"camera\": $fa-var-camera,\n \"camera-alt\": $fa-var-camera-alt,\n \"square-virus\": $fa-var-square-virus,\n \"meteor\": $fa-var-meteor,\n \"car-on\": $fa-var-car-on,\n \"sleigh\": $fa-var-sleigh,\n \"arrow-down-1-9\": $fa-var-arrow-down-1-9,\n \"sort-numeric-asc\": $fa-var-sort-numeric-asc,\n \"sort-numeric-down\": $fa-var-sort-numeric-down,\n \"hand-holding-droplet\": $fa-var-hand-holding-droplet,\n \"hand-holding-water\": $fa-var-hand-holding-water,\n \"water\": $fa-var-water,\n \"calendar-check\": $fa-var-calendar-check,\n \"braille\": $fa-var-braille,\n \"prescription-bottle-medical\": $fa-var-prescription-bottle-medical,\n \"prescription-bottle-alt\": $fa-var-prescription-bottle-alt,\n \"landmark\": $fa-var-landmark,\n \"truck\": $fa-var-truck,\n \"crosshairs\": $fa-var-crosshairs,\n \"person-cane\": $fa-var-person-cane,\n \"tent\": $fa-var-tent,\n \"vest-patches\": $fa-var-vest-patches,\n \"check-double\": $fa-var-check-double,\n \"arrow-down-a-z\": $fa-var-arrow-down-a-z,\n \"sort-alpha-asc\": $fa-var-sort-alpha-asc,\n \"sort-alpha-down\": $fa-var-sort-alpha-down,\n \"money-bill-wheat\": $fa-var-money-bill-wheat,\n \"cookie\": $fa-var-cookie,\n \"arrow-rotate-left\": $fa-var-arrow-rotate-left,\n \"arrow-left-rotate\": $fa-var-arrow-left-rotate,\n \"arrow-rotate-back\": $fa-var-arrow-rotate-back,\n \"arrow-rotate-backward\": $fa-var-arrow-rotate-backward,\n \"undo\": $fa-var-undo,\n \"hard-drive\": $fa-var-hard-drive,\n \"hdd\": $fa-var-hdd,\n \"face-grin-squint-tears\": $fa-var-face-grin-squint-tears,\n \"grin-squint-tears\": $fa-var-grin-squint-tears,\n \"dumbbell\": $fa-var-dumbbell,\n \"rectangle-list\": $fa-var-rectangle-list,\n \"list-alt\": $fa-var-list-alt,\n \"tarp-droplet\": $fa-var-tarp-droplet,\n \"house-medical-circle-check\": $fa-var-house-medical-circle-check,\n \"person-skiing-nordic\": $fa-var-person-skiing-nordic,\n \"skiing-nordic\": $fa-var-skiing-nordic,\n \"calendar-plus\": $fa-var-calendar-plus,\n \"plane-arrival\": $fa-var-plane-arrival,\n \"circle-left\": $fa-var-circle-left,\n \"arrow-alt-circle-left\": $fa-var-arrow-alt-circle-left,\n \"train-subway\": $fa-var-train-subway,\n \"subway\": $fa-var-subway,\n \"chart-gantt\": $fa-var-chart-gantt,\n \"indian-rupee-sign\": $fa-var-indian-rupee-sign,\n \"indian-rupee\": $fa-var-indian-rupee,\n \"inr\": $fa-var-inr,\n \"crop-simple\": $fa-var-crop-simple,\n \"crop-alt\": $fa-var-crop-alt,\n \"money-bill-1\": $fa-var-money-bill-1,\n \"money-bill-alt\": $fa-var-money-bill-alt,\n \"left-long\": $fa-var-left-long,\n \"long-arrow-alt-left\": $fa-var-long-arrow-alt-left,\n \"dna\": $fa-var-dna,\n \"virus-slash\": $fa-var-virus-slash,\n \"minus\": $fa-var-minus,\n \"subtract\": $fa-var-subtract,\n \"chess\": $fa-var-chess,\n \"arrow-left-long\": $fa-var-arrow-left-long,\n \"long-arrow-left\": $fa-var-long-arrow-left,\n \"plug-circle-check\": $fa-var-plug-circle-check,\n \"street-view\": $fa-var-street-view,\n \"franc-sign\": $fa-var-franc-sign,\n \"volume-off\": $fa-var-volume-off,\n \"hands-asl-interpreting\": $fa-var-hands-asl-interpreting,\n \"american-sign-language-interpreting\": $fa-var-american-sign-language-interpreting,\n \"asl-interpreting\": $fa-var-asl-interpreting,\n \"hands-american-sign-language-interpreting\": $fa-var-hands-american-sign-language-interpreting,\n \"gear\": $fa-var-gear,\n \"cog\": $fa-var-cog,\n \"droplet-slash\": $fa-var-droplet-slash,\n \"tint-slash\": $fa-var-tint-slash,\n \"mosque\": $fa-var-mosque,\n \"mosquito\": $fa-var-mosquito,\n \"star-of-david\": $fa-var-star-of-david,\n \"person-military-rifle\": $fa-var-person-military-rifle,\n \"cart-shopping\": $fa-var-cart-shopping,\n \"shopping-cart\": $fa-var-shopping-cart,\n \"vials\": $fa-var-vials,\n \"plug-circle-plus\": $fa-var-plug-circle-plus,\n \"place-of-worship\": $fa-var-place-of-worship,\n \"grip-vertical\": $fa-var-grip-vertical,\n \"arrow-turn-up\": $fa-var-arrow-turn-up,\n \"level-up\": $fa-var-level-up,\n \"u\": $fa-var-u,\n \"square-root-variable\": $fa-var-square-root-variable,\n \"square-root-alt\": $fa-var-square-root-alt,\n \"clock\": $fa-var-clock,\n \"clock-four\": $fa-var-clock-four,\n \"backward-step\": $fa-var-backward-step,\n \"step-backward\": $fa-var-step-backward,\n \"pallet\": $fa-var-pallet,\n \"faucet\": $fa-var-faucet,\n \"baseball-bat-ball\": $fa-var-baseball-bat-ball,\n \"s\": $fa-var-s,\n \"timeline\": $fa-var-timeline,\n \"keyboard\": $fa-var-keyboard,\n \"caret-down\": $fa-var-caret-down,\n \"house-chimney-medical\": $fa-var-house-chimney-medical,\n \"clinic-medical\": $fa-var-clinic-medical,\n \"temperature-three-quarters\": $fa-var-temperature-three-quarters,\n \"temperature-3\": $fa-var-temperature-3,\n \"thermometer-3\": $fa-var-thermometer-3,\n \"thermometer-three-quarters\": $fa-var-thermometer-three-quarters,\n \"mobile-screen\": $fa-var-mobile-screen,\n \"mobile-android-alt\": $fa-var-mobile-android-alt,\n \"plane-up\": $fa-var-plane-up,\n \"piggy-bank\": $fa-var-piggy-bank,\n \"battery-half\": $fa-var-battery-half,\n \"battery-3\": $fa-var-battery-3,\n \"mountain-city\": $fa-var-mountain-city,\n \"coins\": $fa-var-coins,\n \"khanda\": $fa-var-khanda,\n \"sliders\": $fa-var-sliders,\n \"sliders-h\": $fa-var-sliders-h,\n \"folder-tree\": $fa-var-folder-tree,\n \"network-wired\": $fa-var-network-wired,\n \"map-pin\": $fa-var-map-pin,\n \"hamsa\": $fa-var-hamsa,\n \"cent-sign\": $fa-var-cent-sign,\n \"flask\": $fa-var-flask,\n \"person-pregnant\": $fa-var-person-pregnant,\n \"wand-sparkles\": $fa-var-wand-sparkles,\n \"ellipsis-vertical\": $fa-var-ellipsis-vertical,\n \"ellipsis-v\": $fa-var-ellipsis-v,\n \"ticket\": $fa-var-ticket,\n \"power-off\": $fa-var-power-off,\n \"right-long\": $fa-var-right-long,\n \"long-arrow-alt-right\": $fa-var-long-arrow-alt-right,\n \"flag-usa\": $fa-var-flag-usa,\n \"laptop-file\": $fa-var-laptop-file,\n \"tty\": $fa-var-tty,\n \"teletype\": $fa-var-teletype,\n \"diagram-next\": $fa-var-diagram-next,\n \"person-rifle\": $fa-var-person-rifle,\n \"house-medical-circle-exclamation\": $fa-var-house-medical-circle-exclamation,\n \"closed-captioning\": $fa-var-closed-captioning,\n \"person-hiking\": $fa-var-person-hiking,\n \"hiking\": $fa-var-hiking,\n \"venus-double\": $fa-var-venus-double,\n \"images\": $fa-var-images,\n \"calculator\": $fa-var-calculator,\n \"people-pulling\": $fa-var-people-pulling,\n \"n\": $fa-var-n,\n \"cable-car\": $fa-var-cable-car,\n \"tram\": $fa-var-tram,\n \"cloud-rain\": $fa-var-cloud-rain,\n \"building-circle-xmark\": $fa-var-building-circle-xmark,\n \"ship\": $fa-var-ship,\n \"arrows-down-to-line\": $fa-var-arrows-down-to-line,\n \"download\": $fa-var-download,\n \"face-grin\": $fa-var-face-grin,\n \"grin\": $fa-var-grin,\n \"delete-left\": $fa-var-delete-left,\n \"backspace\": $fa-var-backspace,\n \"eye-dropper\": $fa-var-eye-dropper,\n \"eye-dropper-empty\": $fa-var-eye-dropper-empty,\n \"eyedropper\": $fa-var-eyedropper,\n \"file-circle-check\": $fa-var-file-circle-check,\n \"forward\": $fa-var-forward,\n \"mobile\": $fa-var-mobile,\n \"mobile-android\": $fa-var-mobile-android,\n \"mobile-phone\": $fa-var-mobile-phone,\n \"face-meh\": $fa-var-face-meh,\n \"meh\": $fa-var-meh,\n \"align-center\": $fa-var-align-center,\n \"book-skull\": $fa-var-book-skull,\n \"book-dead\": $fa-var-book-dead,\n \"id-card\": $fa-var-id-card,\n \"drivers-license\": $fa-var-drivers-license,\n \"outdent\": $fa-var-outdent,\n \"dedent\": $fa-var-dedent,\n \"heart-circle-exclamation\": $fa-var-heart-circle-exclamation,\n \"house\": $fa-var-house,\n \"home\": $fa-var-home,\n \"home-alt\": $fa-var-home-alt,\n \"home-lg-alt\": $fa-var-home-lg-alt,\n \"calendar-week\": $fa-var-calendar-week,\n \"laptop-medical\": $fa-var-laptop-medical,\n \"b\": $fa-var-b,\n \"file-medical\": $fa-var-file-medical,\n \"dice-one\": $fa-var-dice-one,\n \"kiwi-bird\": $fa-var-kiwi-bird,\n \"arrow-right-arrow-left\": $fa-var-arrow-right-arrow-left,\n \"exchange\": $fa-var-exchange,\n \"rotate-right\": $fa-var-rotate-right,\n \"redo-alt\": $fa-var-redo-alt,\n \"rotate-forward\": $fa-var-rotate-forward,\n \"utensils\": $fa-var-utensils,\n \"cutlery\": $fa-var-cutlery,\n \"arrow-up-wide-short\": $fa-var-arrow-up-wide-short,\n \"sort-amount-up\": $fa-var-sort-amount-up,\n \"mill-sign\": $fa-var-mill-sign,\n \"bowl-rice\": $fa-var-bowl-rice,\n \"skull\": $fa-var-skull,\n \"tower-broadcast\": $fa-var-tower-broadcast,\n \"broadcast-tower\": $fa-var-broadcast-tower,\n \"truck-pickup\": $fa-var-truck-pickup,\n \"up-long\": $fa-var-up-long,\n \"long-arrow-alt-up\": $fa-var-long-arrow-alt-up,\n \"stop\": $fa-var-stop,\n \"code-merge\": $fa-var-code-merge,\n \"upload\": $fa-var-upload,\n \"hurricane\": $fa-var-hurricane,\n \"mound\": $fa-var-mound,\n \"toilet-portable\": $fa-var-toilet-portable,\n \"compact-disc\": $fa-var-compact-disc,\n \"file-arrow-down\": $fa-var-file-arrow-down,\n \"file-download\": $fa-var-file-download,\n \"caravan\": $fa-var-caravan,\n \"shield-cat\": $fa-var-shield-cat,\n \"bolt\": $fa-var-bolt,\n \"zap\": $fa-var-zap,\n \"glass-water\": $fa-var-glass-water,\n \"oil-well\": $fa-var-oil-well,\n \"vault\": $fa-var-vault,\n \"mars\": $fa-var-mars,\n \"toilet\": $fa-var-toilet,\n \"plane-circle-xmark\": $fa-var-plane-circle-xmark,\n \"yen-sign\": $fa-var-yen-sign,\n \"cny\": $fa-var-cny,\n \"jpy\": $fa-var-jpy,\n \"rmb\": $fa-var-rmb,\n \"yen\": $fa-var-yen,\n \"ruble-sign\": $fa-var-ruble-sign,\n \"rouble\": $fa-var-rouble,\n \"rub\": $fa-var-rub,\n \"ruble\": $fa-var-ruble,\n \"sun\": $fa-var-sun,\n \"guitar\": $fa-var-guitar,\n \"face-laugh-wink\": $fa-var-face-laugh-wink,\n \"laugh-wink\": $fa-var-laugh-wink,\n \"horse-head\": $fa-var-horse-head,\n \"bore-hole\": $fa-var-bore-hole,\n \"industry\": $fa-var-industry,\n \"circle-down\": $fa-var-circle-down,\n \"arrow-alt-circle-down\": $fa-var-arrow-alt-circle-down,\n \"arrows-turn-to-dots\": $fa-var-arrows-turn-to-dots,\n \"florin-sign\": $fa-var-florin-sign,\n \"arrow-down-short-wide\": $fa-var-arrow-down-short-wide,\n \"sort-amount-desc\": $fa-var-sort-amount-desc,\n \"sort-amount-down-alt\": $fa-var-sort-amount-down-alt,\n \"less-than\": $fa-var-less-than,\n \"angle-down\": $fa-var-angle-down,\n \"car-tunnel\": $fa-var-car-tunnel,\n \"head-side-cough\": $fa-var-head-side-cough,\n \"grip-lines\": $fa-var-grip-lines,\n \"thumbs-down\": $fa-var-thumbs-down,\n \"user-lock\": $fa-var-user-lock,\n \"arrow-right-long\": $fa-var-arrow-right-long,\n \"long-arrow-right\": $fa-var-long-arrow-right,\n \"anchor-circle-xmark\": $fa-var-anchor-circle-xmark,\n \"ellipsis\": $fa-var-ellipsis,\n \"ellipsis-h\": $fa-var-ellipsis-h,\n \"chess-pawn\": $fa-var-chess-pawn,\n \"kit-medical\": $fa-var-kit-medical,\n \"first-aid\": $fa-var-first-aid,\n \"person-through-window\": $fa-var-person-through-window,\n \"toolbox\": $fa-var-toolbox,\n \"hands-holding-circle\": $fa-var-hands-holding-circle,\n \"bug\": $fa-var-bug,\n \"credit-card\": $fa-var-credit-card,\n \"credit-card-alt\": $fa-var-credit-card-alt,\n \"car\": $fa-var-car,\n \"automobile\": $fa-var-automobile,\n \"hand-holding-hand\": $fa-var-hand-holding-hand,\n \"book-open-reader\": $fa-var-book-open-reader,\n \"book-reader\": $fa-var-book-reader,\n \"mountain-sun\": $fa-var-mountain-sun,\n \"arrows-left-right-to-line\": $fa-var-arrows-left-right-to-line,\n \"dice-d20\": $fa-var-dice-d20,\n \"truck-droplet\": $fa-var-truck-droplet,\n \"file-circle-xmark\": $fa-var-file-circle-xmark,\n \"temperature-arrow-up\": $fa-var-temperature-arrow-up,\n \"temperature-up\": $fa-var-temperature-up,\n \"medal\": $fa-var-medal,\n \"bed\": $fa-var-bed,\n \"square-h\": $fa-var-square-h,\n \"h-square\": $fa-var-h-square,\n \"podcast\": $fa-var-podcast,\n \"temperature-full\": $fa-var-temperature-full,\n \"temperature-4\": $fa-var-temperature-4,\n \"thermometer-4\": $fa-var-thermometer-4,\n \"thermometer-full\": $fa-var-thermometer-full,\n \"bell\": $fa-var-bell,\n \"superscript\": $fa-var-superscript,\n \"plug-circle-xmark\": $fa-var-plug-circle-xmark,\n \"star-of-life\": $fa-var-star-of-life,\n \"phone-slash\": $fa-var-phone-slash,\n \"paint-roller\": $fa-var-paint-roller,\n \"handshake-angle\": $fa-var-handshake-angle,\n \"hands-helping\": $fa-var-hands-helping,\n \"location-dot\": $fa-var-location-dot,\n \"map-marker-alt\": $fa-var-map-marker-alt,\n \"file\": $fa-var-file,\n \"greater-than\": $fa-var-greater-than,\n \"person-swimming\": $fa-var-person-swimming,\n \"swimmer\": $fa-var-swimmer,\n \"arrow-down\": $fa-var-arrow-down,\n \"droplet\": $fa-var-droplet,\n \"tint\": $fa-var-tint,\n \"eraser\": $fa-var-eraser,\n \"earth-americas\": $fa-var-earth-americas,\n \"earth\": $fa-var-earth,\n \"earth-america\": $fa-var-earth-america,\n \"globe-americas\": $fa-var-globe-americas,\n \"person-burst\": $fa-var-person-burst,\n \"dove\": $fa-var-dove,\n \"battery-empty\": $fa-var-battery-empty,\n \"battery-0\": $fa-var-battery-0,\n \"socks\": $fa-var-socks,\n \"inbox\": $fa-var-inbox,\n \"section\": $fa-var-section,\n \"gauge-high\": $fa-var-gauge-high,\n \"tachometer-alt\": $fa-var-tachometer-alt,\n \"tachometer-alt-fast\": $fa-var-tachometer-alt-fast,\n \"envelope-open-text\": $fa-var-envelope-open-text,\n \"hospital\": $fa-var-hospital,\n \"hospital-alt\": $fa-var-hospital-alt,\n \"hospital-wide\": $fa-var-hospital-wide,\n \"wine-bottle\": $fa-var-wine-bottle,\n \"chess-rook\": $fa-var-chess-rook,\n \"bars-staggered\": $fa-var-bars-staggered,\n \"reorder\": $fa-var-reorder,\n \"stream\": $fa-var-stream,\n \"dharmachakra\": $fa-var-dharmachakra,\n \"hotdog\": $fa-var-hotdog,\n \"person-walking-with-cane\": $fa-var-person-walking-with-cane,\n \"blind\": $fa-var-blind,\n \"drum\": $fa-var-drum,\n \"ice-cream\": $fa-var-ice-cream,\n \"heart-circle-bolt\": $fa-var-heart-circle-bolt,\n \"fax\": $fa-var-fax,\n \"paragraph\": $fa-var-paragraph,\n \"check-to-slot\": $fa-var-check-to-slot,\n \"vote-yea\": $fa-var-vote-yea,\n \"star-half\": $fa-var-star-half,\n \"boxes-stacked\": $fa-var-boxes-stacked,\n \"boxes\": $fa-var-boxes,\n \"boxes-alt\": $fa-var-boxes-alt,\n \"link\": $fa-var-link,\n \"chain\": $fa-var-chain,\n \"ear-listen\": $fa-var-ear-listen,\n \"assistive-listening-systems\": $fa-var-assistive-listening-systems,\n \"tree-city\": $fa-var-tree-city,\n \"play\": $fa-var-play,\n \"font\": $fa-var-font,\n \"table-cells-row-lock\": $fa-var-table-cells-row-lock,\n \"rupiah-sign\": $fa-var-rupiah-sign,\n \"magnifying-glass\": $fa-var-magnifying-glass,\n \"search\": $fa-var-search,\n \"table-tennis-paddle-ball\": $fa-var-table-tennis-paddle-ball,\n \"ping-pong-paddle-ball\": $fa-var-ping-pong-paddle-ball,\n \"table-tennis\": $fa-var-table-tennis,\n \"person-dots-from-line\": $fa-var-person-dots-from-line,\n \"diagnoses\": $fa-var-diagnoses,\n \"trash-can-arrow-up\": $fa-var-trash-can-arrow-up,\n \"trash-restore-alt\": $fa-var-trash-restore-alt,\n \"naira-sign\": $fa-var-naira-sign,\n \"cart-arrow-down\": $fa-var-cart-arrow-down,\n \"walkie-talkie\": $fa-var-walkie-talkie,\n \"file-pen\": $fa-var-file-pen,\n \"file-edit\": $fa-var-file-edit,\n \"receipt\": $fa-var-receipt,\n \"square-pen\": $fa-var-square-pen,\n \"pen-square\": $fa-var-pen-square,\n \"pencil-square\": $fa-var-pencil-square,\n \"suitcase-rolling\": $fa-var-suitcase-rolling,\n \"person-circle-exclamation\": $fa-var-person-circle-exclamation,\n \"chevron-down\": $fa-var-chevron-down,\n \"battery-full\": $fa-var-battery-full,\n \"battery\": $fa-var-battery,\n \"battery-5\": $fa-var-battery-5,\n \"skull-crossbones\": $fa-var-skull-crossbones,\n \"code-compare\": $fa-var-code-compare,\n \"list-ul\": $fa-var-list-ul,\n \"list-dots\": $fa-var-list-dots,\n \"school-lock\": $fa-var-school-lock,\n \"tower-cell\": $fa-var-tower-cell,\n \"down-long\": $fa-var-down-long,\n \"long-arrow-alt-down\": $fa-var-long-arrow-alt-down,\n \"ranking-star\": $fa-var-ranking-star,\n \"chess-king\": $fa-var-chess-king,\n \"person-harassing\": $fa-var-person-harassing,\n \"brazilian-real-sign\": $fa-var-brazilian-real-sign,\n \"landmark-dome\": $fa-var-landmark-dome,\n \"landmark-alt\": $fa-var-landmark-alt,\n \"arrow-up\": $fa-var-arrow-up,\n \"tv\": $fa-var-tv,\n \"television\": $fa-var-television,\n \"tv-alt\": $fa-var-tv-alt,\n \"shrimp\": $fa-var-shrimp,\n \"list-check\": $fa-var-list-check,\n \"tasks\": $fa-var-tasks,\n \"jug-detergent\": $fa-var-jug-detergent,\n \"circle-user\": $fa-var-circle-user,\n \"user-circle\": $fa-var-user-circle,\n \"user-shield\": $fa-var-user-shield,\n \"wind\": $fa-var-wind,\n \"car-burst\": $fa-var-car-burst,\n \"car-crash\": $fa-var-car-crash,\n \"y\": $fa-var-y,\n \"person-snowboarding\": $fa-var-person-snowboarding,\n \"snowboarding\": $fa-var-snowboarding,\n \"truck-fast\": $fa-var-truck-fast,\n \"shipping-fast\": $fa-var-shipping-fast,\n \"fish\": $fa-var-fish,\n \"user-graduate\": $fa-var-user-graduate,\n \"circle-half-stroke\": $fa-var-circle-half-stroke,\n \"adjust\": $fa-var-adjust,\n \"clapperboard\": $fa-var-clapperboard,\n \"circle-radiation\": $fa-var-circle-radiation,\n \"radiation-alt\": $fa-var-radiation-alt,\n \"baseball\": $fa-var-baseball,\n \"baseball-ball\": $fa-var-baseball-ball,\n \"jet-fighter-up\": $fa-var-jet-fighter-up,\n \"diagram-project\": $fa-var-diagram-project,\n \"project-diagram\": $fa-var-project-diagram,\n \"copy\": $fa-var-copy,\n \"volume-xmark\": $fa-var-volume-xmark,\n \"volume-mute\": $fa-var-volume-mute,\n \"volume-times\": $fa-var-volume-times,\n \"hand-sparkles\": $fa-var-hand-sparkles,\n \"grip\": $fa-var-grip,\n \"grip-horizontal\": $fa-var-grip-horizontal,\n \"share-from-square\": $fa-var-share-from-square,\n \"share-square\": $fa-var-share-square,\n \"child-combatant\": $fa-var-child-combatant,\n \"child-rifle\": $fa-var-child-rifle,\n \"gun\": $fa-var-gun,\n \"square-phone\": $fa-var-square-phone,\n \"phone-square\": $fa-var-phone-square,\n \"plus\": $fa-var-plus,\n \"add\": $fa-var-add,\n \"expand\": $fa-var-expand,\n \"computer\": $fa-var-computer,\n \"xmark\": $fa-var-xmark,\n \"close\": $fa-var-close,\n \"multiply\": $fa-var-multiply,\n \"remove\": $fa-var-remove,\n \"times\": $fa-var-times,\n \"arrows-up-down-left-right\": $fa-var-arrows-up-down-left-right,\n \"arrows\": $fa-var-arrows,\n \"chalkboard-user\": $fa-var-chalkboard-user,\n \"chalkboard-teacher\": $fa-var-chalkboard-teacher,\n \"peso-sign\": $fa-var-peso-sign,\n \"building-shield\": $fa-var-building-shield,\n \"baby\": $fa-var-baby,\n \"users-line\": $fa-var-users-line,\n \"quote-left\": $fa-var-quote-left,\n \"quote-left-alt\": $fa-var-quote-left-alt,\n \"tractor\": $fa-var-tractor,\n \"trash-arrow-up\": $fa-var-trash-arrow-up,\n \"trash-restore\": $fa-var-trash-restore,\n \"arrow-down-up-lock\": $fa-var-arrow-down-up-lock,\n \"lines-leaning\": $fa-var-lines-leaning,\n \"ruler-combined\": $fa-var-ruler-combined,\n \"copyright\": $fa-var-copyright,\n \"equals\": $fa-var-equals,\n \"blender\": $fa-var-blender,\n \"teeth\": $fa-var-teeth,\n \"shekel-sign\": $fa-var-shekel-sign,\n \"ils\": $fa-var-ils,\n \"shekel\": $fa-var-shekel,\n \"sheqel\": $fa-var-sheqel,\n \"sheqel-sign\": $fa-var-sheqel-sign,\n \"map\": $fa-var-map,\n \"rocket\": $fa-var-rocket,\n \"photo-film\": $fa-var-photo-film,\n \"photo-video\": $fa-var-photo-video,\n \"folder-minus\": $fa-var-folder-minus,\n \"store\": $fa-var-store,\n \"arrow-trend-up\": $fa-var-arrow-trend-up,\n \"plug-circle-minus\": $fa-var-plug-circle-minus,\n \"sign-hanging\": $fa-var-sign-hanging,\n \"sign\": $fa-var-sign,\n \"bezier-curve\": $fa-var-bezier-curve,\n \"bell-slash\": $fa-var-bell-slash,\n \"tablet\": $fa-var-tablet,\n \"tablet-android\": $fa-var-tablet-android,\n \"school-flag\": $fa-var-school-flag,\n \"fill\": $fa-var-fill,\n \"angle-up\": $fa-var-angle-up,\n \"drumstick-bite\": $fa-var-drumstick-bite,\n \"holly-berry\": $fa-var-holly-berry,\n \"chevron-left\": $fa-var-chevron-left,\n \"bacteria\": $fa-var-bacteria,\n \"hand-lizard\": $fa-var-hand-lizard,\n \"notdef\": $fa-var-notdef,\n \"disease\": $fa-var-disease,\n \"briefcase-medical\": $fa-var-briefcase-medical,\n \"genderless\": $fa-var-genderless,\n \"chevron-right\": $fa-var-chevron-right,\n \"retweet\": $fa-var-retweet,\n \"car-rear\": $fa-var-car-rear,\n \"car-alt\": $fa-var-car-alt,\n \"pump-soap\": $fa-var-pump-soap,\n \"video-slash\": $fa-var-video-slash,\n \"battery-quarter\": $fa-var-battery-quarter,\n \"battery-2\": $fa-var-battery-2,\n \"radio\": $fa-var-radio,\n \"baby-carriage\": $fa-var-baby-carriage,\n \"carriage-baby\": $fa-var-carriage-baby,\n \"traffic-light\": $fa-var-traffic-light,\n \"thermometer\": $fa-var-thermometer,\n \"vr-cardboard\": $fa-var-vr-cardboard,\n \"hand-middle-finger\": $fa-var-hand-middle-finger,\n \"percent\": $fa-var-percent,\n \"percentage\": $fa-var-percentage,\n \"truck-moving\": $fa-var-truck-moving,\n \"glass-water-droplet\": $fa-var-glass-water-droplet,\n \"display\": $fa-var-display,\n \"face-smile\": $fa-var-face-smile,\n \"smile\": $fa-var-smile,\n \"thumbtack\": $fa-var-thumbtack,\n \"thumb-tack\": $fa-var-thumb-tack,\n \"trophy\": $fa-var-trophy,\n \"person-praying\": $fa-var-person-praying,\n \"pray\": $fa-var-pray,\n \"hammer\": $fa-var-hammer,\n \"hand-peace\": $fa-var-hand-peace,\n \"rotate\": $fa-var-rotate,\n \"sync-alt\": $fa-var-sync-alt,\n \"spinner\": $fa-var-spinner,\n \"robot\": $fa-var-robot,\n \"peace\": $fa-var-peace,\n \"gears\": $fa-var-gears,\n \"cogs\": $fa-var-cogs,\n \"warehouse\": $fa-var-warehouse,\n \"arrow-up-right-dots\": $fa-var-arrow-up-right-dots,\n \"splotch\": $fa-var-splotch,\n \"face-grin-hearts\": $fa-var-face-grin-hearts,\n \"grin-hearts\": $fa-var-grin-hearts,\n \"dice-four\": $fa-var-dice-four,\n \"sim-card\": $fa-var-sim-card,\n \"transgender\": $fa-var-transgender,\n \"transgender-alt\": $fa-var-transgender-alt,\n \"mercury\": $fa-var-mercury,\n \"arrow-turn-down\": $fa-var-arrow-turn-down,\n \"level-down\": $fa-var-level-down,\n \"person-falling-burst\": $fa-var-person-falling-burst,\n \"award\": $fa-var-award,\n \"ticket-simple\": $fa-var-ticket-simple,\n \"ticket-alt\": $fa-var-ticket-alt,\n \"building\": $fa-var-building,\n \"angles-left\": $fa-var-angles-left,\n \"angle-double-left\": $fa-var-angle-double-left,\n \"qrcode\": $fa-var-qrcode,\n \"clock-rotate-left\": $fa-var-clock-rotate-left,\n \"history\": $fa-var-history,\n \"face-grin-beam-sweat\": $fa-var-face-grin-beam-sweat,\n \"grin-beam-sweat\": $fa-var-grin-beam-sweat,\n \"file-export\": $fa-var-file-export,\n \"arrow-right-from-file\": $fa-var-arrow-right-from-file,\n \"shield\": $fa-var-shield,\n \"shield-blank\": $fa-var-shield-blank,\n \"arrow-up-short-wide\": $fa-var-arrow-up-short-wide,\n \"sort-amount-up-alt\": $fa-var-sort-amount-up-alt,\n \"house-medical\": $fa-var-house-medical,\n \"golf-ball-tee\": $fa-var-golf-ball-tee,\n \"golf-ball\": $fa-var-golf-ball,\n \"circle-chevron-left\": $fa-var-circle-chevron-left,\n \"chevron-circle-left\": $fa-var-chevron-circle-left,\n \"house-chimney-window\": $fa-var-house-chimney-window,\n \"pen-nib\": $fa-var-pen-nib,\n \"tent-arrow-turn-left\": $fa-var-tent-arrow-turn-left,\n \"tents\": $fa-var-tents,\n \"wand-magic\": $fa-var-wand-magic,\n \"magic\": $fa-var-magic,\n \"dog\": $fa-var-dog,\n \"carrot\": $fa-var-carrot,\n \"moon\": $fa-var-moon,\n \"wine-glass-empty\": $fa-var-wine-glass-empty,\n \"wine-glass-alt\": $fa-var-wine-glass-alt,\n \"cheese\": $fa-var-cheese,\n \"yin-yang\": $fa-var-yin-yang,\n \"music\": $fa-var-music,\n \"code-commit\": $fa-var-code-commit,\n \"temperature-low\": $fa-var-temperature-low,\n \"person-biking\": $fa-var-person-biking,\n \"biking\": $fa-var-biking,\n \"broom\": $fa-var-broom,\n \"shield-heart\": $fa-var-shield-heart,\n \"gopuram\": $fa-var-gopuram,\n \"earth-oceania\": $fa-var-earth-oceania,\n \"globe-oceania\": $fa-var-globe-oceania,\n \"square-xmark\": $fa-var-square-xmark,\n \"times-square\": $fa-var-times-square,\n \"xmark-square\": $fa-var-xmark-square,\n \"hashtag\": $fa-var-hashtag,\n \"up-right-and-down-left-from-center\": $fa-var-up-right-and-down-left-from-center,\n \"expand-alt\": $fa-var-expand-alt,\n \"oil-can\": $fa-var-oil-can,\n \"t\": $fa-var-t,\n \"hippo\": $fa-var-hippo,\n \"chart-column\": $fa-var-chart-column,\n \"infinity\": $fa-var-infinity,\n \"vial-circle-check\": $fa-var-vial-circle-check,\n \"person-arrow-down-to-line\": $fa-var-person-arrow-down-to-line,\n \"voicemail\": $fa-var-voicemail,\n \"fan\": $fa-var-fan,\n \"person-walking-luggage\": $fa-var-person-walking-luggage,\n \"up-down\": $fa-var-up-down,\n \"arrows-alt-v\": $fa-var-arrows-alt-v,\n \"cloud-moon-rain\": $fa-var-cloud-moon-rain,\n \"calendar\": $fa-var-calendar,\n \"trailer\": $fa-var-trailer,\n \"bahai\": $fa-var-bahai,\n \"haykal\": $fa-var-haykal,\n \"sd-card\": $fa-var-sd-card,\n \"dragon\": $fa-var-dragon,\n \"shoe-prints\": $fa-var-shoe-prints,\n \"circle-plus\": $fa-var-circle-plus,\n \"plus-circle\": $fa-var-plus-circle,\n \"face-grin-tongue-wink\": $fa-var-face-grin-tongue-wink,\n \"grin-tongue-wink\": $fa-var-grin-tongue-wink,\n \"hand-holding\": $fa-var-hand-holding,\n \"plug-circle-exclamation\": $fa-var-plug-circle-exclamation,\n \"link-slash\": $fa-var-link-slash,\n \"chain-broken\": $fa-var-chain-broken,\n \"chain-slash\": $fa-var-chain-slash,\n \"unlink\": $fa-var-unlink,\n \"clone\": $fa-var-clone,\n \"person-walking-arrow-loop-left\": $fa-var-person-walking-arrow-loop-left,\n \"arrow-up-z-a\": $fa-var-arrow-up-z-a,\n \"sort-alpha-up-alt\": $fa-var-sort-alpha-up-alt,\n \"fire-flame-curved\": $fa-var-fire-flame-curved,\n \"fire-alt\": $fa-var-fire-alt,\n \"tornado\": $fa-var-tornado,\n \"file-circle-plus\": $fa-var-file-circle-plus,\n \"book-quran\": $fa-var-book-quran,\n \"quran\": $fa-var-quran,\n \"anchor\": $fa-var-anchor,\n \"border-all\": $fa-var-border-all,\n \"face-angry\": $fa-var-face-angry,\n \"angry\": $fa-var-angry,\n \"cookie-bite\": $fa-var-cookie-bite,\n \"arrow-trend-down\": $fa-var-arrow-trend-down,\n \"rss\": $fa-var-rss,\n \"feed\": $fa-var-feed,\n \"draw-polygon\": $fa-var-draw-polygon,\n \"scale-balanced\": $fa-var-scale-balanced,\n \"balance-scale\": $fa-var-balance-scale,\n \"gauge-simple-high\": $fa-var-gauge-simple-high,\n \"tachometer\": $fa-var-tachometer,\n \"tachometer-fast\": $fa-var-tachometer-fast,\n \"shower\": $fa-var-shower,\n \"desktop\": $fa-var-desktop,\n \"desktop-alt\": $fa-var-desktop-alt,\n \"m\": $fa-var-m,\n \"table-list\": $fa-var-table-list,\n \"th-list\": $fa-var-th-list,\n \"comment-sms\": $fa-var-comment-sms,\n \"sms\": $fa-var-sms,\n \"book\": $fa-var-book,\n \"user-plus\": $fa-var-user-plus,\n \"check\": $fa-var-check,\n \"battery-three-quarters\": $fa-var-battery-three-quarters,\n \"battery-4\": $fa-var-battery-4,\n \"house-circle-check\": $fa-var-house-circle-check,\n \"angle-left\": $fa-var-angle-left,\n \"diagram-successor\": $fa-var-diagram-successor,\n \"truck-arrow-right\": $fa-var-truck-arrow-right,\n \"arrows-split-up-and-left\": $fa-var-arrows-split-up-and-left,\n \"hand-fist\": $fa-var-hand-fist,\n \"fist-raised\": $fa-var-fist-raised,\n \"cloud-moon\": $fa-var-cloud-moon,\n \"briefcase\": $fa-var-briefcase,\n \"person-falling\": $fa-var-person-falling,\n \"image-portrait\": $fa-var-image-portrait,\n \"portrait\": $fa-var-portrait,\n \"user-tag\": $fa-var-user-tag,\n \"rug\": $fa-var-rug,\n \"earth-europe\": $fa-var-earth-europe,\n \"globe-europe\": $fa-var-globe-europe,\n \"cart-flatbed-suitcase\": $fa-var-cart-flatbed-suitcase,\n \"luggage-cart\": $fa-var-luggage-cart,\n \"rectangle-xmark\": $fa-var-rectangle-xmark,\n \"rectangle-times\": $fa-var-rectangle-times,\n \"times-rectangle\": $fa-var-times-rectangle,\n \"window-close\": $fa-var-window-close,\n \"baht-sign\": $fa-var-baht-sign,\n \"book-open\": $fa-var-book-open,\n \"book-journal-whills\": $fa-var-book-journal-whills,\n \"journal-whills\": $fa-var-journal-whills,\n \"handcuffs\": $fa-var-handcuffs,\n \"triangle-exclamation\": $fa-var-triangle-exclamation,\n \"exclamation-triangle\": $fa-var-exclamation-triangle,\n \"warning\": $fa-var-warning,\n \"database\": $fa-var-database,\n \"share\": $fa-var-share,\n \"mail-forward\": $fa-var-mail-forward,\n \"bottle-droplet\": $fa-var-bottle-droplet,\n \"mask-face\": $fa-var-mask-face,\n \"hill-rockslide\": $fa-var-hill-rockslide,\n \"right-left\": $fa-var-right-left,\n \"exchange-alt\": $fa-var-exchange-alt,\n \"paper-plane\": $fa-var-paper-plane,\n \"road-circle-exclamation\": $fa-var-road-circle-exclamation,\n \"dungeon\": $fa-var-dungeon,\n \"align-right\": $fa-var-align-right,\n \"money-bill-1-wave\": $fa-var-money-bill-1-wave,\n \"money-bill-wave-alt\": $fa-var-money-bill-wave-alt,\n \"life-ring\": $fa-var-life-ring,\n \"hands\": $fa-var-hands,\n \"sign-language\": $fa-var-sign-language,\n \"signing\": $fa-var-signing,\n \"calendar-day\": $fa-var-calendar-day,\n \"water-ladder\": $fa-var-water-ladder,\n \"ladder-water\": $fa-var-ladder-water,\n \"swimming-pool\": $fa-var-swimming-pool,\n \"arrows-up-down\": $fa-var-arrows-up-down,\n \"arrows-v\": $fa-var-arrows-v,\n \"face-grimace\": $fa-var-face-grimace,\n \"grimace\": $fa-var-grimace,\n \"wheelchair-move\": $fa-var-wheelchair-move,\n \"wheelchair-alt\": $fa-var-wheelchair-alt,\n \"turn-down\": $fa-var-turn-down,\n \"level-down-alt\": $fa-var-level-down-alt,\n \"person-walking-arrow-right\": $fa-var-person-walking-arrow-right,\n \"square-envelope\": $fa-var-square-envelope,\n \"envelope-square\": $fa-var-envelope-square,\n \"dice\": $fa-var-dice,\n \"bowling-ball\": $fa-var-bowling-ball,\n \"brain\": $fa-var-brain,\n \"bandage\": $fa-var-bandage,\n \"band-aid\": $fa-var-band-aid,\n \"calendar-minus\": $fa-var-calendar-minus,\n \"circle-xmark\": $fa-var-circle-xmark,\n \"times-circle\": $fa-var-times-circle,\n \"xmark-circle\": $fa-var-xmark-circle,\n \"gifts\": $fa-var-gifts,\n \"hotel\": $fa-var-hotel,\n \"earth-asia\": $fa-var-earth-asia,\n \"globe-asia\": $fa-var-globe-asia,\n \"id-card-clip\": $fa-var-id-card-clip,\n \"id-card-alt\": $fa-var-id-card-alt,\n \"magnifying-glass-plus\": $fa-var-magnifying-glass-plus,\n \"search-plus\": $fa-var-search-plus,\n \"thumbs-up\": $fa-var-thumbs-up,\n \"user-clock\": $fa-var-user-clock,\n \"hand-dots\": $fa-var-hand-dots,\n \"allergies\": $fa-var-allergies,\n \"file-invoice\": $fa-var-file-invoice,\n \"window-minimize\": $fa-var-window-minimize,\n \"mug-saucer\": $fa-var-mug-saucer,\n \"coffee\": $fa-var-coffee,\n \"brush\": $fa-var-brush,\n \"mask\": $fa-var-mask,\n \"magnifying-glass-minus\": $fa-var-magnifying-glass-minus,\n \"search-minus\": $fa-var-search-minus,\n \"ruler-vertical\": $fa-var-ruler-vertical,\n \"user-large\": $fa-var-user-large,\n \"user-alt\": $fa-var-user-alt,\n \"train-tram\": $fa-var-train-tram,\n \"user-nurse\": $fa-var-user-nurse,\n \"syringe\": $fa-var-syringe,\n \"cloud-sun\": $fa-var-cloud-sun,\n \"stopwatch-20\": $fa-var-stopwatch-20,\n \"square-full\": $fa-var-square-full,\n \"magnet\": $fa-var-magnet,\n \"jar\": $fa-var-jar,\n \"note-sticky\": $fa-var-note-sticky,\n \"sticky-note\": $fa-var-sticky-note,\n \"bug-slash\": $fa-var-bug-slash,\n \"arrow-up-from-water-pump\": $fa-var-arrow-up-from-water-pump,\n \"bone\": $fa-var-bone,\n \"table-cells-row-unlock\": $fa-var-table-cells-row-unlock,\n \"user-injured\": $fa-var-user-injured,\n \"face-sad-tear\": $fa-var-face-sad-tear,\n \"sad-tear\": $fa-var-sad-tear,\n \"plane\": $fa-var-plane,\n \"tent-arrows-down\": $fa-var-tent-arrows-down,\n \"exclamation\": $fa-var-exclamation,\n \"arrows-spin\": $fa-var-arrows-spin,\n \"print\": $fa-var-print,\n \"turkish-lira-sign\": $fa-var-turkish-lira-sign,\n \"try\": $fa-var-try,\n \"turkish-lira\": $fa-var-turkish-lira,\n \"dollar-sign\": $fa-var-dollar-sign,\n \"dollar\": $fa-var-dollar,\n \"usd\": $fa-var-usd,\n \"x\": $fa-var-x,\n \"magnifying-glass-dollar\": $fa-var-magnifying-glass-dollar,\n \"search-dollar\": $fa-var-search-dollar,\n \"users-gear\": $fa-var-users-gear,\n \"users-cog\": $fa-var-users-cog,\n \"person-military-pointing\": $fa-var-person-military-pointing,\n \"building-columns\": $fa-var-building-columns,\n \"bank\": $fa-var-bank,\n \"institution\": $fa-var-institution,\n \"museum\": $fa-var-museum,\n \"university\": $fa-var-university,\n \"umbrella\": $fa-var-umbrella,\n \"trowel\": $fa-var-trowel,\n \"d\": $fa-var-d,\n \"stapler\": $fa-var-stapler,\n \"masks-theater\": $fa-var-masks-theater,\n \"theater-masks\": $fa-var-theater-masks,\n \"kip-sign\": $fa-var-kip-sign,\n \"hand-point-left\": $fa-var-hand-point-left,\n \"handshake-simple\": $fa-var-handshake-simple,\n \"handshake-alt\": $fa-var-handshake-alt,\n \"jet-fighter\": $fa-var-jet-fighter,\n \"fighter-jet\": $fa-var-fighter-jet,\n \"square-share-nodes\": $fa-var-square-share-nodes,\n \"share-alt-square\": $fa-var-share-alt-square,\n \"barcode\": $fa-var-barcode,\n \"plus-minus\": $fa-var-plus-minus,\n \"video\": $fa-var-video,\n \"video-camera\": $fa-var-video-camera,\n \"graduation-cap\": $fa-var-graduation-cap,\n \"mortar-board\": $fa-var-mortar-board,\n \"hand-holding-medical\": $fa-var-hand-holding-medical,\n \"person-circle-check\": $fa-var-person-circle-check,\n \"turn-up\": $fa-var-turn-up,\n \"level-up-alt\": $fa-var-level-up-alt,\n);\n\n$fa-brand-icons: (\n \"monero\": $fa-var-monero,\n \"hooli\": $fa-var-hooli,\n \"yelp\": $fa-var-yelp,\n \"cc-visa\": $fa-var-cc-visa,\n \"lastfm\": $fa-var-lastfm,\n \"shopware\": $fa-var-shopware,\n \"creative-commons-nc\": $fa-var-creative-commons-nc,\n \"aws\": $fa-var-aws,\n \"redhat\": $fa-var-redhat,\n \"yoast\": $fa-var-yoast,\n \"cloudflare\": $fa-var-cloudflare,\n \"ups\": $fa-var-ups,\n \"pixiv\": $fa-var-pixiv,\n \"wpexplorer\": $fa-var-wpexplorer,\n \"dyalog\": $fa-var-dyalog,\n \"bity\": $fa-var-bity,\n \"stackpath\": $fa-var-stackpath,\n \"buysellads\": $fa-var-buysellads,\n \"first-order\": $fa-var-first-order,\n \"modx\": $fa-var-modx,\n \"guilded\": $fa-var-guilded,\n \"vnv\": $fa-var-vnv,\n \"square-js\": $fa-var-square-js,\n \"js-square\": $fa-var-js-square,\n \"microsoft\": $fa-var-microsoft,\n \"qq\": $fa-var-qq,\n \"orcid\": $fa-var-orcid,\n \"java\": $fa-var-java,\n \"invision\": $fa-var-invision,\n \"creative-commons-pd-alt\": $fa-var-creative-commons-pd-alt,\n \"centercode\": $fa-var-centercode,\n \"glide-g\": $fa-var-glide-g,\n \"drupal\": $fa-var-drupal,\n \"jxl\": $fa-var-jxl,\n \"dart-lang\": $fa-var-dart-lang,\n \"hire-a-helper\": $fa-var-hire-a-helper,\n \"creative-commons-by\": $fa-var-creative-commons-by,\n \"unity\": $fa-var-unity,\n \"whmcs\": $fa-var-whmcs,\n \"rocketchat\": $fa-var-rocketchat,\n \"vk\": $fa-var-vk,\n \"untappd\": $fa-var-untappd,\n \"mailchimp\": $fa-var-mailchimp,\n \"css3-alt\": $fa-var-css3-alt,\n \"square-reddit\": $fa-var-square-reddit,\n \"reddit-square\": $fa-var-reddit-square,\n \"vimeo-v\": $fa-var-vimeo-v,\n \"contao\": $fa-var-contao,\n \"square-font-awesome\": $fa-var-square-font-awesome,\n \"deskpro\": $fa-var-deskpro,\n \"brave\": $fa-var-brave,\n \"sistrix\": $fa-var-sistrix,\n \"square-instagram\": $fa-var-square-instagram,\n \"instagram-square\": $fa-var-instagram-square,\n \"battle-net\": $fa-var-battle-net,\n \"the-red-yeti\": $fa-var-the-red-yeti,\n \"square-hacker-news\": $fa-var-square-hacker-news,\n \"hacker-news-square\": $fa-var-hacker-news-square,\n \"edge\": $fa-var-edge,\n \"threads\": $fa-var-threads,\n \"napster\": $fa-var-napster,\n \"square-snapchat\": $fa-var-square-snapchat,\n \"snapchat-square\": $fa-var-snapchat-square,\n \"google-plus-g\": $fa-var-google-plus-g,\n \"artstation\": $fa-var-artstation,\n \"markdown\": $fa-var-markdown,\n \"sourcetree\": $fa-var-sourcetree,\n \"google-plus\": $fa-var-google-plus,\n \"diaspora\": $fa-var-diaspora,\n \"foursquare\": $fa-var-foursquare,\n \"stack-overflow\": $fa-var-stack-overflow,\n \"github-alt\": $fa-var-github-alt,\n \"phoenix-squadron\": $fa-var-phoenix-squadron,\n \"pagelines\": $fa-var-pagelines,\n \"algolia\": $fa-var-algolia,\n \"red-river\": $fa-var-red-river,\n \"creative-commons-sa\": $fa-var-creative-commons-sa,\n \"safari\": $fa-var-safari,\n \"google\": $fa-var-google,\n \"square-font-awesome-stroke\": $fa-var-square-font-awesome-stroke,\n \"font-awesome-alt\": $fa-var-font-awesome-alt,\n \"atlassian\": $fa-var-atlassian,\n \"linkedin-in\": $fa-var-linkedin-in,\n \"digital-ocean\": $fa-var-digital-ocean,\n \"nimblr\": $fa-var-nimblr,\n \"chromecast\": $fa-var-chromecast,\n \"evernote\": $fa-var-evernote,\n \"hacker-news\": $fa-var-hacker-news,\n \"creative-commons-sampling\": $fa-var-creative-commons-sampling,\n \"adversal\": $fa-var-adversal,\n \"creative-commons\": $fa-var-creative-commons,\n \"watchman-monitoring\": $fa-var-watchman-monitoring,\n \"fonticons\": $fa-var-fonticons,\n \"weixin\": $fa-var-weixin,\n \"shirtsinbulk\": $fa-var-shirtsinbulk,\n \"codepen\": $fa-var-codepen,\n \"git-alt\": $fa-var-git-alt,\n \"lyft\": $fa-var-lyft,\n \"rev\": $fa-var-rev,\n \"windows\": $fa-var-windows,\n \"wizards-of-the-coast\": $fa-var-wizards-of-the-coast,\n \"square-viadeo\": $fa-var-square-viadeo,\n \"viadeo-square\": $fa-var-viadeo-square,\n \"meetup\": $fa-var-meetup,\n \"centos\": $fa-var-centos,\n \"adn\": $fa-var-adn,\n \"cloudsmith\": $fa-var-cloudsmith,\n \"opensuse\": $fa-var-opensuse,\n \"pied-piper-alt\": $fa-var-pied-piper-alt,\n \"square-dribbble\": $fa-var-square-dribbble,\n \"dribbble-square\": $fa-var-dribbble-square,\n \"codiepie\": $fa-var-codiepie,\n \"node\": $fa-var-node,\n \"mix\": $fa-var-mix,\n \"steam\": $fa-var-steam,\n \"cc-apple-pay\": $fa-var-cc-apple-pay,\n \"scribd\": $fa-var-scribd,\n \"debian\": $fa-var-debian,\n \"openid\": $fa-var-openid,\n \"instalod\": $fa-var-instalod,\n \"expeditedssl\": $fa-var-expeditedssl,\n \"sellcast\": $fa-var-sellcast,\n \"square-twitter\": $fa-var-square-twitter,\n \"twitter-square\": $fa-var-twitter-square,\n \"r-project\": $fa-var-r-project,\n \"delicious\": $fa-var-delicious,\n \"freebsd\": $fa-var-freebsd,\n \"vuejs\": $fa-var-vuejs,\n \"accusoft\": $fa-var-accusoft,\n \"ioxhost\": $fa-var-ioxhost,\n \"fonticons-fi\": $fa-var-fonticons-fi,\n \"app-store\": $fa-var-app-store,\n \"cc-mastercard\": $fa-var-cc-mastercard,\n \"itunes-note\": $fa-var-itunes-note,\n \"golang\": $fa-var-golang,\n \"kickstarter\": $fa-var-kickstarter,\n \"square-kickstarter\": $fa-var-square-kickstarter,\n \"grav\": $fa-var-grav,\n \"weibo\": $fa-var-weibo,\n \"uncharted\": $fa-var-uncharted,\n \"firstdraft\": $fa-var-firstdraft,\n \"square-youtube\": $fa-var-square-youtube,\n \"youtube-square\": $fa-var-youtube-square,\n \"wikipedia-w\": $fa-var-wikipedia-w,\n \"wpressr\": $fa-var-wpressr,\n \"rendact\": $fa-var-rendact,\n \"angellist\": $fa-var-angellist,\n \"galactic-republic\": $fa-var-galactic-republic,\n \"nfc-directional\": $fa-var-nfc-directional,\n \"skype\": $fa-var-skype,\n \"joget\": $fa-var-joget,\n \"fedora\": $fa-var-fedora,\n \"stripe-s\": $fa-var-stripe-s,\n \"meta\": $fa-var-meta,\n \"laravel\": $fa-var-laravel,\n \"hotjar\": $fa-var-hotjar,\n \"bluetooth-b\": $fa-var-bluetooth-b,\n \"square-letterboxd\": $fa-var-square-letterboxd,\n \"sticker-mule\": $fa-var-sticker-mule,\n \"creative-commons-zero\": $fa-var-creative-commons-zero,\n \"hips\": $fa-var-hips,\n \"behance\": $fa-var-behance,\n \"reddit\": $fa-var-reddit,\n \"discord\": $fa-var-discord,\n \"chrome\": $fa-var-chrome,\n \"app-store-ios\": $fa-var-app-store-ios,\n \"cc-discover\": $fa-var-cc-discover,\n \"wpbeginner\": $fa-var-wpbeginner,\n \"confluence\": $fa-var-confluence,\n \"shoelace\": $fa-var-shoelace,\n \"mdb\": $fa-var-mdb,\n \"dochub\": $fa-var-dochub,\n \"accessible-icon\": $fa-var-accessible-icon,\n \"ebay\": $fa-var-ebay,\n \"amazon\": $fa-var-amazon,\n \"unsplash\": $fa-var-unsplash,\n \"yarn\": $fa-var-yarn,\n \"square-steam\": $fa-var-square-steam,\n \"steam-square\": $fa-var-steam-square,\n \"500px\": $fa-var-500px,\n \"square-vimeo\": $fa-var-square-vimeo,\n \"vimeo-square\": $fa-var-vimeo-square,\n \"asymmetrik\": $fa-var-asymmetrik,\n \"font-awesome\": $fa-var-font-awesome,\n \"font-awesome-flag\": $fa-var-font-awesome-flag,\n \"font-awesome-logo-full\": $fa-var-font-awesome-logo-full,\n \"gratipay\": $fa-var-gratipay,\n \"apple\": $fa-var-apple,\n \"hive\": $fa-var-hive,\n \"gitkraken\": $fa-var-gitkraken,\n \"keybase\": $fa-var-keybase,\n \"apple-pay\": $fa-var-apple-pay,\n \"padlet\": $fa-var-padlet,\n \"amazon-pay\": $fa-var-amazon-pay,\n \"square-github\": $fa-var-square-github,\n \"github-square\": $fa-var-github-square,\n \"stumbleupon\": $fa-var-stumbleupon,\n \"fedex\": $fa-var-fedex,\n \"phoenix-framework\": $fa-var-phoenix-framework,\n \"shopify\": $fa-var-shopify,\n \"neos\": $fa-var-neos,\n \"square-threads\": $fa-var-square-threads,\n \"hackerrank\": $fa-var-hackerrank,\n \"researchgate\": $fa-var-researchgate,\n \"swift\": $fa-var-swift,\n \"angular\": $fa-var-angular,\n \"speakap\": $fa-var-speakap,\n \"angrycreative\": $fa-var-angrycreative,\n \"y-combinator\": $fa-var-y-combinator,\n \"empire\": $fa-var-empire,\n \"envira\": $fa-var-envira,\n \"google-scholar\": $fa-var-google-scholar,\n \"square-gitlab\": $fa-var-square-gitlab,\n \"gitlab-square\": $fa-var-gitlab-square,\n \"studiovinari\": $fa-var-studiovinari,\n \"pied-piper\": $fa-var-pied-piper,\n \"wordpress\": $fa-var-wordpress,\n \"product-hunt\": $fa-var-product-hunt,\n \"firefox\": $fa-var-firefox,\n \"linode\": $fa-var-linode,\n \"goodreads\": $fa-var-goodreads,\n \"square-odnoklassniki\": $fa-var-square-odnoklassniki,\n \"odnoklassniki-square\": $fa-var-odnoklassniki-square,\n \"jsfiddle\": $fa-var-jsfiddle,\n \"sith\": $fa-var-sith,\n \"themeisle\": $fa-var-themeisle,\n \"page4\": $fa-var-page4,\n \"hashnode\": $fa-var-hashnode,\n \"react\": $fa-var-react,\n \"cc-paypal\": $fa-var-cc-paypal,\n \"squarespace\": $fa-var-squarespace,\n \"cc-stripe\": $fa-var-cc-stripe,\n \"creative-commons-share\": $fa-var-creative-commons-share,\n \"bitcoin\": $fa-var-bitcoin,\n \"keycdn\": $fa-var-keycdn,\n \"opera\": $fa-var-opera,\n \"itch-io\": $fa-var-itch-io,\n \"umbraco\": $fa-var-umbraco,\n \"galactic-senate\": $fa-var-galactic-senate,\n \"ubuntu\": $fa-var-ubuntu,\n \"draft2digital\": $fa-var-draft2digital,\n \"stripe\": $fa-var-stripe,\n \"houzz\": $fa-var-houzz,\n \"gg\": $fa-var-gg,\n \"dhl\": $fa-var-dhl,\n \"square-pinterest\": $fa-var-square-pinterest,\n \"pinterest-square\": $fa-var-pinterest-square,\n \"xing\": $fa-var-xing,\n \"blackberry\": $fa-var-blackberry,\n \"creative-commons-pd\": $fa-var-creative-commons-pd,\n \"playstation\": $fa-var-playstation,\n \"quinscape\": $fa-var-quinscape,\n \"less\": $fa-var-less,\n \"blogger-b\": $fa-var-blogger-b,\n \"opencart\": $fa-var-opencart,\n \"vine\": $fa-var-vine,\n \"signal-messenger\": $fa-var-signal-messenger,\n \"paypal\": $fa-var-paypal,\n \"gitlab\": $fa-var-gitlab,\n \"typo3\": $fa-var-typo3,\n \"reddit-alien\": $fa-var-reddit-alien,\n \"yahoo\": $fa-var-yahoo,\n \"dailymotion\": $fa-var-dailymotion,\n \"affiliatetheme\": $fa-var-affiliatetheme,\n \"pied-piper-pp\": $fa-var-pied-piper-pp,\n \"bootstrap\": $fa-var-bootstrap,\n \"odnoklassniki\": $fa-var-odnoklassniki,\n \"nfc-symbol\": $fa-var-nfc-symbol,\n \"mintbit\": $fa-var-mintbit,\n \"ethereum\": $fa-var-ethereum,\n \"speaker-deck\": $fa-var-speaker-deck,\n \"creative-commons-nc-eu\": $fa-var-creative-commons-nc-eu,\n \"patreon\": $fa-var-patreon,\n \"avianex\": $fa-var-avianex,\n \"ello\": $fa-var-ello,\n \"gofore\": $fa-var-gofore,\n \"bimobject\": $fa-var-bimobject,\n \"brave-reverse\": $fa-var-brave-reverse,\n \"facebook-f\": $fa-var-facebook-f,\n \"square-google-plus\": $fa-var-square-google-plus,\n \"google-plus-square\": $fa-var-google-plus-square,\n \"web-awesome\": $fa-var-web-awesome,\n \"mandalorian\": $fa-var-mandalorian,\n \"first-order-alt\": $fa-var-first-order-alt,\n \"osi\": $fa-var-osi,\n \"google-wallet\": $fa-var-google-wallet,\n \"d-and-d-beyond\": $fa-var-d-and-d-beyond,\n \"periscope\": $fa-var-periscope,\n \"fulcrum\": $fa-var-fulcrum,\n \"cloudscale\": $fa-var-cloudscale,\n \"forumbee\": $fa-var-forumbee,\n \"mizuni\": $fa-var-mizuni,\n \"schlix\": $fa-var-schlix,\n \"square-xing\": $fa-var-square-xing,\n \"xing-square\": $fa-var-xing-square,\n \"bandcamp\": $fa-var-bandcamp,\n \"wpforms\": $fa-var-wpforms,\n \"cloudversify\": $fa-var-cloudversify,\n \"usps\": $fa-var-usps,\n \"megaport\": $fa-var-megaport,\n \"magento\": $fa-var-magento,\n \"spotify\": $fa-var-spotify,\n \"optin-monster\": $fa-var-optin-monster,\n \"fly\": $fa-var-fly,\n \"aviato\": $fa-var-aviato,\n \"itunes\": $fa-var-itunes,\n \"cuttlefish\": $fa-var-cuttlefish,\n \"blogger\": $fa-var-blogger,\n \"flickr\": $fa-var-flickr,\n \"viber\": $fa-var-viber,\n \"soundcloud\": $fa-var-soundcloud,\n \"digg\": $fa-var-digg,\n \"tencent-weibo\": $fa-var-tencent-weibo,\n \"letterboxd\": $fa-var-letterboxd,\n \"symfony\": $fa-var-symfony,\n \"maxcdn\": $fa-var-maxcdn,\n \"etsy\": $fa-var-etsy,\n \"facebook-messenger\": $fa-var-facebook-messenger,\n \"audible\": $fa-var-audible,\n \"think-peaks\": $fa-var-think-peaks,\n \"bilibili\": $fa-var-bilibili,\n \"erlang\": $fa-var-erlang,\n \"x-twitter\": $fa-var-x-twitter,\n \"cotton-bureau\": $fa-var-cotton-bureau,\n \"dashcube\": $fa-var-dashcube,\n \"42-group\": $fa-var-42-group,\n \"innosoft\": $fa-var-innosoft,\n \"stack-exchange\": $fa-var-stack-exchange,\n \"elementor\": $fa-var-elementor,\n \"square-pied-piper\": $fa-var-square-pied-piper,\n \"pied-piper-square\": $fa-var-pied-piper-square,\n \"creative-commons-nd\": $fa-var-creative-commons-nd,\n \"palfed\": $fa-var-palfed,\n \"superpowers\": $fa-var-superpowers,\n \"resolving\": $fa-var-resolving,\n \"xbox\": $fa-var-xbox,\n \"square-web-awesome-stroke\": $fa-var-square-web-awesome-stroke,\n \"searchengin\": $fa-var-searchengin,\n \"tiktok\": $fa-var-tiktok,\n \"square-facebook\": $fa-var-square-facebook,\n \"facebook-square\": $fa-var-facebook-square,\n \"renren\": $fa-var-renren,\n \"linux\": $fa-var-linux,\n \"glide\": $fa-var-glide,\n \"linkedin\": $fa-var-linkedin,\n \"hubspot\": $fa-var-hubspot,\n \"deploydog\": $fa-var-deploydog,\n \"twitch\": $fa-var-twitch,\n \"flutter\": $fa-var-flutter,\n \"ravelry\": $fa-var-ravelry,\n \"mixer\": $fa-var-mixer,\n \"square-lastfm\": $fa-var-square-lastfm,\n \"lastfm-square\": $fa-var-lastfm-square,\n \"vimeo\": $fa-var-vimeo,\n \"mendeley\": $fa-var-mendeley,\n \"uniregistry\": $fa-var-uniregistry,\n \"figma\": $fa-var-figma,\n \"creative-commons-remix\": $fa-var-creative-commons-remix,\n \"cc-amazon-pay\": $fa-var-cc-amazon-pay,\n \"dropbox\": $fa-var-dropbox,\n \"instagram\": $fa-var-instagram,\n \"cmplid\": $fa-var-cmplid,\n \"upwork\": $fa-var-upwork,\n \"facebook\": $fa-var-facebook,\n \"gripfire\": $fa-var-gripfire,\n \"jedi-order\": $fa-var-jedi-order,\n \"uikit\": $fa-var-uikit,\n \"fort-awesome-alt\": $fa-var-fort-awesome-alt,\n \"phabricator\": $fa-var-phabricator,\n \"ussunnah\": $fa-var-ussunnah,\n \"earlybirds\": $fa-var-earlybirds,\n \"trade-federation\": $fa-var-trade-federation,\n \"autoprefixer\": $fa-var-autoprefixer,\n \"whatsapp\": $fa-var-whatsapp,\n \"square-upwork\": $fa-var-square-upwork,\n \"slideshare\": $fa-var-slideshare,\n \"google-play\": $fa-var-google-play,\n \"viadeo\": $fa-var-viadeo,\n \"line\": $fa-var-line,\n \"google-drive\": $fa-var-google-drive,\n \"servicestack\": $fa-var-servicestack,\n \"simplybuilt\": $fa-var-simplybuilt,\n \"bitbucket\": $fa-var-bitbucket,\n \"imdb\": $fa-var-imdb,\n \"deezer\": $fa-var-deezer,\n \"raspberry-pi\": $fa-var-raspberry-pi,\n \"jira\": $fa-var-jira,\n \"docker\": $fa-var-docker,\n \"screenpal\": $fa-var-screenpal,\n \"bluetooth\": $fa-var-bluetooth,\n \"gitter\": $fa-var-gitter,\n \"d-and-d\": $fa-var-d-and-d,\n \"microblog\": $fa-var-microblog,\n \"cc-diners-club\": $fa-var-cc-diners-club,\n \"gg-circle\": $fa-var-gg-circle,\n \"pied-piper-hat\": $fa-var-pied-piper-hat,\n \"kickstarter-k\": $fa-var-kickstarter-k,\n \"yandex\": $fa-var-yandex,\n \"readme\": $fa-var-readme,\n \"html5\": $fa-var-html5,\n \"sellsy\": $fa-var-sellsy,\n \"square-web-awesome\": $fa-var-square-web-awesome,\n \"sass\": $fa-var-sass,\n \"wirsindhandwerk\": $fa-var-wirsindhandwerk,\n \"wsh\": $fa-var-wsh,\n \"buromobelexperte\": $fa-var-buromobelexperte,\n \"salesforce\": $fa-var-salesforce,\n \"octopus-deploy\": $fa-var-octopus-deploy,\n \"medapps\": $fa-var-medapps,\n \"ns8\": $fa-var-ns8,\n \"pinterest-p\": $fa-var-pinterest-p,\n \"apper\": $fa-var-apper,\n \"fort-awesome\": $fa-var-fort-awesome,\n \"waze\": $fa-var-waze,\n \"bluesky\": $fa-var-bluesky,\n \"cc-jcb\": $fa-var-cc-jcb,\n \"snapchat\": $fa-var-snapchat,\n \"snapchat-ghost\": $fa-var-snapchat-ghost,\n \"fantasy-flight-games\": $fa-var-fantasy-flight-games,\n \"rust\": $fa-var-rust,\n \"wix\": $fa-var-wix,\n \"square-behance\": $fa-var-square-behance,\n \"behance-square\": $fa-var-behance-square,\n \"supple\": $fa-var-supple,\n \"webflow\": $fa-var-webflow,\n \"rebel\": $fa-var-rebel,\n \"css3\": $fa-var-css3,\n \"staylinked\": $fa-var-staylinked,\n \"kaggle\": $fa-var-kaggle,\n \"space-awesome\": $fa-var-space-awesome,\n \"deviantart\": $fa-var-deviantart,\n \"cpanel\": $fa-var-cpanel,\n \"goodreads-g\": $fa-var-goodreads-g,\n \"square-git\": $fa-var-square-git,\n \"git-square\": $fa-var-git-square,\n \"square-tumblr\": $fa-var-square-tumblr,\n \"tumblr-square\": $fa-var-tumblr-square,\n \"trello\": $fa-var-trello,\n \"creative-commons-nc-jp\": $fa-var-creative-commons-nc-jp,\n \"get-pocket\": $fa-var-get-pocket,\n \"perbyte\": $fa-var-perbyte,\n \"grunt\": $fa-var-grunt,\n \"weebly\": $fa-var-weebly,\n \"connectdevelop\": $fa-var-connectdevelop,\n \"leanpub\": $fa-var-leanpub,\n \"black-tie\": $fa-var-black-tie,\n \"themeco\": $fa-var-themeco,\n \"python\": $fa-var-python,\n \"android\": $fa-var-android,\n \"bots\": $fa-var-bots,\n \"free-code-camp\": $fa-var-free-code-camp,\n \"hornbill\": $fa-var-hornbill,\n \"js\": $fa-var-js,\n \"ideal\": $fa-var-ideal,\n \"git\": $fa-var-git,\n \"dev\": $fa-var-dev,\n \"sketch\": $fa-var-sketch,\n \"yandex-international\": $fa-var-yandex-international,\n \"cc-amex\": $fa-var-cc-amex,\n \"uber\": $fa-var-uber,\n \"github\": $fa-var-github,\n \"php\": $fa-var-php,\n \"alipay\": $fa-var-alipay,\n \"youtube\": $fa-var-youtube,\n \"skyatlas\": $fa-var-skyatlas,\n \"firefox-browser\": $fa-var-firefox-browser,\n \"replyd\": $fa-var-replyd,\n \"suse\": $fa-var-suse,\n \"jenkins\": $fa-var-jenkins,\n \"twitter\": $fa-var-twitter,\n \"rockrms\": $fa-var-rockrms,\n \"pinterest\": $fa-var-pinterest,\n \"buffer\": $fa-var-buffer,\n \"npm\": $fa-var-npm,\n \"yammer\": $fa-var-yammer,\n \"btc\": $fa-var-btc,\n \"dribbble\": $fa-var-dribbble,\n \"stumbleupon-circle\": $fa-var-stumbleupon-circle,\n \"internet-explorer\": $fa-var-internet-explorer,\n \"stubber\": $fa-var-stubber,\n \"telegram\": $fa-var-telegram,\n \"telegram-plane\": $fa-var-telegram-plane,\n \"old-republic\": $fa-var-old-republic,\n \"odysee\": $fa-var-odysee,\n \"square-whatsapp\": $fa-var-square-whatsapp,\n \"whatsapp-square\": $fa-var-whatsapp-square,\n \"node-js\": $fa-var-node-js,\n \"edge-legacy\": $fa-var-edge-legacy,\n \"slack\": $fa-var-slack,\n \"slack-hash\": $fa-var-slack-hash,\n \"medrt\": $fa-var-medrt,\n \"usb\": $fa-var-usb,\n \"tumblr\": $fa-var-tumblr,\n \"vaadin\": $fa-var-vaadin,\n \"quora\": $fa-var-quora,\n \"square-x-twitter\": $fa-var-square-x-twitter,\n \"reacteurope\": $fa-var-reacteurope,\n \"medium\": $fa-var-medium,\n \"medium-m\": $fa-var-medium-m,\n \"amilia\": $fa-var-amilia,\n \"mixcloud\": $fa-var-mixcloud,\n \"flipboard\": $fa-var-flipboard,\n \"viacoin\": $fa-var-viacoin,\n \"critical-role\": $fa-var-critical-role,\n \"sitrox\": $fa-var-sitrox,\n \"discourse\": $fa-var-discourse,\n \"joomla\": $fa-var-joomla,\n \"mastodon\": $fa-var-mastodon,\n \"airbnb\": $fa-var-airbnb,\n \"wolf-pack-battalion\": $fa-var-wolf-pack-battalion,\n \"buy-n-large\": $fa-var-buy-n-large,\n \"gulp\": $fa-var-gulp,\n \"creative-commons-sampling-plus\": $fa-var-creative-commons-sampling-plus,\n \"strava\": $fa-var-strava,\n \"ember\": $fa-var-ember,\n \"canadian-maple-leaf\": $fa-var-canadian-maple-leaf,\n \"teamspeak\": $fa-var-teamspeak,\n \"pushed\": $fa-var-pushed,\n \"wordpress-simple\": $fa-var-wordpress-simple,\n \"nutritionix\": $fa-var-nutritionix,\n \"wodu\": $fa-var-wodu,\n \"google-pay\": $fa-var-google-pay,\n \"intercom\": $fa-var-intercom,\n \"zhihu\": $fa-var-zhihu,\n \"korvue\": $fa-var-korvue,\n \"pix\": $fa-var-pix,\n \"steam-symbol\": $fa-var-steam-symbol,\n);\n","// icons in a list\n// -------------------------\n\n.#{$fa-css-prefix}-ul {\n list-style-type: none;\n margin-left: var(--#{$fa-css-prefix}-li-margin, #{$fa-li-margin});\n padding-left: 0;\n\n > li { position: relative; }\n}\n\n.#{$fa-css-prefix}-li {\n left: calc(-1 * var(--#{$fa-css-prefix}-li-width, #{$fa-li-width}));\n position: absolute;\n text-align: center;\n width: var(--#{$fa-css-prefix}-li-width, #{$fa-li-width});\n line-height: inherit;\n}\n","// bordered + pulled icons\n// -------------------------\n\n.#{$fa-css-prefix}-border {\n border-color: var(--#{$fa-css-prefix}-border-color, #{$fa-border-color});\n border-radius: var(--#{$fa-css-prefix}-border-radius, #{$fa-border-radius});\n border-style: var(--#{$fa-css-prefix}-border-style, #{$fa-border-style});\n border-width: var(--#{$fa-css-prefix}-border-width, #{$fa-border-width});\n padding: var(--#{$fa-css-prefix}-border-padding, #{$fa-border-padding});\n}\n\n.#{$fa-css-prefix}-pull-left {\n float: left;\n margin-right: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); \n}\n\n.#{$fa-css-prefix}-pull-right {\n float: right;\n margin-left: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); \n}\n","// animating icons\n// --------------------------\n\n.#{$fa-css-prefix}-beat {\n animation-name: #{$fa-css-prefix}-beat;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);\n}\n\n.#{$fa-css-prefix}-bounce {\n animation-name: #{$fa-css-prefix}-bounce;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1));\n}\n\n.#{$fa-css-prefix}-fade {\n animation-name: #{$fa-css-prefix}-fade;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));\n}\n\n.#{$fa-css-prefix}-beat-fade {\n animation-name: #{$fa-css-prefix}-beat-fade;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));\n}\n\n.#{$fa-css-prefix}-flip {\n animation-name: #{$fa-css-prefix}-flip;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);\n}\n\n.#{$fa-css-prefix}-shake {\n animation-name: #{$fa-css-prefix}-shake;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);\n}\n\n.#{$fa-css-prefix}-spin {\n animation-name: #{$fa-css-prefix}-spin;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 2s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);\n}\n\n.#{$fa-css-prefix}-spin-reverse {\n --#{$fa-css-prefix}-animation-direction: reverse;\n}\n\n.#{$fa-css-prefix}-pulse,\n.#{$fa-css-prefix}-spin-pulse {\n animation-name: #{$fa-css-prefix}-spin;\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, steps(8));\n}\n\n// if agent or operating system prefers reduced motion, disable animations\n// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/\n// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion\n@media (prefers-reduced-motion: reduce) {\n .#{$fa-css-prefix}-beat,\n .#{$fa-css-prefix}-bounce,\n .#{$fa-css-prefix}-fade,\n .#{$fa-css-prefix}-beat-fade,\n .#{$fa-css-prefix}-flip,\n .#{$fa-css-prefix}-pulse,\n .#{$fa-css-prefix}-shake,\n .#{$fa-css-prefix}-spin,\n .#{$fa-css-prefix}-spin-pulse {\n animation-delay: -1ms;\n animation-duration: 1ms;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n\n@keyframes #{$fa-css-prefix}-beat {\n 0%, 90% { transform: scale(1); }\n 45% { transform: scale(var(--#{$fa-css-prefix}-beat-scale, 1.25)); }\n}\n\n@keyframes #{$fa-css-prefix}-bounce {\n 0% { transform: scale(1,1) translateY(0); }\n 10% { transform: scale(var(--#{$fa-css-prefix}-bounce-start-scale-x, 1.1),var(--#{$fa-css-prefix}-bounce-start-scale-y, 0.9)) translateY(0); }\n 30% { transform: scale(var(--#{$fa-css-prefix}-bounce-jump-scale-x, 0.9),var(--#{$fa-css-prefix}-bounce-jump-scale-y, 1.1)) translateY(var(--#{$fa-css-prefix}-bounce-height, -0.5em)); }\n 50% { transform: scale(var(--#{$fa-css-prefix}-bounce-land-scale-x, 1.05),var(--#{$fa-css-prefix}-bounce-land-scale-y, 0.95)) translateY(0); }\n 57% { transform: scale(1,1) translateY(var(--#{$fa-css-prefix}-bounce-rebound, -0.125em)); }\n 64% { transform: scale(1,1) translateY(0); }\n 100% { transform: scale(1,1) translateY(0); }\n}\n\n@keyframes #{$fa-css-prefix}-fade {\n 50% { opacity: var(--#{$fa-css-prefix}-fade-opacity, 0.4); }\n}\n\n@keyframes #{$fa-css-prefix}-beat-fade {\n 0%, 100% {\n opacity: var(--#{$fa-css-prefix}-beat-fade-opacity, 0.4);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n transform: scale(var(--#{$fa-css-prefix}-beat-fade-scale, 1.125));\n }\n}\n\n@keyframes #{$fa-css-prefix}-flip {\n 50% {\n transform: rotate3d(var(--#{$fa-css-prefix}-flip-x, 0), var(--#{$fa-css-prefix}-flip-y, 1), var(--#{$fa-css-prefix}-flip-z, 0), var(--#{$fa-css-prefix}-flip-angle, -180deg));\n }\n}\n\n@keyframes #{$fa-css-prefix}-shake {\n 0% { transform: rotate(-15deg); }\n 4% { transform: rotate(15deg); }\n 8%, 24% { transform: rotate(-18deg); }\n 12%, 28% { transform: rotate(18deg); }\n 16% { transform: rotate(-22deg); }\n 20% { transform: rotate(22deg); }\n 32% { transform: rotate(-12deg); }\n 36% { transform: rotate(12deg); }\n 40%, 100% { transform: rotate(0deg); }\n}\n\n@keyframes #{$fa-css-prefix}-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n","// rotating + flipping icons\n// -------------------------\n\n.#{$fa-css-prefix}-rotate-90 {\n transform: rotate(90deg);\n}\n\n.#{$fa-css-prefix}-rotate-180 {\n transform: rotate(180deg);\n}\n\n.#{$fa-css-prefix}-rotate-270 {\n transform: rotate(270deg);\n}\n\n.#{$fa-css-prefix}-flip-horizontal {\n transform: scale(-1, 1);\n}\n\n.#{$fa-css-prefix}-flip-vertical {\n transform: scale(1, -1);\n}\n\n.#{$fa-css-prefix}-flip-both,\n.#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical {\n transform: scale(-1, -1);\n}\n\n.#{$fa-css-prefix}-rotate-by {\n transform: rotate(var(--#{$fa-css-prefix}-rotate-angle, 0));\n}\n","// stacking icons\n// -------------------------\n\n.#{$fa-css-prefix}-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: $fa-stack-vertical-align;\n width: $fa-stack-width;\n}\n\n.#{$fa-css-prefix}-stack-1x,\n.#{$fa-css-prefix}-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%;\n z-index: var(--#{$fa-css-prefix}-stack-z-index, #{$fa-stack-z-index});\n}\n\n.#{$fa-css-prefix}-stack-1x {\n line-height: inherit;\n}\n\n.#{$fa-css-prefix}-stack-2x {\n font-size: 2em;\n}\n\n.#{$fa-css-prefix}-inverse {\n color: var(--#{$fa-css-prefix}-inverse, #{$fa-inverse});\n}\n","// specific icon class definition\n// -------------------------\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n\n@each $name, $icon in $fa-icons {\n .#{$fa-css-prefix}-#{$name}::before { content: unquote(\"\\\"#{ $icon }\\\"\"); }\n}\n\n","// screen-reader utilities\n// -------------------------\n\n// only display content to screen readers\n.sr-only,\n.#{$fa-css-prefix}-sr-only {\n @include fa-sr-only;\n}\n\n// use in conjunction with .sr-only to only display content when it's focused\n.sr-only-focusable,\n.#{$fa-css-prefix}-sr-only-focusable {\n @include fa-sr-only-focusable;\n}\n","/*!\n * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n@import 'functions';\n@import 'variables';\n\n:root, :host {\n --#{$fa-css-prefix}-style-family-classic: '#{ $fa-style-family }';\n --#{$fa-css-prefix}-font-solid: normal 900 1em/1 '#{ $fa-style-family }';\n}\n\n\n@font-face {\n font-family: 'Font Awesome 6 Free';\n font-style: normal;\n font-weight: 900;\n font-display: $fa-font-display;\n src: url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),\n url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype');\n}\n\n.fas,\n.#{$fa-css-prefix}-solid {\n font-weight: 900;\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"css/stylesheet.css","mappings":"AAAA;;;CAGC;;AAED;;;;;;;;;;;;;CAaC,SAAS;CACT,UAAU;CACV,SAAS;CACT,eAAe;CACf,aAAa;CACb,wBAAwB;AACzB;AACA,gDAAgD;AAChD;;CAEC,cAAc;AACf;AACA,kDAAkD;AAClD;IACI,aAAa;AACjB;AACA;CACC,cAAc;AACf;AACA;CACC,gBAAgB;AACjB;AACA;CACC,YAAY;AACb;AACA;;CAEC,WAAW;CACX,aAAa;AACd;AACA;CACC,yBAAyB;CACzB,iBAAiB;AAClB;;ACnDA;;;;;CAKC;AACD;;;CAGC;AACD,2EAA2E;;AAE3E;+EAC+E;;AAE/E;;;EAGE;;AAEF;EACE,iBAAiB,EAAE,MAAM;EACzB,8BAA8B,EAAE,MAAM;AACxC;;AAEA;+EAC+E;;AAE/E;;EAEE;;AAEF;EACE,SAAS;AACX;;AAEA;;EAEE;;AAEF;EACE,cAAc;AAChB;;AAEA;;;EAGE;;AAEF;EACE,cAAc;EACd,gBAAgB;AAClB;;AAEA;+EAC+E;;AAE/E;;;EAGE;;AAEF;EACE,uBAAuB,EAAE,MAAM;EAC/B,SAAS,EAAE,MAAM;EACjB,iBAAiB,EAAE,MAAM;AAC3B;;AAEA;;;EAGE;;AAEF;EACE,iCAAiC,EAAE,MAAM;EACzC,cAAc,EAAE,MAAM;AACxB;;AAEA;+EAC+E;;AAE/E;;EAEE;;AAEF;EACE,6BAA6B;AAC/B;;AAEA;;;EAGE;;AAEF;EACE,mBAAmB,EAAE,MAAM;EAC3B,0BAA0B,EAAE,MAAM;EAClC,yCAAyC;UACjC,iCAAiC,EAAE,MAAM;AACnD;;AAEA;;EAEE;;AAEF;;EAEE,mBAAmB;AACrB;;AAEA;;;EAGE;;AAEF;;;EAGE,iCAAiC,EAAE,MAAM;EACzC,cAAc,EAAE,MAAM;AACxB;;AAEA;;EAEE;;AAEF;EACE,cAAc;AAChB;;AAEA;;;EAGE;;AAEF;;EAEE,cAAc;EACd,cAAc;EACd,kBAAkB;EAClB,wBAAwB;AAC1B;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,WAAW;AACb;;AAEA;+EAC+E;;AAE/E;;EAEE;;AAEF;EACE,kBAAkB;AACpB;;AAEA;+EAC+E;;AAE/E;;;EAGE;;AAEF;;;;;EAKE,oBAAoB,EAAE,MAAM;EAC5B,eAAe,EAAE,MAAM;EACvB,iBAAiB,EAAE,MAAM;EACzB,SAAS,EAAE,MAAM;AACnB;;AAEA;;;EAGE;;AAEF;QACQ,MAAM;EACZ,iBAAiB;AACnB;;AAEA;;;EAGE;;AAEF;SACS,MAAM;EACb,oBAAoB;AACtB;;AAEA;;EAEE;;AAEF;;;;EAIE,0BAA0B;AAC5B;;AAEA;;EAEE;;AAEF;;;;EAIE,kBAAkB;EAClB,UAAU;AACZ;;AAEA;;EAEE;;AAEF;;;;EAIE,8BAA8B;AAChC;;AAEA;;EAEE;;AAEF;EACE,8BAA8B;AAChC;;AAEA;;;;;EAKE;;AAEF;EACE,sBAAsB,EAAE,MAAM;EAC9B,cAAc,EAAE,MAAM;EACtB,cAAc,EAAE,MAAM;EACtB,eAAe,EAAE,MAAM;EACvB,UAAU,EAAE,MAAM;EAClB,mBAAmB,EAAE,MAAM;AAC7B;;AAEA;;EAEE;;AAEF;EACE,wBAAwB;AAC1B;;AAEA;;EAEE;;AAEF;EACE,cAAc;AAChB;;AAEA;;;EAGE;;AAEF;;EAEE,sBAAsB,EAAE,MAAM;EAC9B,UAAU,EAAE,MAAM;AACpB;;AAEA;;EAEE;;AAEF;;EAEE,YAAY;AACd;;AAEA;;;EAGE;;AAEF;EACE,6BAA6B,EAAE,MAAM;EACrC,oBAAoB,EAAE,MAAM;AAC9B;;AAEA;;EAEE;;AAEF;EACE,wBAAwB;AAC1B;;AAEA;;;EAGE;;AAEF;EACE,0BAA0B,EAAE,MAAM;EAClC,aAAa,EAAE,MAAM;AACvB;;AAEA;+EAC+E;;AAE/E;;EAEE;;AAEF;EACE,cAAc;AAChB;;AAEA;;EAEE;;AAEF;EACE,kBAAkB;AACpB;;AAEA;+EAC+E;;AAE/E;;EAEE;;AAEF;EACE,aAAa;AACf;;AAEA;;EAEE;;AAEF;EACE,aAAa;AACf;;AAEA,0BAA0B;;AAE1B;;+EAE+E;;AAE/E;;EAEE;;AAEF;IACI,uBAAuB;AAC3B;;AAEA;;EAEE;;AAEF;;IAEI,wBAAwB;AAC5B;;AAEA;;;EAGE;AACF;IACI,eAAe;IACf,YAAY;IACZ,cAAc;AAClB;;AAEA,oFAAoF;;AAEpF;IACI,aAAa;IACb,mBAAmB;;IAEnB,6CAA6C;IAC7C,yBAAyB;AAC7B;;AAEA;IACI,qBAAqB;IACrB,mBAAmB;AACvB;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8CI,qBAAqB;IACrB,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;AACxB;;AAEA;IACI,cAAc;AAClB;;AAEA;;IAEI,cAAc;AAClB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,UAAU;AACd;;AAEA;IACI,eAAe;AACnB;;AAEA;;IAEI,UAAU;AACd;;AAEA;IACI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,UAAU;AACd;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,eAAe;AACnB;;AAEA;;IAEI,UAAU;AACd;;AAEA;IACI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,UAAU;AACd;;AAEA;;IAEI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,eAAe;AACnB;;AAEA;;IAEI,UAAU;AACd;;AAEA;IACI,eAAe;AACnB;;AAEA;IACI,UAAU;AACd;;AAEA;;IAEI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,eAAe;AACnB;;AAEA;;;;IAII,WAAW;AACf;AACA;IACI,cAAc;IACd,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,sBAAsB;IACtB,kBAAkB;IAClB,eAAe;IACf,uBAAuB;IACvB,yBAAyB;YACjB,iBAAiB;IACzB,sBAAsB;AAC1B;;AAEA,+CAA+C;AAC/C;IACI,UAAU;IACV,SAAS;AACb;;AAEA,2BAA2B;AAC3B;IACI,uBAAuB,EAAE,+CAA+C;IACxE,6BAA6B,EAAE,qDAAqD;AACxF;;AAEA;;IAEI,qBAAqB;AACzB;;AAEA;IACI,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;AACxB;;AAEA,6BAA6B;;AAE7B;IACI,oBAAoB;IACpB,eAAe;IACf,kBAAkB;IAClB,0BAA0B;IAC1B,6BAA6B;IAC7B,yBAAyB;IACzB,qBAAqB;IACrB,kBAAkB;AACtB;;AAEA;;;IAGI,wFAAwF;AAC5F;AACA;IACI,UAAU;AACd;AACA;;IAEI,8EAA8E;IAC9E,kBAAkB;AACtB;;AAEA;;;;;IAKI,YAAY;IACZ,sBAAsB;IACtB,aAAa;IACb,mBAAmB;IACnB,gBAAgB;IAChB,oBAAoB;AACxB;;AAEA;IACI,aAAa;AACjB;;AAEA;;;;IAII,kCAAkC;IAClC,WAAW;AACf;;AAEA,kBAAkB;AAClB;IACI,SAAS;IACT,gBAAgB;IAChB,0CAA0C;;AAE9C;;AAEA;IACI,2BAA2B;IAC3B,8BAA8B;AAClC;AACA;IACI,4BAA4B;IAC5B,+BAA+B;IAC/B,kBAAkB;AACtB;;AAEA,0BAA0B;AAC1B;;;;;CAKC;;AAED;;;;;;;;;;;;;;;;IAgBI,oBAAoB;IACpB,qBAAqB;IACrB,sBAAsB;IACtB,gCAAgC;IAChC,kBAAkB;IAClB,sBAAsB;IACtB,sBAAsB;AAC1B;;AAEA;;;CAGC;AACD;IACI,oBAAoB;IACpB,qBAAqB;IACrB,sBAAsB;IACtB,gCAAgC;IAChC,kBAAkB;IAClB,sBAAsB;AAC1B;;;AAGA,+EAA+E;AAC/E,+FAA+F;AAC/F;IACI,oBAAoB;AACxB;;;AAGA;;;;;;;;;;;;;;;;IAgBI,UAAU;IACV,qBAAqB;AACzB;;AAEA;;;CAGC;AACD;IACI,UAAU;IACV,qBAAqB;AACzB;;AAEA;;;IAGI,2BAA2B;IAC3B,yBAAyB;AAC7B;AACA;;IAEI,eAAe;IACf,cAAc;AAClB;;AAEA;;;;;;;;;;;;;;;;IAgBI,mBAAmB;IACnB,yBAAyB;IACzB,cAAc;AAClB;;AAEA;;;CAGC;AACD;IACI,mBAAmB;IACnB,yBAAyB;IACzB,cAAc;AAClB;AACA;;;IAGI,sBAAsB,EAAE,wBAAwB;IAChD,WAAW,EAAE,oBAAoB;IACjC,kBAAkB;AACtB;;AAEA;;;IAGI,cAAc;IACd,qBAAqB;AACzB;AACA;;;IAGI,sBAAsB;AAC1B;AACA;IACI,sDAAsD;IACtD,cAAc;IACd,sBAAsB;IACtB,uBAAuB;AAC3B;AACA;IACI,YAAY;AAChB;AACA;IACI,qBAAqB;AACzB;AACA;IACI,SAAS;IACT,wBAAwB;IACxB,SAAS;AACb;AACA;IACI,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,oBAAoB;IACpB,WAAW;IACX,gCAAgC;AACpC;;AAEA;;;;;;;;;;;;;;;;;;IAkBI,cAAc;IACd,gBAAgB;AACpB;;AAEA;;;CAGC;AACD;IACI,cAAc;IACd,gBAAgB;AACpB;AACA;;;;IAII,qBAAqB;IACrB,sBAAsB;AAC1B;AACA;IACI,mBAAmB;AACvB;;AAEA,kBAAkB;AAClB;IACI,oBAAoB;AACxB;AACA;IACI,iBAAiB;IACjB,qBAAqB;IACrB,sBAAsB;IACtB,WAAW;IACX,iBAAiB;AACrB;AACA;IACI,sBAAsB;AAC1B;;AAEA,mBAAmB;AACnB;;IAEI,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA,mBAAmB;AACnB;IACI,mBAAmB;AACvB;AACA;;IAEI,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;AACb;AACA;;IAEI,UAAU;AACd;AACA;;IAEI,QAAQ;IACR,0BAA0B;IAC1B,SAAS;AACb;AACA;;IAEI,QAAQ;IACR,kBAAkB;IAClB,SAAS;AACb;AACA;;IAEI,SAAS;IACT,0BAA0B;IAC1B,SAAS;AACb;AACA;IACI,gBAAgB;AACpB;;AAEA;IACI,WAAW;AACf;AACA;IACI,UAAU;AACd;AACA;IACI,UAAU;AACd;AACA;IACI,UAAU;AACd;AACA;IACI,UAAU;AACd;AACA;IACI,UAAU;AACd;;AAEA,0BAA0B;AAC1B;IACI,qBAAqB;IACrB,mBAAmB;IACnB,WAAW;IACX,sBAAsB;IACtB,kBAAkB;AACtB;;AAEA,yBAAyB;AACzB;IACI,cAAc;IACd,WAAW;IACX,kBAAkB;AACtB;;AAEA;IACI;QACI,iBAAiB;IACrB;;IAEA;;;;;;;;;;;;;;;;QAgBI,oBAAoB;QACpB,cAAc;IAClB;;IAEA;;;;;;;;;;;;;;;QAeI,gBAAgB;IACpB;;IAEA;QACI,oBAAoB;QACpB,gBAAgB;QAChB,cAAc;QACd,WAAW;IACf;;IAEA;QACI,mBAAmB;IACvB;;IAEA;;QAEI,cAAc;QACd,iBAAiB;QACjB,8EAA8E;QAC9E,sBAAsB;IAC1B;AACJ;;AAEA,oDAAoD;AACpD;IACI,sBAAsB;AAC1B;;AAEA;IACI,eAAe;IACf,OAAO;IACP,MAAM;IACN,UAAU;AACd;;AAEA;;IAEI,kBAAkB;AACtB;;AAEA;IACI,gBAAgB;IAChB,SAAS;IACT,UAAU;AACd;;AAEA;IACI,UAAU;IACV,SAAS;IACT,YAAY;AAChB;;AAEA;;IAEI,cAAc;IACd,qBAAqB;IACrB,mBAAmB;AACvB;;AAEA,oBAAoB;AACpB;IACI,WAAW;IACX,mBAAmB;AACvB;;AAEA;IACI,qBAAqB;AACzB;;AAEA,qEAAqE;AACrE;;;IAGI,qBAAqB;IACrB,sBAAsB;AAC1B;;AAEA,6CAA6C;AAC7C;IACI,cAAc;AAClB;;AAEA;IACI,aAAa;IACb,kBAAkB;IAClB,UAAU;IACV,MAAM;IACN,SAAS;IACT,UAAU;IACV,UAAU;AACd;;AAEA;IACI,OAAO;IACP,SAAS;IACT,cAAc;AAClB;;AAEA;;IAEI,cAAc;IACd,kBAAkB;AACtB;;AAEA,6CAA6C;AAC7C;IACI,mBAAmB;IACnB,gBAAgB;IAChB,gBAAgB;AACpB;;AAEA,+CAA+C;AAC/C;IACI,gBAAgB;AACpB;;AAEA,qBAAqB;AACrB;IACI,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,cAAc;AAClB;;AAEA;IACI,qBAAqB;AACzB;;AAEA;IACI,mBAAmB;IACnB,kBAAkB;IAClB,gBAAgB;IAChB,kEAAkE;IAClE,eAAe;AACnB;;AAEA,yBAAyB;;AAEzB;;IAEI,sBAAsB;IACtB,WAAW;IACX,cAAc;AAClB;;AAEA;IACI,UAAU;IACV,aAAa;IACb,eAAe;AACnB;;AAEA,0DAA0D;AAC1D;IACI,cAAc;IACd,WAAW;AACf;;AAEA;IACI,yBAAyB;IACzB,cAAc;AAClB;;AAEA;IACI,WAAW;AACf;;AAEA;IACI,sBAAsB;AAC1B;;AAEA;;IAEI,iBAAiB;AACrB;;AAEA;IACI,WAAW;AACf;;AAEA;IACI,6BAA6B;IAC7B,eAAe;AACnB;;AAEA;;;IAGI,sBAAsB;AAC1B;;AAEA;;IAEI,WAAW;AACf;;AAEA;IACI,4DAA4D;IAC5D,yBAAyB;IACzB,iBAAiB;IACjB,iBAAiB;IACjB,yBAAyB;AAC7B;;AAEA;IACI,WAAW;IACX,oCAAoC;IACpC,cAAc;IACd,kBAAkB;AACtB;;AAEA;;IAEI,8BAA8B,CAAC,yBAAyB;IACxD,uBAAuB;IACvB,kBAAkB;IAClB,SAAS;IACT,iBAAiB,EAAE,kDAAkD;IACrE,kBAAkB,EAAE,iBAAiB;AACzC;;AAEA;IACI,yBAAyB;IACzB,WAAW;IACX,gBAAgB;IAChB,sBAAsB;AAC1B;;AAEA;;;;CAIC;AACD;IACI,6BAA6B;AACjC;AACA;IACI,yBAAyB;AAC7B;;AAEA,2CAA2C;AAC3C;IACI,yBAAyB;AAC7B;;AAEA,oBAAoB;AACpB;IACI,gCAAgC;AACpC;AACA;IACI,sBAAsB;AAC1B;;;AAGA,+BAA+B;;AAE/B;;IAEI,uBAAuB;IACvB,gCAAgC;AACpC;AACA;IACI,sBAAsB;AAC1B;;AC9xCA;EACE,cAAc;EACd,gBAAgB;EAChB;AACF;AACA;EACE;AACF;AACA;;;;;;CAMC;AACD;;;;;;;CAOC;AACD;;;;;;;;;;;;;;;;;CAiBC;AACD;EACE,cAAc;EACd,gBAAgB;EAChB;AACF;AACA;EACE;AACF;AACA;EACE,cAAc;EACd;AACF;AACA;;EAEE,yBAAyB;EACzB;AACF;AACA,4CAA4C;AAC5C;;;;AAIA;AACA,gEAAgE;AAChE;EACE;AACF;AACA,+DAA+D;AAC/D;EACE;AACF;AACA,yEAAyE;AACzE;;;EAGE;AACF;AACA;EACE;AACF;AACA,+EAA+E;AAC/E;;;;;;EAME;AACF;AACA,2EAA2E;AAC3E;;;;;;EAME;AACF;AACA,0DAA0D;AAC1D;;;EAGE;AACF;AACA;EACE,iBAAiB;EACjB;AACF;AACA,kEAAkE;AAClE;;;;EAIE;AACF;AACA,4EAA4E;AAC5E,aAAa;AACb;;;;;EAKE;AACF;AACA,yDAAyD;AACzD;;;;;EAKE;AACF;AACA,sEAAsE;AACtE,uBAAuB;AACvB,0BAA0B;AAC1B,yBAAyB;AACzB,2BAA2B;AAC3B;;;;EAIE;AACF;AACA;EACE,cAAc;EACd;AACF;AACA,+EAA+E;AAC/E;;;CAGC;AACD;;;EAGE;AACF;AACA,8BAA8B;AAC9B;;EAEE;AACF,C;AChKQ;;;;ECFR,CCGA,IACE,0DACA,iCAGF,oDAOE,kCACA,mCACA,wCACA,kBACA,oBACA,cACA,oBAGF,4GAOE,kBAGF,4CAKE,kCAEF,gBAEE,oCCtCA,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,QACE,eAMF,QCIA,iBACA,iBACA,sBDNA,OCIA,gBACA,0BACA,sBDNA,OCIA,iBACA,0BACA,6BDNA,OCIA,iBACA,kBACA,uBDNA,OCIA,gBACA,0BACA,wBDNA,QCIA,cACA,qBACA,yBCfF,OACE,kBACA,YCO0B,CCT5B,OACE,qBACA,uCACA,eAEA,4BAGF,OACE,sCACA,kBACA,kBACA,8BACA,oBCbF,WACE,0CACA,6CACA,2CACA,4CACA,sDAGF,cACE,WACA,0CAGF,eACE,YACA,yCCfF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,kEAGF,WACE,yBACA,8CACA,0DACA,oDACA,wEACA,wFAGF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,mFAGF,cACE,4BACA,8CACA,0DACA,oDACA,wEACA,mFAGF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,kEAGF,UACE,wBACA,8CACA,0DACA,oDACA,wEACA,6DAGF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,6DAGF,iBACE,kCAGF,yBAEE,uBACA,0DACA,oDACA,wEACA,+DAMF,uCACE,gGASE,qBACA,uBACA,4BACA,oBACA,wBAIJ,mBACE,0BACA,iDAGF,qBACE,uCACA,4GACA,wIACA,4GACA,yEACA,wCACA,0CAGF,mBACE,yCAGF,wBACE,QACE,yCACA,mBAEF,IACE,UACA,mDAIJ,mBACE,IACE,kHAIJ,oBACE,4BACA,2BACA,gCACA,gCACA,6BACA,4BACA,6BACA,4BACA,iCAGF,mBACE,0BACA,+BCnJF,cACE,wBAGF,eACE,yBAGF,eACE,yBAGF,oBACE,uBAGF,kBACE,uBAGF,mDAEE,wBAGF,cACE,4CC1BF,UACE,qBACA,WACA,gBACA,kBACA,qBLsC0B,CKrC1B,WLsC0B,CKnC5B,0BAEE,OACA,kBACA,kBACA,WACA,sCAGF,aACE,oBAGF,aACE,cAGF,YACE,8BCvBA,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,cACE,SACA,cAFF,qBACE,SACA,cAFF,yBACE,SACA,cAFF,yBACE,SACA,cAFF,OACE,UACA,gBAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,qCACE,SACA,cAFF,iBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,wBACE,SACA,cAFF,gCACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,sBACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,cACE,SACA,cAFF,uBACE,SACA,cAFF,iBACE,SACA,cAFF,SACE,SACA,cAFF,SACE,SACA,cAFF,UACE,SACA,cAFF,4BACE,SACA,cAFF,2BACE,SACA,cAFF,yBACE,SACA,cAFF,wBACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,qBACE,SACA,cAFF,8BACE,SACA,cAFF,oBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,8BACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,mBACE,SACA,cAFF,SACE,SACA,cAFF,wBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,SACE,SACA,cAFF,6BACE,SACA,cAFF,mBACE,SACA,cAFF,8BACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,4BACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,MACE,SACA,cAFF,kBACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,sBACE,SACA,cAFF,mBACE,SACA,cAFF,mBACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,8BACE,SACA,cAFF,iBACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,yBACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,oBACE,SACA,cAFF,mBACE,SACA,cAFF,sBACE,SACA,cAFF,0BACE,SACA,cAFF,4BACE,SACA,cAFF,uBACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,MACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,yBACE,SACA,cAFF,eACE,SACA,cAFF,QACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,kBACE,SACA,cAFF,0BACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,qBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,6BACE,SACA,cAFF,yBACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,QACE,SACA,cAFF,mBACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,iCACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,yBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,wBACE,SACA,cAFF,SACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,6BACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,qBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,wBACE,SACA,cAFF,6BACE,SACA,cAFF,aACE,SACA,cAFF,wBACE,SACA,cAFF,wBACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,wBACE,SACA,cAFF,sBACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,0BACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,wBACE,SACA,cAFF,aACE,UACA,gBAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,sBACE,SACA,cAFF,qBACE,SACA,cAFF,cACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,QACE,SACA,cAFF,+BACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,uBACE,SACA,cAFF,mBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,oBACE,SACA,cAFF,wBACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,OACE,SACA,cAFF,SACE,SACA,cAFF,uBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,wBACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,sBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,WACE,SACA,cAFF,MACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,MACE,SACA,cAFF,0BACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,sBACE,SACA,cAFF,0BACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,iCACE,SACA,cAFF,YACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,MACE,SACA,cAFF,MACE,SACA,cAFF,kBACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,qBACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,oBACE,SACA,cAFF,0BACE,SACA,cAFF,WACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,qBACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,2BACE,SACA,cAFF,wBACE,SACA,cAFF,wBACE,SACA,cAFF,MACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,8BACE,SACA,cAFF,SACE,SACA,cAFF,wBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,sBACE,SACA,cAFF,gBACE,SACA,cAFF,mBACE,SACA,cAFF,MACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,wBACE,SACA,cAFF,QACE,SACA,cAFF,WACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,QACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,sBACE,SACA,cAFF,qBACE,SACA,cAFF,WACE,SACA,cAFF,2BACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,wBACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,wBACE,SACA,cAFF,6BACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,UACE,SACA,cAFF,2BACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,WACE,SACA,cAFF,sBACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,yBACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,qBACE,SACA,cAFF,iBACE,SACA,cAFF,qBACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,iBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,MACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,qBACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,cACE,SACA,cAFF,6BACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,YACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,iBACE,SACA,cAFF,qBACE,SACA,cAFF,mBACE,SACA,cAFF,SACE,SACA,cAFF,yBACE,SACA,cAFF,SACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,wBACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,QACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,+BACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,QACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,wBACE,SACA,cAFF,aACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,QACE,SACA,cAFF,SACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,qBACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,mBACE,SACA,cAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,WACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,qBACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,cACE,SACA,cAFF,YACE,SACA,cAFF,2CACE,SACA,cAFF,kBACE,SACA,cAFF,QACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,2BACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,4BACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,yBACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,gBACE,SACA,cAFF,wBACE,SACA,cAFF,0BACE,SACA,cAFF,yBACE,SACA,cAFF,aACE,SACA,cAFF,WACE,SACA,cAFF,QACE,SACA,cAFF,sBACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,sBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,UACE,SACA,cAFF,0BACE,SACA,cAFF,wBACE,SACA,cAFF,cACE,SACA,cAFF,uBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,iBACE,SACA,cAFF,qBACE,SACA,cAFF,YACE,SACA,cAFF,sBACE,SACA,cAFF,SACE,SACA,cAFF,UACE,SACA,cAFF,0BACE,SACA,cAFF,aACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,wBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,0BACE,SACA,cAFF,oBACE,SACA,cAFF,qBACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,sBACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,qBACE,SACA,cAFF,mBACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,qBACE,SACA,cAFF,mBACE,SACA,cAFF,kBACE,SACA,cAFF,2BACE,SACA,cAFF,wBACE,SACA,cAFF,oBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,SACE,SACA,cAFF,sBACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,0BACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,uBACE,SACA,cAFF,wBACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,wBACE,SACA,cAFF,kBACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,WACE,SACA,cAFF,4BACE,SACA,cAFF,WACE,SACA,cAFF,oBACE,SACA,cAFF,aACE,SACA,cAFF,MACE,SACA,cAFF,kBACE,SACA,cAFF,WACE,SACA,cAFF,cACE,SACA,cAFF,MACE,SACA,cAFF,2BACE,SACA,cAFF,qBACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,MACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,OACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,wBACE,SACA,cAFF,WACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,aACE,SACA,cAFF,yBACE,SACA,cAFF,oBACE,SACA,cAFF,WACE,SACA,cAFF,aACE,UACA,gBAFF,mBACE,SACA,cAFF,uBACE,SACA,cAFF,eACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,gCACE,SACA,cAFF,2BACE,SACA,cAFF,+BACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,QACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,MACE,SACA,cAFF,SACE,SACA,cAFF,SACE,SACA,cAFF,SACE,SACA,cAFF,QACE,SACA,cAFF,uBACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,2BACE,SACA,cAFF,uBACE,SACA,cAFF,sBACE,SACA,cAFF,qBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,2BACE,SACA,cAFF,MACE,SACA,cAFF,SACE,SACA,cAFF,uBACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,qBACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,yBACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,uBACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,MACE,SACA,cAFF,wBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,wBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,wBACE,SACA,cAFF,wBACE,SACA,cAFF,yCACE,SACA,cAFF,2BACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,mBACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,yBACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,cACE,SACA,cAFF,WACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,8BACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,QACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,sBACE,SACA,cAFF,8BACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,QACE,SACA,cAFF,sBACE,SACA,cAFF,cACE,SACA,cAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,QACE,SACA,cAFF,uBACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,qBACE,SACA,cAFF,uBACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,wBACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,yBACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,wBACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,mBACE,SACA,cAFF,mBACE,SACA,cAFF,oBACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,qBACE,SACA,cAFF,uBACE,SACA,cAFF,iBACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,UACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,wBACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,MACE,SACA,cAFF,qBACE,SACA,cAFF,eACE,SACA,cAFF,yBACE,SACA,cAFF,sBACE,SACA,cAFF,gBACE,SACA,cAFF,OACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,MACE,SACA,cAFF,qBACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,kBACE,SACA,cAFF,oBACE,SACA,cAFF,sBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,iBACE,SACA,cAFF,yBACE,SACA,cAFF,oBACE,SACA,cAFF,mBACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,QACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,wBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,mBACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,qBACE,SACA,cAFF,sBACE,SACA,cAFF,yBACE,SACA,cAFF,uBACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,gCACE,SACA,cAFF,4BACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,mBACE,SACA,cAFF,oBACE,SACA,cAFF,qBACE,SACA,cAFF,WACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,0BACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,QACE,SACA,cAFF,2BACE,SACA,cAFF,sBACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,+BACE,SACA,cAFF,yBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,sBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,2BACE,SACA,cAFF,wCACE,SACA,cAFF,qBACE,SACA,cAFF,8CACE,SACA,cAFF,SACE,SACA,cAFF,QACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,0BACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,UACE,SACA,cAFF,qBACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,MACE,SACA,cAFF,yBACE,SACA,cAFF,oBACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,sBACE,SACA,cAFF,MACE,SACA,cAFF,aACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,0BACE,SACA,cAFF,mBACE,SACA,cAFF,+BACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,+BACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,UACE,SACA,cAFF,WACE,SACA,cAFF,YACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,yBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,qCACE,SACA,cAFF,sBACE,SACA,cAFF,kBACE,SACA,cAFF,WACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,MACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,0BACE,SACA,cAFF,SACE,SACA,cAFF,wBACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,QACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,YACE,SACA,cAFF,oBACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,6BACE,SACA,cAFF,UACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,MACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,2BACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,wBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,sBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,oBACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,SACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,QACE,SACA,cAFF,QACE,SACA,cAFF,QACE,SACA,cAFF,QACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,QACE,SACA,cAFF,UACE,SACA,cAFF,QACE,SACA,cAFF,WACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,wBACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,qBACE,SACA,cAFF,yBACE,SACA,cAFF,cACE,UACA,gBAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,qBACE,SACA,cAFF,qBACE,SACA,cAFF,wBACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,0BACE,SACA,cAFF,YACE,SACA,cAFF,yBACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,QACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,8BACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,yBACE,SACA,cAFF,mBACE,SACA,cAFF,UACE,SACA,cAFF,QACE,SACA,cAFF,aACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,qBACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,UACA,gBAFF,oBACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,iBACE,SACA,cAFF,SACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,wBACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,6BACE,SACA,cAFF,UACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,sBACE,SACA,cAFF,QACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,gCACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,SACE,SACA,cAFF,yBACE,SACA,cAFF,gBACE,SACA,cAFF,qBACE,SACA,cAFF,WACE,SACA,cAFF,6BACE,SACA,cAFF,0BACE,SACA,cAFF,iBACE,SACA,cAFF,0BACE,SACA,cAFF,cACE,SACA,cAFF,uBACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,qBACE,SACA,cAFF,8BACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,cACE,SACA,cAFF,qBACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,qBACE,SACA,cAFF,wBACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,OACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,MACE,SACA,cAFF,wBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,WACE,SACA,cAFF,iBACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,oBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,SACE,UACA,gBAFF,QACE,UACA,gBAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,aACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,8BACE,SACA,cAFF,WACE,SACA,cAFF,oBACE,SACA,cAFF,uBACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,mBACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,WACE,UACA,gBAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,uBACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,YACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,uBACE,SACA,cAFF,YACE,UACA,gBAFF,eACE,UACA,gBAFF,iBACE,SACA,cAFF,wBACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,YACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,YACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,yBACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,WACE,SACA,cAFF,sBACE,SACA,cAFF,YACE,SACA,cAFF,yBACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,WACE,SACA,cAFF,iBACE,SACA,cAFF,wBACE,SACA,cAFF,uBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,wBACE,SACA,cAFF,yBACE,SACA,cAFF,YACE,SACA,cAFF,yBACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,QACE,SACA,cAFF,WACE,SACA,cAFF,SACE,SACA,cAFF,qBACE,SACA,cAFF,mBACE,SACA,cAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,UACA,gBAFF,uCACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,MACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,sBACE,SACA,cAFF,8BACE,SACA,cAFF,cACE,SACA,cAFF,QACE,SACA,cAFF,2BACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,WACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,qBACE,SACA,cAFF,iBACE,SACA,cAFF,4BACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,mCACE,SACA,cAFF,iBACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,qBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,qBACE,SACA,cAFF,QACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,WACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,MACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,2BACE,SACA,cAFF,cACE,SACA,cAFF,uBACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,6BACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,aACE,SACA,cAFF,QACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,0BACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,iBACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,yBACE,SACA,cAFF,yBACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,4BACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,wBACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,oBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,+BACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,UACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,qBACE,SACA,cAFF,SACE,SACA,cAFF,2BACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,6BACE,SACA,cAFF,SACE,SACA,cAFF,2BACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,UACA,gBAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,sBACE,SACA,cAFF,QACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,UACA,gBAFF,WACE,UACA,gBAFF,QACE,UACA,gBAFF,MACE,SACA,cAFF,4BACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,6BACE,SACA,cAFF,qBACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,aACE,SACA,cAFF,WACE,SACA,cAFF,MACE,SACA,cAFF,YACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,uBACE,SACA,cAFF,qBACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,iBACE,SACA,cAFF,yBACE,SACA,cAFF,wBACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cCLJ,qBTqBE,kBACA,UACA,WACA,UACA,YACA,gBACA,sBACA,mBACA,eAKA,iEAbA,kBACA,UACA,WACA,UACA,YACA,gBACA,sBACA,mBACA,eUjCF;;;;EAAA,CAQA,YACE,iDACA,wDAIF,WACE,kCACA,kBACA,gBACA,kBRgC0B,CQ/B1B,2GAIF,eAEE,gBdRF,EACE,SACA,UAGF,UAEE,YAGF,KACE,uBACA,gBACA,gBAGF,MACE,UACA,iBACA,YACA,kBAGF,WACE,WAGF,yBACE,YAGF,WACE,YAGF,yBACE,WAGF,QACE,kBAGF,UAEE,mBACA,sBAGF,EACE,kBAGF,GACE,aACA,cACA,gBAGF,GACE,aACA,gBACA,gBACA,cACA,6BAGF,GACE,gBACA,cACA,UACA,aAGF,EACE,eACA,kBAGF,EACE,cAEA,oJAME,WACA,sBACA,iBAGF,gBAEE,eAIJ,UACE,gBAGF,GACE,mBAGF,SAEE,iBAGF,qBAKE,sBACA,gBACA,gBAGF,SACE,sBAUF,+BAIE,oCACA,iCACA,gCACA,+BACA,4BAMF,qBACE,WACA,WAOF,MACE,mBACA,WACA,eACA,MACA,QACA,SACA,aACA,kBArLiF,CAsLjF,gBACA,iCAMF,QACE,WACA,YACA,yBAMF,qCAEE,YACA,yBAMF,wDAEE,6BAMF,mDAEE,kBAzNkB,CA0NlB,WAMF,4BACE,WAMF,yBACE,eACA,WACA,SACA,oBAcF,WACE,kBACA,cACA,MACA,QACA,yBACA,WACA,YACA,eACA,qBAEA,kCAEE,eACA,2BAIJ,gBACE,kBACA,cACA,WAGF,+DAGE,+BAGF,4CAEE,qBAKF,oCACE,eACE,kBACA,WAKF,2BACE,eACA,WAGF,aACE,mBAOJ,QACE,YACA,yEAGF,aACE,cACA,YACA,cAGF,MACE,uBACA,gBACA,WACA,8BAGF,QACE,gBAGF,MACE,+BACA,uBACA,gBACA,oBAGF,eACE,uBACA,gBACA,gBACA,4BAGF,cACE,YAMF,QACE,QACA,gBACA,gBAGA,oBAGF,SACE,gBACA,oBAGF,aACE,yBACA,gCACA,yCACA,cACA,eACA,kBAGF,mBACE,yBACA,0BAGF,qBACE,wBA/Wa,CAgXb,0BAGF,qBACE,yBACA,0BAGF,cACE,eACA,UAGF,UACE,kBACA,sBAEA,YACE,aAIJ,kBACE,qBACA,cACA,iBACA,iBACA,qBACA,eACA,YACA,qBACA,sBAEA,6BACE,WACA,kBAnZW,CAuZf,gBACE,6BACA,yBACA,yBAGF,gBACE,UAOF,cAEE,YAGF,QACE,WACA,yEACA,YACA,iBACA,kBACA,WAEA,4BAEE,WAEA,gFAEE,sBACA,WACA,eACA,qBACA,oBACA,qBAKN,YACE,kBACA,cACA,gBAGF,mBACE,kBACA,QACA,QACA,6BAGF,iCACE,WACA,OAGF,aACE,YAMF,WACE,gBACA,WACA,eACA,iBAGF,uCACE,eACA,cAGF,iBACE,WAGF,aACE,aACA,uBAGF,qCAEE,eAGF,wBACE,WAGF,gBACE,kBACA,OACA,QACA,6BAIF,4DAGE,gBAGF,gCACE,kBACA,wBAGF,oBACE,kBAGF,kCACE,kBAGF,aACE,YAGF,2BACE,WAMF,+BACE,yBACA,sBACA,kBACA,QACA,eACA,gBACA,iBAGF,aACE,gBAEA,sCAEE,sBACA,iBACA,WAIJ,iBACE,yBACA,WAEA,8CAEE,sBACA,iBAIJ,oBACE,sBACA,cACA,yBAGF,0BACE,sBAGF,8BACE,YACA,gBACA,oBACA,uBACA,yBACA,sBACA,qBACA,iBAGF,kBACE,qBACA,SACA,+BAEA,gDAEE,yBACA,WAIJ,uFAEE,gBAGF,6CACE,SACA,kBACA,yBAGF,qCACE,eAGF,yDACE,kBAGF,wDACE,+BAGF,2CACE,gBACA,gBAGF,kBACE,kBACA,aAGF,4BACE,aAMF,IACE,wDACA,gBAGF,aAEE,eAGF,uCAEE,UAMF,uBACE,mBACA,WAGF,UACE,iBAGF,WACE,yBAGF,oBACE,gBAOF,oCACE,8BACE,YAIJ,oCACE,MACE,UAGF,kCACE,gBACA,WAGF,QACE,cACA,oBAGF,cACE,UAGF,MACE,gBAGF,QACE,cACA,mBAEA,oBACE,YACA,eAKN,8DACE,qBACE,wBAGF,sBACE,sBAIJ,oCACE,gBACE,yBAIJ,oCACE,gBACE,yBAQJ,iBACE,uBACA,gBACA,gBAGF,OACE,WAGF,aACE,eAGF,YACE,sBACA,WAEA,qBACE,YAGF,qBACE,aACA,YAGF,sBACE,eACA,kBACA,cACA,cACA,WACA,yBACA,0BAEA,wDAEE,sBACA,WAGF,6BACE,YACA,6CACA,gBAKF,8BACE,cACA,6BACA,8BAGF,+BACE,mBACA,0BACA,6BACA,8BAEA,sCACE,YAMR,QACE,aAGF,KACE,wBACA,YACA,WAGF,cACE,iBACA,iBAGF,cACE,gBACA,WAGF,OACE,YAGF,MACE,W","sources":["webpack://simplesamlphp-assets/./node_modules/reset-css/reset.css","webpack://simplesamlphp-assets/./node_modules/purecss/build/pure.css","webpack://simplesamlphp-assets/./node_modules/highlight.js/styles/base16/zenburn.css","webpack://simplesamlphp-assets/./resources/css/default.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_core.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_sizing.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_mixins.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_fixed-width.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_variables.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_list.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_bordered-pulled.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_animated.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_rotated-flipped.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_stacked.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_icons.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_screen-reader.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/solid.scss"],"sourcesContent":["/* http://meyerweb.com/eric/tools/css/reset/\n v5.0.1 | 20191019\n License: none (public domain)\n*/\n\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmain, menu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tfont-size: 100%;\n\tfont: inherit;\n\tvertical-align: baseline;\n}\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, main, menu, nav, section {\n\tdisplay: block;\n}\n/* HTML5 hidden-attribute fix for newer browsers */\n*[hidden] {\n display: none;\n}\nbody {\n\tline-height: 1;\n}\nmenu, ol, ul {\n\tlist-style: none;\n}\nblockquote, q {\n\tquotes: none;\n}\nblockquote:before, blockquote:after,\nq:before, q:after {\n\tcontent: '';\n\tcontent: none;\n}\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n","/*!\nPure v3.0.0\nCopyright 2013 Yahoo!\nLicensed under the BSD License.\nhttps://github.com/pure-css/pure/blob/master/LICENSE\n*/\n/*!\nnormalize.css v | MIT License | https://necolas.github.io/normalize.css/\nCopyright (c) Nicolas Gallagher and Jonathan Neal\n*/\n/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\n/*csslint important:false*/\n\n/* ==========================================================================\n Pure Base Extras\n ========================================================================== */\n\n/**\n * Extra rules that Pure adds on top of Normalize.css\n */\n\nhtml {\n font-family: sans-serif;\n}\n\n/**\n * Always hide an element when it has the `hidden` HTML attribute.\n */\n\n.hidden,\n[hidden] {\n display: none !important;\n}\n\n/**\n * Add this class to an image to make it fit within it's fluid parent wrapper while maintaining\n * aspect ratio.\n */\n.pure-img {\n max-width: 100%;\n height: auto;\n display: block;\n}\n\n/*csslint regex-selectors:false, known-properties:false, duplicate-properties:false*/\n\n.pure-g {\n display: flex;\n flex-flow: row wrap;\n\n /* Prevents distributing space between rows */\n align-content: flex-start;\n}\n\n.pure-u {\n display: inline-block;\n vertical-align: top;\n}\n\n.pure-u-1,\n.pure-u-1-1,\n.pure-u-1-2,\n.pure-u-1-3,\n.pure-u-2-3,\n.pure-u-1-4,\n.pure-u-3-4,\n.pure-u-1-5,\n.pure-u-2-5,\n.pure-u-3-5,\n.pure-u-4-5,\n.pure-u-5-5,\n.pure-u-1-6,\n.pure-u-5-6,\n.pure-u-1-8,\n.pure-u-3-8,\n.pure-u-5-8,\n.pure-u-7-8,\n.pure-u-1-12,\n.pure-u-5-12,\n.pure-u-7-12,\n.pure-u-11-12,\n.pure-u-1-24,\n.pure-u-2-24,\n.pure-u-3-24,\n.pure-u-4-24,\n.pure-u-5-24,\n.pure-u-6-24,\n.pure-u-7-24,\n.pure-u-8-24,\n.pure-u-9-24,\n.pure-u-10-24,\n.pure-u-11-24,\n.pure-u-12-24,\n.pure-u-13-24,\n.pure-u-14-24,\n.pure-u-15-24,\n.pure-u-16-24,\n.pure-u-17-24,\n.pure-u-18-24,\n.pure-u-19-24,\n.pure-u-20-24,\n.pure-u-21-24,\n.pure-u-22-24,\n.pure-u-23-24,\n.pure-u-24-24 {\n display: inline-block;\n letter-spacing: normal;\n word-spacing: normal;\n vertical-align: top;\n text-rendering: auto;\n}\n\n.pure-u-1-24 {\n width: 4.1667%;\n}\n\n.pure-u-1-12,\n.pure-u-2-24 {\n width: 8.3333%;\n}\n\n.pure-u-1-8,\n.pure-u-3-24 {\n width: 12.5000%;\n}\n\n.pure-u-1-6,\n.pure-u-4-24 {\n width: 16.6667%;\n}\n\n.pure-u-1-5 {\n width: 20%;\n}\n\n.pure-u-5-24 {\n width: 20.8333%;\n}\n\n.pure-u-1-4,\n.pure-u-6-24 {\n width: 25%;\n}\n\n.pure-u-7-24 {\n width: 29.1667%;\n}\n\n.pure-u-1-3,\n.pure-u-8-24 {\n width: 33.3333%;\n}\n\n.pure-u-3-8,\n.pure-u-9-24 {\n width: 37.5000%;\n}\n\n.pure-u-2-5 {\n width: 40%;\n}\n\n.pure-u-5-12,\n.pure-u-10-24 {\n width: 41.6667%;\n}\n\n.pure-u-11-24 {\n width: 45.8333%;\n}\n\n.pure-u-1-2,\n.pure-u-12-24 {\n width: 50%;\n}\n\n.pure-u-13-24 {\n width: 54.1667%;\n}\n\n.pure-u-7-12,\n.pure-u-14-24 {\n width: 58.3333%;\n}\n\n.pure-u-3-5 {\n width: 60%;\n}\n\n.pure-u-5-8,\n.pure-u-15-24 {\n width: 62.5000%;\n}\n\n.pure-u-2-3,\n.pure-u-16-24 {\n width: 66.6667%;\n}\n\n.pure-u-17-24 {\n width: 70.8333%;\n}\n\n.pure-u-3-4,\n.pure-u-18-24 {\n width: 75%;\n}\n\n.pure-u-19-24 {\n width: 79.1667%;\n}\n\n.pure-u-4-5 {\n width: 80%;\n}\n\n.pure-u-5-6,\n.pure-u-20-24 {\n width: 83.3333%;\n}\n\n.pure-u-7-8,\n.pure-u-21-24 {\n width: 87.5000%;\n}\n\n.pure-u-11-12,\n.pure-u-22-24 {\n width: 91.6667%;\n}\n\n.pure-u-23-24 {\n width: 95.8333%;\n}\n\n.pure-u-1,\n.pure-u-1-1,\n.pure-u-5-5,\n.pure-u-24-24 {\n width: 100%;\n}\n.pure-button {\n /* Structure */\n display: inline-block;\n line-height: normal;\n white-space: nowrap;\n vertical-align: middle;\n text-align: center;\n cursor: pointer;\n -webkit-user-drag: none;\n -webkit-user-select: none;\n user-select: none;\n box-sizing: border-box;\n}\n\n/* Firefox: Get rid of the inner focus border */\n.pure-button::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\n\n/* Inherit .pure-g styles */\n.pure-button-group {\n letter-spacing: -0.31em; /* Webkit: collapse white-space between units */\n text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLegibility */\n}\n\n.opera-only :-o-prefocus,\n.pure-button-group {\n word-spacing: -0.43em;\n}\n\n.pure-button-group .pure-button {\n letter-spacing: normal;\n word-spacing: normal;\n vertical-align: top;\n text-rendering: auto;\n}\n\n/*csslint outline-none:false*/\n\n.pure-button {\n font-family: inherit;\n font-size: 100%;\n padding: 0.5em 1em;\n color: rgba(0, 0, 0, 0.80);\n border: none rgba(0, 0, 0, 0);\n background-color: #E6E6E6;\n text-decoration: none;\n border-radius: 2px;\n}\n\n.pure-button-hover,\n.pure-button:hover,\n.pure-button:focus {\n background-image: linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10));\n}\n.pure-button:focus {\n outline: 0;\n}\n.pure-button-active,\n.pure-button:active {\n box-shadow: 0 0 0 1px rgba(0,0,0, 0.15) inset, 0 0 6px rgba(0,0,0, 0.20) inset;\n border-color: #000;\n}\n\n.pure-button[disabled],\n.pure-button-disabled,\n.pure-button-disabled:hover,\n.pure-button-disabled:focus,\n.pure-button-disabled:active {\n border: none;\n background-image: none;\n opacity: 0.40;\n cursor: not-allowed;\n box-shadow: none;\n pointer-events: none;\n}\n\n.pure-button-hidden {\n display: none;\n}\n\n.pure-button-primary,\n.pure-button-selected,\na.pure-button-primary,\na.pure-button-selected {\n background-color: rgb(0, 120, 231);\n color: #fff;\n}\n\n/* Button Groups */\n.pure-button-group .pure-button {\n margin: 0;\n border-radius: 0;\n border-right: 1px solid rgba(0, 0, 0, 0.2);\n\n}\n\n.pure-button-group .pure-button:first-child {\n border-top-left-radius: 2px;\n border-bottom-left-radius: 2px;\n}\n.pure-button-group .pure-button:last-child {\n border-top-right-radius: 2px;\n border-bottom-right-radius: 2px;\n border-right: none;\n}\n\n/*csslint box-model:false*/\n/*\nBox-model set to false because we're setting a height on select elements, which\nalso have border and padding. This is done because some browsers don't render\nthe padding. We explicitly set the box-model for select elements to border-box,\nso we can ignore the csslint warning.\n*/\n\n.pure-form input[type=\"text\"],\n.pure-form input[type=\"password\"],\n.pure-form input[type=\"email\"],\n.pure-form input[type=\"url\"],\n.pure-form input[type=\"date\"],\n.pure-form input[type=\"month\"],\n.pure-form input[type=\"time\"],\n.pure-form input[type=\"datetime\"],\n.pure-form input[type=\"datetime-local\"],\n.pure-form input[type=\"week\"],\n.pure-form input[type=\"number\"],\n.pure-form input[type=\"search\"],\n.pure-form input[type=\"tel\"],\n.pure-form input[type=\"color\"],\n.pure-form select,\n.pure-form textarea {\n padding: 0.5em 0.6em;\n display: inline-block;\n border: 1px solid #ccc;\n box-shadow: inset 0 1px 3px #ddd;\n border-radius: 4px;\n vertical-align: middle;\n box-sizing: border-box;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form input:not([type]) {\n padding: 0.5em 0.6em;\n display: inline-block;\n border: 1px solid #ccc;\n box-shadow: inset 0 1px 3px #ddd;\n border-radius: 4px;\n box-sizing: border-box;\n}\n\n\n/* Chrome (as of v.32/34 on OS X) needs additional room for color to display. */\n/* May be able to remove this tweak as color inputs become more standardized across browsers. */\n.pure-form input[type=\"color\"] {\n padding: 0.2em 0.5em;\n}\n\n\n.pure-form input[type=\"text\"]:focus,\n.pure-form input[type=\"password\"]:focus,\n.pure-form input[type=\"email\"]:focus,\n.pure-form input[type=\"url\"]:focus,\n.pure-form input[type=\"date\"]:focus,\n.pure-form input[type=\"month\"]:focus,\n.pure-form input[type=\"time\"]:focus,\n.pure-form input[type=\"datetime\"]:focus,\n.pure-form input[type=\"datetime-local\"]:focus,\n.pure-form input[type=\"week\"]:focus,\n.pure-form input[type=\"number\"]:focus,\n.pure-form input[type=\"search\"]:focus,\n.pure-form input[type=\"tel\"]:focus,\n.pure-form input[type=\"color\"]:focus,\n.pure-form select:focus,\n.pure-form textarea:focus {\n outline: 0;\n border-color: #129FEA;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form input:not([type]):focus {\n outline: 0;\n border-color: #129FEA;\n}\n\n.pure-form input[type=\"file\"]:focus,\n.pure-form input[type=\"radio\"]:focus,\n.pure-form input[type=\"checkbox\"]:focus {\n outline: thin solid #129FEA;\n outline: 1px auto #129FEA;\n}\n.pure-form .pure-checkbox,\n.pure-form .pure-radio {\n margin: 0.5em 0;\n display: block;\n}\n\n.pure-form input[type=\"text\"][disabled],\n.pure-form input[type=\"password\"][disabled],\n.pure-form input[type=\"email\"][disabled],\n.pure-form input[type=\"url\"][disabled],\n.pure-form input[type=\"date\"][disabled],\n.pure-form input[type=\"month\"][disabled],\n.pure-form input[type=\"time\"][disabled],\n.pure-form input[type=\"datetime\"][disabled],\n.pure-form input[type=\"datetime-local\"][disabled],\n.pure-form input[type=\"week\"][disabled],\n.pure-form input[type=\"number\"][disabled],\n.pure-form input[type=\"search\"][disabled],\n.pure-form input[type=\"tel\"][disabled],\n.pure-form input[type=\"color\"][disabled],\n.pure-form select[disabled],\n.pure-form textarea[disabled] {\n cursor: not-allowed;\n background-color: #eaeded;\n color: #cad2d3;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form input:not([type])[disabled] {\n cursor: not-allowed;\n background-color: #eaeded;\n color: #cad2d3;\n}\n.pure-form input[readonly],\n.pure-form select[readonly],\n.pure-form textarea[readonly] {\n background-color: #eee; /* menu hover bg color */\n color: #777; /* menu text color */\n border-color: #ccc;\n}\n\n.pure-form input:focus:invalid,\n.pure-form textarea:focus:invalid,\n.pure-form select:focus:invalid {\n color: #b94a48;\n border-color: #e9322d;\n}\n.pure-form input[type=\"file\"]:focus:invalid:focus,\n.pure-form input[type=\"radio\"]:focus:invalid:focus,\n.pure-form input[type=\"checkbox\"]:focus:invalid:focus {\n outline-color: #e9322d;\n}\n.pure-form select {\n /* Normalizes the height; padding is not sufficient. */\n height: 2.25em;\n border: 1px solid #ccc;\n background-color: white;\n}\n.pure-form select[multiple] {\n height: auto;\n}\n.pure-form label {\n margin: 0.5em 0 0.2em;\n}\n.pure-form fieldset {\n margin: 0;\n padding: 0.35em 0 0.75em;\n border: 0;\n}\n.pure-form legend {\n display: block;\n width: 100%;\n padding: 0.3em 0;\n margin-bottom: 0.3em;\n color: #333;\n border-bottom: 1px solid #e5e5e5;\n}\n\n.pure-form-stacked input[type=\"text\"],\n.pure-form-stacked input[type=\"password\"],\n.pure-form-stacked input[type=\"email\"],\n.pure-form-stacked input[type=\"url\"],\n.pure-form-stacked input[type=\"date\"],\n.pure-form-stacked input[type=\"month\"],\n.pure-form-stacked input[type=\"time\"],\n.pure-form-stacked input[type=\"datetime\"],\n.pure-form-stacked input[type=\"datetime-local\"],\n.pure-form-stacked input[type=\"week\"],\n.pure-form-stacked input[type=\"number\"],\n.pure-form-stacked input[type=\"search\"],\n.pure-form-stacked input[type=\"tel\"],\n.pure-form-stacked input[type=\"color\"],\n.pure-form-stacked input[type=\"file\"],\n.pure-form-stacked select,\n.pure-form-stacked label,\n.pure-form-stacked textarea {\n display: block;\n margin: 0.25em 0;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form-stacked input:not([type]) {\n display: block;\n margin: 0.25em 0;\n}\n.pure-form-aligned input,\n.pure-form-aligned textarea,\n.pure-form-aligned select,\n.pure-form-message-inline {\n display: inline-block;\n vertical-align: middle;\n}\n.pure-form-aligned textarea {\n vertical-align: top;\n}\n\n/* Aligned Forms */\n.pure-form-aligned .pure-control-group {\n margin-bottom: 0.5em;\n}\n.pure-form-aligned .pure-control-group label {\n text-align: right;\n display: inline-block;\n vertical-align: middle;\n width: 10em;\n margin: 0 1em 0 0;\n}\n.pure-form-aligned .pure-controls {\n margin: 1.5em 0 0 11em;\n}\n\n/* Rounded Inputs */\n.pure-form input.pure-input-rounded,\n.pure-form .pure-input-rounded {\n border-radius: 2em;\n padding: 0.5em 1em;\n}\n\n/* Grouped Inputs */\n.pure-form .pure-group fieldset {\n margin-bottom: 10px;\n}\n.pure-form .pure-group input,\n.pure-form .pure-group textarea {\n display: block;\n padding: 10px;\n margin: 0 0 -1px;\n border-radius: 0;\n position: relative;\n top: -1px;\n}\n.pure-form .pure-group input:focus,\n.pure-form .pure-group textarea:focus {\n z-index: 3;\n}\n.pure-form .pure-group input:first-child,\n.pure-form .pure-group textarea:first-child {\n top: 1px;\n border-radius: 4px 4px 0 0;\n margin: 0;\n}\n.pure-form .pure-group input:first-child:last-child,\n.pure-form .pure-group textarea:first-child:last-child {\n top: 1px;\n border-radius: 4px;\n margin: 0;\n}\n.pure-form .pure-group input:last-child,\n.pure-form .pure-group textarea:last-child {\n top: -2px;\n border-radius: 0 0 4px 4px;\n margin: 0;\n}\n.pure-form .pure-group button {\n margin: 0.35em 0;\n}\n\n.pure-form .pure-input-1 {\n width: 100%;\n}\n.pure-form .pure-input-3-4 {\n width: 75%;\n}\n.pure-form .pure-input-2-3 {\n width: 66%;\n}\n.pure-form .pure-input-1-2 {\n width: 50%;\n}\n.pure-form .pure-input-1-3 {\n width: 33%;\n}\n.pure-form .pure-input-1-4 {\n width: 25%;\n}\n\n/* Inline help for forms */\n.pure-form-message-inline {\n display: inline-block;\n padding-left: 0.3em;\n color: #666;\n vertical-align: middle;\n font-size: 0.875em;\n}\n\n/* Block help for forms */\n.pure-form-message {\n display: block;\n color: #666;\n font-size: 0.875em;\n}\n\n@media only screen and (max-width : 480px) {\n .pure-form button[type=\"submit\"] {\n margin: 0.7em 0 0;\n }\n\n .pure-form input:not([type]),\n .pure-form input[type=\"text\"],\n .pure-form input[type=\"password\"],\n .pure-form input[type=\"email\"],\n .pure-form input[type=\"url\"],\n .pure-form input[type=\"date\"],\n .pure-form input[type=\"month\"],\n .pure-form input[type=\"time\"],\n .pure-form input[type=\"datetime\"],\n .pure-form input[type=\"datetime-local\"],\n .pure-form input[type=\"week\"],\n .pure-form input[type=\"number\"],\n .pure-form input[type=\"search\"],\n .pure-form input[type=\"tel\"],\n .pure-form input[type=\"color\"],\n .pure-form label {\n margin-bottom: 0.3em;\n display: block;\n }\n\n .pure-group input:not([type]),\n .pure-group input[type=\"text\"],\n .pure-group input[type=\"password\"],\n .pure-group input[type=\"email\"],\n .pure-group input[type=\"url\"],\n .pure-group input[type=\"date\"],\n .pure-group input[type=\"month\"],\n .pure-group input[type=\"time\"],\n .pure-group input[type=\"datetime\"],\n .pure-group input[type=\"datetime-local\"],\n .pure-group input[type=\"week\"],\n .pure-group input[type=\"number\"],\n .pure-group input[type=\"search\"],\n .pure-group input[type=\"tel\"],\n .pure-group input[type=\"color\"] {\n margin-bottom: 0;\n }\n\n .pure-form-aligned .pure-control-group label {\n margin-bottom: 0.3em;\n text-align: left;\n display: block;\n width: 100%;\n }\n\n .pure-form-aligned .pure-controls {\n margin: 1.5em 0 0 0;\n }\n\n .pure-form-message-inline,\n .pure-form-message {\n display: block;\n font-size: 0.75em;\n /* Increased bottom padding to make it group with its related input element. */\n padding: 0.2em 0 0.8em;\n }\n}\n\n/*csslint adjoining-classes: false, box-model:false*/\n.pure-menu {\n box-sizing: border-box;\n}\n\n.pure-menu-fixed {\n position: fixed;\n left: 0;\n top: 0;\n z-index: 3;\n}\n\n.pure-menu-list,\n.pure-menu-item {\n position: relative;\n}\n\n.pure-menu-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.pure-menu-item {\n padding: 0;\n margin: 0;\n height: 100%;\n}\n\n.pure-menu-link,\n.pure-menu-heading {\n display: block;\n text-decoration: none;\n white-space: nowrap;\n}\n\n/* HORIZONTAL MENU */\n.pure-menu-horizontal {\n width: 100%;\n white-space: nowrap;\n}\n\n.pure-menu-horizontal .pure-menu-list {\n display: inline-block;\n}\n\n/* Initial menus should be inline-block so that they are horizontal */\n.pure-menu-horizontal .pure-menu-item,\n.pure-menu-horizontal .pure-menu-heading,\n.pure-menu-horizontal .pure-menu-separator {\n display: inline-block;\n vertical-align: middle;\n}\n\n/* Submenus should still be display: block; */\n.pure-menu-item .pure-menu-item {\n display: block;\n}\n\n.pure-menu-children {\n display: none;\n position: absolute;\n left: 100%;\n top: 0;\n margin: 0;\n padding: 0;\n z-index: 3;\n}\n\n.pure-menu-horizontal .pure-menu-children {\n left: 0;\n top: auto;\n width: inherit;\n}\n\n.pure-menu-allow-hover:hover > .pure-menu-children,\n.pure-menu-active > .pure-menu-children {\n display: block;\n position: absolute;\n}\n\n/* Vertical Menus - show the dropdown arrow */\n.pure-menu-has-children > .pure-menu-link:after {\n padding-left: 0.5em;\n content: \"\\25B8\";\n font-size: small;\n}\n\n/* Horizontal Menus - show the dropdown arrow */\n.pure-menu-horizontal .pure-menu-has-children > .pure-menu-link:after {\n content: \"\\25BE\";\n}\n\n/* scrollable menus */\n.pure-menu-scrollable {\n overflow-y: scroll;\n overflow-x: hidden;\n}\n\n.pure-menu-scrollable .pure-menu-list {\n display: block;\n}\n\n.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list {\n display: inline-block;\n}\n\n.pure-menu-horizontal.pure-menu-scrollable {\n white-space: nowrap;\n overflow-y: hidden;\n overflow-x: auto;\n /* a little extra padding for this style to allow for scrollbars */\n padding: .5em 0;\n}\n\n/* misc default styling */\n\n.pure-menu-separator,\n.pure-menu-horizontal .pure-menu-children .pure-menu-separator {\n background-color: #ccc;\n height: 1px;\n margin: .3em 0;\n}\n\n.pure-menu-horizontal .pure-menu-separator {\n width: 1px;\n height: 1.3em;\n margin: 0 .3em ;\n}\n\n/* Need to reset the separator since submenu is vertical */\n.pure-menu-horizontal .pure-menu-children .pure-menu-separator {\n display: block;\n width: auto;\n}\n\n.pure-menu-heading {\n text-transform: uppercase;\n color: #565d64;\n}\n\n.pure-menu-link {\n color: #777;\n}\n\n.pure-menu-children {\n background-color: #fff;\n}\n\n.pure-menu-link,\n.pure-menu-heading {\n padding: .5em 1em;\n}\n\n.pure-menu-disabled {\n opacity: .5;\n}\n\n.pure-menu-disabled .pure-menu-link:hover {\n background-color: transparent;\n cursor: default;\n}\n\n.pure-menu-active > .pure-menu-link,\n.pure-menu-link:hover,\n.pure-menu-link:focus {\n background-color: #eee;\n}\n\n.pure-menu-selected > .pure-menu-link,\n.pure-menu-selected > .pure-menu-link:visited {\n color: #000;\n}\n\n.pure-table {\n /* Remove spacing between table cells (from Normalize.css) */\n border-collapse: collapse;\n border-spacing: 0;\n empty-cells: show;\n border: 1px solid #cbcbcb;\n}\n\n.pure-table caption {\n color: #000;\n font: italic 85%/1 arial, sans-serif;\n padding: 1em 0;\n text-align: center;\n}\n\n.pure-table td,\n.pure-table th {\n border-left: 1px solid #cbcbcb;/* inner column border */\n border-width: 0 0 0 1px;\n font-size: inherit;\n margin: 0;\n overflow: visible; /*to make ths where the title is really long work*/\n padding: 0.5em 1em; /* cell padding */\n}\n\n.pure-table thead {\n background-color: #e0e0e0;\n color: #000;\n text-align: left;\n vertical-align: bottom;\n}\n\n/*\nstriping:\n even - #fff (white)\n odd - #f2f2f2 (light gray)\n*/\n.pure-table td {\n background-color: transparent;\n}\n.pure-table-odd td {\n background-color: #f2f2f2;\n}\n\n/* nth-child selector for modern browsers */\n.pure-table-striped tr:nth-child(2n-1) td {\n background-color: #f2f2f2;\n}\n\n/* BORDERED TABLES */\n.pure-table-bordered td {\n border-bottom: 1px solid #cbcbcb;\n}\n.pure-table-bordered tbody > tr:last-child > td {\n border-bottom-width: 0;\n}\n\n\n/* HORIZONTAL BORDERED TABLES */\n\n.pure-table-horizontal td,\n.pure-table-horizontal th {\n border-width: 0 0 1px 0;\n border-bottom: 1px solid #cbcbcb;\n}\n.pure-table-horizontal tbody > tr:last-child > td {\n border-bottom-width: 0;\n}\n","pre code.hljs {\n display: block;\n overflow-x: auto;\n padding: 1em\n}\ncode.hljs {\n padding: 3px 5px\n}\n/*!\n Theme: Zenburn\n Author: elnawe\n License: ~ MIT (or more permissive) [via base16-schemes-source]\n Maintainer: @highlightjs/core-team\n Version: 2021.09.0\n*/\n/*\n WARNING: DO NOT EDIT THIS FILE DIRECTLY.\n\n This theme file was auto-generated from the Base16 scheme zenburn\n by the Highlight.js Base16 template builder.\n\n - https://github.com/highlightjs/base16-highlightjs\n*/\n/*\nbase00 #383838 Default Background\nbase01 #404040 Lighter Background (Used for status bars, line number and folding marks)\nbase02 #606060 Selection Background\nbase03 #6f6f6f Comments, Invisibles, Line Highlighting\nbase04 #808080 Dark Foreground (Used for status bars)\nbase05 #dcdccc Default Foreground, Caret, Delimiters, Operators\nbase06 #c0c0c0 Light Foreground (Not often used)\nbase07 #ffffff Light Background (Not often used)\nbase08 #dca3a3 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted\nbase09 #dfaf8f Integers, Boolean, Constants, XML Attributes, Markup Link Url\nbase0A #e0cf9f Classes, Markup Bold, Search Text Background\nbase0B #5f7f5f Strings, Inherited Class, Markup Code, Diff Inserted\nbase0C #93e0e3 Support, Regular Expressions, Escape Characters, Markup Quotes\nbase0D #7cb8bb Functions, Methods, Attribute IDs, Headings\nbase0E #dc8cc3 Keywords, Storage, Selector, Markup Italic, Diff Changed\nbase0F #000000 Deprecated, Opening/Closing Embedded Language Tags, e.g. \n*/\npre code.hljs {\n display: block;\n overflow-x: auto;\n padding: 1em\n}\ncode.hljs {\n padding: 3px 5px\n}\n.hljs {\n color: #dcdccc;\n background: #383838\n}\n.hljs::selection,\n.hljs ::selection {\n background-color: #606060;\n color: #dcdccc\n}\n/* purposely do not highlight these things */\n.hljs-formula,\n.hljs-params,\n.hljs-property {\n \n}\n/* base03 - #6f6f6f - Comments, Invisibles, Line Highlighting */\n.hljs-comment {\n color: #6f6f6f\n}\n/* base04 - #808080 - Dark Foreground (Used for status bars) */\n.hljs-tag {\n color: #808080\n}\n/* base05 - #dcdccc - Default Foreground, Caret, Delimiters, Operators */\n.hljs-subst,\n.hljs-punctuation,\n.hljs-operator {\n color: #dcdccc\n}\n.hljs-operator {\n opacity: 0.7\n}\n/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */\n.hljs-bullet,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-selector-tag,\n.hljs-name,\n.hljs-deletion {\n color: #dca3a3\n}\n/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */\n.hljs-symbol,\n.hljs-number,\n.hljs-link,\n.hljs-attr,\n.hljs-variable.constant_,\n.hljs-literal {\n color: #dfaf8f\n}\n/* base0A - Classes, Markup Bold, Search Text Background */\n.hljs-title,\n.hljs-class .hljs-title,\n.hljs-title.class_ {\n color: #e0cf9f\n}\n.hljs-strong {\n font-weight: bold;\n color: #e0cf9f\n}\n/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */\n.hljs-code,\n.hljs-addition,\n.hljs-title.class_.inherited__,\n.hljs-string {\n color: #5f7f5f\n}\n/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */\n/* guessing */\n.hljs-built_in,\n.hljs-doctag,\n.hljs-quote,\n.hljs-keyword.hljs-atrule,\n.hljs-regexp {\n color: #93e0e3\n}\n/* base0D - Functions, Methods, Attribute IDs, Headings */\n.hljs-function .hljs-title,\n.hljs-attribute,\n.ruby .hljs-property,\n.hljs-title.function_,\n.hljs-section {\n color: #7cb8bb\n}\n/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */\n/* .hljs-selector-id, */\n/* .hljs-selector-class, */\n/* .hljs-selector-attr, */\n/* .hljs-selector-pseudo, */\n.hljs-type,\n.hljs-template-tag,\n.diff .hljs-meta,\n.hljs-keyword {\n color: #dc8cc3\n}\n.hljs-emphasis {\n color: #dc8cc3;\n font-style: italic\n}\n/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */\n/*\n prevent top level .keyword and .string scopes\n from leaking into meta by accident\n*/\n.hljs-meta,\n.hljs-meta .hljs-keyword,\n.hljs-meta .hljs-string {\n color: #000000\n}\n/* for v10 compatible themes */\n.hljs-meta .hljs-keyword,\n.hljs-meta-keyword {\n font-weight: bold\n}","$primaryBackground: #b8002c; $transitionBackground: #db0100; $secondaryBackground: #e8410c;\n@import \"../../node_modules/reset-css/reset.css\";\n@import \"../../node_modules/purecss/build/pure.css\";\n$fa-font-path: '../fonts';\n@import \"../../node_modules/\\@fortawesome/fontawesome-free/scss/fontawesome\";\n@import \"../../node_modules/\\@fortawesome/fontawesome-free/scss/solid\";\n@import \"../../node_modules/highlight.js/styles/base16/zenburn.css\";\n\n/*************\n * VARIABLES *\n *************/\n\n$light-yellow: #fffdbf;\n\n/************************************************************\n * GENERAL\n ************************************************************/\n* {\n margin: 0;\n padding: 0;\n}\n\nhtml,\nbody {\n height: 100%;\n}\n\nbody {\n font-family: sans-serif;\n line-height: 1.5;\n min-height: 100%;\n}\n\n.wrap {\n width: 80%;\n max-width: 1100px;\n margin: auto;\n position: relative;\n}\n\n.logospace {\n float: left;\n}\n\nhtml[dir=\"rtl\"] .logospace {\n float: right;\n}\n\n.menuspace {\n float: right;\n}\n\nhtml[dir=\"rtl\"] .menuspace {\n float: left;\n}\n\n.center {\n text-align: center;\n}\n\n.v-center {\n /* specify a height to center vertically */\n display: table-cell;\n vertical-align: middle;\n}\n\ni {\n font-style: italic;\n}\n\nh1 {\n margin: 1em 0;\n font-size: 2em;\n font-weight: 900;\n}\n\nh2 {\n margin: 1em 0;\n font-size: 1.5em;\n font-weight: 700;\n color: #1c1c1c;\n border-bottom: solid 1px #bbb;\n}\n\nh3 {\n font-weight: 500;\n color: #2e3436;\n padding: 0;\n margin-top: 0;\n}\n\np {\n padding: 0.5em 0;\n margin-bottom: 1em;\n}\n\na {\n color: midnightblue;\n\n &:hover,\n &:focus,\n &.pure-menu-link:hover,\n &.pure-menu-link:focus,\n .pure-menu-selected &.pure-menu-link:hover,\n .pure-menu-selected &.pure-menu-link:focus {\n color: white;\n background-color: #444;\n padding: 0.5em 1em;\n }\n\n &:hover,\n &:focus {\n padding: 0.15rem;\n }\n}\n\n.overflow {\n overflow: hidden;\n}\n\nul {\n padding-left: 1.5em;\n}\n\nstrong,\nb {\n font-weight: bold;\n}\n\npre,\ncode,\nkbd,\nsamp,\ntt {\n font-family: monospace;\n font-size: 0.9rem;\n padding: 0 0.2rem;\n}\n\n.xmldata {\n font-family: monospace;\n}\n\n/* ***********************************************************\n * SLIDING SIDE-MENU FOR SMALL SCREENS\n *************************************************************/\n\n/*\nAdd transition to containers so they can push in and out.\n*/\n#layout,\n#menu,\n#foot,\n.menu-link {\n -webkit-transition: all 0.2s ease-out;\n -moz-transition: all 0.2s ease-out;\n -ms-transition: all 0.2s ease-out;\n -o-transition: all 0.2s ease-out;\n transition: all 0.2s ease-out;\n}\n\n/*\nThis is the parent `` that contains the menu and the content area.\n*/\n#layout.active #menu {\n right: 11em;\n width: 11em;\n}\n\n/*\nThe `#menu` `
` is the parent `
` that contains the `.pure-menu` that\nappears on the left side of the page.\n*/\n#menu {\n margin-right: -11em; /* \"#menu\" width */\n width: 11em;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 1000; /* so the menu or its navicon stays above all content */\n background: $secondaryBackground;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n/*\nAll anchors inside the menu should be styled like this.\n*/\n#menu a {\n color: #fff;\n border: none;\n padding: 0.6em 0 0.6em 0.6em;\n}\n\n/*\nRemove all background/borders, since we are applying them to #menu.\n*/\n#menu .pure-menu,\n#menu .pure-menu ul {\n border: none;\n background: transparent;\n}\n\n/*\nAdd that light border to separate items into groups.\n*/\n#menu .pure-menu ul,\n#menu .pure-menu .menu-item-divided {\n border-top: 1px solid $transitionBackground;\n}\n\n/*\nThis styles the selected menu item `
`.\n*/\n#menu .pure-menu-selected,\n#menu .pure-menu-heading {\n background: $primaryBackground;\n color: black;\n}\n\n/*\nThis styles a link within a selected menu item ``.\n*/\n#menu .pure-menu-selected a {\n color: #fff;\n}\n\n/*\nThis styles the menu heading.\n*/\n#menu .pure-menu-heading {\n font-size: 110%;\n color: #fff;\n margin: 0;\n text-transform: none;\n}\n\n/* -- Dynamic Button For Responsive Menu -- */\n\n/*\nThe button to open/close the Menu is custom-made and not part of Pure. Here's\nhow it works:\n*/\n\n/*\n`.menu-link` represents the responsive menu toggle that shows/hides on\nsmall screens.\n*/\n.menu-link {\n position: relative;\n display: block; /* show this only on small screens */\n top: 0;\n right: 0; /* \"#menu width\" */\n background: transparent;\n z-index: 10;\n height: 2rem;\n padding: 2rem 0;\n text-decoration: none;\n\n &:hover,\n &:focus {\n padding: 2rem 0;\n background: none !important;\n }\n}\n\n.menu-link span {\n position: relative;\n display: block;\n color: #fff;\n}\n\n.menu-link span,\n.menu-link span::before,\n.menu-link span::after {\n background-color: transparent;\n}\n\n.menu-link span:focus,\n.menu-link span:hover {\n color: #010101cc;\n}\n\n/* -- Responsive Styles (Media Queries) ------------------------------------- */\n\n@media screen and (max-width: 40em) {\n #layout.active {\n position: relative;\n right: 11em;\n\n /* moves to right as many ems as the one used by the menu */\n }\n\n #menuLink.menu-link.active {\n position: fixed;\n right: 13em;\n }\n\n #foot.active {\n margin-right: 11em;\n }\n}\n\n/************************************************************\nHEADER\n*************************************************************/\n#header {\n height: 6rem;\n background: linear-gradient(141deg, $primaryBackground 0%, $transitionBackground 51%, $secondaryBackground 75%);\n}\n\n.logo-header {\n min-width: 8em;\n height: 6rem;\n max-width: 70%;\n}\n\n#logo {\n font-family: sans-serif;\n font-size: 2.5em;\n color: white;\n text-shadow: 0 3px 2px #532900;\n}\n\n.simple {\n font-weight: 300;\n}\n\n.saml {\n font-family: Verdana, sans-serif;\n letter-spacing: -0.12em;\n font-weight: 600;\n margin-left: -0.05em;\n}\n\n.language-menu {\n font-family: sans-serif;\n font-weight: 400;\n min-width: 10rem;\n padding: 0em 0.6em !important;\n}\n\n.language-bar {\n height: 6rem;\n}\n\n/************************************************************\nCONTENT\n*************************************************************/\n#layout {\n right: 0;\n padding-right: 0;\n min-height: 100%;\n\n /* negative margin = footer height + padding-top + padding-bottom */\n margin: 0 auto -6rem;\n}\n\n#content {\n padding-top: 2em;\n padding-bottom: 2rem;\n}\n\n.message-box {\n background-color: #f4f4f4;\n border-left: 0.3125rem solid #444;\n box-shadow: 0 5px 8px -6px #0003;\n margin: 1rem 0;\n padding: 1.3rem;\n position: relative;\n}\n\n.message-box.error {\n background-color: #f7e4e1;\n border-left-color: #cc4b37;\n}\n\n.message-box.warning {\n background-color: $light-yellow;\n border-left-color: #f9f56b;\n}\n\n.message-box.success {\n background-color: #daf7e6;\n border-left-color: #46cc48;\n}\n\n.auth_methods {\n margin-top: 2em;\n width: 35%;\n}\n\n.code-box {\n margin-bottom: 1em;\n border: 1px solid #ccc;\n\n a {\n padding: 0.5em;\n }\n}\n\n.code-box-content {\n word-break: break-all;\n font-size: 1em;\n line-height: 1.15;\n padding: 0.5em 1em;\n display: inline-block;\n min-height: 1em;\n height: 100%;\n white-space: pre-wrap;\n font-family: monospace;\n\n &::selection {\n color: black;\n background: $light-yellow;\n }\n}\n\n.code-box-title {\n border-bottom: 1px solid #ccc;\n background-color: #e0e0e0;\n padding: 0.5em 0 0.5em 0.5em;\n}\n\npre#xmlmetadata {\n width: 98%;\n}\n\n/************************************************************\n * FOOTER\n ************************************************************/\n\n#bottom,\n#push {\n height: 6rem;\n}\n\n#footer {\n width: 100%;\n background: linear-gradient(141deg, $primaryBackground 0%, $transitionBackground 51%, $secondaryBackground 75%);\n height: 4rem;\n padding: 2rem 0 0;\n text-align: center;\n color: white;\n\n a,\n a:visited {\n color: white;\n\n &:focus,\n &:hover {\n background-color: white;\n color: black;\n padding: 0.15rem;\n margin-left: -0.15rem;\n margin-top: -0.15rem;\n text-decoration: none;\n }\n }\n}\n\n.copyrights {\n padding-top: 0.5rem;\n height: 3.5rem;\n font-size: 0.8rem;\n}\n\n.logo-footer-space {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translate(0, -50%);\n}\n\nhtml[dir=\"rtl\"] .logo-footer-space {\n right: auto;\n left: 0;\n}\n\n.logo-footer {\n height: 4rem;\n}\n\n/* ***********************************************************\nFORMS\n************************************************************ */\n.text-area {\n margin-top: 0.5em;\n width: 100%;\n font-size: 0.9em;\n line-height: 1.15;\n}\n\n.file-upload input[type=\"url\"][disabled] {\n cursor: pointer;\n color: inherit;\n}\n\ninput[type=\"file\"] {\n color: black;\n}\n\n.center-form {\n display: flex;\n justify-content: center;\n}\n\n.login-form-start,\n.login-form-submit {\n margin-top: 3ex;\n}\n\ninput#username:disabled {\n color: #000000;\n}\n\n.v-center-right {\n position: absolute;\n left: 0;\n top: 50%;\n transform: translate(0, -50%);\n}\n\n/* PURE */\n.pure-button,\n.pure-form input.edge,\n.pure-form textarea.edge {\n border-radius: 0;\n}\n\n.pure-form input[type=\"checkbox\"] {\n margin-right: 0.8ex;\n vertical-align: baseline;\n}\n\n.pure-control-group {\n margin-bottom: 1ex;\n}\n\n.pure-form-aligned .pure-controls {\n margin: 0 0 0 11em;\n}\n\n.pure-select {\n float: right;\n}\n\nhtml[dir=\"rtl\"] .pure-select {\n float: left;\n}\n\n/************************************************************\n * BUTTONS\n ************************************************************/\n.code-box-title .clipboard-btn {\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n position: absolute;\n right: 0;\n height: inherit;\n margin-top: -2em;\n margin-right: 4px;\n}\n\n.pure-button {\n margin-left: 1ex;\n\n &:hover,\n &:focus {\n background-color: #555;\n padding: 0.5em 1em;\n color: #fff;\n }\n}\n\n.pure-button-red {\n background-color: #db0100;\n color: #fff;\n\n &:hover,\n &:focus {\n background-color: #555;\n padding: 0.5em 1em;\n }\n}\n\n.pure-button.hollow {\n background-color: #fff;\n color: #6f6f6f;\n border: solid 1px #e6e6e6;\n}\n\n.pure-button.hollow:hover {\n background-image: none;\n}\n\n.pure-button.hollow[disabled] {\n cursor: auto;\n opacity: initial;\n pointer-events: auto;\n -webkit-user-drag: auto;\n -webkit-user-select: auto;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n\n.pure-button.hljs {\n display: inline-block;\n border: 0;\n background-color: transparent;\n\n &:hover,\n &:focus {\n background-color: #f0f0f0;\n color: black;\n }\n}\n\n.pure-button-group .pure-button:first-child,\n.pure-button-group .pure-button:last-child {\n border-radius: 0;\n}\n\n.pure-button-group.two-elements .pure-button {\n margin: 0;\n line-height: unset;\n border: 1px solid #e6e6e6;\n}\n\n.pure-button-group.two-elements form {\n display: inline;\n}\n\n.pure-button-group.two-elements .pure-button:first-child {\n border-right: none;\n}\n\n.pure-button-group.two-elements .pure-button:last-child {\n border-right: 1px solid #e6e6e6;\n}\n\n.pure-button-group .pure-button.show-files {\n max-width: 450px;\n overflow: hidden;\n}\n\n.top-right-corner {\n position: absolute;\n right: 1.75em;\n}\n\ninput#postLoginSubmitButton {\n display: none;\n}\n\n/************************************************************\n * IMAGES\n ************************************************************/\n.fa {\n font-family: \"Font Awesome 6 Free\", sans-serif !important;\n font-weight: 400;\n}\n\nspan.fa,\ni.fa {\n padding: 0 0.5em;\n}\n\n.message-box span.fa,\n.message-box i.fa {\n padding: 0;\n}\n\n/************************************************************\n * TABLES\n ************************************************************/\n.pure-table-attributes {\n table-layout: fixed;\n width: 100%;\n}\n\n.attrname {\n text-align: right;\n}\n\n.attrvalue {\n overflow-wrap: break-word;\n}\n\ntable.attributes ul {\n padding: inherit;\n}\n\n/************************************************************\n * MEDIA QUERIES\n ************************************************************/\n\n@media screen and (max-width: 40em) {\n .pure-form .pure-input-sm-1-1 {\n width: 100%;\n }\n}\n\n@media screen and (max-width: 40em) {\n .wrap {\n width: 90%;\n }\n\n .pure-form-aligned .pure-controls {\n margin: 0.5em 0 0;\n float: left;\n }\n\n #layout {\n padding-top: 0;\n margin-bottom: -4rem;\n }\n\n .auth_methods {\n width: 60%;\n }\n\n #logo {\n font-size: 1.8em;\n }\n\n #footer {\n height: 2.5rem;\n padding-top: 1.5rem;\n\n .copyrights {\n height: 1rem;\n padding-top: 0;\n }\n }\n}\n\n@media screen and (max-width: 0), screen and (min-width: 40em) {\n .show-for-small-only {\n display: none !important;\n }\n\n .input-sm-placeholder {\n display: inline-block;\n }\n}\n\n@media screen and (min-width: 40em) {\n .hide-for-large {\n display: none !important;\n }\n}\n\n@media screen and (max-width: 40em) {\n .show-for-large {\n display: none !important;\n }\n}\n\n/*********\n * Utils *\n *********/\n\ndiv.preferredidp {\n border: 1px dashed #ccc;\n background: #eee;\n padding: 2px 2em;\n}\n\n.clear {\n clear: both;\n}\n\n.breathe-top {\n margin-top: 1em;\n}\n\n.expandable {\n border: solid 1px #bbb;\n width: 100%;\n\n .general {\n padding: 1em;\n }\n\n .content {\n display: none;\n padding: 1em;\n }\n\n .expander {\n cursor: pointer;\n text-align: center;\n padding: 0.25em;\n display: block;\n color: black;\n background-color: #f4f4f4;\n border-top: solid 1px #bbb;\n\n &:focus,\n &:hover {\n background-color: #555;\n color: white;\n }\n\n &::after {\n content: \"\\f078\";\n font-family: \"Font Awesome 6 Free\", sans-serif;\n font-weight: 400;\n }\n }\n\n &.expanded {\n .content {\n display: block;\n border-left: solid 0.25em #555;\n border-right: solid 0.25em #555;\n }\n\n .expander {\n border-bottom: none;\n border-top: solid 1px #bbb;\n border-left: solid 0.25em #555;\n border-right: solid 0.25em #555;\n\n &::after {\n content: \"\\f077\";\n }\n }\n }\n}\n\n.hidden {\n display: none;\n}\n\n.idp {\n border: 1px solid silver;\n padding: 1ex;\n margin: 1ex;\n}\n\n.idp .idpname {\n font-size: larger;\n font-weight: bold;\n}\n\n.idp .idpdesc {\n font-size: small;\n color: gray;\n}\n\n.right {\n float: right;\n}\n\n.left {\n float: left;\n}\n","/*!\n * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n// Font Awesome core compile (Web Fonts-based)\n// -------------------------\n\n@import 'functions';\n@import 'variables';\n@import 'mixins';\n@import 'core';\n@import 'sizing';\n@import 'fixed-width';\n@import 'list';\n@import 'bordered-pulled';\n@import 'animated';\n@import 'rotated-flipped';\n@import 'stacked';\n@import 'icons';\n@import 'screen-reader';\n","// base icon class definition\n// -------------------------\n\n.#{$fa-css-prefix} {\n font-family: var(--#{$fa-css-prefix}-style-family, '#{$fa-style-family}');\n font-weight: var(--#{$fa-css-prefix}-style, #{$fa-style});\n}\n\n.fas,\n.far,\n.fab,\n.#{$fa-css-prefix}-solid,\n.#{$fa-css-prefix}-regular,\n.#{$fa-css-prefix}-brands,\n.#{$fa-css-prefix} {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: var(--#{$fa-css-prefix}-display, #{$fa-display});\n font-style: normal;\n font-variant: normal;\n line-height: 1;\n text-rendering: auto;\n}\n\n.fas::before,\n.far::before,\n.fab::before,\n.#{$fa-css-prefix}-solid::before,\n.#{$fa-css-prefix}-regular::before,\n.#{$fa-css-prefix}-brands::before,\n.fa::before {\n content: var(#{$fa-icon-property});\n}\n\n.#{$fa-css-prefix}-classic,\n.fas,\n.#{$fa-css-prefix}-solid,\n.far,\n.#{$fa-css-prefix}-regular {\n font-family: 'Font Awesome 6 Free';\n}\n.#{$fa-css-prefix}-brands,\n.fab {\n font-family: 'Font Awesome 6 Brands';\n}\n\n%fa-icon {\n @include fa-icon;\n}\n","// sizing icons\n// -------------------------\n\n// literal magnification scale\n@for $i from 1 through 10 {\n .#{$fa-css-prefix}-#{$i}x {\n font-size: $i * 1em;\n }\n}\n\n// step-based scale (with alignment)\n@each $size, $value in $fa-sizes {\n .#{$fa-css-prefix}-#{$size} {\n @include fa-size($value);\n }\n}\n","// mixins\n// --------------------------\n\n// base rendering for an icon\n@mixin fa-icon {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n display: inline-block;\n font-style: normal;\n font-variant: normal;\n font-weight: normal;\n line-height: 1;\n}\n\n// sets relative font-sizing and alignment (in _sizing)\n@mixin fa-size ($font-size) {\n font-size: fa-divide($font-size, $fa-size-scale-base) * 1em; // converts step in sizing scale into an em-based value that's relative to the scale's base\n line-height: fa-divide(1, $font-size) * 1em; // sets the line-height of the icon back to that of it's parent\n vertical-align: (fa-divide(6, $font-size) - fa-divide(3, 8)) * 1em; // vertically centers the icon taking into account the surrounding text's descender\n}\n\n// only display content to screen readers\n// see: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// see: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n@mixin fa-sr-only() {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n// use in conjunction with .sr-only to only display content when it's focused\n@mixin fa-sr-only-focusable() {\n &:not(:focus) {\n @include fa-sr-only();\n }\n}\n\n// sets a specific icon family to use alongside style + icon mixins\n@mixin fa-family-classic() {\n @extend .fa-classic;\n}\n\n// convenience mixins for declaring pseudo-elements by CSS variable,\n// including all style-specific font properties\n@mixin fa-icon-solid($fa-var) {\n @extend .fa-solid;\n\n & { #{$fa-icon-property}: unquote(\"\\\"#{ $fa-var }\\\"\"); #{$fa-duotone-icon-property}: unquote(\"\\\"#{ $fa-var }#{ $fa-var }\\\"\"); }\n}\n@mixin fa-icon-regular($fa-var) {\n @extend .fa-regular;\n\n & { #{$fa-icon-property}: unquote(\"\\\"#{ $fa-var }\\\"\"); #{$fa-duotone-icon-property}: unquote(\"\\\"#{ $fa-var }#{ $fa-var }\\\"\"); }\n}\n@mixin fa-icon-brands($fa-var) {\n @extend .fa-brands;\n\n & { #{$fa-icon-property}: unquote(\"\\\"#{ $fa-var }\\\"\"); #{$fa-duotone-icon-property}: unquote(\"\\\"#{ $fa-var }#{ $fa-var }\\\"\"); }\n}\n","// fixed-width icons\n// -------------------------\n\n.#{$fa-css-prefix}-fw {\n text-align: center;\n width: $fa-fw-width;\n}\n","// variables\n// --------------------------\n\n$fa-css-prefix : fa !default;\n$fa-style : 900 !default;\n$fa-style-family : \"Font Awesome 6 Free\" !default;\n\n$fa-icon-property : --fa;\n$fa-duotone-icon-property : --fa--fa;\n\n$fa-display : inline-block !default;\n\n$fa-fw-width : fa-divide(20em, 16) !default;\n$fa-inverse : #fff !default;\n\n$fa-border-color : #eee !default;\n$fa-border-padding : .2em .25em .15em !default;\n$fa-border-radius : .1em !default;\n$fa-border-style : solid !default;\n$fa-border-width : .08em !default;\n\n$fa-size-scale-2xs : 10 !default;\n$fa-size-scale-xs : 12 !default;\n$fa-size-scale-sm : 14 !default;\n$fa-size-scale-base : 16 !default;\n$fa-size-scale-lg : 20 !default;\n$fa-size-scale-xl : 24 !default;\n$fa-size-scale-2xl : 32 !default;\n\n$fa-sizes: (\n \"2xs\" : $fa-size-scale-2xs,\n \"xs\" : $fa-size-scale-xs,\n \"sm\" : $fa-size-scale-sm,\n \"lg\" : $fa-size-scale-lg,\n \"xl\" : $fa-size-scale-xl,\n \"2xl\" : $fa-size-scale-2xl\n) !default;\n\n$fa-li-width : 2em !default;\n$fa-li-margin : $fa-li-width * fa-divide(5, 4) !default;\n\n$fa-pull-margin : .3em !default;\n\n$fa-primary-opacity : 1 !default;\n$fa-secondary-opacity : .4 !default;\n\n$fa-stack-vertical-align : middle !default;\n$fa-stack-width : ($fa-fw-width * 2) !default;\n$fa-stack-z-index : auto !default;\n\n$fa-font-display : block !default;\n$fa-font-path : \"../webfonts\" !default;\n\n$fa-var-0: \\30;\n$fa-var-1: \\31;\n$fa-var-2: \\32;\n$fa-var-3: \\33;\n$fa-var-4: \\34;\n$fa-var-5: \\35;\n$fa-var-6: \\36;\n$fa-var-7: \\37;\n$fa-var-8: \\38;\n$fa-var-9: \\39;\n$fa-var-fill-drip: \\f576;\n$fa-var-arrows-to-circle: \\e4bd;\n$fa-var-circle-chevron-right: \\f138;\n$fa-var-chevron-circle-right: \\f138;\n$fa-var-at: \\40;\n$fa-var-trash-can: \\f2ed;\n$fa-var-trash-alt: \\f2ed;\n$fa-var-text-height: \\f034;\n$fa-var-user-xmark: \\f235;\n$fa-var-user-times: \\f235;\n$fa-var-stethoscope: \\f0f1;\n$fa-var-message: \\f27a;\n$fa-var-comment-alt: \\f27a;\n$fa-var-info: \\f129;\n$fa-var-down-left-and-up-right-to-center: \\f422;\n$fa-var-compress-alt: \\f422;\n$fa-var-explosion: \\e4e9;\n$fa-var-file-lines: \\f15c;\n$fa-var-file-alt: \\f15c;\n$fa-var-file-text: \\f15c;\n$fa-var-wave-square: \\f83e;\n$fa-var-ring: \\f70b;\n$fa-var-building-un: \\e4d9;\n$fa-var-dice-three: \\f527;\n$fa-var-calendar-days: \\f073;\n$fa-var-calendar-alt: \\f073;\n$fa-var-anchor-circle-check: \\e4aa;\n$fa-var-building-circle-arrow-right: \\e4d1;\n$fa-var-volleyball: \\f45f;\n$fa-var-volleyball-ball: \\f45f;\n$fa-var-arrows-up-to-line: \\e4c2;\n$fa-var-sort-down: \\f0dd;\n$fa-var-sort-desc: \\f0dd;\n$fa-var-circle-minus: \\f056;\n$fa-var-minus-circle: \\f056;\n$fa-var-door-open: \\f52b;\n$fa-var-right-from-bracket: \\f2f5;\n$fa-var-sign-out-alt: \\f2f5;\n$fa-var-atom: \\f5d2;\n$fa-var-soap: \\e06e;\n$fa-var-icons: \\f86d;\n$fa-var-heart-music-camera-bolt: \\f86d;\n$fa-var-microphone-lines-slash: \\f539;\n$fa-var-microphone-alt-slash: \\f539;\n$fa-var-bridge-circle-check: \\e4c9;\n$fa-var-pump-medical: \\e06a;\n$fa-var-fingerprint: \\f577;\n$fa-var-hand-point-right: \\f0a4;\n$fa-var-magnifying-glass-location: \\f689;\n$fa-var-search-location: \\f689;\n$fa-var-forward-step: \\f051;\n$fa-var-step-forward: \\f051;\n$fa-var-face-smile-beam: \\f5b8;\n$fa-var-smile-beam: \\f5b8;\n$fa-var-flag-checkered: \\f11e;\n$fa-var-football: \\f44e;\n$fa-var-football-ball: \\f44e;\n$fa-var-school-circle-exclamation: \\e56c;\n$fa-var-crop: \\f125;\n$fa-var-angles-down: \\f103;\n$fa-var-angle-double-down: \\f103;\n$fa-var-users-rectangle: \\e594;\n$fa-var-people-roof: \\e537;\n$fa-var-people-line: \\e534;\n$fa-var-beer-mug-empty: \\f0fc;\n$fa-var-beer: \\f0fc;\n$fa-var-diagram-predecessor: \\e477;\n$fa-var-arrow-up-long: \\f176;\n$fa-var-long-arrow-up: \\f176;\n$fa-var-fire-flame-simple: \\f46a;\n$fa-var-burn: \\f46a;\n$fa-var-person: \\f183;\n$fa-var-male: \\f183;\n$fa-var-laptop: \\f109;\n$fa-var-file-csv: \\f6dd;\n$fa-var-menorah: \\f676;\n$fa-var-truck-plane: \\e58f;\n$fa-var-record-vinyl: \\f8d9;\n$fa-var-face-grin-stars: \\f587;\n$fa-var-grin-stars: \\f587;\n$fa-var-bong: \\f55c;\n$fa-var-spaghetti-monster-flying: \\f67b;\n$fa-var-pastafarianism: \\f67b;\n$fa-var-arrow-down-up-across-line: \\e4af;\n$fa-var-spoon: \\f2e5;\n$fa-var-utensil-spoon: \\f2e5;\n$fa-var-jar-wheat: \\e517;\n$fa-var-envelopes-bulk: \\f674;\n$fa-var-mail-bulk: \\f674;\n$fa-var-file-circle-exclamation: \\e4eb;\n$fa-var-circle-h: \\f47e;\n$fa-var-hospital-symbol: \\f47e;\n$fa-var-pager: \\f815;\n$fa-var-address-book: \\f2b9;\n$fa-var-contact-book: \\f2b9;\n$fa-var-strikethrough: \\f0cc;\n$fa-var-k: \\4b;\n$fa-var-landmark-flag: \\e51c;\n$fa-var-pencil: \\f303;\n$fa-var-pencil-alt: \\f303;\n$fa-var-backward: \\f04a;\n$fa-var-caret-right: \\f0da;\n$fa-var-comments: \\f086;\n$fa-var-paste: \\f0ea;\n$fa-var-file-clipboard: \\f0ea;\n$fa-var-code-pull-request: \\e13c;\n$fa-var-clipboard-list: \\f46d;\n$fa-var-truck-ramp-box: \\f4de;\n$fa-var-truck-loading: \\f4de;\n$fa-var-user-check: \\f4fc;\n$fa-var-vial-virus: \\e597;\n$fa-var-sheet-plastic: \\e571;\n$fa-var-blog: \\f781;\n$fa-var-user-ninja: \\f504;\n$fa-var-person-arrow-up-from-line: \\e539;\n$fa-var-scroll-torah: \\f6a0;\n$fa-var-torah: \\f6a0;\n$fa-var-broom-ball: \\f458;\n$fa-var-quidditch: \\f458;\n$fa-var-quidditch-broom-ball: \\f458;\n$fa-var-toggle-off: \\f204;\n$fa-var-box-archive: \\f187;\n$fa-var-archive: \\f187;\n$fa-var-person-drowning: \\e545;\n$fa-var-arrow-down-9-1: \\f886;\n$fa-var-sort-numeric-desc: \\f886;\n$fa-var-sort-numeric-down-alt: \\f886;\n$fa-var-face-grin-tongue-squint: \\f58a;\n$fa-var-grin-tongue-squint: \\f58a;\n$fa-var-spray-can: \\f5bd;\n$fa-var-truck-monster: \\f63b;\n$fa-var-w: \\57;\n$fa-var-earth-africa: \\f57c;\n$fa-var-globe-africa: \\f57c;\n$fa-var-rainbow: \\f75b;\n$fa-var-circle-notch: \\f1ce;\n$fa-var-tablet-screen-button: \\f3fa;\n$fa-var-tablet-alt: \\f3fa;\n$fa-var-paw: \\f1b0;\n$fa-var-cloud: \\f0c2;\n$fa-var-trowel-bricks: \\e58a;\n$fa-var-face-flushed: \\f579;\n$fa-var-flushed: \\f579;\n$fa-var-hospital-user: \\f80d;\n$fa-var-tent-arrow-left-right: \\e57f;\n$fa-var-gavel: \\f0e3;\n$fa-var-legal: \\f0e3;\n$fa-var-binoculars: \\f1e5;\n$fa-var-microphone-slash: \\f131;\n$fa-var-box-tissue: \\e05b;\n$fa-var-motorcycle: \\f21c;\n$fa-var-bell-concierge: \\f562;\n$fa-var-concierge-bell: \\f562;\n$fa-var-pen-ruler: \\f5ae;\n$fa-var-pencil-ruler: \\f5ae;\n$fa-var-people-arrows: \\e068;\n$fa-var-people-arrows-left-right: \\e068;\n$fa-var-mars-and-venus-burst: \\e523;\n$fa-var-square-caret-right: \\f152;\n$fa-var-caret-square-right: \\f152;\n$fa-var-scissors: \\f0c4;\n$fa-var-cut: \\f0c4;\n$fa-var-sun-plant-wilt: \\e57a;\n$fa-var-toilets-portable: \\e584;\n$fa-var-hockey-puck: \\f453;\n$fa-var-table: \\f0ce;\n$fa-var-magnifying-glass-arrow-right: \\e521;\n$fa-var-tachograph-digital: \\f566;\n$fa-var-digital-tachograph: \\f566;\n$fa-var-users-slash: \\e073;\n$fa-var-clover: \\e139;\n$fa-var-reply: \\f3e5;\n$fa-var-mail-reply: \\f3e5;\n$fa-var-star-and-crescent: \\f699;\n$fa-var-house-fire: \\e50c;\n$fa-var-square-minus: \\f146;\n$fa-var-minus-square: \\f146;\n$fa-var-helicopter: \\f533;\n$fa-var-compass: \\f14e;\n$fa-var-square-caret-down: \\f150;\n$fa-var-caret-square-down: \\f150;\n$fa-var-file-circle-question: \\e4ef;\n$fa-var-laptop-code: \\f5fc;\n$fa-var-swatchbook: \\f5c3;\n$fa-var-prescription-bottle: \\f485;\n$fa-var-bars: \\f0c9;\n$fa-var-navicon: \\f0c9;\n$fa-var-people-group: \\e533;\n$fa-var-hourglass-end: \\f253;\n$fa-var-hourglass-3: \\f253;\n$fa-var-heart-crack: \\f7a9;\n$fa-var-heart-broken: \\f7a9;\n$fa-var-square-up-right: \\f360;\n$fa-var-external-link-square-alt: \\f360;\n$fa-var-face-kiss-beam: \\f597;\n$fa-var-kiss-beam: \\f597;\n$fa-var-film: \\f008;\n$fa-var-ruler-horizontal: \\f547;\n$fa-var-people-robbery: \\e536;\n$fa-var-lightbulb: \\f0eb;\n$fa-var-caret-left: \\f0d9;\n$fa-var-circle-exclamation: \\f06a;\n$fa-var-exclamation-circle: \\f06a;\n$fa-var-school-circle-xmark: \\e56d;\n$fa-var-arrow-right-from-bracket: \\f08b;\n$fa-var-sign-out: \\f08b;\n$fa-var-circle-chevron-down: \\f13a;\n$fa-var-chevron-circle-down: \\f13a;\n$fa-var-unlock-keyhole: \\f13e;\n$fa-var-unlock-alt: \\f13e;\n$fa-var-cloud-showers-heavy: \\f740;\n$fa-var-headphones-simple: \\f58f;\n$fa-var-headphones-alt: \\f58f;\n$fa-var-sitemap: \\f0e8;\n$fa-var-circle-dollar-to-slot: \\f4b9;\n$fa-var-donate: \\f4b9;\n$fa-var-memory: \\f538;\n$fa-var-road-spikes: \\e568;\n$fa-var-fire-burner: \\e4f1;\n$fa-var-flag: \\f024;\n$fa-var-hanukiah: \\f6e6;\n$fa-var-feather: \\f52d;\n$fa-var-volume-low: \\f027;\n$fa-var-volume-down: \\f027;\n$fa-var-comment-slash: \\f4b3;\n$fa-var-cloud-sun-rain: \\f743;\n$fa-var-compress: \\f066;\n$fa-var-wheat-awn: \\e2cd;\n$fa-var-wheat-alt: \\e2cd;\n$fa-var-ankh: \\f644;\n$fa-var-hands-holding-child: \\e4fa;\n$fa-var-asterisk: \\2a;\n$fa-var-square-check: \\f14a;\n$fa-var-check-square: \\f14a;\n$fa-var-peseta-sign: \\e221;\n$fa-var-heading: \\f1dc;\n$fa-var-header: \\f1dc;\n$fa-var-ghost: \\f6e2;\n$fa-var-list: \\f03a;\n$fa-var-list-squares: \\f03a;\n$fa-var-square-phone-flip: \\f87b;\n$fa-var-phone-square-alt: \\f87b;\n$fa-var-cart-plus: \\f217;\n$fa-var-gamepad: \\f11b;\n$fa-var-circle-dot: \\f192;\n$fa-var-dot-circle: \\f192;\n$fa-var-face-dizzy: \\f567;\n$fa-var-dizzy: \\f567;\n$fa-var-egg: \\f7fb;\n$fa-var-house-medical-circle-xmark: \\e513;\n$fa-var-campground: \\f6bb;\n$fa-var-folder-plus: \\f65e;\n$fa-var-futbol: \\f1e3;\n$fa-var-futbol-ball: \\f1e3;\n$fa-var-soccer-ball: \\f1e3;\n$fa-var-paintbrush: \\f1fc;\n$fa-var-paint-brush: \\f1fc;\n$fa-var-lock: \\f023;\n$fa-var-gas-pump: \\f52f;\n$fa-var-hot-tub-person: \\f593;\n$fa-var-hot-tub: \\f593;\n$fa-var-map-location: \\f59f;\n$fa-var-map-marked: \\f59f;\n$fa-var-house-flood-water: \\e50e;\n$fa-var-tree: \\f1bb;\n$fa-var-bridge-lock: \\e4cc;\n$fa-var-sack-dollar: \\f81d;\n$fa-var-pen-to-square: \\f044;\n$fa-var-edit: \\f044;\n$fa-var-car-side: \\f5e4;\n$fa-var-share-nodes: \\f1e0;\n$fa-var-share-alt: \\f1e0;\n$fa-var-heart-circle-minus: \\e4ff;\n$fa-var-hourglass-half: \\f252;\n$fa-var-hourglass-2: \\f252;\n$fa-var-microscope: \\f610;\n$fa-var-sink: \\e06d;\n$fa-var-bag-shopping: \\f290;\n$fa-var-shopping-bag: \\f290;\n$fa-var-arrow-down-z-a: \\f881;\n$fa-var-sort-alpha-desc: \\f881;\n$fa-var-sort-alpha-down-alt: \\f881;\n$fa-var-mitten: \\f7b5;\n$fa-var-person-rays: \\e54d;\n$fa-var-users: \\f0c0;\n$fa-var-eye-slash: \\f070;\n$fa-var-flask-vial: \\e4f3;\n$fa-var-hand: \\f256;\n$fa-var-hand-paper: \\f256;\n$fa-var-om: \\f679;\n$fa-var-worm: \\e599;\n$fa-var-house-circle-xmark: \\e50b;\n$fa-var-plug: \\f1e6;\n$fa-var-chevron-up: \\f077;\n$fa-var-hand-spock: \\f259;\n$fa-var-stopwatch: \\f2f2;\n$fa-var-face-kiss: \\f596;\n$fa-var-kiss: \\f596;\n$fa-var-bridge-circle-xmark: \\e4cb;\n$fa-var-face-grin-tongue: \\f589;\n$fa-var-grin-tongue: \\f589;\n$fa-var-chess-bishop: \\f43a;\n$fa-var-face-grin-wink: \\f58c;\n$fa-var-grin-wink: \\f58c;\n$fa-var-ear-deaf: \\f2a4;\n$fa-var-deaf: \\f2a4;\n$fa-var-deafness: \\f2a4;\n$fa-var-hard-of-hearing: \\f2a4;\n$fa-var-road-circle-check: \\e564;\n$fa-var-dice-five: \\f523;\n$fa-var-square-rss: \\f143;\n$fa-var-rss-square: \\f143;\n$fa-var-land-mine-on: \\e51b;\n$fa-var-i-cursor: \\f246;\n$fa-var-stamp: \\f5bf;\n$fa-var-stairs: \\e289;\n$fa-var-i: \\49;\n$fa-var-hryvnia-sign: \\f6f2;\n$fa-var-hryvnia: \\f6f2;\n$fa-var-pills: \\f484;\n$fa-var-face-grin-wide: \\f581;\n$fa-var-grin-alt: \\f581;\n$fa-var-tooth: \\f5c9;\n$fa-var-v: \\56;\n$fa-var-bangladeshi-taka-sign: \\e2e6;\n$fa-var-bicycle: \\f206;\n$fa-var-staff-snake: \\e579;\n$fa-var-rod-asclepius: \\e579;\n$fa-var-rod-snake: \\e579;\n$fa-var-staff-aesculapius: \\e579;\n$fa-var-head-side-cough-slash: \\e062;\n$fa-var-truck-medical: \\f0f9;\n$fa-var-ambulance: \\f0f9;\n$fa-var-wheat-awn-circle-exclamation: \\e598;\n$fa-var-snowman: \\f7d0;\n$fa-var-mortar-pestle: \\f5a7;\n$fa-var-road-barrier: \\e562;\n$fa-var-school: \\f549;\n$fa-var-igloo: \\f7ae;\n$fa-var-joint: \\f595;\n$fa-var-angle-right: \\f105;\n$fa-var-horse: \\f6f0;\n$fa-var-q: \\51;\n$fa-var-g: \\47;\n$fa-var-notes-medical: \\f481;\n$fa-var-temperature-half: \\f2c9;\n$fa-var-temperature-2: \\f2c9;\n$fa-var-thermometer-2: \\f2c9;\n$fa-var-thermometer-half: \\f2c9;\n$fa-var-dong-sign: \\e169;\n$fa-var-capsules: \\f46b;\n$fa-var-poo-storm: \\f75a;\n$fa-var-poo-bolt: \\f75a;\n$fa-var-face-frown-open: \\f57a;\n$fa-var-frown-open: \\f57a;\n$fa-var-hand-point-up: \\f0a6;\n$fa-var-money-bill: \\f0d6;\n$fa-var-bookmark: \\f02e;\n$fa-var-align-justify: \\f039;\n$fa-var-umbrella-beach: \\f5ca;\n$fa-var-helmet-un: \\e503;\n$fa-var-bullseye: \\f140;\n$fa-var-bacon: \\f7e5;\n$fa-var-hand-point-down: \\f0a7;\n$fa-var-arrow-up-from-bracket: \\e09a;\n$fa-var-folder: \\f07b;\n$fa-var-folder-blank: \\f07b;\n$fa-var-file-waveform: \\f478;\n$fa-var-file-medical-alt: \\f478;\n$fa-var-radiation: \\f7b9;\n$fa-var-chart-simple: \\e473;\n$fa-var-mars-stroke: \\f229;\n$fa-var-vial: \\f492;\n$fa-var-gauge: \\f624;\n$fa-var-dashboard: \\f624;\n$fa-var-gauge-med: \\f624;\n$fa-var-tachometer-alt-average: \\f624;\n$fa-var-wand-magic-sparkles: \\e2ca;\n$fa-var-magic-wand-sparkles: \\e2ca;\n$fa-var-e: \\45;\n$fa-var-pen-clip: \\f305;\n$fa-var-pen-alt: \\f305;\n$fa-var-bridge-circle-exclamation: \\e4ca;\n$fa-var-user: \\f007;\n$fa-var-school-circle-check: \\e56b;\n$fa-var-dumpster: \\f793;\n$fa-var-van-shuttle: \\f5b6;\n$fa-var-shuttle-van: \\f5b6;\n$fa-var-building-user: \\e4da;\n$fa-var-square-caret-left: \\f191;\n$fa-var-caret-square-left: \\f191;\n$fa-var-highlighter: \\f591;\n$fa-var-key: \\f084;\n$fa-var-bullhorn: \\f0a1;\n$fa-var-globe: \\f0ac;\n$fa-var-synagogue: \\f69b;\n$fa-var-person-half-dress: \\e548;\n$fa-var-road-bridge: \\e563;\n$fa-var-location-arrow: \\f124;\n$fa-var-c: \\43;\n$fa-var-tablet-button: \\f10a;\n$fa-var-building-lock: \\e4d6;\n$fa-var-pizza-slice: \\f818;\n$fa-var-money-bill-wave: \\f53a;\n$fa-var-chart-area: \\f1fe;\n$fa-var-area-chart: \\f1fe;\n$fa-var-house-flag: \\e50d;\n$fa-var-person-circle-minus: \\e540;\n$fa-var-ban: \\f05e;\n$fa-var-cancel: \\f05e;\n$fa-var-camera-rotate: \\e0d8;\n$fa-var-spray-can-sparkles: \\f5d0;\n$fa-var-air-freshener: \\f5d0;\n$fa-var-star: \\f005;\n$fa-var-repeat: \\f363;\n$fa-var-cross: \\f654;\n$fa-var-box: \\f466;\n$fa-var-venus-mars: \\f228;\n$fa-var-arrow-pointer: \\f245;\n$fa-var-mouse-pointer: \\f245;\n$fa-var-maximize: \\f31e;\n$fa-var-expand-arrows-alt: \\f31e;\n$fa-var-charging-station: \\f5e7;\n$fa-var-shapes: \\f61f;\n$fa-var-triangle-circle-square: \\f61f;\n$fa-var-shuffle: \\f074;\n$fa-var-random: \\f074;\n$fa-var-person-running: \\f70c;\n$fa-var-running: \\f70c;\n$fa-var-mobile-retro: \\e527;\n$fa-var-grip-lines-vertical: \\f7a5;\n$fa-var-spider: \\f717;\n$fa-var-hands-bound: \\e4f9;\n$fa-var-file-invoice-dollar: \\f571;\n$fa-var-plane-circle-exclamation: \\e556;\n$fa-var-x-ray: \\f497;\n$fa-var-spell-check: \\f891;\n$fa-var-slash: \\f715;\n$fa-var-computer-mouse: \\f8cc;\n$fa-var-mouse: \\f8cc;\n$fa-var-arrow-right-to-bracket: \\f090;\n$fa-var-sign-in: \\f090;\n$fa-var-shop-slash: \\e070;\n$fa-var-store-alt-slash: \\e070;\n$fa-var-server: \\f233;\n$fa-var-virus-covid-slash: \\e4a9;\n$fa-var-shop-lock: \\e4a5;\n$fa-var-hourglass-start: \\f251;\n$fa-var-hourglass-1: \\f251;\n$fa-var-blender-phone: \\f6b6;\n$fa-var-building-wheat: \\e4db;\n$fa-var-person-breastfeeding: \\e53a;\n$fa-var-right-to-bracket: \\f2f6;\n$fa-var-sign-in-alt: \\f2f6;\n$fa-var-venus: \\f221;\n$fa-var-passport: \\f5ab;\n$fa-var-thumbtack-slash: \\e68f;\n$fa-var-thumb-tack-slash: \\e68f;\n$fa-var-heart-pulse: \\f21e;\n$fa-var-heartbeat: \\f21e;\n$fa-var-people-carry-box: \\f4ce;\n$fa-var-people-carry: \\f4ce;\n$fa-var-temperature-high: \\f769;\n$fa-var-microchip: \\f2db;\n$fa-var-crown: \\f521;\n$fa-var-weight-hanging: \\f5cd;\n$fa-var-xmarks-lines: \\e59a;\n$fa-var-file-prescription: \\f572;\n$fa-var-weight-scale: \\f496;\n$fa-var-weight: \\f496;\n$fa-var-user-group: \\f500;\n$fa-var-user-friends: \\f500;\n$fa-var-arrow-up-a-z: \\f15e;\n$fa-var-sort-alpha-up: \\f15e;\n$fa-var-chess-knight: \\f441;\n$fa-var-face-laugh-squint: \\f59b;\n$fa-var-laugh-squint: \\f59b;\n$fa-var-wheelchair: \\f193;\n$fa-var-circle-arrow-up: \\f0aa;\n$fa-var-arrow-circle-up: \\f0aa;\n$fa-var-toggle-on: \\f205;\n$fa-var-person-walking: \\f554;\n$fa-var-walking: \\f554;\n$fa-var-l: \\4c;\n$fa-var-fire: \\f06d;\n$fa-var-bed-pulse: \\f487;\n$fa-var-procedures: \\f487;\n$fa-var-shuttle-space: \\f197;\n$fa-var-space-shuttle: \\f197;\n$fa-var-face-laugh: \\f599;\n$fa-var-laugh: \\f599;\n$fa-var-folder-open: \\f07c;\n$fa-var-heart-circle-plus: \\e500;\n$fa-var-code-fork: \\e13b;\n$fa-var-city: \\f64f;\n$fa-var-microphone-lines: \\f3c9;\n$fa-var-microphone-alt: \\f3c9;\n$fa-var-pepper-hot: \\f816;\n$fa-var-unlock: \\f09c;\n$fa-var-colon-sign: \\e140;\n$fa-var-headset: \\f590;\n$fa-var-store-slash: \\e071;\n$fa-var-road-circle-xmark: \\e566;\n$fa-var-user-minus: \\f503;\n$fa-var-mars-stroke-up: \\f22a;\n$fa-var-mars-stroke-v: \\f22a;\n$fa-var-champagne-glasses: \\f79f;\n$fa-var-glass-cheers: \\f79f;\n$fa-var-clipboard: \\f328;\n$fa-var-house-circle-exclamation: \\e50a;\n$fa-var-file-arrow-up: \\f574;\n$fa-var-file-upload: \\f574;\n$fa-var-wifi: \\f1eb;\n$fa-var-wifi-3: \\f1eb;\n$fa-var-wifi-strong: \\f1eb;\n$fa-var-bath: \\f2cd;\n$fa-var-bathtub: \\f2cd;\n$fa-var-underline: \\f0cd;\n$fa-var-user-pen: \\f4ff;\n$fa-var-user-edit: \\f4ff;\n$fa-var-signature: \\f5b7;\n$fa-var-stroopwafel: \\f551;\n$fa-var-bold: \\f032;\n$fa-var-anchor-lock: \\e4ad;\n$fa-var-building-ngo: \\e4d7;\n$fa-var-manat-sign: \\e1d5;\n$fa-var-not-equal: \\f53e;\n$fa-var-border-top-left: \\f853;\n$fa-var-border-style: \\f853;\n$fa-var-map-location-dot: \\f5a0;\n$fa-var-map-marked-alt: \\f5a0;\n$fa-var-jedi: \\f669;\n$fa-var-square-poll-vertical: \\f681;\n$fa-var-poll: \\f681;\n$fa-var-mug-hot: \\f7b6;\n$fa-var-car-battery: \\f5df;\n$fa-var-battery-car: \\f5df;\n$fa-var-gift: \\f06b;\n$fa-var-dice-two: \\f528;\n$fa-var-chess-queen: \\f445;\n$fa-var-glasses: \\f530;\n$fa-var-chess-board: \\f43c;\n$fa-var-building-circle-check: \\e4d2;\n$fa-var-person-chalkboard: \\e53d;\n$fa-var-mars-stroke-right: \\f22b;\n$fa-var-mars-stroke-h: \\f22b;\n$fa-var-hand-back-fist: \\f255;\n$fa-var-hand-rock: \\f255;\n$fa-var-square-caret-up: \\f151;\n$fa-var-caret-square-up: \\f151;\n$fa-var-cloud-showers-water: \\e4e4;\n$fa-var-chart-bar: \\f080;\n$fa-var-bar-chart: \\f080;\n$fa-var-hands-bubbles: \\e05e;\n$fa-var-hands-wash: \\e05e;\n$fa-var-less-than-equal: \\f537;\n$fa-var-train: \\f238;\n$fa-var-eye-low-vision: \\f2a8;\n$fa-var-low-vision: \\f2a8;\n$fa-var-crow: \\f520;\n$fa-var-sailboat: \\e445;\n$fa-var-window-restore: \\f2d2;\n$fa-var-square-plus: \\f0fe;\n$fa-var-plus-square: \\f0fe;\n$fa-var-torii-gate: \\f6a1;\n$fa-var-frog: \\f52e;\n$fa-var-bucket: \\e4cf;\n$fa-var-image: \\f03e;\n$fa-var-microphone: \\f130;\n$fa-var-cow: \\f6c8;\n$fa-var-caret-up: \\f0d8;\n$fa-var-screwdriver: \\f54a;\n$fa-var-folder-closed: \\e185;\n$fa-var-house-tsunami: \\e515;\n$fa-var-square-nfi: \\e576;\n$fa-var-arrow-up-from-ground-water: \\e4b5;\n$fa-var-martini-glass: \\f57b;\n$fa-var-glass-martini-alt: \\f57b;\n$fa-var-square-binary: \\e69b;\n$fa-var-rotate-left: \\f2ea;\n$fa-var-rotate-back: \\f2ea;\n$fa-var-rotate-backward: \\f2ea;\n$fa-var-undo-alt: \\f2ea;\n$fa-var-table-columns: \\f0db;\n$fa-var-columns: \\f0db;\n$fa-var-lemon: \\f094;\n$fa-var-head-side-mask: \\e063;\n$fa-var-handshake: \\f2b5;\n$fa-var-gem: \\f3a5;\n$fa-var-dolly: \\f472;\n$fa-var-dolly-box: \\f472;\n$fa-var-smoking: \\f48d;\n$fa-var-minimize: \\f78c;\n$fa-var-compress-arrows-alt: \\f78c;\n$fa-var-monument: \\f5a6;\n$fa-var-snowplow: \\f7d2;\n$fa-var-angles-right: \\f101;\n$fa-var-angle-double-right: \\f101;\n$fa-var-cannabis: \\f55f;\n$fa-var-circle-play: \\f144;\n$fa-var-play-circle: \\f144;\n$fa-var-tablets: \\f490;\n$fa-var-ethernet: \\f796;\n$fa-var-euro-sign: \\f153;\n$fa-var-eur: \\f153;\n$fa-var-euro: \\f153;\n$fa-var-chair: \\f6c0;\n$fa-var-circle-check: \\f058;\n$fa-var-check-circle: \\f058;\n$fa-var-circle-stop: \\f28d;\n$fa-var-stop-circle: \\f28d;\n$fa-var-compass-drafting: \\f568;\n$fa-var-drafting-compass: \\f568;\n$fa-var-plate-wheat: \\e55a;\n$fa-var-icicles: \\f7ad;\n$fa-var-person-shelter: \\e54f;\n$fa-var-neuter: \\f22c;\n$fa-var-id-badge: \\f2c1;\n$fa-var-marker: \\f5a1;\n$fa-var-face-laugh-beam: \\f59a;\n$fa-var-laugh-beam: \\f59a;\n$fa-var-helicopter-symbol: \\e502;\n$fa-var-universal-access: \\f29a;\n$fa-var-circle-chevron-up: \\f139;\n$fa-var-chevron-circle-up: \\f139;\n$fa-var-lari-sign: \\e1c8;\n$fa-var-volcano: \\f770;\n$fa-var-person-walking-dashed-line-arrow-right: \\e553;\n$fa-var-sterling-sign: \\f154;\n$fa-var-gbp: \\f154;\n$fa-var-pound-sign: \\f154;\n$fa-var-viruses: \\e076;\n$fa-var-square-person-confined: \\e577;\n$fa-var-user-tie: \\f508;\n$fa-var-arrow-down-long: \\f175;\n$fa-var-long-arrow-down: \\f175;\n$fa-var-tent-arrow-down-to-line: \\e57e;\n$fa-var-certificate: \\f0a3;\n$fa-var-reply-all: \\f122;\n$fa-var-mail-reply-all: \\f122;\n$fa-var-suitcase: \\f0f2;\n$fa-var-person-skating: \\f7c5;\n$fa-var-skating: \\f7c5;\n$fa-var-filter-circle-dollar: \\f662;\n$fa-var-funnel-dollar: \\f662;\n$fa-var-camera-retro: \\f083;\n$fa-var-circle-arrow-down: \\f0ab;\n$fa-var-arrow-circle-down: \\f0ab;\n$fa-var-file-import: \\f56f;\n$fa-var-arrow-right-to-file: \\f56f;\n$fa-var-square-arrow-up-right: \\f14c;\n$fa-var-external-link-square: \\f14c;\n$fa-var-box-open: \\f49e;\n$fa-var-scroll: \\f70e;\n$fa-var-spa: \\f5bb;\n$fa-var-location-pin-lock: \\e51f;\n$fa-var-pause: \\f04c;\n$fa-var-hill-avalanche: \\e507;\n$fa-var-temperature-empty: \\f2cb;\n$fa-var-temperature-0: \\f2cb;\n$fa-var-thermometer-0: \\f2cb;\n$fa-var-thermometer-empty: \\f2cb;\n$fa-var-bomb: \\f1e2;\n$fa-var-registered: \\f25d;\n$fa-var-address-card: \\f2bb;\n$fa-var-contact-card: \\f2bb;\n$fa-var-vcard: \\f2bb;\n$fa-var-scale-unbalanced-flip: \\f516;\n$fa-var-balance-scale-right: \\f516;\n$fa-var-subscript: \\f12c;\n$fa-var-diamond-turn-right: \\f5eb;\n$fa-var-directions: \\f5eb;\n$fa-var-burst: \\e4dc;\n$fa-var-house-laptop: \\e066;\n$fa-var-laptop-house: \\e066;\n$fa-var-face-tired: \\f5c8;\n$fa-var-tired: \\f5c8;\n$fa-var-money-bills: \\e1f3;\n$fa-var-smog: \\f75f;\n$fa-var-crutch: \\f7f7;\n$fa-var-cloud-arrow-up: \\f0ee;\n$fa-var-cloud-upload: \\f0ee;\n$fa-var-cloud-upload-alt: \\f0ee;\n$fa-var-palette: \\f53f;\n$fa-var-arrows-turn-right: \\e4c0;\n$fa-var-vest: \\e085;\n$fa-var-ferry: \\e4ea;\n$fa-var-arrows-down-to-people: \\e4b9;\n$fa-var-seedling: \\f4d8;\n$fa-var-sprout: \\f4d8;\n$fa-var-left-right: \\f337;\n$fa-var-arrows-alt-h: \\f337;\n$fa-var-boxes-packing: \\e4c7;\n$fa-var-circle-arrow-left: \\f0a8;\n$fa-var-arrow-circle-left: \\f0a8;\n$fa-var-group-arrows-rotate: \\e4f6;\n$fa-var-bowl-food: \\e4c6;\n$fa-var-candy-cane: \\f786;\n$fa-var-arrow-down-wide-short: \\f160;\n$fa-var-sort-amount-asc: \\f160;\n$fa-var-sort-amount-down: \\f160;\n$fa-var-cloud-bolt: \\f76c;\n$fa-var-thunderstorm: \\f76c;\n$fa-var-text-slash: \\f87d;\n$fa-var-remove-format: \\f87d;\n$fa-var-face-smile-wink: \\f4da;\n$fa-var-smile-wink: \\f4da;\n$fa-var-file-word: \\f1c2;\n$fa-var-file-powerpoint: \\f1c4;\n$fa-var-arrows-left-right: \\f07e;\n$fa-var-arrows-h: \\f07e;\n$fa-var-house-lock: \\e510;\n$fa-var-cloud-arrow-down: \\f0ed;\n$fa-var-cloud-download: \\f0ed;\n$fa-var-cloud-download-alt: \\f0ed;\n$fa-var-children: \\e4e1;\n$fa-var-chalkboard: \\f51b;\n$fa-var-blackboard: \\f51b;\n$fa-var-user-large-slash: \\f4fa;\n$fa-var-user-alt-slash: \\f4fa;\n$fa-var-envelope-open: \\f2b6;\n$fa-var-handshake-simple-slash: \\e05f;\n$fa-var-handshake-alt-slash: \\e05f;\n$fa-var-mattress-pillow: \\e525;\n$fa-var-guarani-sign: \\e19a;\n$fa-var-arrows-rotate: \\f021;\n$fa-var-refresh: \\f021;\n$fa-var-sync: \\f021;\n$fa-var-fire-extinguisher: \\f134;\n$fa-var-cruzeiro-sign: \\e152;\n$fa-var-greater-than-equal: \\f532;\n$fa-var-shield-halved: \\f3ed;\n$fa-var-shield-alt: \\f3ed;\n$fa-var-book-atlas: \\f558;\n$fa-var-atlas: \\f558;\n$fa-var-virus: \\e074;\n$fa-var-envelope-circle-check: \\e4e8;\n$fa-var-layer-group: \\f5fd;\n$fa-var-arrows-to-dot: \\e4be;\n$fa-var-archway: \\f557;\n$fa-var-heart-circle-check: \\e4fd;\n$fa-var-house-chimney-crack: \\f6f1;\n$fa-var-house-damage: \\f6f1;\n$fa-var-file-zipper: \\f1c6;\n$fa-var-file-archive: \\f1c6;\n$fa-var-square: \\f0c8;\n$fa-var-martini-glass-empty: \\f000;\n$fa-var-glass-martini: \\f000;\n$fa-var-couch: \\f4b8;\n$fa-var-cedi-sign: \\e0df;\n$fa-var-italic: \\f033;\n$fa-var-table-cells-column-lock: \\e678;\n$fa-var-church: \\f51d;\n$fa-var-comments-dollar: \\f653;\n$fa-var-democrat: \\f747;\n$fa-var-z: \\5a;\n$fa-var-person-skiing: \\f7c9;\n$fa-var-skiing: \\f7c9;\n$fa-var-road-lock: \\e567;\n$fa-var-a: \\41;\n$fa-var-temperature-arrow-down: \\e03f;\n$fa-var-temperature-down: \\e03f;\n$fa-var-feather-pointed: \\f56b;\n$fa-var-feather-alt: \\f56b;\n$fa-var-p: \\50;\n$fa-var-snowflake: \\f2dc;\n$fa-var-newspaper: \\f1ea;\n$fa-var-rectangle-ad: \\f641;\n$fa-var-ad: \\f641;\n$fa-var-circle-arrow-right: \\f0a9;\n$fa-var-arrow-circle-right: \\f0a9;\n$fa-var-filter-circle-xmark: \\e17b;\n$fa-var-locust: \\e520;\n$fa-var-sort: \\f0dc;\n$fa-var-unsorted: \\f0dc;\n$fa-var-list-ol: \\f0cb;\n$fa-var-list-1-2: \\f0cb;\n$fa-var-list-numeric: \\f0cb;\n$fa-var-person-dress-burst: \\e544;\n$fa-var-money-check-dollar: \\f53d;\n$fa-var-money-check-alt: \\f53d;\n$fa-var-vector-square: \\f5cb;\n$fa-var-bread-slice: \\f7ec;\n$fa-var-language: \\f1ab;\n$fa-var-face-kiss-wink-heart: \\f598;\n$fa-var-kiss-wink-heart: \\f598;\n$fa-var-filter: \\f0b0;\n$fa-var-question: \\3f;\n$fa-var-file-signature: \\f573;\n$fa-var-up-down-left-right: \\f0b2;\n$fa-var-arrows-alt: \\f0b2;\n$fa-var-house-chimney-user: \\e065;\n$fa-var-hand-holding-heart: \\f4be;\n$fa-var-puzzle-piece: \\f12e;\n$fa-var-money-check: \\f53c;\n$fa-var-star-half-stroke: \\f5c0;\n$fa-var-star-half-alt: \\f5c0;\n$fa-var-code: \\f121;\n$fa-var-whiskey-glass: \\f7a0;\n$fa-var-glass-whiskey: \\f7a0;\n$fa-var-building-circle-exclamation: \\e4d3;\n$fa-var-magnifying-glass-chart: \\e522;\n$fa-var-arrow-up-right-from-square: \\f08e;\n$fa-var-external-link: \\f08e;\n$fa-var-cubes-stacked: \\e4e6;\n$fa-var-won-sign: \\f159;\n$fa-var-krw: \\f159;\n$fa-var-won: \\f159;\n$fa-var-virus-covid: \\e4a8;\n$fa-var-austral-sign: \\e0a9;\n$fa-var-f: \\46;\n$fa-var-leaf: \\f06c;\n$fa-var-road: \\f018;\n$fa-var-taxi: \\f1ba;\n$fa-var-cab: \\f1ba;\n$fa-var-person-circle-plus: \\e541;\n$fa-var-chart-pie: \\f200;\n$fa-var-pie-chart: \\f200;\n$fa-var-bolt-lightning: \\e0b7;\n$fa-var-sack-xmark: \\e56a;\n$fa-var-file-excel: \\f1c3;\n$fa-var-file-contract: \\f56c;\n$fa-var-fish-fins: \\e4f2;\n$fa-var-building-flag: \\e4d5;\n$fa-var-face-grin-beam: \\f582;\n$fa-var-grin-beam: \\f582;\n$fa-var-object-ungroup: \\f248;\n$fa-var-poop: \\f619;\n$fa-var-location-pin: \\f041;\n$fa-var-map-marker: \\f041;\n$fa-var-kaaba: \\f66b;\n$fa-var-toilet-paper: \\f71e;\n$fa-var-helmet-safety: \\f807;\n$fa-var-hard-hat: \\f807;\n$fa-var-hat-hard: \\f807;\n$fa-var-eject: \\f052;\n$fa-var-circle-right: \\f35a;\n$fa-var-arrow-alt-circle-right: \\f35a;\n$fa-var-plane-circle-check: \\e555;\n$fa-var-face-rolling-eyes: \\f5a5;\n$fa-var-meh-rolling-eyes: \\f5a5;\n$fa-var-object-group: \\f247;\n$fa-var-chart-line: \\f201;\n$fa-var-line-chart: \\f201;\n$fa-var-mask-ventilator: \\e524;\n$fa-var-arrow-right: \\f061;\n$fa-var-signs-post: \\f277;\n$fa-var-map-signs: \\f277;\n$fa-var-cash-register: \\f788;\n$fa-var-person-circle-question: \\e542;\n$fa-var-h: \\48;\n$fa-var-tarp: \\e57b;\n$fa-var-screwdriver-wrench: \\f7d9;\n$fa-var-tools: \\f7d9;\n$fa-var-arrows-to-eye: \\e4bf;\n$fa-var-plug-circle-bolt: \\e55b;\n$fa-var-heart: \\f004;\n$fa-var-mars-and-venus: \\f224;\n$fa-var-house-user: \\e1b0;\n$fa-var-home-user: \\e1b0;\n$fa-var-dumpster-fire: \\f794;\n$fa-var-house-crack: \\e3b1;\n$fa-var-martini-glass-citrus: \\f561;\n$fa-var-cocktail: \\f561;\n$fa-var-face-surprise: \\f5c2;\n$fa-var-surprise: \\f5c2;\n$fa-var-bottle-water: \\e4c5;\n$fa-var-circle-pause: \\f28b;\n$fa-var-pause-circle: \\f28b;\n$fa-var-toilet-paper-slash: \\e072;\n$fa-var-apple-whole: \\f5d1;\n$fa-var-apple-alt: \\f5d1;\n$fa-var-kitchen-set: \\e51a;\n$fa-var-r: \\52;\n$fa-var-temperature-quarter: \\f2ca;\n$fa-var-temperature-1: \\f2ca;\n$fa-var-thermometer-1: \\f2ca;\n$fa-var-thermometer-quarter: \\f2ca;\n$fa-var-cube: \\f1b2;\n$fa-var-bitcoin-sign: \\e0b4;\n$fa-var-shield-dog: \\e573;\n$fa-var-solar-panel: \\f5ba;\n$fa-var-lock-open: \\f3c1;\n$fa-var-elevator: \\e16d;\n$fa-var-money-bill-transfer: \\e528;\n$fa-var-money-bill-trend-up: \\e529;\n$fa-var-house-flood-water-circle-arrow-right: \\e50f;\n$fa-var-square-poll-horizontal: \\f682;\n$fa-var-poll-h: \\f682;\n$fa-var-circle: \\f111;\n$fa-var-backward-fast: \\f049;\n$fa-var-fast-backward: \\f049;\n$fa-var-recycle: \\f1b8;\n$fa-var-user-astronaut: \\f4fb;\n$fa-var-plane-slash: \\e069;\n$fa-var-trademark: \\f25c;\n$fa-var-basketball: \\f434;\n$fa-var-basketball-ball: \\f434;\n$fa-var-satellite-dish: \\f7c0;\n$fa-var-circle-up: \\f35b;\n$fa-var-arrow-alt-circle-up: \\f35b;\n$fa-var-mobile-screen-button: \\f3cd;\n$fa-var-mobile-alt: \\f3cd;\n$fa-var-volume-high: \\f028;\n$fa-var-volume-up: \\f028;\n$fa-var-users-rays: \\e593;\n$fa-var-wallet: \\f555;\n$fa-var-clipboard-check: \\f46c;\n$fa-var-file-audio: \\f1c7;\n$fa-var-burger: \\f805;\n$fa-var-hamburger: \\f805;\n$fa-var-wrench: \\f0ad;\n$fa-var-bugs: \\e4d0;\n$fa-var-rupee-sign: \\f156;\n$fa-var-rupee: \\f156;\n$fa-var-file-image: \\f1c5;\n$fa-var-circle-question: \\f059;\n$fa-var-question-circle: \\f059;\n$fa-var-plane-departure: \\f5b0;\n$fa-var-handshake-slash: \\e060;\n$fa-var-book-bookmark: \\e0bb;\n$fa-var-code-branch: \\f126;\n$fa-var-hat-cowboy: \\f8c0;\n$fa-var-bridge: \\e4c8;\n$fa-var-phone-flip: \\f879;\n$fa-var-phone-alt: \\f879;\n$fa-var-truck-front: \\e2b7;\n$fa-var-cat: \\f6be;\n$fa-var-anchor-circle-exclamation: \\e4ab;\n$fa-var-truck-field: \\e58d;\n$fa-var-route: \\f4d7;\n$fa-var-clipboard-question: \\e4e3;\n$fa-var-panorama: \\e209;\n$fa-var-comment-medical: \\f7f5;\n$fa-var-teeth-open: \\f62f;\n$fa-var-file-circle-minus: \\e4ed;\n$fa-var-tags: \\f02c;\n$fa-var-wine-glass: \\f4e3;\n$fa-var-forward-fast: \\f050;\n$fa-var-fast-forward: \\f050;\n$fa-var-face-meh-blank: \\f5a4;\n$fa-var-meh-blank: \\f5a4;\n$fa-var-square-parking: \\f540;\n$fa-var-parking: \\f540;\n$fa-var-house-signal: \\e012;\n$fa-var-bars-progress: \\f828;\n$fa-var-tasks-alt: \\f828;\n$fa-var-faucet-drip: \\e006;\n$fa-var-cart-flatbed: \\f474;\n$fa-var-dolly-flatbed: \\f474;\n$fa-var-ban-smoking: \\f54d;\n$fa-var-smoking-ban: \\f54d;\n$fa-var-terminal: \\f120;\n$fa-var-mobile-button: \\f10b;\n$fa-var-house-medical-flag: \\e514;\n$fa-var-basket-shopping: \\f291;\n$fa-var-shopping-basket: \\f291;\n$fa-var-tape: \\f4db;\n$fa-var-bus-simple: \\f55e;\n$fa-var-bus-alt: \\f55e;\n$fa-var-eye: \\f06e;\n$fa-var-face-sad-cry: \\f5b3;\n$fa-var-sad-cry: \\f5b3;\n$fa-var-audio-description: \\f29e;\n$fa-var-person-military-to-person: \\e54c;\n$fa-var-file-shield: \\e4f0;\n$fa-var-user-slash: \\f506;\n$fa-var-pen: \\f304;\n$fa-var-tower-observation: \\e586;\n$fa-var-file-code: \\f1c9;\n$fa-var-signal: \\f012;\n$fa-var-signal-5: \\f012;\n$fa-var-signal-perfect: \\f012;\n$fa-var-bus: \\f207;\n$fa-var-heart-circle-xmark: \\e501;\n$fa-var-house-chimney: \\e3af;\n$fa-var-home-lg: \\e3af;\n$fa-var-window-maximize: \\f2d0;\n$fa-var-face-frown: \\f119;\n$fa-var-frown: \\f119;\n$fa-var-prescription: \\f5b1;\n$fa-var-shop: \\f54f;\n$fa-var-store-alt: \\f54f;\n$fa-var-floppy-disk: \\f0c7;\n$fa-var-save: \\f0c7;\n$fa-var-vihara: \\f6a7;\n$fa-var-scale-unbalanced: \\f515;\n$fa-var-balance-scale-left: \\f515;\n$fa-var-sort-up: \\f0de;\n$fa-var-sort-asc: \\f0de;\n$fa-var-comment-dots: \\f4ad;\n$fa-var-commenting: \\f4ad;\n$fa-var-plant-wilt: \\e5aa;\n$fa-var-diamond: \\f219;\n$fa-var-face-grin-squint: \\f585;\n$fa-var-grin-squint: \\f585;\n$fa-var-hand-holding-dollar: \\f4c0;\n$fa-var-hand-holding-usd: \\f4c0;\n$fa-var-chart-diagram: \\e695;\n$fa-var-bacterium: \\e05a;\n$fa-var-hand-pointer: \\f25a;\n$fa-var-drum-steelpan: \\f56a;\n$fa-var-hand-scissors: \\f257;\n$fa-var-hands-praying: \\f684;\n$fa-var-praying-hands: \\f684;\n$fa-var-arrow-rotate-right: \\f01e;\n$fa-var-arrow-right-rotate: \\f01e;\n$fa-var-arrow-rotate-forward: \\f01e;\n$fa-var-redo: \\f01e;\n$fa-var-biohazard: \\f780;\n$fa-var-location-crosshairs: \\f601;\n$fa-var-location: \\f601;\n$fa-var-mars-double: \\f227;\n$fa-var-child-dress: \\e59c;\n$fa-var-users-between-lines: \\e591;\n$fa-var-lungs-virus: \\e067;\n$fa-var-face-grin-tears: \\f588;\n$fa-var-grin-tears: \\f588;\n$fa-var-phone: \\f095;\n$fa-var-calendar-xmark: \\f273;\n$fa-var-calendar-times: \\f273;\n$fa-var-child-reaching: \\e59d;\n$fa-var-head-side-virus: \\e064;\n$fa-var-user-gear: \\f4fe;\n$fa-var-user-cog: \\f4fe;\n$fa-var-arrow-up-1-9: \\f163;\n$fa-var-sort-numeric-up: \\f163;\n$fa-var-door-closed: \\f52a;\n$fa-var-shield-virus: \\e06c;\n$fa-var-dice-six: \\f526;\n$fa-var-mosquito-net: \\e52c;\n$fa-var-file-fragment: \\e697;\n$fa-var-bridge-water: \\e4ce;\n$fa-var-person-booth: \\f756;\n$fa-var-text-width: \\f035;\n$fa-var-hat-wizard: \\f6e8;\n$fa-var-pen-fancy: \\f5ac;\n$fa-var-person-digging: \\f85e;\n$fa-var-digging: \\f85e;\n$fa-var-trash: \\f1f8;\n$fa-var-gauge-simple: \\f629;\n$fa-var-gauge-simple-med: \\f629;\n$fa-var-tachometer-average: \\f629;\n$fa-var-book-medical: \\f7e6;\n$fa-var-poo: \\f2fe;\n$fa-var-quote-right: \\f10e;\n$fa-var-quote-right-alt: \\f10e;\n$fa-var-shirt: \\f553;\n$fa-var-t-shirt: \\f553;\n$fa-var-tshirt: \\f553;\n$fa-var-cubes: \\f1b3;\n$fa-var-divide: \\f529;\n$fa-var-tenge-sign: \\f7d7;\n$fa-var-tenge: \\f7d7;\n$fa-var-headphones: \\f025;\n$fa-var-hands-holding: \\f4c2;\n$fa-var-hands-clapping: \\e1a8;\n$fa-var-republican: \\f75e;\n$fa-var-arrow-left: \\f060;\n$fa-var-person-circle-xmark: \\e543;\n$fa-var-ruler: \\f545;\n$fa-var-align-left: \\f036;\n$fa-var-dice-d6: \\f6d1;\n$fa-var-restroom: \\f7bd;\n$fa-var-j: \\4a;\n$fa-var-users-viewfinder: \\e595;\n$fa-var-file-video: \\f1c8;\n$fa-var-up-right-from-square: \\f35d;\n$fa-var-external-link-alt: \\f35d;\n$fa-var-table-cells: \\f00a;\n$fa-var-th: \\f00a;\n$fa-var-file-pdf: \\f1c1;\n$fa-var-book-bible: \\f647;\n$fa-var-bible: \\f647;\n$fa-var-o: \\4f;\n$fa-var-suitcase-medical: \\f0fa;\n$fa-var-medkit: \\f0fa;\n$fa-var-user-secret: \\f21b;\n$fa-var-otter: \\f700;\n$fa-var-person-dress: \\f182;\n$fa-var-female: \\f182;\n$fa-var-comment-dollar: \\f651;\n$fa-var-business-time: \\f64a;\n$fa-var-briefcase-clock: \\f64a;\n$fa-var-table-cells-large: \\f009;\n$fa-var-th-large: \\f009;\n$fa-var-book-tanakh: \\f827;\n$fa-var-tanakh: \\f827;\n$fa-var-phone-volume: \\f2a0;\n$fa-var-volume-control-phone: \\f2a0;\n$fa-var-hat-cowboy-side: \\f8c1;\n$fa-var-clipboard-user: \\f7f3;\n$fa-var-child: \\f1ae;\n$fa-var-lira-sign: \\f195;\n$fa-var-satellite: \\f7bf;\n$fa-var-plane-lock: \\e558;\n$fa-var-tag: \\f02b;\n$fa-var-comment: \\f075;\n$fa-var-cake-candles: \\f1fd;\n$fa-var-birthday-cake: \\f1fd;\n$fa-var-cake: \\f1fd;\n$fa-var-envelope: \\f0e0;\n$fa-var-angles-up: \\f102;\n$fa-var-angle-double-up: \\f102;\n$fa-var-paperclip: \\f0c6;\n$fa-var-arrow-right-to-city: \\e4b3;\n$fa-var-ribbon: \\f4d6;\n$fa-var-lungs: \\f604;\n$fa-var-arrow-up-9-1: \\f887;\n$fa-var-sort-numeric-up-alt: \\f887;\n$fa-var-litecoin-sign: \\e1d3;\n$fa-var-border-none: \\f850;\n$fa-var-circle-nodes: \\e4e2;\n$fa-var-parachute-box: \\f4cd;\n$fa-var-indent: \\f03c;\n$fa-var-truck-field-un: \\e58e;\n$fa-var-hourglass: \\f254;\n$fa-var-hourglass-empty: \\f254;\n$fa-var-mountain: \\f6fc;\n$fa-var-user-doctor: \\f0f0;\n$fa-var-user-md: \\f0f0;\n$fa-var-circle-info: \\f05a;\n$fa-var-info-circle: \\f05a;\n$fa-var-cloud-meatball: \\f73b;\n$fa-var-camera: \\f030;\n$fa-var-camera-alt: \\f030;\n$fa-var-square-virus: \\e578;\n$fa-var-meteor: \\f753;\n$fa-var-car-on: \\e4dd;\n$fa-var-sleigh: \\f7cc;\n$fa-var-arrow-down-1-9: \\f162;\n$fa-var-sort-numeric-asc: \\f162;\n$fa-var-sort-numeric-down: \\f162;\n$fa-var-hand-holding-droplet: \\f4c1;\n$fa-var-hand-holding-water: \\f4c1;\n$fa-var-water: \\f773;\n$fa-var-calendar-check: \\f274;\n$fa-var-braille: \\f2a1;\n$fa-var-prescription-bottle-medical: \\f486;\n$fa-var-prescription-bottle-alt: \\f486;\n$fa-var-landmark: \\f66f;\n$fa-var-truck: \\f0d1;\n$fa-var-crosshairs: \\f05b;\n$fa-var-person-cane: \\e53c;\n$fa-var-tent: \\e57d;\n$fa-var-vest-patches: \\e086;\n$fa-var-check-double: \\f560;\n$fa-var-arrow-down-a-z: \\f15d;\n$fa-var-sort-alpha-asc: \\f15d;\n$fa-var-sort-alpha-down: \\f15d;\n$fa-var-money-bill-wheat: \\e52a;\n$fa-var-cookie: \\f563;\n$fa-var-arrow-rotate-left: \\f0e2;\n$fa-var-arrow-left-rotate: \\f0e2;\n$fa-var-arrow-rotate-back: \\f0e2;\n$fa-var-arrow-rotate-backward: \\f0e2;\n$fa-var-undo: \\f0e2;\n$fa-var-hard-drive: \\f0a0;\n$fa-var-hdd: \\f0a0;\n$fa-var-face-grin-squint-tears: \\f586;\n$fa-var-grin-squint-tears: \\f586;\n$fa-var-dumbbell: \\f44b;\n$fa-var-rectangle-list: \\f022;\n$fa-var-list-alt: \\f022;\n$fa-var-tarp-droplet: \\e57c;\n$fa-var-house-medical-circle-check: \\e511;\n$fa-var-person-skiing-nordic: \\f7ca;\n$fa-var-skiing-nordic: \\f7ca;\n$fa-var-calendar-plus: \\f271;\n$fa-var-plane-arrival: \\f5af;\n$fa-var-circle-left: \\f359;\n$fa-var-arrow-alt-circle-left: \\f359;\n$fa-var-train-subway: \\f239;\n$fa-var-subway: \\f239;\n$fa-var-chart-gantt: \\e0e4;\n$fa-var-indian-rupee-sign: \\e1bc;\n$fa-var-indian-rupee: \\e1bc;\n$fa-var-inr: \\e1bc;\n$fa-var-crop-simple: \\f565;\n$fa-var-crop-alt: \\f565;\n$fa-var-money-bill-1: \\f3d1;\n$fa-var-money-bill-alt: \\f3d1;\n$fa-var-left-long: \\f30a;\n$fa-var-long-arrow-alt-left: \\f30a;\n$fa-var-dna: \\f471;\n$fa-var-virus-slash: \\e075;\n$fa-var-minus: \\f068;\n$fa-var-subtract: \\f068;\n$fa-var-chess: \\f439;\n$fa-var-arrow-left-long: \\f177;\n$fa-var-long-arrow-left: \\f177;\n$fa-var-plug-circle-check: \\e55c;\n$fa-var-street-view: \\f21d;\n$fa-var-franc-sign: \\e18f;\n$fa-var-volume-off: \\f026;\n$fa-var-hands-asl-interpreting: \\f2a3;\n$fa-var-american-sign-language-interpreting: \\f2a3;\n$fa-var-asl-interpreting: \\f2a3;\n$fa-var-hands-american-sign-language-interpreting: \\f2a3;\n$fa-var-gear: \\f013;\n$fa-var-cog: \\f013;\n$fa-var-droplet-slash: \\f5c7;\n$fa-var-tint-slash: \\f5c7;\n$fa-var-mosque: \\f678;\n$fa-var-mosquito: \\e52b;\n$fa-var-star-of-david: \\f69a;\n$fa-var-person-military-rifle: \\e54b;\n$fa-var-cart-shopping: \\f07a;\n$fa-var-shopping-cart: \\f07a;\n$fa-var-vials: \\f493;\n$fa-var-plug-circle-plus: \\e55f;\n$fa-var-place-of-worship: \\f67f;\n$fa-var-grip-vertical: \\f58e;\n$fa-var-hexagon-nodes: \\e699;\n$fa-var-arrow-turn-up: \\f148;\n$fa-var-level-up: \\f148;\n$fa-var-u: \\55;\n$fa-var-square-root-variable: \\f698;\n$fa-var-square-root-alt: \\f698;\n$fa-var-clock: \\f017;\n$fa-var-clock-four: \\f017;\n$fa-var-backward-step: \\f048;\n$fa-var-step-backward: \\f048;\n$fa-var-pallet: \\f482;\n$fa-var-faucet: \\e005;\n$fa-var-baseball-bat-ball: \\f432;\n$fa-var-s: \\53;\n$fa-var-timeline: \\e29c;\n$fa-var-keyboard: \\f11c;\n$fa-var-caret-down: \\f0d7;\n$fa-var-house-chimney-medical: \\f7f2;\n$fa-var-clinic-medical: \\f7f2;\n$fa-var-temperature-three-quarters: \\f2c8;\n$fa-var-temperature-3: \\f2c8;\n$fa-var-thermometer-3: \\f2c8;\n$fa-var-thermometer-three-quarters: \\f2c8;\n$fa-var-mobile-screen: \\f3cf;\n$fa-var-mobile-android-alt: \\f3cf;\n$fa-var-plane-up: \\e22d;\n$fa-var-piggy-bank: \\f4d3;\n$fa-var-battery-half: \\f242;\n$fa-var-battery-3: \\f242;\n$fa-var-mountain-city: \\e52e;\n$fa-var-coins: \\f51e;\n$fa-var-khanda: \\f66d;\n$fa-var-sliders: \\f1de;\n$fa-var-sliders-h: \\f1de;\n$fa-var-folder-tree: \\f802;\n$fa-var-network-wired: \\f6ff;\n$fa-var-map-pin: \\f276;\n$fa-var-hamsa: \\f665;\n$fa-var-cent-sign: \\e3f5;\n$fa-var-flask: \\f0c3;\n$fa-var-person-pregnant: \\e31e;\n$fa-var-wand-sparkles: \\f72b;\n$fa-var-ellipsis-vertical: \\f142;\n$fa-var-ellipsis-v: \\f142;\n$fa-var-ticket: \\f145;\n$fa-var-power-off: \\f011;\n$fa-var-right-long: \\f30b;\n$fa-var-long-arrow-alt-right: \\f30b;\n$fa-var-flag-usa: \\f74d;\n$fa-var-laptop-file: \\e51d;\n$fa-var-tty: \\f1e4;\n$fa-var-teletype: \\f1e4;\n$fa-var-diagram-next: \\e476;\n$fa-var-person-rifle: \\e54e;\n$fa-var-house-medical-circle-exclamation: \\e512;\n$fa-var-closed-captioning: \\f20a;\n$fa-var-person-hiking: \\f6ec;\n$fa-var-hiking: \\f6ec;\n$fa-var-venus-double: \\f226;\n$fa-var-images: \\f302;\n$fa-var-calculator: \\f1ec;\n$fa-var-people-pulling: \\e535;\n$fa-var-n: \\4e;\n$fa-var-cable-car: \\f7da;\n$fa-var-tram: \\f7da;\n$fa-var-cloud-rain: \\f73d;\n$fa-var-building-circle-xmark: \\e4d4;\n$fa-var-ship: \\f21a;\n$fa-var-arrows-down-to-line: \\e4b8;\n$fa-var-download: \\f019;\n$fa-var-face-grin: \\f580;\n$fa-var-grin: \\f580;\n$fa-var-delete-left: \\f55a;\n$fa-var-backspace: \\f55a;\n$fa-var-eye-dropper: \\f1fb;\n$fa-var-eye-dropper-empty: \\f1fb;\n$fa-var-eyedropper: \\f1fb;\n$fa-var-file-circle-check: \\e5a0;\n$fa-var-forward: \\f04e;\n$fa-var-mobile: \\f3ce;\n$fa-var-mobile-android: \\f3ce;\n$fa-var-mobile-phone: \\f3ce;\n$fa-var-face-meh: \\f11a;\n$fa-var-meh: \\f11a;\n$fa-var-align-center: \\f037;\n$fa-var-book-skull: \\f6b7;\n$fa-var-book-dead: \\f6b7;\n$fa-var-id-card: \\f2c2;\n$fa-var-drivers-license: \\f2c2;\n$fa-var-outdent: \\f03b;\n$fa-var-dedent: \\f03b;\n$fa-var-heart-circle-exclamation: \\e4fe;\n$fa-var-house: \\f015;\n$fa-var-home: \\f015;\n$fa-var-home-alt: \\f015;\n$fa-var-home-lg-alt: \\f015;\n$fa-var-calendar-week: \\f784;\n$fa-var-laptop-medical: \\f812;\n$fa-var-b: \\42;\n$fa-var-file-medical: \\f477;\n$fa-var-dice-one: \\f525;\n$fa-var-kiwi-bird: \\f535;\n$fa-var-arrow-right-arrow-left: \\f0ec;\n$fa-var-exchange: \\f0ec;\n$fa-var-rotate-right: \\f2f9;\n$fa-var-redo-alt: \\f2f9;\n$fa-var-rotate-forward: \\f2f9;\n$fa-var-utensils: \\f2e7;\n$fa-var-cutlery: \\f2e7;\n$fa-var-arrow-up-wide-short: \\f161;\n$fa-var-sort-amount-up: \\f161;\n$fa-var-mill-sign: \\e1ed;\n$fa-var-bowl-rice: \\e2eb;\n$fa-var-skull: \\f54c;\n$fa-var-tower-broadcast: \\f519;\n$fa-var-broadcast-tower: \\f519;\n$fa-var-truck-pickup: \\f63c;\n$fa-var-up-long: \\f30c;\n$fa-var-long-arrow-alt-up: \\f30c;\n$fa-var-stop: \\f04d;\n$fa-var-code-merge: \\f387;\n$fa-var-upload: \\f093;\n$fa-var-hurricane: \\f751;\n$fa-var-mound: \\e52d;\n$fa-var-toilet-portable: \\e583;\n$fa-var-compact-disc: \\f51f;\n$fa-var-file-arrow-down: \\f56d;\n$fa-var-file-download: \\f56d;\n$fa-var-caravan: \\f8ff;\n$fa-var-shield-cat: \\e572;\n$fa-var-bolt: \\f0e7;\n$fa-var-zap: \\f0e7;\n$fa-var-glass-water: \\e4f4;\n$fa-var-oil-well: \\e532;\n$fa-var-vault: \\e2c5;\n$fa-var-mars: \\f222;\n$fa-var-toilet: \\f7d8;\n$fa-var-plane-circle-xmark: \\e557;\n$fa-var-yen-sign: \\f157;\n$fa-var-cny: \\f157;\n$fa-var-jpy: \\f157;\n$fa-var-rmb: \\f157;\n$fa-var-yen: \\f157;\n$fa-var-ruble-sign: \\f158;\n$fa-var-rouble: \\f158;\n$fa-var-rub: \\f158;\n$fa-var-ruble: \\f158;\n$fa-var-sun: \\f185;\n$fa-var-guitar: \\f7a6;\n$fa-var-face-laugh-wink: \\f59c;\n$fa-var-laugh-wink: \\f59c;\n$fa-var-horse-head: \\f7ab;\n$fa-var-bore-hole: \\e4c3;\n$fa-var-industry: \\f275;\n$fa-var-circle-down: \\f358;\n$fa-var-arrow-alt-circle-down: \\f358;\n$fa-var-arrows-turn-to-dots: \\e4c1;\n$fa-var-florin-sign: \\e184;\n$fa-var-arrow-down-short-wide: \\f884;\n$fa-var-sort-amount-desc: \\f884;\n$fa-var-sort-amount-down-alt: \\f884;\n$fa-var-less-than: \\3c;\n$fa-var-angle-down: \\f107;\n$fa-var-car-tunnel: \\e4de;\n$fa-var-head-side-cough: \\e061;\n$fa-var-grip-lines: \\f7a4;\n$fa-var-thumbs-down: \\f165;\n$fa-var-user-lock: \\f502;\n$fa-var-arrow-right-long: \\f178;\n$fa-var-long-arrow-right: \\f178;\n$fa-var-anchor-circle-xmark: \\e4ac;\n$fa-var-ellipsis: \\f141;\n$fa-var-ellipsis-h: \\f141;\n$fa-var-chess-pawn: \\f443;\n$fa-var-kit-medical: \\f479;\n$fa-var-first-aid: \\f479;\n$fa-var-person-through-window: \\e5a9;\n$fa-var-toolbox: \\f552;\n$fa-var-hands-holding-circle: \\e4fb;\n$fa-var-bug: \\f188;\n$fa-var-credit-card: \\f09d;\n$fa-var-credit-card-alt: \\f09d;\n$fa-var-car: \\f1b9;\n$fa-var-automobile: \\f1b9;\n$fa-var-hand-holding-hand: \\e4f7;\n$fa-var-book-open-reader: \\f5da;\n$fa-var-book-reader: \\f5da;\n$fa-var-mountain-sun: \\e52f;\n$fa-var-arrows-left-right-to-line: \\e4ba;\n$fa-var-dice-d20: \\f6cf;\n$fa-var-truck-droplet: \\e58c;\n$fa-var-file-circle-xmark: \\e5a1;\n$fa-var-temperature-arrow-up: \\e040;\n$fa-var-temperature-up: \\e040;\n$fa-var-medal: \\f5a2;\n$fa-var-bed: \\f236;\n$fa-var-square-h: \\f0fd;\n$fa-var-h-square: \\f0fd;\n$fa-var-podcast: \\f2ce;\n$fa-var-temperature-full: \\f2c7;\n$fa-var-temperature-4: \\f2c7;\n$fa-var-thermometer-4: \\f2c7;\n$fa-var-thermometer-full: \\f2c7;\n$fa-var-bell: \\f0f3;\n$fa-var-superscript: \\f12b;\n$fa-var-plug-circle-xmark: \\e560;\n$fa-var-star-of-life: \\f621;\n$fa-var-phone-slash: \\f3dd;\n$fa-var-paint-roller: \\f5aa;\n$fa-var-handshake-angle: \\f4c4;\n$fa-var-hands-helping: \\f4c4;\n$fa-var-location-dot: \\f3c5;\n$fa-var-map-marker-alt: \\f3c5;\n$fa-var-file: \\f15b;\n$fa-var-greater-than: \\3e;\n$fa-var-person-swimming: \\f5c4;\n$fa-var-swimmer: \\f5c4;\n$fa-var-arrow-down: \\f063;\n$fa-var-droplet: \\f043;\n$fa-var-tint: \\f043;\n$fa-var-eraser: \\f12d;\n$fa-var-earth-americas: \\f57d;\n$fa-var-earth: \\f57d;\n$fa-var-earth-america: \\f57d;\n$fa-var-globe-americas: \\f57d;\n$fa-var-person-burst: \\e53b;\n$fa-var-dove: \\f4ba;\n$fa-var-battery-empty: \\f244;\n$fa-var-battery-0: \\f244;\n$fa-var-socks: \\f696;\n$fa-var-inbox: \\f01c;\n$fa-var-section: \\e447;\n$fa-var-gauge-high: \\f625;\n$fa-var-tachometer-alt: \\f625;\n$fa-var-tachometer-alt-fast: \\f625;\n$fa-var-envelope-open-text: \\f658;\n$fa-var-hospital: \\f0f8;\n$fa-var-hospital-alt: \\f0f8;\n$fa-var-hospital-wide: \\f0f8;\n$fa-var-wine-bottle: \\f72f;\n$fa-var-chess-rook: \\f447;\n$fa-var-bars-staggered: \\f550;\n$fa-var-reorder: \\f550;\n$fa-var-stream: \\f550;\n$fa-var-dharmachakra: \\f655;\n$fa-var-hotdog: \\f80f;\n$fa-var-person-walking-with-cane: \\f29d;\n$fa-var-blind: \\f29d;\n$fa-var-drum: \\f569;\n$fa-var-ice-cream: \\f810;\n$fa-var-heart-circle-bolt: \\e4fc;\n$fa-var-fax: \\f1ac;\n$fa-var-paragraph: \\f1dd;\n$fa-var-check-to-slot: \\f772;\n$fa-var-vote-yea: \\f772;\n$fa-var-star-half: \\f089;\n$fa-var-boxes-stacked: \\f468;\n$fa-var-boxes: \\f468;\n$fa-var-boxes-alt: \\f468;\n$fa-var-link: \\f0c1;\n$fa-var-chain: \\f0c1;\n$fa-var-ear-listen: \\f2a2;\n$fa-var-assistive-listening-systems: \\f2a2;\n$fa-var-tree-city: \\e587;\n$fa-var-play: \\f04b;\n$fa-var-font: \\f031;\n$fa-var-table-cells-row-lock: \\e67a;\n$fa-var-rupiah-sign: \\e23d;\n$fa-var-magnifying-glass: \\f002;\n$fa-var-search: \\f002;\n$fa-var-table-tennis-paddle-ball: \\f45d;\n$fa-var-ping-pong-paddle-ball: \\f45d;\n$fa-var-table-tennis: \\f45d;\n$fa-var-person-dots-from-line: \\f470;\n$fa-var-diagnoses: \\f470;\n$fa-var-trash-can-arrow-up: \\f82a;\n$fa-var-trash-restore-alt: \\f82a;\n$fa-var-naira-sign: \\e1f6;\n$fa-var-cart-arrow-down: \\f218;\n$fa-var-walkie-talkie: \\f8ef;\n$fa-var-file-pen: \\f31c;\n$fa-var-file-edit: \\f31c;\n$fa-var-receipt: \\f543;\n$fa-var-square-pen: \\f14b;\n$fa-var-pen-square: \\f14b;\n$fa-var-pencil-square: \\f14b;\n$fa-var-suitcase-rolling: \\f5c1;\n$fa-var-person-circle-exclamation: \\e53f;\n$fa-var-chevron-down: \\f078;\n$fa-var-battery-full: \\f240;\n$fa-var-battery: \\f240;\n$fa-var-battery-5: \\f240;\n$fa-var-skull-crossbones: \\f714;\n$fa-var-code-compare: \\e13a;\n$fa-var-list-ul: \\f0ca;\n$fa-var-list-dots: \\f0ca;\n$fa-var-school-lock: \\e56f;\n$fa-var-tower-cell: \\e585;\n$fa-var-down-long: \\f309;\n$fa-var-long-arrow-alt-down: \\f309;\n$fa-var-ranking-star: \\e561;\n$fa-var-chess-king: \\f43f;\n$fa-var-person-harassing: \\e549;\n$fa-var-brazilian-real-sign: \\e46c;\n$fa-var-landmark-dome: \\f752;\n$fa-var-landmark-alt: \\f752;\n$fa-var-arrow-up: \\f062;\n$fa-var-tv: \\f26c;\n$fa-var-television: \\f26c;\n$fa-var-tv-alt: \\f26c;\n$fa-var-shrimp: \\e448;\n$fa-var-list-check: \\f0ae;\n$fa-var-tasks: \\f0ae;\n$fa-var-jug-detergent: \\e519;\n$fa-var-circle-user: \\f2bd;\n$fa-var-user-circle: \\f2bd;\n$fa-var-user-shield: \\f505;\n$fa-var-wind: \\f72e;\n$fa-var-car-burst: \\f5e1;\n$fa-var-car-crash: \\f5e1;\n$fa-var-y: \\59;\n$fa-var-person-snowboarding: \\f7ce;\n$fa-var-snowboarding: \\f7ce;\n$fa-var-truck-fast: \\f48b;\n$fa-var-shipping-fast: \\f48b;\n$fa-var-fish: \\f578;\n$fa-var-user-graduate: \\f501;\n$fa-var-circle-half-stroke: \\f042;\n$fa-var-adjust: \\f042;\n$fa-var-clapperboard: \\e131;\n$fa-var-circle-radiation: \\f7ba;\n$fa-var-radiation-alt: \\f7ba;\n$fa-var-baseball: \\f433;\n$fa-var-baseball-ball: \\f433;\n$fa-var-jet-fighter-up: \\e518;\n$fa-var-diagram-project: \\f542;\n$fa-var-project-diagram: \\f542;\n$fa-var-copy: \\f0c5;\n$fa-var-volume-xmark: \\f6a9;\n$fa-var-volume-mute: \\f6a9;\n$fa-var-volume-times: \\f6a9;\n$fa-var-hand-sparkles: \\e05d;\n$fa-var-grip: \\f58d;\n$fa-var-grip-horizontal: \\f58d;\n$fa-var-share-from-square: \\f14d;\n$fa-var-share-square: \\f14d;\n$fa-var-child-combatant: \\e4e0;\n$fa-var-child-rifle: \\e4e0;\n$fa-var-gun: \\e19b;\n$fa-var-square-phone: \\f098;\n$fa-var-phone-square: \\f098;\n$fa-var-plus: \\2b;\n$fa-var-add: \\2b;\n$fa-var-expand: \\f065;\n$fa-var-computer: \\e4e5;\n$fa-var-xmark: \\f00d;\n$fa-var-close: \\f00d;\n$fa-var-multiply: \\f00d;\n$fa-var-remove: \\f00d;\n$fa-var-times: \\f00d;\n$fa-var-arrows-up-down-left-right: \\f047;\n$fa-var-arrows: \\f047;\n$fa-var-chalkboard-user: \\f51c;\n$fa-var-chalkboard-teacher: \\f51c;\n$fa-var-peso-sign: \\e222;\n$fa-var-building-shield: \\e4d8;\n$fa-var-baby: \\f77c;\n$fa-var-users-line: \\e592;\n$fa-var-quote-left: \\f10d;\n$fa-var-quote-left-alt: \\f10d;\n$fa-var-tractor: \\f722;\n$fa-var-trash-arrow-up: \\f829;\n$fa-var-trash-restore: \\f829;\n$fa-var-arrow-down-up-lock: \\e4b0;\n$fa-var-lines-leaning: \\e51e;\n$fa-var-ruler-combined: \\f546;\n$fa-var-copyright: \\f1f9;\n$fa-var-equals: \\3d;\n$fa-var-blender: \\f517;\n$fa-var-teeth: \\f62e;\n$fa-var-shekel-sign: \\f20b;\n$fa-var-ils: \\f20b;\n$fa-var-shekel: \\f20b;\n$fa-var-sheqel: \\f20b;\n$fa-var-sheqel-sign: \\f20b;\n$fa-var-map: \\f279;\n$fa-var-rocket: \\f135;\n$fa-var-photo-film: \\f87c;\n$fa-var-photo-video: \\f87c;\n$fa-var-folder-minus: \\f65d;\n$fa-var-hexagon-nodes-bolt: \\e69a;\n$fa-var-store: \\f54e;\n$fa-var-arrow-trend-up: \\e098;\n$fa-var-plug-circle-minus: \\e55e;\n$fa-var-sign-hanging: \\f4d9;\n$fa-var-sign: \\f4d9;\n$fa-var-bezier-curve: \\f55b;\n$fa-var-bell-slash: \\f1f6;\n$fa-var-tablet: \\f3fb;\n$fa-var-tablet-android: \\f3fb;\n$fa-var-school-flag: \\e56e;\n$fa-var-fill: \\f575;\n$fa-var-angle-up: \\f106;\n$fa-var-drumstick-bite: \\f6d7;\n$fa-var-holly-berry: \\f7aa;\n$fa-var-chevron-left: \\f053;\n$fa-var-bacteria: \\e059;\n$fa-var-hand-lizard: \\f258;\n$fa-var-notdef: \\e1fe;\n$fa-var-disease: \\f7fa;\n$fa-var-briefcase-medical: \\f469;\n$fa-var-genderless: \\f22d;\n$fa-var-chevron-right: \\f054;\n$fa-var-retweet: \\f079;\n$fa-var-car-rear: \\f5de;\n$fa-var-car-alt: \\f5de;\n$fa-var-pump-soap: \\e06b;\n$fa-var-video-slash: \\f4e2;\n$fa-var-battery-quarter: \\f243;\n$fa-var-battery-2: \\f243;\n$fa-var-radio: \\f8d7;\n$fa-var-baby-carriage: \\f77d;\n$fa-var-carriage-baby: \\f77d;\n$fa-var-traffic-light: \\f637;\n$fa-var-thermometer: \\f491;\n$fa-var-vr-cardboard: \\f729;\n$fa-var-hand-middle-finger: \\f806;\n$fa-var-percent: \\25;\n$fa-var-percentage: \\25;\n$fa-var-truck-moving: \\f4df;\n$fa-var-glass-water-droplet: \\e4f5;\n$fa-var-display: \\e163;\n$fa-var-face-smile: \\f118;\n$fa-var-smile: \\f118;\n$fa-var-thumbtack: \\f08d;\n$fa-var-thumb-tack: \\f08d;\n$fa-var-trophy: \\f091;\n$fa-var-person-praying: \\f683;\n$fa-var-pray: \\f683;\n$fa-var-hammer: \\f6e3;\n$fa-var-hand-peace: \\f25b;\n$fa-var-rotate: \\f2f1;\n$fa-var-sync-alt: \\f2f1;\n$fa-var-spinner: \\f110;\n$fa-var-robot: \\f544;\n$fa-var-peace: \\f67c;\n$fa-var-gears: \\f085;\n$fa-var-cogs: \\f085;\n$fa-var-warehouse: \\f494;\n$fa-var-arrow-up-right-dots: \\e4b7;\n$fa-var-splotch: \\f5bc;\n$fa-var-face-grin-hearts: \\f584;\n$fa-var-grin-hearts: \\f584;\n$fa-var-dice-four: \\f524;\n$fa-var-sim-card: \\f7c4;\n$fa-var-transgender: \\f225;\n$fa-var-transgender-alt: \\f225;\n$fa-var-mercury: \\f223;\n$fa-var-arrow-turn-down: \\f149;\n$fa-var-level-down: \\f149;\n$fa-var-person-falling-burst: \\e547;\n$fa-var-award: \\f559;\n$fa-var-ticket-simple: \\f3ff;\n$fa-var-ticket-alt: \\f3ff;\n$fa-var-building: \\f1ad;\n$fa-var-angles-left: \\f100;\n$fa-var-angle-double-left: \\f100;\n$fa-var-qrcode: \\f029;\n$fa-var-clock-rotate-left: \\f1da;\n$fa-var-history: \\f1da;\n$fa-var-face-grin-beam-sweat: \\f583;\n$fa-var-grin-beam-sweat: \\f583;\n$fa-var-file-export: \\f56e;\n$fa-var-arrow-right-from-file: \\f56e;\n$fa-var-shield: \\f132;\n$fa-var-shield-blank: \\f132;\n$fa-var-arrow-up-short-wide: \\f885;\n$fa-var-sort-amount-up-alt: \\f885;\n$fa-var-comment-nodes: \\e696;\n$fa-var-house-medical: \\e3b2;\n$fa-var-golf-ball-tee: \\f450;\n$fa-var-golf-ball: \\f450;\n$fa-var-circle-chevron-left: \\f137;\n$fa-var-chevron-circle-left: \\f137;\n$fa-var-house-chimney-window: \\e00d;\n$fa-var-pen-nib: \\f5ad;\n$fa-var-tent-arrow-turn-left: \\e580;\n$fa-var-tents: \\e582;\n$fa-var-wand-magic: \\f0d0;\n$fa-var-magic: \\f0d0;\n$fa-var-dog: \\f6d3;\n$fa-var-carrot: \\f787;\n$fa-var-moon: \\f186;\n$fa-var-wine-glass-empty: \\f5ce;\n$fa-var-wine-glass-alt: \\f5ce;\n$fa-var-cheese: \\f7ef;\n$fa-var-yin-yang: \\f6ad;\n$fa-var-music: \\f001;\n$fa-var-code-commit: \\f386;\n$fa-var-temperature-low: \\f76b;\n$fa-var-person-biking: \\f84a;\n$fa-var-biking: \\f84a;\n$fa-var-broom: \\f51a;\n$fa-var-shield-heart: \\e574;\n$fa-var-gopuram: \\f664;\n$fa-var-earth-oceania: \\e47b;\n$fa-var-globe-oceania: \\e47b;\n$fa-var-square-xmark: \\f2d3;\n$fa-var-times-square: \\f2d3;\n$fa-var-xmark-square: \\f2d3;\n$fa-var-hashtag: \\23;\n$fa-var-up-right-and-down-left-from-center: \\f424;\n$fa-var-expand-alt: \\f424;\n$fa-var-oil-can: \\f613;\n$fa-var-t: \\54;\n$fa-var-hippo: \\f6ed;\n$fa-var-chart-column: \\e0e3;\n$fa-var-infinity: \\f534;\n$fa-var-vial-circle-check: \\e596;\n$fa-var-person-arrow-down-to-line: \\e538;\n$fa-var-voicemail: \\f897;\n$fa-var-fan: \\f863;\n$fa-var-person-walking-luggage: \\e554;\n$fa-var-up-down: \\f338;\n$fa-var-arrows-alt-v: \\f338;\n$fa-var-cloud-moon-rain: \\f73c;\n$fa-var-calendar: \\f133;\n$fa-var-trailer: \\e041;\n$fa-var-bahai: \\f666;\n$fa-var-haykal: \\f666;\n$fa-var-sd-card: \\f7c2;\n$fa-var-dragon: \\f6d5;\n$fa-var-shoe-prints: \\f54b;\n$fa-var-circle-plus: \\f055;\n$fa-var-plus-circle: \\f055;\n$fa-var-face-grin-tongue-wink: \\f58b;\n$fa-var-grin-tongue-wink: \\f58b;\n$fa-var-hand-holding: \\f4bd;\n$fa-var-plug-circle-exclamation: \\e55d;\n$fa-var-link-slash: \\f127;\n$fa-var-chain-broken: \\f127;\n$fa-var-chain-slash: \\f127;\n$fa-var-unlink: \\f127;\n$fa-var-clone: \\f24d;\n$fa-var-person-walking-arrow-loop-left: \\e551;\n$fa-var-arrow-up-z-a: \\f882;\n$fa-var-sort-alpha-up-alt: \\f882;\n$fa-var-fire-flame-curved: \\f7e4;\n$fa-var-fire-alt: \\f7e4;\n$fa-var-tornado: \\f76f;\n$fa-var-file-circle-plus: \\e494;\n$fa-var-book-quran: \\f687;\n$fa-var-quran: \\f687;\n$fa-var-anchor: \\f13d;\n$fa-var-border-all: \\f84c;\n$fa-var-face-angry: \\f556;\n$fa-var-angry: \\f556;\n$fa-var-cookie-bite: \\f564;\n$fa-var-arrow-trend-down: \\e097;\n$fa-var-rss: \\f09e;\n$fa-var-feed: \\f09e;\n$fa-var-draw-polygon: \\f5ee;\n$fa-var-scale-balanced: \\f24e;\n$fa-var-balance-scale: \\f24e;\n$fa-var-gauge-simple-high: \\f62a;\n$fa-var-tachometer: \\f62a;\n$fa-var-tachometer-fast: \\f62a;\n$fa-var-shower: \\f2cc;\n$fa-var-desktop: \\f390;\n$fa-var-desktop-alt: \\f390;\n$fa-var-m: \\4d;\n$fa-var-table-list: \\f00b;\n$fa-var-th-list: \\f00b;\n$fa-var-comment-sms: \\f7cd;\n$fa-var-sms: \\f7cd;\n$fa-var-book: \\f02d;\n$fa-var-user-plus: \\f234;\n$fa-var-check: \\f00c;\n$fa-var-battery-three-quarters: \\f241;\n$fa-var-battery-4: \\f241;\n$fa-var-house-circle-check: \\e509;\n$fa-var-angle-left: \\f104;\n$fa-var-diagram-successor: \\e47a;\n$fa-var-truck-arrow-right: \\e58b;\n$fa-var-arrows-split-up-and-left: \\e4bc;\n$fa-var-hand-fist: \\f6de;\n$fa-var-fist-raised: \\f6de;\n$fa-var-cloud-moon: \\f6c3;\n$fa-var-briefcase: \\f0b1;\n$fa-var-person-falling: \\e546;\n$fa-var-image-portrait: \\f3e0;\n$fa-var-portrait: \\f3e0;\n$fa-var-user-tag: \\f507;\n$fa-var-rug: \\e569;\n$fa-var-earth-europe: \\f7a2;\n$fa-var-globe-europe: \\f7a2;\n$fa-var-cart-flatbed-suitcase: \\f59d;\n$fa-var-luggage-cart: \\f59d;\n$fa-var-rectangle-xmark: \\f410;\n$fa-var-rectangle-times: \\f410;\n$fa-var-times-rectangle: \\f410;\n$fa-var-window-close: \\f410;\n$fa-var-baht-sign: \\e0ac;\n$fa-var-book-open: \\f518;\n$fa-var-book-journal-whills: \\f66a;\n$fa-var-journal-whills: \\f66a;\n$fa-var-handcuffs: \\e4f8;\n$fa-var-triangle-exclamation: \\f071;\n$fa-var-exclamation-triangle: \\f071;\n$fa-var-warning: \\f071;\n$fa-var-database: \\f1c0;\n$fa-var-share: \\f064;\n$fa-var-mail-forward: \\f064;\n$fa-var-bottle-droplet: \\e4c4;\n$fa-var-mask-face: \\e1d7;\n$fa-var-hill-rockslide: \\e508;\n$fa-var-right-left: \\f362;\n$fa-var-exchange-alt: \\f362;\n$fa-var-paper-plane: \\f1d8;\n$fa-var-road-circle-exclamation: \\e565;\n$fa-var-dungeon: \\f6d9;\n$fa-var-align-right: \\f038;\n$fa-var-money-bill-1-wave: \\f53b;\n$fa-var-money-bill-wave-alt: \\f53b;\n$fa-var-life-ring: \\f1cd;\n$fa-var-hands: \\f2a7;\n$fa-var-sign-language: \\f2a7;\n$fa-var-signing: \\f2a7;\n$fa-var-calendar-day: \\f783;\n$fa-var-water-ladder: \\f5c5;\n$fa-var-ladder-water: \\f5c5;\n$fa-var-swimming-pool: \\f5c5;\n$fa-var-arrows-up-down: \\f07d;\n$fa-var-arrows-v: \\f07d;\n$fa-var-face-grimace: \\f57f;\n$fa-var-grimace: \\f57f;\n$fa-var-wheelchair-move: \\e2ce;\n$fa-var-wheelchair-alt: \\e2ce;\n$fa-var-turn-down: \\f3be;\n$fa-var-level-down-alt: \\f3be;\n$fa-var-person-walking-arrow-right: \\e552;\n$fa-var-square-envelope: \\f199;\n$fa-var-envelope-square: \\f199;\n$fa-var-dice: \\f522;\n$fa-var-bowling-ball: \\f436;\n$fa-var-brain: \\f5dc;\n$fa-var-bandage: \\f462;\n$fa-var-band-aid: \\f462;\n$fa-var-calendar-minus: \\f272;\n$fa-var-circle-xmark: \\f057;\n$fa-var-times-circle: \\f057;\n$fa-var-xmark-circle: \\f057;\n$fa-var-gifts: \\f79c;\n$fa-var-hotel: \\f594;\n$fa-var-earth-asia: \\f57e;\n$fa-var-globe-asia: \\f57e;\n$fa-var-id-card-clip: \\f47f;\n$fa-var-id-card-alt: \\f47f;\n$fa-var-magnifying-glass-plus: \\f00e;\n$fa-var-search-plus: \\f00e;\n$fa-var-thumbs-up: \\f164;\n$fa-var-user-clock: \\f4fd;\n$fa-var-hand-dots: \\f461;\n$fa-var-allergies: \\f461;\n$fa-var-file-invoice: \\f570;\n$fa-var-window-minimize: \\f2d1;\n$fa-var-mug-saucer: \\f0f4;\n$fa-var-coffee: \\f0f4;\n$fa-var-brush: \\f55d;\n$fa-var-file-half-dashed: \\e698;\n$fa-var-mask: \\f6fa;\n$fa-var-magnifying-glass-minus: \\f010;\n$fa-var-search-minus: \\f010;\n$fa-var-ruler-vertical: \\f548;\n$fa-var-user-large: \\f406;\n$fa-var-user-alt: \\f406;\n$fa-var-train-tram: \\e5b4;\n$fa-var-user-nurse: \\f82f;\n$fa-var-syringe: \\f48e;\n$fa-var-cloud-sun: \\f6c4;\n$fa-var-stopwatch-20: \\e06f;\n$fa-var-square-full: \\f45c;\n$fa-var-magnet: \\f076;\n$fa-var-jar: \\e516;\n$fa-var-note-sticky: \\f249;\n$fa-var-sticky-note: \\f249;\n$fa-var-bug-slash: \\e490;\n$fa-var-arrow-up-from-water-pump: \\e4b6;\n$fa-var-bone: \\f5d7;\n$fa-var-table-cells-row-unlock: \\e691;\n$fa-var-user-injured: \\f728;\n$fa-var-face-sad-tear: \\f5b4;\n$fa-var-sad-tear: \\f5b4;\n$fa-var-plane: \\f072;\n$fa-var-tent-arrows-down: \\e581;\n$fa-var-exclamation: \\21;\n$fa-var-arrows-spin: \\e4bb;\n$fa-var-print: \\f02f;\n$fa-var-turkish-lira-sign: \\e2bb;\n$fa-var-try: \\e2bb;\n$fa-var-turkish-lira: \\e2bb;\n$fa-var-dollar-sign: \\24;\n$fa-var-dollar: \\24;\n$fa-var-usd: \\24;\n$fa-var-x: \\58;\n$fa-var-magnifying-glass-dollar: \\f688;\n$fa-var-search-dollar: \\f688;\n$fa-var-users-gear: \\f509;\n$fa-var-users-cog: \\f509;\n$fa-var-person-military-pointing: \\e54a;\n$fa-var-building-columns: \\f19c;\n$fa-var-bank: \\f19c;\n$fa-var-institution: \\f19c;\n$fa-var-museum: \\f19c;\n$fa-var-university: \\f19c;\n$fa-var-umbrella: \\f0e9;\n$fa-var-trowel: \\e589;\n$fa-var-d: \\44;\n$fa-var-stapler: \\e5af;\n$fa-var-masks-theater: \\f630;\n$fa-var-theater-masks: \\f630;\n$fa-var-kip-sign: \\e1c4;\n$fa-var-hand-point-left: \\f0a5;\n$fa-var-handshake-simple: \\f4c6;\n$fa-var-handshake-alt: \\f4c6;\n$fa-var-jet-fighter: \\f0fb;\n$fa-var-fighter-jet: \\f0fb;\n$fa-var-square-share-nodes: \\f1e1;\n$fa-var-share-alt-square: \\f1e1;\n$fa-var-barcode: \\f02a;\n$fa-var-plus-minus: \\e43c;\n$fa-var-video: \\f03d;\n$fa-var-video-camera: \\f03d;\n$fa-var-graduation-cap: \\f19d;\n$fa-var-mortar-board: \\f19d;\n$fa-var-hand-holding-medical: \\e05c;\n$fa-var-person-circle-check: \\e53e;\n$fa-var-turn-up: \\f3bf;\n$fa-var-level-up-alt: \\f3bf;\n\n$fa-var-monero: \\f3d0;\n$fa-var-hooli: \\f427;\n$fa-var-yelp: \\f1e9;\n$fa-var-cc-visa: \\f1f0;\n$fa-var-lastfm: \\f202;\n$fa-var-shopware: \\f5b5;\n$fa-var-creative-commons-nc: \\f4e8;\n$fa-var-aws: \\f375;\n$fa-var-redhat: \\f7bc;\n$fa-var-yoast: \\f2b1;\n$fa-var-cloudflare: \\e07d;\n$fa-var-ups: \\f7e0;\n$fa-var-pixiv: \\e640;\n$fa-var-wpexplorer: \\f2de;\n$fa-var-dyalog: \\f399;\n$fa-var-bity: \\f37a;\n$fa-var-stackpath: \\f842;\n$fa-var-buysellads: \\f20d;\n$fa-var-first-order: \\f2b0;\n$fa-var-modx: \\f285;\n$fa-var-guilded: \\e07e;\n$fa-var-vnv: \\f40b;\n$fa-var-square-js: \\f3b9;\n$fa-var-js-square: \\f3b9;\n$fa-var-microsoft: \\f3ca;\n$fa-var-qq: \\f1d6;\n$fa-var-orcid: \\f8d2;\n$fa-var-java: \\f4e4;\n$fa-var-invision: \\f7b0;\n$fa-var-creative-commons-pd-alt: \\f4ed;\n$fa-var-centercode: \\f380;\n$fa-var-glide-g: \\f2a6;\n$fa-var-drupal: \\f1a9;\n$fa-var-jxl: \\e67b;\n$fa-var-dart-lang: \\e693;\n$fa-var-hire-a-helper: \\f3b0;\n$fa-var-creative-commons-by: \\f4e7;\n$fa-var-unity: \\e049;\n$fa-var-whmcs: \\f40d;\n$fa-var-rocketchat: \\f3e8;\n$fa-var-vk: \\f189;\n$fa-var-untappd: \\f405;\n$fa-var-mailchimp: \\f59e;\n$fa-var-css3-alt: \\f38b;\n$fa-var-square-reddit: \\f1a2;\n$fa-var-reddit-square: \\f1a2;\n$fa-var-vimeo-v: \\f27d;\n$fa-var-contao: \\f26d;\n$fa-var-square-font-awesome: \\e5ad;\n$fa-var-deskpro: \\f38f;\n$fa-var-brave: \\e63c;\n$fa-var-sistrix: \\f3ee;\n$fa-var-square-instagram: \\e055;\n$fa-var-instagram-square: \\e055;\n$fa-var-battle-net: \\f835;\n$fa-var-the-red-yeti: \\f69d;\n$fa-var-square-hacker-news: \\f3af;\n$fa-var-hacker-news-square: \\f3af;\n$fa-var-edge: \\f282;\n$fa-var-threads: \\e618;\n$fa-var-napster: \\f3d2;\n$fa-var-square-snapchat: \\f2ad;\n$fa-var-snapchat-square: \\f2ad;\n$fa-var-google-plus-g: \\f0d5;\n$fa-var-artstation: \\f77a;\n$fa-var-markdown: \\f60f;\n$fa-var-sourcetree: \\f7d3;\n$fa-var-google-plus: \\f2b3;\n$fa-var-diaspora: \\f791;\n$fa-var-foursquare: \\f180;\n$fa-var-stack-overflow: \\f16c;\n$fa-var-github-alt: \\f113;\n$fa-var-phoenix-squadron: \\f511;\n$fa-var-pagelines: \\f18c;\n$fa-var-algolia: \\f36c;\n$fa-var-red-river: \\f3e3;\n$fa-var-creative-commons-sa: \\f4ef;\n$fa-var-safari: \\f267;\n$fa-var-google: \\f1a0;\n$fa-var-square-font-awesome-stroke: \\f35c;\n$fa-var-font-awesome-alt: \\f35c;\n$fa-var-atlassian: \\f77b;\n$fa-var-linkedin-in: \\f0e1;\n$fa-var-digital-ocean: \\f391;\n$fa-var-nimblr: \\f5a8;\n$fa-var-chromecast: \\f838;\n$fa-var-evernote: \\f839;\n$fa-var-hacker-news: \\f1d4;\n$fa-var-creative-commons-sampling: \\f4f0;\n$fa-var-adversal: \\f36a;\n$fa-var-creative-commons: \\f25e;\n$fa-var-watchman-monitoring: \\e087;\n$fa-var-fonticons: \\f280;\n$fa-var-weixin: \\f1d7;\n$fa-var-shirtsinbulk: \\f214;\n$fa-var-codepen: \\f1cb;\n$fa-var-git-alt: \\f841;\n$fa-var-lyft: \\f3c3;\n$fa-var-rev: \\f5b2;\n$fa-var-windows: \\f17a;\n$fa-var-wizards-of-the-coast: \\f730;\n$fa-var-square-viadeo: \\f2aa;\n$fa-var-viadeo-square: \\f2aa;\n$fa-var-meetup: \\f2e0;\n$fa-var-centos: \\f789;\n$fa-var-adn: \\f170;\n$fa-var-cloudsmith: \\f384;\n$fa-var-opensuse: \\e62b;\n$fa-var-pied-piper-alt: \\f1a8;\n$fa-var-square-dribbble: \\f397;\n$fa-var-dribbble-square: \\f397;\n$fa-var-codiepie: \\f284;\n$fa-var-node: \\f419;\n$fa-var-mix: \\f3cb;\n$fa-var-steam: \\f1b6;\n$fa-var-cc-apple-pay: \\f416;\n$fa-var-scribd: \\f28a;\n$fa-var-debian: \\e60b;\n$fa-var-openid: \\f19b;\n$fa-var-instalod: \\e081;\n$fa-var-files-pinwheel: \\e69f;\n$fa-var-expeditedssl: \\f23e;\n$fa-var-sellcast: \\f2da;\n$fa-var-square-twitter: \\f081;\n$fa-var-twitter-square: \\f081;\n$fa-var-r-project: \\f4f7;\n$fa-var-delicious: \\f1a5;\n$fa-var-freebsd: \\f3a4;\n$fa-var-vuejs: \\f41f;\n$fa-var-accusoft: \\f369;\n$fa-var-ioxhost: \\f208;\n$fa-var-fonticons-fi: \\f3a2;\n$fa-var-app-store: \\f36f;\n$fa-var-cc-mastercard: \\f1f1;\n$fa-var-itunes-note: \\f3b5;\n$fa-var-golang: \\e40f;\n$fa-var-kickstarter: \\f3bb;\n$fa-var-square-kickstarter: \\f3bb;\n$fa-var-grav: \\f2d6;\n$fa-var-weibo: \\f18a;\n$fa-var-uncharted: \\e084;\n$fa-var-firstdraft: \\f3a1;\n$fa-var-square-youtube: \\f431;\n$fa-var-youtube-square: \\f431;\n$fa-var-wikipedia-w: \\f266;\n$fa-var-wpressr: \\f3e4;\n$fa-var-rendact: \\f3e4;\n$fa-var-angellist: \\f209;\n$fa-var-galactic-republic: \\f50c;\n$fa-var-nfc-directional: \\e530;\n$fa-var-skype: \\f17e;\n$fa-var-joget: \\f3b7;\n$fa-var-fedora: \\f798;\n$fa-var-stripe-s: \\f42a;\n$fa-var-meta: \\e49b;\n$fa-var-laravel: \\f3bd;\n$fa-var-hotjar: \\f3b1;\n$fa-var-bluetooth-b: \\f294;\n$fa-var-square-letterboxd: \\e62e;\n$fa-var-sticker-mule: \\f3f7;\n$fa-var-creative-commons-zero: \\f4f3;\n$fa-var-hips: \\f452;\n$fa-var-css: \\e6a2;\n$fa-var-behance: \\f1b4;\n$fa-var-reddit: \\f1a1;\n$fa-var-discord: \\f392;\n$fa-var-chrome: \\f268;\n$fa-var-app-store-ios: \\f370;\n$fa-var-cc-discover: \\f1f2;\n$fa-var-wpbeginner: \\f297;\n$fa-var-confluence: \\f78d;\n$fa-var-shoelace: \\e60c;\n$fa-var-mdb: \\f8ca;\n$fa-var-dochub: \\f394;\n$fa-var-accessible-icon: \\f368;\n$fa-var-ebay: \\f4f4;\n$fa-var-amazon: \\f270;\n$fa-var-unsplash: \\e07c;\n$fa-var-yarn: \\f7e3;\n$fa-var-square-steam: \\f1b7;\n$fa-var-steam-square: \\f1b7;\n$fa-var-500px: \\f26e;\n$fa-var-square-vimeo: \\f194;\n$fa-var-vimeo-square: \\f194;\n$fa-var-asymmetrik: \\f372;\n$fa-var-font-awesome: \\f2b4;\n$fa-var-font-awesome-flag: \\f2b4;\n$fa-var-font-awesome-logo-full: \\f2b4;\n$fa-var-gratipay: \\f184;\n$fa-var-apple: \\f179;\n$fa-var-hive: \\e07f;\n$fa-var-gitkraken: \\f3a6;\n$fa-var-keybase: \\f4f5;\n$fa-var-apple-pay: \\f415;\n$fa-var-padlet: \\e4a0;\n$fa-var-amazon-pay: \\f42c;\n$fa-var-square-github: \\f092;\n$fa-var-github-square: \\f092;\n$fa-var-stumbleupon: \\f1a4;\n$fa-var-fedex: \\f797;\n$fa-var-phoenix-framework: \\f3dc;\n$fa-var-shopify: \\e057;\n$fa-var-neos: \\f612;\n$fa-var-square-threads: \\e619;\n$fa-var-hackerrank: \\f5f7;\n$fa-var-researchgate: \\f4f8;\n$fa-var-swift: \\f8e1;\n$fa-var-angular: \\f420;\n$fa-var-speakap: \\f3f3;\n$fa-var-angrycreative: \\f36e;\n$fa-var-y-combinator: \\f23b;\n$fa-var-empire: \\f1d1;\n$fa-var-envira: \\f299;\n$fa-var-google-scholar: \\e63b;\n$fa-var-square-gitlab: \\e5ae;\n$fa-var-gitlab-square: \\e5ae;\n$fa-var-studiovinari: \\f3f8;\n$fa-var-pied-piper: \\f2ae;\n$fa-var-wordpress: \\f19a;\n$fa-var-product-hunt: \\f288;\n$fa-var-firefox: \\f269;\n$fa-var-linode: \\f2b8;\n$fa-var-goodreads: \\f3a8;\n$fa-var-square-odnoklassniki: \\f264;\n$fa-var-odnoklassniki-square: \\f264;\n$fa-var-jsfiddle: \\f1cc;\n$fa-var-sith: \\f512;\n$fa-var-themeisle: \\f2b2;\n$fa-var-page4: \\f3d7;\n$fa-var-hashnode: \\e499;\n$fa-var-react: \\f41b;\n$fa-var-cc-paypal: \\f1f4;\n$fa-var-squarespace: \\f5be;\n$fa-var-cc-stripe: \\f1f5;\n$fa-var-creative-commons-share: \\f4f2;\n$fa-var-bitcoin: \\f379;\n$fa-var-keycdn: \\f3ba;\n$fa-var-opera: \\f26a;\n$fa-var-itch-io: \\f83a;\n$fa-var-umbraco: \\f8e8;\n$fa-var-galactic-senate: \\f50d;\n$fa-var-ubuntu: \\f7df;\n$fa-var-draft2digital: \\f396;\n$fa-var-stripe: \\f429;\n$fa-var-houzz: \\f27c;\n$fa-var-gg: \\f260;\n$fa-var-dhl: \\f790;\n$fa-var-square-pinterest: \\f0d3;\n$fa-var-pinterest-square: \\f0d3;\n$fa-var-xing: \\f168;\n$fa-var-blackberry: \\f37b;\n$fa-var-creative-commons-pd: \\f4ec;\n$fa-var-playstation: \\f3df;\n$fa-var-quinscape: \\f459;\n$fa-var-less: \\f41d;\n$fa-var-blogger-b: \\f37d;\n$fa-var-opencart: \\f23d;\n$fa-var-vine: \\f1ca;\n$fa-var-signal-messenger: \\e663;\n$fa-var-paypal: \\f1ed;\n$fa-var-gitlab: \\f296;\n$fa-var-typo3: \\f42b;\n$fa-var-reddit-alien: \\f281;\n$fa-var-yahoo: \\f19e;\n$fa-var-dailymotion: \\e052;\n$fa-var-affiliatetheme: \\f36b;\n$fa-var-pied-piper-pp: \\f1a7;\n$fa-var-bootstrap: \\f836;\n$fa-var-odnoklassniki: \\f263;\n$fa-var-nfc-symbol: \\e531;\n$fa-var-mintbit: \\e62f;\n$fa-var-ethereum: \\f42e;\n$fa-var-speaker-deck: \\f83c;\n$fa-var-creative-commons-nc-eu: \\f4e9;\n$fa-var-patreon: \\f3d9;\n$fa-var-avianex: \\f374;\n$fa-var-ello: \\f5f1;\n$fa-var-gofore: \\f3a7;\n$fa-var-bimobject: \\f378;\n$fa-var-brave-reverse: \\e63d;\n$fa-var-facebook-f: \\f39e;\n$fa-var-square-google-plus: \\f0d4;\n$fa-var-google-plus-square: \\f0d4;\n$fa-var-web-awesome: \\e682;\n$fa-var-mandalorian: \\f50f;\n$fa-var-first-order-alt: \\f50a;\n$fa-var-osi: \\f41a;\n$fa-var-google-wallet: \\f1ee;\n$fa-var-d-and-d-beyond: \\f6ca;\n$fa-var-periscope: \\f3da;\n$fa-var-fulcrum: \\f50b;\n$fa-var-cloudscale: \\f383;\n$fa-var-forumbee: \\f211;\n$fa-var-mizuni: \\f3cc;\n$fa-var-schlix: \\f3ea;\n$fa-var-square-xing: \\f169;\n$fa-var-xing-square: \\f169;\n$fa-var-bandcamp: \\f2d5;\n$fa-var-wpforms: \\f298;\n$fa-var-cloudversify: \\f385;\n$fa-var-usps: \\f7e1;\n$fa-var-megaport: \\f5a3;\n$fa-var-magento: \\f3c4;\n$fa-var-spotify: \\f1bc;\n$fa-var-optin-monster: \\f23c;\n$fa-var-fly: \\f417;\n$fa-var-square-bluesky: \\e6a3;\n$fa-var-aviato: \\f421;\n$fa-var-itunes: \\f3b4;\n$fa-var-cuttlefish: \\f38c;\n$fa-var-blogger: \\f37c;\n$fa-var-flickr: \\f16e;\n$fa-var-viber: \\f409;\n$fa-var-soundcloud: \\f1be;\n$fa-var-digg: \\f1a6;\n$fa-var-tencent-weibo: \\f1d5;\n$fa-var-letterboxd: \\e62d;\n$fa-var-symfony: \\f83d;\n$fa-var-maxcdn: \\f136;\n$fa-var-etsy: \\f2d7;\n$fa-var-facebook-messenger: \\f39f;\n$fa-var-audible: \\f373;\n$fa-var-think-peaks: \\f731;\n$fa-var-bilibili: \\e3d9;\n$fa-var-erlang: \\f39d;\n$fa-var-x-twitter: \\e61b;\n$fa-var-cotton-bureau: \\f89e;\n$fa-var-dashcube: \\f210;\n$fa-var-42-group: \\e080;\n$fa-var-innosoft: \\e080;\n$fa-var-stack-exchange: \\f18d;\n$fa-var-elementor: \\f430;\n$fa-var-square-pied-piper: \\e01e;\n$fa-var-pied-piper-square: \\e01e;\n$fa-var-creative-commons-nd: \\f4eb;\n$fa-var-palfed: \\f3d8;\n$fa-var-superpowers: \\f2dd;\n$fa-var-resolving: \\f3e7;\n$fa-var-xbox: \\f412;\n$fa-var-square-web-awesome-stroke: \\e684;\n$fa-var-searchengin: \\f3eb;\n$fa-var-tiktok: \\e07b;\n$fa-var-square-facebook: \\f082;\n$fa-var-facebook-square: \\f082;\n$fa-var-renren: \\f18b;\n$fa-var-linux: \\f17c;\n$fa-var-glide: \\f2a5;\n$fa-var-linkedin: \\f08c;\n$fa-var-hubspot: \\f3b2;\n$fa-var-deploydog: \\f38e;\n$fa-var-twitch: \\f1e8;\n$fa-var-flutter: \\e694;\n$fa-var-ravelry: \\f2d9;\n$fa-var-mixer: \\e056;\n$fa-var-square-lastfm: \\f203;\n$fa-var-lastfm-square: \\f203;\n$fa-var-vimeo: \\f40a;\n$fa-var-mendeley: \\f7b3;\n$fa-var-uniregistry: \\f404;\n$fa-var-figma: \\f799;\n$fa-var-creative-commons-remix: \\f4ee;\n$fa-var-cc-amazon-pay: \\f42d;\n$fa-var-dropbox: \\f16b;\n$fa-var-instagram: \\f16d;\n$fa-var-cmplid: \\e360;\n$fa-var-upwork: \\e641;\n$fa-var-facebook: \\f09a;\n$fa-var-gripfire: \\f3ac;\n$fa-var-jedi-order: \\f50e;\n$fa-var-uikit: \\f403;\n$fa-var-fort-awesome-alt: \\f3a3;\n$fa-var-phabricator: \\f3db;\n$fa-var-ussunnah: \\f407;\n$fa-var-earlybirds: \\f39a;\n$fa-var-trade-federation: \\f513;\n$fa-var-autoprefixer: \\f41c;\n$fa-var-whatsapp: \\f232;\n$fa-var-square-upwork: \\e67c;\n$fa-var-slideshare: \\f1e7;\n$fa-var-google-play: \\f3ab;\n$fa-var-viadeo: \\f2a9;\n$fa-var-line: \\f3c0;\n$fa-var-google-drive: \\f3aa;\n$fa-var-servicestack: \\f3ec;\n$fa-var-simplybuilt: \\f215;\n$fa-var-bitbucket: \\f171;\n$fa-var-imdb: \\f2d8;\n$fa-var-deezer: \\e077;\n$fa-var-raspberry-pi: \\f7bb;\n$fa-var-jira: \\f7b1;\n$fa-var-docker: \\f395;\n$fa-var-screenpal: \\e570;\n$fa-var-bluetooth: \\f293;\n$fa-var-gitter: \\f426;\n$fa-var-d-and-d: \\f38d;\n$fa-var-microblog: \\e01a;\n$fa-var-cc-diners-club: \\f24c;\n$fa-var-gg-circle: \\f261;\n$fa-var-pied-piper-hat: \\f4e5;\n$fa-var-kickstarter-k: \\f3bc;\n$fa-var-yandex: \\f413;\n$fa-var-readme: \\f4d5;\n$fa-var-html5: \\f13b;\n$fa-var-sellsy: \\f213;\n$fa-var-square-web-awesome: \\e683;\n$fa-var-sass: \\f41e;\n$fa-var-wirsindhandwerk: \\e2d0;\n$fa-var-wsh: \\e2d0;\n$fa-var-buromobelexperte: \\f37f;\n$fa-var-salesforce: \\f83b;\n$fa-var-octopus-deploy: \\e082;\n$fa-var-medapps: \\f3c6;\n$fa-var-ns8: \\f3d5;\n$fa-var-pinterest-p: \\f231;\n$fa-var-apper: \\f371;\n$fa-var-fort-awesome: \\f286;\n$fa-var-waze: \\f83f;\n$fa-var-bluesky: \\e671;\n$fa-var-cc-jcb: \\f24b;\n$fa-var-snapchat: \\f2ab;\n$fa-var-snapchat-ghost: \\f2ab;\n$fa-var-fantasy-flight-games: \\f6dc;\n$fa-var-rust: \\e07a;\n$fa-var-wix: \\f5cf;\n$fa-var-square-behance: \\f1b5;\n$fa-var-behance-square: \\f1b5;\n$fa-var-supple: \\f3f9;\n$fa-var-webflow: \\e65c;\n$fa-var-rebel: \\f1d0;\n$fa-var-css3: \\f13c;\n$fa-var-staylinked: \\f3f5;\n$fa-var-kaggle: \\f5fa;\n$fa-var-space-awesome: \\e5ac;\n$fa-var-deviantart: \\f1bd;\n$fa-var-cpanel: \\f388;\n$fa-var-goodreads-g: \\f3a9;\n$fa-var-square-git: \\f1d2;\n$fa-var-git-square: \\f1d2;\n$fa-var-square-tumblr: \\f174;\n$fa-var-tumblr-square: \\f174;\n$fa-var-trello: \\f181;\n$fa-var-creative-commons-nc-jp: \\f4ea;\n$fa-var-get-pocket: \\f265;\n$fa-var-perbyte: \\e083;\n$fa-var-grunt: \\f3ad;\n$fa-var-weebly: \\f5cc;\n$fa-var-connectdevelop: \\f20e;\n$fa-var-leanpub: \\f212;\n$fa-var-black-tie: \\f27e;\n$fa-var-themeco: \\f5c6;\n$fa-var-python: \\f3e2;\n$fa-var-android: \\f17b;\n$fa-var-bots: \\e340;\n$fa-var-free-code-camp: \\f2c5;\n$fa-var-hornbill: \\f592;\n$fa-var-js: \\f3b8;\n$fa-var-ideal: \\e013;\n$fa-var-git: \\f1d3;\n$fa-var-dev: \\f6cc;\n$fa-var-sketch: \\f7c6;\n$fa-var-yandex-international: \\f414;\n$fa-var-cc-amex: \\f1f3;\n$fa-var-uber: \\f402;\n$fa-var-github: \\f09b;\n$fa-var-php: \\f457;\n$fa-var-alipay: \\f642;\n$fa-var-youtube: \\f167;\n$fa-var-skyatlas: \\f216;\n$fa-var-firefox-browser: \\e007;\n$fa-var-replyd: \\f3e6;\n$fa-var-suse: \\f7d6;\n$fa-var-jenkins: \\f3b6;\n$fa-var-twitter: \\f099;\n$fa-var-rockrms: \\f3e9;\n$fa-var-pinterest: \\f0d2;\n$fa-var-buffer: \\f837;\n$fa-var-npm: \\f3d4;\n$fa-var-yammer: \\f840;\n$fa-var-btc: \\f15a;\n$fa-var-dribbble: \\f17d;\n$fa-var-stumbleupon-circle: \\f1a3;\n$fa-var-internet-explorer: \\f26b;\n$fa-var-stubber: \\e5c7;\n$fa-var-telegram: \\f2c6;\n$fa-var-telegram-plane: \\f2c6;\n$fa-var-old-republic: \\f510;\n$fa-var-odysee: \\e5c6;\n$fa-var-square-whatsapp: \\f40c;\n$fa-var-whatsapp-square: \\f40c;\n$fa-var-node-js: \\f3d3;\n$fa-var-edge-legacy: \\e078;\n$fa-var-slack: \\f198;\n$fa-var-slack-hash: \\f198;\n$fa-var-medrt: \\f3c8;\n$fa-var-usb: \\f287;\n$fa-var-tumblr: \\f173;\n$fa-var-vaadin: \\f408;\n$fa-var-quora: \\f2c4;\n$fa-var-square-x-twitter: \\e61a;\n$fa-var-reacteurope: \\f75d;\n$fa-var-medium: \\f23a;\n$fa-var-medium-m: \\f23a;\n$fa-var-amilia: \\f36d;\n$fa-var-mixcloud: \\f289;\n$fa-var-flipboard: \\f44d;\n$fa-var-viacoin: \\f237;\n$fa-var-critical-role: \\f6c9;\n$fa-var-sitrox: \\e44a;\n$fa-var-discourse: \\f393;\n$fa-var-joomla: \\f1aa;\n$fa-var-mastodon: \\f4f6;\n$fa-var-airbnb: \\f834;\n$fa-var-wolf-pack-battalion: \\f514;\n$fa-var-buy-n-large: \\f8a6;\n$fa-var-gulp: \\f3ae;\n$fa-var-creative-commons-sampling-plus: \\f4f1;\n$fa-var-strava: \\f428;\n$fa-var-ember: \\f423;\n$fa-var-canadian-maple-leaf: \\f785;\n$fa-var-teamspeak: \\f4f9;\n$fa-var-pushed: \\f3e1;\n$fa-var-wordpress-simple: \\f411;\n$fa-var-nutritionix: \\f3d6;\n$fa-var-wodu: \\e088;\n$fa-var-google-pay: \\e079;\n$fa-var-intercom: \\f7af;\n$fa-var-zhihu: \\f63f;\n$fa-var-korvue: \\f42f;\n$fa-var-pix: \\e43a;\n$fa-var-steam-symbol: \\f3f6;\n\n$fa-icons: (\n \"0\": $fa-var-0,\n \"1\": $fa-var-1,\n \"2\": $fa-var-2,\n \"3\": $fa-var-3,\n \"4\": $fa-var-4,\n \"5\": $fa-var-5,\n \"6\": $fa-var-6,\n \"7\": $fa-var-7,\n \"8\": $fa-var-8,\n \"9\": $fa-var-9,\n \"fill-drip\": $fa-var-fill-drip,\n \"arrows-to-circle\": $fa-var-arrows-to-circle,\n \"circle-chevron-right\": $fa-var-circle-chevron-right,\n \"chevron-circle-right\": $fa-var-chevron-circle-right,\n \"at\": $fa-var-at,\n \"trash-can\": $fa-var-trash-can,\n \"trash-alt\": $fa-var-trash-alt,\n \"text-height\": $fa-var-text-height,\n \"user-xmark\": $fa-var-user-xmark,\n \"user-times\": $fa-var-user-times,\n \"stethoscope\": $fa-var-stethoscope,\n \"message\": $fa-var-message,\n \"comment-alt\": $fa-var-comment-alt,\n \"info\": $fa-var-info,\n \"down-left-and-up-right-to-center\": $fa-var-down-left-and-up-right-to-center,\n \"compress-alt\": $fa-var-compress-alt,\n \"explosion\": $fa-var-explosion,\n \"file-lines\": $fa-var-file-lines,\n \"file-alt\": $fa-var-file-alt,\n \"file-text\": $fa-var-file-text,\n \"wave-square\": $fa-var-wave-square,\n \"ring\": $fa-var-ring,\n \"building-un\": $fa-var-building-un,\n \"dice-three\": $fa-var-dice-three,\n \"calendar-days\": $fa-var-calendar-days,\n \"calendar-alt\": $fa-var-calendar-alt,\n \"anchor-circle-check\": $fa-var-anchor-circle-check,\n \"building-circle-arrow-right\": $fa-var-building-circle-arrow-right,\n \"volleyball\": $fa-var-volleyball,\n \"volleyball-ball\": $fa-var-volleyball-ball,\n \"arrows-up-to-line\": $fa-var-arrows-up-to-line,\n \"sort-down\": $fa-var-sort-down,\n \"sort-desc\": $fa-var-sort-desc,\n \"circle-minus\": $fa-var-circle-minus,\n \"minus-circle\": $fa-var-minus-circle,\n \"door-open\": $fa-var-door-open,\n \"right-from-bracket\": $fa-var-right-from-bracket,\n \"sign-out-alt\": $fa-var-sign-out-alt,\n \"atom\": $fa-var-atom,\n \"soap\": $fa-var-soap,\n \"icons\": $fa-var-icons,\n \"heart-music-camera-bolt\": $fa-var-heart-music-camera-bolt,\n \"microphone-lines-slash\": $fa-var-microphone-lines-slash,\n \"microphone-alt-slash\": $fa-var-microphone-alt-slash,\n \"bridge-circle-check\": $fa-var-bridge-circle-check,\n \"pump-medical\": $fa-var-pump-medical,\n \"fingerprint\": $fa-var-fingerprint,\n \"hand-point-right\": $fa-var-hand-point-right,\n \"magnifying-glass-location\": $fa-var-magnifying-glass-location,\n \"search-location\": $fa-var-search-location,\n \"forward-step\": $fa-var-forward-step,\n \"step-forward\": $fa-var-step-forward,\n \"face-smile-beam\": $fa-var-face-smile-beam,\n \"smile-beam\": $fa-var-smile-beam,\n \"flag-checkered\": $fa-var-flag-checkered,\n \"football\": $fa-var-football,\n \"football-ball\": $fa-var-football-ball,\n \"school-circle-exclamation\": $fa-var-school-circle-exclamation,\n \"crop\": $fa-var-crop,\n \"angles-down\": $fa-var-angles-down,\n \"angle-double-down\": $fa-var-angle-double-down,\n \"users-rectangle\": $fa-var-users-rectangle,\n \"people-roof\": $fa-var-people-roof,\n \"people-line\": $fa-var-people-line,\n \"beer-mug-empty\": $fa-var-beer-mug-empty,\n \"beer\": $fa-var-beer,\n \"diagram-predecessor\": $fa-var-diagram-predecessor,\n \"arrow-up-long\": $fa-var-arrow-up-long,\n \"long-arrow-up\": $fa-var-long-arrow-up,\n \"fire-flame-simple\": $fa-var-fire-flame-simple,\n \"burn\": $fa-var-burn,\n \"person\": $fa-var-person,\n \"male\": $fa-var-male,\n \"laptop\": $fa-var-laptop,\n \"file-csv\": $fa-var-file-csv,\n \"menorah\": $fa-var-menorah,\n \"truck-plane\": $fa-var-truck-plane,\n \"record-vinyl\": $fa-var-record-vinyl,\n \"face-grin-stars\": $fa-var-face-grin-stars,\n \"grin-stars\": $fa-var-grin-stars,\n \"bong\": $fa-var-bong,\n \"spaghetti-monster-flying\": $fa-var-spaghetti-monster-flying,\n \"pastafarianism\": $fa-var-pastafarianism,\n \"arrow-down-up-across-line\": $fa-var-arrow-down-up-across-line,\n \"spoon\": $fa-var-spoon,\n \"utensil-spoon\": $fa-var-utensil-spoon,\n \"jar-wheat\": $fa-var-jar-wheat,\n \"envelopes-bulk\": $fa-var-envelopes-bulk,\n \"mail-bulk\": $fa-var-mail-bulk,\n \"file-circle-exclamation\": $fa-var-file-circle-exclamation,\n \"circle-h\": $fa-var-circle-h,\n \"hospital-symbol\": $fa-var-hospital-symbol,\n \"pager\": $fa-var-pager,\n \"address-book\": $fa-var-address-book,\n \"contact-book\": $fa-var-contact-book,\n \"strikethrough\": $fa-var-strikethrough,\n \"k\": $fa-var-k,\n \"landmark-flag\": $fa-var-landmark-flag,\n \"pencil\": $fa-var-pencil,\n \"pencil-alt\": $fa-var-pencil-alt,\n \"backward\": $fa-var-backward,\n \"caret-right\": $fa-var-caret-right,\n \"comments\": $fa-var-comments,\n \"paste\": $fa-var-paste,\n \"file-clipboard\": $fa-var-file-clipboard,\n \"code-pull-request\": $fa-var-code-pull-request,\n \"clipboard-list\": $fa-var-clipboard-list,\n \"truck-ramp-box\": $fa-var-truck-ramp-box,\n \"truck-loading\": $fa-var-truck-loading,\n \"user-check\": $fa-var-user-check,\n \"vial-virus\": $fa-var-vial-virus,\n \"sheet-plastic\": $fa-var-sheet-plastic,\n \"blog\": $fa-var-blog,\n \"user-ninja\": $fa-var-user-ninja,\n \"person-arrow-up-from-line\": $fa-var-person-arrow-up-from-line,\n \"scroll-torah\": $fa-var-scroll-torah,\n \"torah\": $fa-var-torah,\n \"broom-ball\": $fa-var-broom-ball,\n \"quidditch\": $fa-var-quidditch,\n \"quidditch-broom-ball\": $fa-var-quidditch-broom-ball,\n \"toggle-off\": $fa-var-toggle-off,\n \"box-archive\": $fa-var-box-archive,\n \"archive\": $fa-var-archive,\n \"person-drowning\": $fa-var-person-drowning,\n \"arrow-down-9-1\": $fa-var-arrow-down-9-1,\n \"sort-numeric-desc\": $fa-var-sort-numeric-desc,\n \"sort-numeric-down-alt\": $fa-var-sort-numeric-down-alt,\n \"face-grin-tongue-squint\": $fa-var-face-grin-tongue-squint,\n \"grin-tongue-squint\": $fa-var-grin-tongue-squint,\n \"spray-can\": $fa-var-spray-can,\n \"truck-monster\": $fa-var-truck-monster,\n \"w\": $fa-var-w,\n \"earth-africa\": $fa-var-earth-africa,\n \"globe-africa\": $fa-var-globe-africa,\n \"rainbow\": $fa-var-rainbow,\n \"circle-notch\": $fa-var-circle-notch,\n \"tablet-screen-button\": $fa-var-tablet-screen-button,\n \"tablet-alt\": $fa-var-tablet-alt,\n \"paw\": $fa-var-paw,\n \"cloud\": $fa-var-cloud,\n \"trowel-bricks\": $fa-var-trowel-bricks,\n \"face-flushed\": $fa-var-face-flushed,\n \"flushed\": $fa-var-flushed,\n \"hospital-user\": $fa-var-hospital-user,\n \"tent-arrow-left-right\": $fa-var-tent-arrow-left-right,\n \"gavel\": $fa-var-gavel,\n \"legal\": $fa-var-legal,\n \"binoculars\": $fa-var-binoculars,\n \"microphone-slash\": $fa-var-microphone-slash,\n \"box-tissue\": $fa-var-box-tissue,\n \"motorcycle\": $fa-var-motorcycle,\n \"bell-concierge\": $fa-var-bell-concierge,\n \"concierge-bell\": $fa-var-concierge-bell,\n \"pen-ruler\": $fa-var-pen-ruler,\n \"pencil-ruler\": $fa-var-pencil-ruler,\n \"people-arrows\": $fa-var-people-arrows,\n \"people-arrows-left-right\": $fa-var-people-arrows-left-right,\n \"mars-and-venus-burst\": $fa-var-mars-and-venus-burst,\n \"square-caret-right\": $fa-var-square-caret-right,\n \"caret-square-right\": $fa-var-caret-square-right,\n \"scissors\": $fa-var-scissors,\n \"cut\": $fa-var-cut,\n \"sun-plant-wilt\": $fa-var-sun-plant-wilt,\n \"toilets-portable\": $fa-var-toilets-portable,\n \"hockey-puck\": $fa-var-hockey-puck,\n \"table\": $fa-var-table,\n \"magnifying-glass-arrow-right\": $fa-var-magnifying-glass-arrow-right,\n \"tachograph-digital\": $fa-var-tachograph-digital,\n \"digital-tachograph\": $fa-var-digital-tachograph,\n \"users-slash\": $fa-var-users-slash,\n \"clover\": $fa-var-clover,\n \"reply\": $fa-var-reply,\n \"mail-reply\": $fa-var-mail-reply,\n \"star-and-crescent\": $fa-var-star-and-crescent,\n \"house-fire\": $fa-var-house-fire,\n \"square-minus\": $fa-var-square-minus,\n \"minus-square\": $fa-var-minus-square,\n \"helicopter\": $fa-var-helicopter,\n \"compass\": $fa-var-compass,\n \"square-caret-down\": $fa-var-square-caret-down,\n \"caret-square-down\": $fa-var-caret-square-down,\n \"file-circle-question\": $fa-var-file-circle-question,\n \"laptop-code\": $fa-var-laptop-code,\n \"swatchbook\": $fa-var-swatchbook,\n \"prescription-bottle\": $fa-var-prescription-bottle,\n \"bars\": $fa-var-bars,\n \"navicon\": $fa-var-navicon,\n \"people-group\": $fa-var-people-group,\n \"hourglass-end\": $fa-var-hourglass-end,\n \"hourglass-3\": $fa-var-hourglass-3,\n \"heart-crack\": $fa-var-heart-crack,\n \"heart-broken\": $fa-var-heart-broken,\n \"square-up-right\": $fa-var-square-up-right,\n \"external-link-square-alt\": $fa-var-external-link-square-alt,\n \"face-kiss-beam\": $fa-var-face-kiss-beam,\n \"kiss-beam\": $fa-var-kiss-beam,\n \"film\": $fa-var-film,\n \"ruler-horizontal\": $fa-var-ruler-horizontal,\n \"people-robbery\": $fa-var-people-robbery,\n \"lightbulb\": $fa-var-lightbulb,\n \"caret-left\": $fa-var-caret-left,\n \"circle-exclamation\": $fa-var-circle-exclamation,\n \"exclamation-circle\": $fa-var-exclamation-circle,\n \"school-circle-xmark\": $fa-var-school-circle-xmark,\n \"arrow-right-from-bracket\": $fa-var-arrow-right-from-bracket,\n \"sign-out\": $fa-var-sign-out,\n \"circle-chevron-down\": $fa-var-circle-chevron-down,\n \"chevron-circle-down\": $fa-var-chevron-circle-down,\n \"unlock-keyhole\": $fa-var-unlock-keyhole,\n \"unlock-alt\": $fa-var-unlock-alt,\n \"cloud-showers-heavy\": $fa-var-cloud-showers-heavy,\n \"headphones-simple\": $fa-var-headphones-simple,\n \"headphones-alt\": $fa-var-headphones-alt,\n \"sitemap\": $fa-var-sitemap,\n \"circle-dollar-to-slot\": $fa-var-circle-dollar-to-slot,\n \"donate\": $fa-var-donate,\n \"memory\": $fa-var-memory,\n \"road-spikes\": $fa-var-road-spikes,\n \"fire-burner\": $fa-var-fire-burner,\n \"flag\": $fa-var-flag,\n \"hanukiah\": $fa-var-hanukiah,\n \"feather\": $fa-var-feather,\n \"volume-low\": $fa-var-volume-low,\n \"volume-down\": $fa-var-volume-down,\n \"comment-slash\": $fa-var-comment-slash,\n \"cloud-sun-rain\": $fa-var-cloud-sun-rain,\n \"compress\": $fa-var-compress,\n \"wheat-awn\": $fa-var-wheat-awn,\n \"wheat-alt\": $fa-var-wheat-alt,\n \"ankh\": $fa-var-ankh,\n \"hands-holding-child\": $fa-var-hands-holding-child,\n \"asterisk\": $fa-var-asterisk,\n \"square-check\": $fa-var-square-check,\n \"check-square\": $fa-var-check-square,\n \"peseta-sign\": $fa-var-peseta-sign,\n \"heading\": $fa-var-heading,\n \"header\": $fa-var-header,\n \"ghost\": $fa-var-ghost,\n \"list\": $fa-var-list,\n \"list-squares\": $fa-var-list-squares,\n \"square-phone-flip\": $fa-var-square-phone-flip,\n \"phone-square-alt\": $fa-var-phone-square-alt,\n \"cart-plus\": $fa-var-cart-plus,\n \"gamepad\": $fa-var-gamepad,\n \"circle-dot\": $fa-var-circle-dot,\n \"dot-circle\": $fa-var-dot-circle,\n \"face-dizzy\": $fa-var-face-dizzy,\n \"dizzy\": $fa-var-dizzy,\n \"egg\": $fa-var-egg,\n \"house-medical-circle-xmark\": $fa-var-house-medical-circle-xmark,\n \"campground\": $fa-var-campground,\n \"folder-plus\": $fa-var-folder-plus,\n \"futbol\": $fa-var-futbol,\n \"futbol-ball\": $fa-var-futbol-ball,\n \"soccer-ball\": $fa-var-soccer-ball,\n \"paintbrush\": $fa-var-paintbrush,\n \"paint-brush\": $fa-var-paint-brush,\n \"lock\": $fa-var-lock,\n \"gas-pump\": $fa-var-gas-pump,\n \"hot-tub-person\": $fa-var-hot-tub-person,\n \"hot-tub\": $fa-var-hot-tub,\n \"map-location\": $fa-var-map-location,\n \"map-marked\": $fa-var-map-marked,\n \"house-flood-water\": $fa-var-house-flood-water,\n \"tree\": $fa-var-tree,\n \"bridge-lock\": $fa-var-bridge-lock,\n \"sack-dollar\": $fa-var-sack-dollar,\n \"pen-to-square\": $fa-var-pen-to-square,\n \"edit\": $fa-var-edit,\n \"car-side\": $fa-var-car-side,\n \"share-nodes\": $fa-var-share-nodes,\n \"share-alt\": $fa-var-share-alt,\n \"heart-circle-minus\": $fa-var-heart-circle-minus,\n \"hourglass-half\": $fa-var-hourglass-half,\n \"hourglass-2\": $fa-var-hourglass-2,\n \"microscope\": $fa-var-microscope,\n \"sink\": $fa-var-sink,\n \"bag-shopping\": $fa-var-bag-shopping,\n \"shopping-bag\": $fa-var-shopping-bag,\n \"arrow-down-z-a\": $fa-var-arrow-down-z-a,\n \"sort-alpha-desc\": $fa-var-sort-alpha-desc,\n \"sort-alpha-down-alt\": $fa-var-sort-alpha-down-alt,\n \"mitten\": $fa-var-mitten,\n \"person-rays\": $fa-var-person-rays,\n \"users\": $fa-var-users,\n \"eye-slash\": $fa-var-eye-slash,\n \"flask-vial\": $fa-var-flask-vial,\n \"hand\": $fa-var-hand,\n \"hand-paper\": $fa-var-hand-paper,\n \"om\": $fa-var-om,\n \"worm\": $fa-var-worm,\n \"house-circle-xmark\": $fa-var-house-circle-xmark,\n \"plug\": $fa-var-plug,\n \"chevron-up\": $fa-var-chevron-up,\n \"hand-spock\": $fa-var-hand-spock,\n \"stopwatch\": $fa-var-stopwatch,\n \"face-kiss\": $fa-var-face-kiss,\n \"kiss\": $fa-var-kiss,\n \"bridge-circle-xmark\": $fa-var-bridge-circle-xmark,\n \"face-grin-tongue\": $fa-var-face-grin-tongue,\n \"grin-tongue\": $fa-var-grin-tongue,\n \"chess-bishop\": $fa-var-chess-bishop,\n \"face-grin-wink\": $fa-var-face-grin-wink,\n \"grin-wink\": $fa-var-grin-wink,\n \"ear-deaf\": $fa-var-ear-deaf,\n \"deaf\": $fa-var-deaf,\n \"deafness\": $fa-var-deafness,\n \"hard-of-hearing\": $fa-var-hard-of-hearing,\n \"road-circle-check\": $fa-var-road-circle-check,\n \"dice-five\": $fa-var-dice-five,\n \"square-rss\": $fa-var-square-rss,\n \"rss-square\": $fa-var-rss-square,\n \"land-mine-on\": $fa-var-land-mine-on,\n \"i-cursor\": $fa-var-i-cursor,\n \"stamp\": $fa-var-stamp,\n \"stairs\": $fa-var-stairs,\n \"i\": $fa-var-i,\n \"hryvnia-sign\": $fa-var-hryvnia-sign,\n \"hryvnia\": $fa-var-hryvnia,\n \"pills\": $fa-var-pills,\n \"face-grin-wide\": $fa-var-face-grin-wide,\n \"grin-alt\": $fa-var-grin-alt,\n \"tooth\": $fa-var-tooth,\n \"v\": $fa-var-v,\n \"bangladeshi-taka-sign\": $fa-var-bangladeshi-taka-sign,\n \"bicycle\": $fa-var-bicycle,\n \"staff-snake\": $fa-var-staff-snake,\n \"rod-asclepius\": $fa-var-rod-asclepius,\n \"rod-snake\": $fa-var-rod-snake,\n \"staff-aesculapius\": $fa-var-staff-aesculapius,\n \"head-side-cough-slash\": $fa-var-head-side-cough-slash,\n \"truck-medical\": $fa-var-truck-medical,\n \"ambulance\": $fa-var-ambulance,\n \"wheat-awn-circle-exclamation\": $fa-var-wheat-awn-circle-exclamation,\n \"snowman\": $fa-var-snowman,\n \"mortar-pestle\": $fa-var-mortar-pestle,\n \"road-barrier\": $fa-var-road-barrier,\n \"school\": $fa-var-school,\n \"igloo\": $fa-var-igloo,\n \"joint\": $fa-var-joint,\n \"angle-right\": $fa-var-angle-right,\n \"horse\": $fa-var-horse,\n \"q\": $fa-var-q,\n \"g\": $fa-var-g,\n \"notes-medical\": $fa-var-notes-medical,\n \"temperature-half\": $fa-var-temperature-half,\n \"temperature-2\": $fa-var-temperature-2,\n \"thermometer-2\": $fa-var-thermometer-2,\n \"thermometer-half\": $fa-var-thermometer-half,\n \"dong-sign\": $fa-var-dong-sign,\n \"capsules\": $fa-var-capsules,\n \"poo-storm\": $fa-var-poo-storm,\n \"poo-bolt\": $fa-var-poo-bolt,\n \"face-frown-open\": $fa-var-face-frown-open,\n \"frown-open\": $fa-var-frown-open,\n \"hand-point-up\": $fa-var-hand-point-up,\n \"money-bill\": $fa-var-money-bill,\n \"bookmark\": $fa-var-bookmark,\n \"align-justify\": $fa-var-align-justify,\n \"umbrella-beach\": $fa-var-umbrella-beach,\n \"helmet-un\": $fa-var-helmet-un,\n \"bullseye\": $fa-var-bullseye,\n \"bacon\": $fa-var-bacon,\n \"hand-point-down\": $fa-var-hand-point-down,\n \"arrow-up-from-bracket\": $fa-var-arrow-up-from-bracket,\n \"folder\": $fa-var-folder,\n \"folder-blank\": $fa-var-folder-blank,\n \"file-waveform\": $fa-var-file-waveform,\n \"file-medical-alt\": $fa-var-file-medical-alt,\n \"radiation\": $fa-var-radiation,\n \"chart-simple\": $fa-var-chart-simple,\n \"mars-stroke\": $fa-var-mars-stroke,\n \"vial\": $fa-var-vial,\n \"gauge\": $fa-var-gauge,\n \"dashboard\": $fa-var-dashboard,\n \"gauge-med\": $fa-var-gauge-med,\n \"tachometer-alt-average\": $fa-var-tachometer-alt-average,\n \"wand-magic-sparkles\": $fa-var-wand-magic-sparkles,\n \"magic-wand-sparkles\": $fa-var-magic-wand-sparkles,\n \"e\": $fa-var-e,\n \"pen-clip\": $fa-var-pen-clip,\n \"pen-alt\": $fa-var-pen-alt,\n \"bridge-circle-exclamation\": $fa-var-bridge-circle-exclamation,\n \"user\": $fa-var-user,\n \"school-circle-check\": $fa-var-school-circle-check,\n \"dumpster\": $fa-var-dumpster,\n \"van-shuttle\": $fa-var-van-shuttle,\n \"shuttle-van\": $fa-var-shuttle-van,\n \"building-user\": $fa-var-building-user,\n \"square-caret-left\": $fa-var-square-caret-left,\n \"caret-square-left\": $fa-var-caret-square-left,\n \"highlighter\": $fa-var-highlighter,\n \"key\": $fa-var-key,\n \"bullhorn\": $fa-var-bullhorn,\n \"globe\": $fa-var-globe,\n \"synagogue\": $fa-var-synagogue,\n \"person-half-dress\": $fa-var-person-half-dress,\n \"road-bridge\": $fa-var-road-bridge,\n \"location-arrow\": $fa-var-location-arrow,\n \"c\": $fa-var-c,\n \"tablet-button\": $fa-var-tablet-button,\n \"building-lock\": $fa-var-building-lock,\n \"pizza-slice\": $fa-var-pizza-slice,\n \"money-bill-wave\": $fa-var-money-bill-wave,\n \"chart-area\": $fa-var-chart-area,\n \"area-chart\": $fa-var-area-chart,\n \"house-flag\": $fa-var-house-flag,\n \"person-circle-minus\": $fa-var-person-circle-minus,\n \"ban\": $fa-var-ban,\n \"cancel\": $fa-var-cancel,\n \"camera-rotate\": $fa-var-camera-rotate,\n \"spray-can-sparkles\": $fa-var-spray-can-sparkles,\n \"air-freshener\": $fa-var-air-freshener,\n \"star\": $fa-var-star,\n \"repeat\": $fa-var-repeat,\n \"cross\": $fa-var-cross,\n \"box\": $fa-var-box,\n \"venus-mars\": $fa-var-venus-mars,\n \"arrow-pointer\": $fa-var-arrow-pointer,\n \"mouse-pointer\": $fa-var-mouse-pointer,\n \"maximize\": $fa-var-maximize,\n \"expand-arrows-alt\": $fa-var-expand-arrows-alt,\n \"charging-station\": $fa-var-charging-station,\n \"shapes\": $fa-var-shapes,\n \"triangle-circle-square\": $fa-var-triangle-circle-square,\n \"shuffle\": $fa-var-shuffle,\n \"random\": $fa-var-random,\n \"person-running\": $fa-var-person-running,\n \"running\": $fa-var-running,\n \"mobile-retro\": $fa-var-mobile-retro,\n \"grip-lines-vertical\": $fa-var-grip-lines-vertical,\n \"spider\": $fa-var-spider,\n \"hands-bound\": $fa-var-hands-bound,\n \"file-invoice-dollar\": $fa-var-file-invoice-dollar,\n \"plane-circle-exclamation\": $fa-var-plane-circle-exclamation,\n \"x-ray\": $fa-var-x-ray,\n \"spell-check\": $fa-var-spell-check,\n \"slash\": $fa-var-slash,\n \"computer-mouse\": $fa-var-computer-mouse,\n \"mouse\": $fa-var-mouse,\n \"arrow-right-to-bracket\": $fa-var-arrow-right-to-bracket,\n \"sign-in\": $fa-var-sign-in,\n \"shop-slash\": $fa-var-shop-slash,\n \"store-alt-slash\": $fa-var-store-alt-slash,\n \"server\": $fa-var-server,\n \"virus-covid-slash\": $fa-var-virus-covid-slash,\n \"shop-lock\": $fa-var-shop-lock,\n \"hourglass-start\": $fa-var-hourglass-start,\n \"hourglass-1\": $fa-var-hourglass-1,\n \"blender-phone\": $fa-var-blender-phone,\n \"building-wheat\": $fa-var-building-wheat,\n \"person-breastfeeding\": $fa-var-person-breastfeeding,\n \"right-to-bracket\": $fa-var-right-to-bracket,\n \"sign-in-alt\": $fa-var-sign-in-alt,\n \"venus\": $fa-var-venus,\n \"passport\": $fa-var-passport,\n \"thumbtack-slash\": $fa-var-thumbtack-slash,\n \"thumb-tack-slash\": $fa-var-thumb-tack-slash,\n \"heart-pulse\": $fa-var-heart-pulse,\n \"heartbeat\": $fa-var-heartbeat,\n \"people-carry-box\": $fa-var-people-carry-box,\n \"people-carry\": $fa-var-people-carry,\n \"temperature-high\": $fa-var-temperature-high,\n \"microchip\": $fa-var-microchip,\n \"crown\": $fa-var-crown,\n \"weight-hanging\": $fa-var-weight-hanging,\n \"xmarks-lines\": $fa-var-xmarks-lines,\n \"file-prescription\": $fa-var-file-prescription,\n \"weight-scale\": $fa-var-weight-scale,\n \"weight\": $fa-var-weight,\n \"user-group\": $fa-var-user-group,\n \"user-friends\": $fa-var-user-friends,\n \"arrow-up-a-z\": $fa-var-arrow-up-a-z,\n \"sort-alpha-up\": $fa-var-sort-alpha-up,\n \"chess-knight\": $fa-var-chess-knight,\n \"face-laugh-squint\": $fa-var-face-laugh-squint,\n \"laugh-squint\": $fa-var-laugh-squint,\n \"wheelchair\": $fa-var-wheelchair,\n \"circle-arrow-up\": $fa-var-circle-arrow-up,\n \"arrow-circle-up\": $fa-var-arrow-circle-up,\n \"toggle-on\": $fa-var-toggle-on,\n \"person-walking\": $fa-var-person-walking,\n \"walking\": $fa-var-walking,\n \"l\": $fa-var-l,\n \"fire\": $fa-var-fire,\n \"bed-pulse\": $fa-var-bed-pulse,\n \"procedures\": $fa-var-procedures,\n \"shuttle-space\": $fa-var-shuttle-space,\n \"space-shuttle\": $fa-var-space-shuttle,\n \"face-laugh\": $fa-var-face-laugh,\n \"laugh\": $fa-var-laugh,\n \"folder-open\": $fa-var-folder-open,\n \"heart-circle-plus\": $fa-var-heart-circle-plus,\n \"code-fork\": $fa-var-code-fork,\n \"city\": $fa-var-city,\n \"microphone-lines\": $fa-var-microphone-lines,\n \"microphone-alt\": $fa-var-microphone-alt,\n \"pepper-hot\": $fa-var-pepper-hot,\n \"unlock\": $fa-var-unlock,\n \"colon-sign\": $fa-var-colon-sign,\n \"headset\": $fa-var-headset,\n \"store-slash\": $fa-var-store-slash,\n \"road-circle-xmark\": $fa-var-road-circle-xmark,\n \"user-minus\": $fa-var-user-minus,\n \"mars-stroke-up\": $fa-var-mars-stroke-up,\n \"mars-stroke-v\": $fa-var-mars-stroke-v,\n \"champagne-glasses\": $fa-var-champagne-glasses,\n \"glass-cheers\": $fa-var-glass-cheers,\n \"clipboard\": $fa-var-clipboard,\n \"house-circle-exclamation\": $fa-var-house-circle-exclamation,\n \"file-arrow-up\": $fa-var-file-arrow-up,\n \"file-upload\": $fa-var-file-upload,\n \"wifi\": $fa-var-wifi,\n \"wifi-3\": $fa-var-wifi-3,\n \"wifi-strong\": $fa-var-wifi-strong,\n \"bath\": $fa-var-bath,\n \"bathtub\": $fa-var-bathtub,\n \"underline\": $fa-var-underline,\n \"user-pen\": $fa-var-user-pen,\n \"user-edit\": $fa-var-user-edit,\n \"signature\": $fa-var-signature,\n \"stroopwafel\": $fa-var-stroopwafel,\n \"bold\": $fa-var-bold,\n \"anchor-lock\": $fa-var-anchor-lock,\n \"building-ngo\": $fa-var-building-ngo,\n \"manat-sign\": $fa-var-manat-sign,\n \"not-equal\": $fa-var-not-equal,\n \"border-top-left\": $fa-var-border-top-left,\n \"border-style\": $fa-var-border-style,\n \"map-location-dot\": $fa-var-map-location-dot,\n \"map-marked-alt\": $fa-var-map-marked-alt,\n \"jedi\": $fa-var-jedi,\n \"square-poll-vertical\": $fa-var-square-poll-vertical,\n \"poll\": $fa-var-poll,\n \"mug-hot\": $fa-var-mug-hot,\n \"car-battery\": $fa-var-car-battery,\n \"battery-car\": $fa-var-battery-car,\n \"gift\": $fa-var-gift,\n \"dice-two\": $fa-var-dice-two,\n \"chess-queen\": $fa-var-chess-queen,\n \"glasses\": $fa-var-glasses,\n \"chess-board\": $fa-var-chess-board,\n \"building-circle-check\": $fa-var-building-circle-check,\n \"person-chalkboard\": $fa-var-person-chalkboard,\n \"mars-stroke-right\": $fa-var-mars-stroke-right,\n \"mars-stroke-h\": $fa-var-mars-stroke-h,\n \"hand-back-fist\": $fa-var-hand-back-fist,\n \"hand-rock\": $fa-var-hand-rock,\n \"square-caret-up\": $fa-var-square-caret-up,\n \"caret-square-up\": $fa-var-caret-square-up,\n \"cloud-showers-water\": $fa-var-cloud-showers-water,\n \"chart-bar\": $fa-var-chart-bar,\n \"bar-chart\": $fa-var-bar-chart,\n \"hands-bubbles\": $fa-var-hands-bubbles,\n \"hands-wash\": $fa-var-hands-wash,\n \"less-than-equal\": $fa-var-less-than-equal,\n \"train\": $fa-var-train,\n \"eye-low-vision\": $fa-var-eye-low-vision,\n \"low-vision\": $fa-var-low-vision,\n \"crow\": $fa-var-crow,\n \"sailboat\": $fa-var-sailboat,\n \"window-restore\": $fa-var-window-restore,\n \"square-plus\": $fa-var-square-plus,\n \"plus-square\": $fa-var-plus-square,\n \"torii-gate\": $fa-var-torii-gate,\n \"frog\": $fa-var-frog,\n \"bucket\": $fa-var-bucket,\n \"image\": $fa-var-image,\n \"microphone\": $fa-var-microphone,\n \"cow\": $fa-var-cow,\n \"caret-up\": $fa-var-caret-up,\n \"screwdriver\": $fa-var-screwdriver,\n \"folder-closed\": $fa-var-folder-closed,\n \"house-tsunami\": $fa-var-house-tsunami,\n \"square-nfi\": $fa-var-square-nfi,\n \"arrow-up-from-ground-water\": $fa-var-arrow-up-from-ground-water,\n \"martini-glass\": $fa-var-martini-glass,\n \"glass-martini-alt\": $fa-var-glass-martini-alt,\n \"square-binary\": $fa-var-square-binary,\n \"rotate-left\": $fa-var-rotate-left,\n \"rotate-back\": $fa-var-rotate-back,\n \"rotate-backward\": $fa-var-rotate-backward,\n \"undo-alt\": $fa-var-undo-alt,\n \"table-columns\": $fa-var-table-columns,\n \"columns\": $fa-var-columns,\n \"lemon\": $fa-var-lemon,\n \"head-side-mask\": $fa-var-head-side-mask,\n \"handshake\": $fa-var-handshake,\n \"gem\": $fa-var-gem,\n \"dolly\": $fa-var-dolly,\n \"dolly-box\": $fa-var-dolly-box,\n \"smoking\": $fa-var-smoking,\n \"minimize\": $fa-var-minimize,\n \"compress-arrows-alt\": $fa-var-compress-arrows-alt,\n \"monument\": $fa-var-monument,\n \"snowplow\": $fa-var-snowplow,\n \"angles-right\": $fa-var-angles-right,\n \"angle-double-right\": $fa-var-angle-double-right,\n \"cannabis\": $fa-var-cannabis,\n \"circle-play\": $fa-var-circle-play,\n \"play-circle\": $fa-var-play-circle,\n \"tablets\": $fa-var-tablets,\n \"ethernet\": $fa-var-ethernet,\n \"euro-sign\": $fa-var-euro-sign,\n \"eur\": $fa-var-eur,\n \"euro\": $fa-var-euro,\n \"chair\": $fa-var-chair,\n \"circle-check\": $fa-var-circle-check,\n \"check-circle\": $fa-var-check-circle,\n \"circle-stop\": $fa-var-circle-stop,\n \"stop-circle\": $fa-var-stop-circle,\n \"compass-drafting\": $fa-var-compass-drafting,\n \"drafting-compass\": $fa-var-drafting-compass,\n \"plate-wheat\": $fa-var-plate-wheat,\n \"icicles\": $fa-var-icicles,\n \"person-shelter\": $fa-var-person-shelter,\n \"neuter\": $fa-var-neuter,\n \"id-badge\": $fa-var-id-badge,\n \"marker\": $fa-var-marker,\n \"face-laugh-beam\": $fa-var-face-laugh-beam,\n \"laugh-beam\": $fa-var-laugh-beam,\n \"helicopter-symbol\": $fa-var-helicopter-symbol,\n \"universal-access\": $fa-var-universal-access,\n \"circle-chevron-up\": $fa-var-circle-chevron-up,\n \"chevron-circle-up\": $fa-var-chevron-circle-up,\n \"lari-sign\": $fa-var-lari-sign,\n \"volcano\": $fa-var-volcano,\n \"person-walking-dashed-line-arrow-right\": $fa-var-person-walking-dashed-line-arrow-right,\n \"sterling-sign\": $fa-var-sterling-sign,\n \"gbp\": $fa-var-gbp,\n \"pound-sign\": $fa-var-pound-sign,\n \"viruses\": $fa-var-viruses,\n \"square-person-confined\": $fa-var-square-person-confined,\n \"user-tie\": $fa-var-user-tie,\n \"arrow-down-long\": $fa-var-arrow-down-long,\n \"long-arrow-down\": $fa-var-long-arrow-down,\n \"tent-arrow-down-to-line\": $fa-var-tent-arrow-down-to-line,\n \"certificate\": $fa-var-certificate,\n \"reply-all\": $fa-var-reply-all,\n \"mail-reply-all\": $fa-var-mail-reply-all,\n \"suitcase\": $fa-var-suitcase,\n \"person-skating\": $fa-var-person-skating,\n \"skating\": $fa-var-skating,\n \"filter-circle-dollar\": $fa-var-filter-circle-dollar,\n \"funnel-dollar\": $fa-var-funnel-dollar,\n \"camera-retro\": $fa-var-camera-retro,\n \"circle-arrow-down\": $fa-var-circle-arrow-down,\n \"arrow-circle-down\": $fa-var-arrow-circle-down,\n \"file-import\": $fa-var-file-import,\n \"arrow-right-to-file\": $fa-var-arrow-right-to-file,\n \"square-arrow-up-right\": $fa-var-square-arrow-up-right,\n \"external-link-square\": $fa-var-external-link-square,\n \"box-open\": $fa-var-box-open,\n \"scroll\": $fa-var-scroll,\n \"spa\": $fa-var-spa,\n \"location-pin-lock\": $fa-var-location-pin-lock,\n \"pause\": $fa-var-pause,\n \"hill-avalanche\": $fa-var-hill-avalanche,\n \"temperature-empty\": $fa-var-temperature-empty,\n \"temperature-0\": $fa-var-temperature-0,\n \"thermometer-0\": $fa-var-thermometer-0,\n \"thermometer-empty\": $fa-var-thermometer-empty,\n \"bomb\": $fa-var-bomb,\n \"registered\": $fa-var-registered,\n \"address-card\": $fa-var-address-card,\n \"contact-card\": $fa-var-contact-card,\n \"vcard\": $fa-var-vcard,\n \"scale-unbalanced-flip\": $fa-var-scale-unbalanced-flip,\n \"balance-scale-right\": $fa-var-balance-scale-right,\n \"subscript\": $fa-var-subscript,\n \"diamond-turn-right\": $fa-var-diamond-turn-right,\n \"directions\": $fa-var-directions,\n \"burst\": $fa-var-burst,\n \"house-laptop\": $fa-var-house-laptop,\n \"laptop-house\": $fa-var-laptop-house,\n \"face-tired\": $fa-var-face-tired,\n \"tired\": $fa-var-tired,\n \"money-bills\": $fa-var-money-bills,\n \"smog\": $fa-var-smog,\n \"crutch\": $fa-var-crutch,\n \"cloud-arrow-up\": $fa-var-cloud-arrow-up,\n \"cloud-upload\": $fa-var-cloud-upload,\n \"cloud-upload-alt\": $fa-var-cloud-upload-alt,\n \"palette\": $fa-var-palette,\n \"arrows-turn-right\": $fa-var-arrows-turn-right,\n \"vest\": $fa-var-vest,\n \"ferry\": $fa-var-ferry,\n \"arrows-down-to-people\": $fa-var-arrows-down-to-people,\n \"seedling\": $fa-var-seedling,\n \"sprout\": $fa-var-sprout,\n \"left-right\": $fa-var-left-right,\n \"arrows-alt-h\": $fa-var-arrows-alt-h,\n \"boxes-packing\": $fa-var-boxes-packing,\n \"circle-arrow-left\": $fa-var-circle-arrow-left,\n \"arrow-circle-left\": $fa-var-arrow-circle-left,\n \"group-arrows-rotate\": $fa-var-group-arrows-rotate,\n \"bowl-food\": $fa-var-bowl-food,\n \"candy-cane\": $fa-var-candy-cane,\n \"arrow-down-wide-short\": $fa-var-arrow-down-wide-short,\n \"sort-amount-asc\": $fa-var-sort-amount-asc,\n \"sort-amount-down\": $fa-var-sort-amount-down,\n \"cloud-bolt\": $fa-var-cloud-bolt,\n \"thunderstorm\": $fa-var-thunderstorm,\n \"text-slash\": $fa-var-text-slash,\n \"remove-format\": $fa-var-remove-format,\n \"face-smile-wink\": $fa-var-face-smile-wink,\n \"smile-wink\": $fa-var-smile-wink,\n \"file-word\": $fa-var-file-word,\n \"file-powerpoint\": $fa-var-file-powerpoint,\n \"arrows-left-right\": $fa-var-arrows-left-right,\n \"arrows-h\": $fa-var-arrows-h,\n \"house-lock\": $fa-var-house-lock,\n \"cloud-arrow-down\": $fa-var-cloud-arrow-down,\n \"cloud-download\": $fa-var-cloud-download,\n \"cloud-download-alt\": $fa-var-cloud-download-alt,\n \"children\": $fa-var-children,\n \"chalkboard\": $fa-var-chalkboard,\n \"blackboard\": $fa-var-blackboard,\n \"user-large-slash\": $fa-var-user-large-slash,\n \"user-alt-slash\": $fa-var-user-alt-slash,\n \"envelope-open\": $fa-var-envelope-open,\n \"handshake-simple-slash\": $fa-var-handshake-simple-slash,\n \"handshake-alt-slash\": $fa-var-handshake-alt-slash,\n \"mattress-pillow\": $fa-var-mattress-pillow,\n \"guarani-sign\": $fa-var-guarani-sign,\n \"arrows-rotate\": $fa-var-arrows-rotate,\n \"refresh\": $fa-var-refresh,\n \"sync\": $fa-var-sync,\n \"fire-extinguisher\": $fa-var-fire-extinguisher,\n \"cruzeiro-sign\": $fa-var-cruzeiro-sign,\n \"greater-than-equal\": $fa-var-greater-than-equal,\n \"shield-halved\": $fa-var-shield-halved,\n \"shield-alt\": $fa-var-shield-alt,\n \"book-atlas\": $fa-var-book-atlas,\n \"atlas\": $fa-var-atlas,\n \"virus\": $fa-var-virus,\n \"envelope-circle-check\": $fa-var-envelope-circle-check,\n \"layer-group\": $fa-var-layer-group,\n \"arrows-to-dot\": $fa-var-arrows-to-dot,\n \"archway\": $fa-var-archway,\n \"heart-circle-check\": $fa-var-heart-circle-check,\n \"house-chimney-crack\": $fa-var-house-chimney-crack,\n \"house-damage\": $fa-var-house-damage,\n \"file-zipper\": $fa-var-file-zipper,\n \"file-archive\": $fa-var-file-archive,\n \"square\": $fa-var-square,\n \"martini-glass-empty\": $fa-var-martini-glass-empty,\n \"glass-martini\": $fa-var-glass-martini,\n \"couch\": $fa-var-couch,\n \"cedi-sign\": $fa-var-cedi-sign,\n \"italic\": $fa-var-italic,\n \"table-cells-column-lock\": $fa-var-table-cells-column-lock,\n \"church\": $fa-var-church,\n \"comments-dollar\": $fa-var-comments-dollar,\n \"democrat\": $fa-var-democrat,\n \"z\": $fa-var-z,\n \"person-skiing\": $fa-var-person-skiing,\n \"skiing\": $fa-var-skiing,\n \"road-lock\": $fa-var-road-lock,\n \"a\": $fa-var-a,\n \"temperature-arrow-down\": $fa-var-temperature-arrow-down,\n \"temperature-down\": $fa-var-temperature-down,\n \"feather-pointed\": $fa-var-feather-pointed,\n \"feather-alt\": $fa-var-feather-alt,\n \"p\": $fa-var-p,\n \"snowflake\": $fa-var-snowflake,\n \"newspaper\": $fa-var-newspaper,\n \"rectangle-ad\": $fa-var-rectangle-ad,\n \"ad\": $fa-var-ad,\n \"circle-arrow-right\": $fa-var-circle-arrow-right,\n \"arrow-circle-right\": $fa-var-arrow-circle-right,\n \"filter-circle-xmark\": $fa-var-filter-circle-xmark,\n \"locust\": $fa-var-locust,\n \"sort\": $fa-var-sort,\n \"unsorted\": $fa-var-unsorted,\n \"list-ol\": $fa-var-list-ol,\n \"list-1-2\": $fa-var-list-1-2,\n \"list-numeric\": $fa-var-list-numeric,\n \"person-dress-burst\": $fa-var-person-dress-burst,\n \"money-check-dollar\": $fa-var-money-check-dollar,\n \"money-check-alt\": $fa-var-money-check-alt,\n \"vector-square\": $fa-var-vector-square,\n \"bread-slice\": $fa-var-bread-slice,\n \"language\": $fa-var-language,\n \"face-kiss-wink-heart\": $fa-var-face-kiss-wink-heart,\n \"kiss-wink-heart\": $fa-var-kiss-wink-heart,\n \"filter\": $fa-var-filter,\n \"question\": $fa-var-question,\n \"file-signature\": $fa-var-file-signature,\n \"up-down-left-right\": $fa-var-up-down-left-right,\n \"arrows-alt\": $fa-var-arrows-alt,\n \"house-chimney-user\": $fa-var-house-chimney-user,\n \"hand-holding-heart\": $fa-var-hand-holding-heart,\n \"puzzle-piece\": $fa-var-puzzle-piece,\n \"money-check\": $fa-var-money-check,\n \"star-half-stroke\": $fa-var-star-half-stroke,\n \"star-half-alt\": $fa-var-star-half-alt,\n \"code\": $fa-var-code,\n \"whiskey-glass\": $fa-var-whiskey-glass,\n \"glass-whiskey\": $fa-var-glass-whiskey,\n \"building-circle-exclamation\": $fa-var-building-circle-exclamation,\n \"magnifying-glass-chart\": $fa-var-magnifying-glass-chart,\n \"arrow-up-right-from-square\": $fa-var-arrow-up-right-from-square,\n \"external-link\": $fa-var-external-link,\n \"cubes-stacked\": $fa-var-cubes-stacked,\n \"won-sign\": $fa-var-won-sign,\n \"krw\": $fa-var-krw,\n \"won\": $fa-var-won,\n \"virus-covid\": $fa-var-virus-covid,\n \"austral-sign\": $fa-var-austral-sign,\n \"f\": $fa-var-f,\n \"leaf\": $fa-var-leaf,\n \"road\": $fa-var-road,\n \"taxi\": $fa-var-taxi,\n \"cab\": $fa-var-cab,\n \"person-circle-plus\": $fa-var-person-circle-plus,\n \"chart-pie\": $fa-var-chart-pie,\n \"pie-chart\": $fa-var-pie-chart,\n \"bolt-lightning\": $fa-var-bolt-lightning,\n \"sack-xmark\": $fa-var-sack-xmark,\n \"file-excel\": $fa-var-file-excel,\n \"file-contract\": $fa-var-file-contract,\n \"fish-fins\": $fa-var-fish-fins,\n \"building-flag\": $fa-var-building-flag,\n \"face-grin-beam\": $fa-var-face-grin-beam,\n \"grin-beam\": $fa-var-grin-beam,\n \"object-ungroup\": $fa-var-object-ungroup,\n \"poop\": $fa-var-poop,\n \"location-pin\": $fa-var-location-pin,\n \"map-marker\": $fa-var-map-marker,\n \"kaaba\": $fa-var-kaaba,\n \"toilet-paper\": $fa-var-toilet-paper,\n \"helmet-safety\": $fa-var-helmet-safety,\n \"hard-hat\": $fa-var-hard-hat,\n \"hat-hard\": $fa-var-hat-hard,\n \"eject\": $fa-var-eject,\n \"circle-right\": $fa-var-circle-right,\n \"arrow-alt-circle-right\": $fa-var-arrow-alt-circle-right,\n \"plane-circle-check\": $fa-var-plane-circle-check,\n \"face-rolling-eyes\": $fa-var-face-rolling-eyes,\n \"meh-rolling-eyes\": $fa-var-meh-rolling-eyes,\n \"object-group\": $fa-var-object-group,\n \"chart-line\": $fa-var-chart-line,\n \"line-chart\": $fa-var-line-chart,\n \"mask-ventilator\": $fa-var-mask-ventilator,\n \"arrow-right\": $fa-var-arrow-right,\n \"signs-post\": $fa-var-signs-post,\n \"map-signs\": $fa-var-map-signs,\n \"cash-register\": $fa-var-cash-register,\n \"person-circle-question\": $fa-var-person-circle-question,\n \"h\": $fa-var-h,\n \"tarp\": $fa-var-tarp,\n \"screwdriver-wrench\": $fa-var-screwdriver-wrench,\n \"tools\": $fa-var-tools,\n \"arrows-to-eye\": $fa-var-arrows-to-eye,\n \"plug-circle-bolt\": $fa-var-plug-circle-bolt,\n \"heart\": $fa-var-heart,\n \"mars-and-venus\": $fa-var-mars-and-venus,\n \"house-user\": $fa-var-house-user,\n \"home-user\": $fa-var-home-user,\n \"dumpster-fire\": $fa-var-dumpster-fire,\n \"house-crack\": $fa-var-house-crack,\n \"martini-glass-citrus\": $fa-var-martini-glass-citrus,\n \"cocktail\": $fa-var-cocktail,\n \"face-surprise\": $fa-var-face-surprise,\n \"surprise\": $fa-var-surprise,\n \"bottle-water\": $fa-var-bottle-water,\n \"circle-pause\": $fa-var-circle-pause,\n \"pause-circle\": $fa-var-pause-circle,\n \"toilet-paper-slash\": $fa-var-toilet-paper-slash,\n \"apple-whole\": $fa-var-apple-whole,\n \"apple-alt\": $fa-var-apple-alt,\n \"kitchen-set\": $fa-var-kitchen-set,\n \"r\": $fa-var-r,\n \"temperature-quarter\": $fa-var-temperature-quarter,\n \"temperature-1\": $fa-var-temperature-1,\n \"thermometer-1\": $fa-var-thermometer-1,\n \"thermometer-quarter\": $fa-var-thermometer-quarter,\n \"cube\": $fa-var-cube,\n \"bitcoin-sign\": $fa-var-bitcoin-sign,\n \"shield-dog\": $fa-var-shield-dog,\n \"solar-panel\": $fa-var-solar-panel,\n \"lock-open\": $fa-var-lock-open,\n \"elevator\": $fa-var-elevator,\n \"money-bill-transfer\": $fa-var-money-bill-transfer,\n \"money-bill-trend-up\": $fa-var-money-bill-trend-up,\n \"house-flood-water-circle-arrow-right\": $fa-var-house-flood-water-circle-arrow-right,\n \"square-poll-horizontal\": $fa-var-square-poll-horizontal,\n \"poll-h\": $fa-var-poll-h,\n \"circle\": $fa-var-circle,\n \"backward-fast\": $fa-var-backward-fast,\n \"fast-backward\": $fa-var-fast-backward,\n \"recycle\": $fa-var-recycle,\n \"user-astronaut\": $fa-var-user-astronaut,\n \"plane-slash\": $fa-var-plane-slash,\n \"trademark\": $fa-var-trademark,\n \"basketball\": $fa-var-basketball,\n \"basketball-ball\": $fa-var-basketball-ball,\n \"satellite-dish\": $fa-var-satellite-dish,\n \"circle-up\": $fa-var-circle-up,\n \"arrow-alt-circle-up\": $fa-var-arrow-alt-circle-up,\n \"mobile-screen-button\": $fa-var-mobile-screen-button,\n \"mobile-alt\": $fa-var-mobile-alt,\n \"volume-high\": $fa-var-volume-high,\n \"volume-up\": $fa-var-volume-up,\n \"users-rays\": $fa-var-users-rays,\n \"wallet\": $fa-var-wallet,\n \"clipboard-check\": $fa-var-clipboard-check,\n \"file-audio\": $fa-var-file-audio,\n \"burger\": $fa-var-burger,\n \"hamburger\": $fa-var-hamburger,\n \"wrench\": $fa-var-wrench,\n \"bugs\": $fa-var-bugs,\n \"rupee-sign\": $fa-var-rupee-sign,\n \"rupee\": $fa-var-rupee,\n \"file-image\": $fa-var-file-image,\n \"circle-question\": $fa-var-circle-question,\n \"question-circle\": $fa-var-question-circle,\n \"plane-departure\": $fa-var-plane-departure,\n \"handshake-slash\": $fa-var-handshake-slash,\n \"book-bookmark\": $fa-var-book-bookmark,\n \"code-branch\": $fa-var-code-branch,\n \"hat-cowboy\": $fa-var-hat-cowboy,\n \"bridge\": $fa-var-bridge,\n \"phone-flip\": $fa-var-phone-flip,\n \"phone-alt\": $fa-var-phone-alt,\n \"truck-front\": $fa-var-truck-front,\n \"cat\": $fa-var-cat,\n \"anchor-circle-exclamation\": $fa-var-anchor-circle-exclamation,\n \"truck-field\": $fa-var-truck-field,\n \"route\": $fa-var-route,\n \"clipboard-question\": $fa-var-clipboard-question,\n \"panorama\": $fa-var-panorama,\n \"comment-medical\": $fa-var-comment-medical,\n \"teeth-open\": $fa-var-teeth-open,\n \"file-circle-minus\": $fa-var-file-circle-minus,\n \"tags\": $fa-var-tags,\n \"wine-glass\": $fa-var-wine-glass,\n \"forward-fast\": $fa-var-forward-fast,\n \"fast-forward\": $fa-var-fast-forward,\n \"face-meh-blank\": $fa-var-face-meh-blank,\n \"meh-blank\": $fa-var-meh-blank,\n \"square-parking\": $fa-var-square-parking,\n \"parking\": $fa-var-parking,\n \"house-signal\": $fa-var-house-signal,\n \"bars-progress\": $fa-var-bars-progress,\n \"tasks-alt\": $fa-var-tasks-alt,\n \"faucet-drip\": $fa-var-faucet-drip,\n \"cart-flatbed\": $fa-var-cart-flatbed,\n \"dolly-flatbed\": $fa-var-dolly-flatbed,\n \"ban-smoking\": $fa-var-ban-smoking,\n \"smoking-ban\": $fa-var-smoking-ban,\n \"terminal\": $fa-var-terminal,\n \"mobile-button\": $fa-var-mobile-button,\n \"house-medical-flag\": $fa-var-house-medical-flag,\n \"basket-shopping\": $fa-var-basket-shopping,\n \"shopping-basket\": $fa-var-shopping-basket,\n \"tape\": $fa-var-tape,\n \"bus-simple\": $fa-var-bus-simple,\n \"bus-alt\": $fa-var-bus-alt,\n \"eye\": $fa-var-eye,\n \"face-sad-cry\": $fa-var-face-sad-cry,\n \"sad-cry\": $fa-var-sad-cry,\n \"audio-description\": $fa-var-audio-description,\n \"person-military-to-person\": $fa-var-person-military-to-person,\n \"file-shield\": $fa-var-file-shield,\n \"user-slash\": $fa-var-user-slash,\n \"pen\": $fa-var-pen,\n \"tower-observation\": $fa-var-tower-observation,\n \"file-code\": $fa-var-file-code,\n \"signal\": $fa-var-signal,\n \"signal-5\": $fa-var-signal-5,\n \"signal-perfect\": $fa-var-signal-perfect,\n \"bus\": $fa-var-bus,\n \"heart-circle-xmark\": $fa-var-heart-circle-xmark,\n \"house-chimney\": $fa-var-house-chimney,\n \"home-lg\": $fa-var-home-lg,\n \"window-maximize\": $fa-var-window-maximize,\n \"face-frown\": $fa-var-face-frown,\n \"frown\": $fa-var-frown,\n \"prescription\": $fa-var-prescription,\n \"shop\": $fa-var-shop,\n \"store-alt\": $fa-var-store-alt,\n \"floppy-disk\": $fa-var-floppy-disk,\n \"save\": $fa-var-save,\n \"vihara\": $fa-var-vihara,\n \"scale-unbalanced\": $fa-var-scale-unbalanced,\n \"balance-scale-left\": $fa-var-balance-scale-left,\n \"sort-up\": $fa-var-sort-up,\n \"sort-asc\": $fa-var-sort-asc,\n \"comment-dots\": $fa-var-comment-dots,\n \"commenting\": $fa-var-commenting,\n \"plant-wilt\": $fa-var-plant-wilt,\n \"diamond\": $fa-var-diamond,\n \"face-grin-squint\": $fa-var-face-grin-squint,\n \"grin-squint\": $fa-var-grin-squint,\n \"hand-holding-dollar\": $fa-var-hand-holding-dollar,\n \"hand-holding-usd\": $fa-var-hand-holding-usd,\n \"chart-diagram\": $fa-var-chart-diagram,\n \"bacterium\": $fa-var-bacterium,\n \"hand-pointer\": $fa-var-hand-pointer,\n \"drum-steelpan\": $fa-var-drum-steelpan,\n \"hand-scissors\": $fa-var-hand-scissors,\n \"hands-praying\": $fa-var-hands-praying,\n \"praying-hands\": $fa-var-praying-hands,\n \"arrow-rotate-right\": $fa-var-arrow-rotate-right,\n \"arrow-right-rotate\": $fa-var-arrow-right-rotate,\n \"arrow-rotate-forward\": $fa-var-arrow-rotate-forward,\n \"redo\": $fa-var-redo,\n \"biohazard\": $fa-var-biohazard,\n \"location-crosshairs\": $fa-var-location-crosshairs,\n \"location\": $fa-var-location,\n \"mars-double\": $fa-var-mars-double,\n \"child-dress\": $fa-var-child-dress,\n \"users-between-lines\": $fa-var-users-between-lines,\n \"lungs-virus\": $fa-var-lungs-virus,\n \"face-grin-tears\": $fa-var-face-grin-tears,\n \"grin-tears\": $fa-var-grin-tears,\n \"phone\": $fa-var-phone,\n \"calendar-xmark\": $fa-var-calendar-xmark,\n \"calendar-times\": $fa-var-calendar-times,\n \"child-reaching\": $fa-var-child-reaching,\n \"head-side-virus\": $fa-var-head-side-virus,\n \"user-gear\": $fa-var-user-gear,\n \"user-cog\": $fa-var-user-cog,\n \"arrow-up-1-9\": $fa-var-arrow-up-1-9,\n \"sort-numeric-up\": $fa-var-sort-numeric-up,\n \"door-closed\": $fa-var-door-closed,\n \"shield-virus\": $fa-var-shield-virus,\n \"dice-six\": $fa-var-dice-six,\n \"mosquito-net\": $fa-var-mosquito-net,\n \"file-fragment\": $fa-var-file-fragment,\n \"bridge-water\": $fa-var-bridge-water,\n \"person-booth\": $fa-var-person-booth,\n \"text-width\": $fa-var-text-width,\n \"hat-wizard\": $fa-var-hat-wizard,\n \"pen-fancy\": $fa-var-pen-fancy,\n \"person-digging\": $fa-var-person-digging,\n \"digging\": $fa-var-digging,\n \"trash\": $fa-var-trash,\n \"gauge-simple\": $fa-var-gauge-simple,\n \"gauge-simple-med\": $fa-var-gauge-simple-med,\n \"tachometer-average\": $fa-var-tachometer-average,\n \"book-medical\": $fa-var-book-medical,\n \"poo\": $fa-var-poo,\n \"quote-right\": $fa-var-quote-right,\n \"quote-right-alt\": $fa-var-quote-right-alt,\n \"shirt\": $fa-var-shirt,\n \"t-shirt\": $fa-var-t-shirt,\n \"tshirt\": $fa-var-tshirt,\n \"cubes\": $fa-var-cubes,\n \"divide\": $fa-var-divide,\n \"tenge-sign\": $fa-var-tenge-sign,\n \"tenge\": $fa-var-tenge,\n \"headphones\": $fa-var-headphones,\n \"hands-holding\": $fa-var-hands-holding,\n \"hands-clapping\": $fa-var-hands-clapping,\n \"republican\": $fa-var-republican,\n \"arrow-left\": $fa-var-arrow-left,\n \"person-circle-xmark\": $fa-var-person-circle-xmark,\n \"ruler\": $fa-var-ruler,\n \"align-left\": $fa-var-align-left,\n \"dice-d6\": $fa-var-dice-d6,\n \"restroom\": $fa-var-restroom,\n \"j\": $fa-var-j,\n \"users-viewfinder\": $fa-var-users-viewfinder,\n \"file-video\": $fa-var-file-video,\n \"up-right-from-square\": $fa-var-up-right-from-square,\n \"external-link-alt\": $fa-var-external-link-alt,\n \"table-cells\": $fa-var-table-cells,\n \"th\": $fa-var-th,\n \"file-pdf\": $fa-var-file-pdf,\n \"book-bible\": $fa-var-book-bible,\n \"bible\": $fa-var-bible,\n \"o\": $fa-var-o,\n \"suitcase-medical\": $fa-var-suitcase-medical,\n \"medkit\": $fa-var-medkit,\n \"user-secret\": $fa-var-user-secret,\n \"otter\": $fa-var-otter,\n \"person-dress\": $fa-var-person-dress,\n \"female\": $fa-var-female,\n \"comment-dollar\": $fa-var-comment-dollar,\n \"business-time\": $fa-var-business-time,\n \"briefcase-clock\": $fa-var-briefcase-clock,\n \"table-cells-large\": $fa-var-table-cells-large,\n \"th-large\": $fa-var-th-large,\n \"book-tanakh\": $fa-var-book-tanakh,\n \"tanakh\": $fa-var-tanakh,\n \"phone-volume\": $fa-var-phone-volume,\n \"volume-control-phone\": $fa-var-volume-control-phone,\n \"hat-cowboy-side\": $fa-var-hat-cowboy-side,\n \"clipboard-user\": $fa-var-clipboard-user,\n \"child\": $fa-var-child,\n \"lira-sign\": $fa-var-lira-sign,\n \"satellite\": $fa-var-satellite,\n \"plane-lock\": $fa-var-plane-lock,\n \"tag\": $fa-var-tag,\n \"comment\": $fa-var-comment,\n \"cake-candles\": $fa-var-cake-candles,\n \"birthday-cake\": $fa-var-birthday-cake,\n \"cake\": $fa-var-cake,\n \"envelope\": $fa-var-envelope,\n \"angles-up\": $fa-var-angles-up,\n \"angle-double-up\": $fa-var-angle-double-up,\n \"paperclip\": $fa-var-paperclip,\n \"arrow-right-to-city\": $fa-var-arrow-right-to-city,\n \"ribbon\": $fa-var-ribbon,\n \"lungs\": $fa-var-lungs,\n \"arrow-up-9-1\": $fa-var-arrow-up-9-1,\n \"sort-numeric-up-alt\": $fa-var-sort-numeric-up-alt,\n \"litecoin-sign\": $fa-var-litecoin-sign,\n \"border-none\": $fa-var-border-none,\n \"circle-nodes\": $fa-var-circle-nodes,\n \"parachute-box\": $fa-var-parachute-box,\n \"indent\": $fa-var-indent,\n \"truck-field-un\": $fa-var-truck-field-un,\n \"hourglass\": $fa-var-hourglass,\n \"hourglass-empty\": $fa-var-hourglass-empty,\n \"mountain\": $fa-var-mountain,\n \"user-doctor\": $fa-var-user-doctor,\n \"user-md\": $fa-var-user-md,\n \"circle-info\": $fa-var-circle-info,\n \"info-circle\": $fa-var-info-circle,\n \"cloud-meatball\": $fa-var-cloud-meatball,\n \"camera\": $fa-var-camera,\n \"camera-alt\": $fa-var-camera-alt,\n \"square-virus\": $fa-var-square-virus,\n \"meteor\": $fa-var-meteor,\n \"car-on\": $fa-var-car-on,\n \"sleigh\": $fa-var-sleigh,\n \"arrow-down-1-9\": $fa-var-arrow-down-1-9,\n \"sort-numeric-asc\": $fa-var-sort-numeric-asc,\n \"sort-numeric-down\": $fa-var-sort-numeric-down,\n \"hand-holding-droplet\": $fa-var-hand-holding-droplet,\n \"hand-holding-water\": $fa-var-hand-holding-water,\n \"water\": $fa-var-water,\n \"calendar-check\": $fa-var-calendar-check,\n \"braille\": $fa-var-braille,\n \"prescription-bottle-medical\": $fa-var-prescription-bottle-medical,\n \"prescription-bottle-alt\": $fa-var-prescription-bottle-alt,\n \"landmark\": $fa-var-landmark,\n \"truck\": $fa-var-truck,\n \"crosshairs\": $fa-var-crosshairs,\n \"person-cane\": $fa-var-person-cane,\n \"tent\": $fa-var-tent,\n \"vest-patches\": $fa-var-vest-patches,\n \"check-double\": $fa-var-check-double,\n \"arrow-down-a-z\": $fa-var-arrow-down-a-z,\n \"sort-alpha-asc\": $fa-var-sort-alpha-asc,\n \"sort-alpha-down\": $fa-var-sort-alpha-down,\n \"money-bill-wheat\": $fa-var-money-bill-wheat,\n \"cookie\": $fa-var-cookie,\n \"arrow-rotate-left\": $fa-var-arrow-rotate-left,\n \"arrow-left-rotate\": $fa-var-arrow-left-rotate,\n \"arrow-rotate-back\": $fa-var-arrow-rotate-back,\n \"arrow-rotate-backward\": $fa-var-arrow-rotate-backward,\n \"undo\": $fa-var-undo,\n \"hard-drive\": $fa-var-hard-drive,\n \"hdd\": $fa-var-hdd,\n \"face-grin-squint-tears\": $fa-var-face-grin-squint-tears,\n \"grin-squint-tears\": $fa-var-grin-squint-tears,\n \"dumbbell\": $fa-var-dumbbell,\n \"rectangle-list\": $fa-var-rectangle-list,\n \"list-alt\": $fa-var-list-alt,\n \"tarp-droplet\": $fa-var-tarp-droplet,\n \"house-medical-circle-check\": $fa-var-house-medical-circle-check,\n \"person-skiing-nordic\": $fa-var-person-skiing-nordic,\n \"skiing-nordic\": $fa-var-skiing-nordic,\n \"calendar-plus\": $fa-var-calendar-plus,\n \"plane-arrival\": $fa-var-plane-arrival,\n \"circle-left\": $fa-var-circle-left,\n \"arrow-alt-circle-left\": $fa-var-arrow-alt-circle-left,\n \"train-subway\": $fa-var-train-subway,\n \"subway\": $fa-var-subway,\n \"chart-gantt\": $fa-var-chart-gantt,\n \"indian-rupee-sign\": $fa-var-indian-rupee-sign,\n \"indian-rupee\": $fa-var-indian-rupee,\n \"inr\": $fa-var-inr,\n \"crop-simple\": $fa-var-crop-simple,\n \"crop-alt\": $fa-var-crop-alt,\n \"money-bill-1\": $fa-var-money-bill-1,\n \"money-bill-alt\": $fa-var-money-bill-alt,\n \"left-long\": $fa-var-left-long,\n \"long-arrow-alt-left\": $fa-var-long-arrow-alt-left,\n \"dna\": $fa-var-dna,\n \"virus-slash\": $fa-var-virus-slash,\n \"minus\": $fa-var-minus,\n \"subtract\": $fa-var-subtract,\n \"chess\": $fa-var-chess,\n \"arrow-left-long\": $fa-var-arrow-left-long,\n \"long-arrow-left\": $fa-var-long-arrow-left,\n \"plug-circle-check\": $fa-var-plug-circle-check,\n \"street-view\": $fa-var-street-view,\n \"franc-sign\": $fa-var-franc-sign,\n \"volume-off\": $fa-var-volume-off,\n \"hands-asl-interpreting\": $fa-var-hands-asl-interpreting,\n \"american-sign-language-interpreting\": $fa-var-american-sign-language-interpreting,\n \"asl-interpreting\": $fa-var-asl-interpreting,\n \"hands-american-sign-language-interpreting\": $fa-var-hands-american-sign-language-interpreting,\n \"gear\": $fa-var-gear,\n \"cog\": $fa-var-cog,\n \"droplet-slash\": $fa-var-droplet-slash,\n \"tint-slash\": $fa-var-tint-slash,\n \"mosque\": $fa-var-mosque,\n \"mosquito\": $fa-var-mosquito,\n \"star-of-david\": $fa-var-star-of-david,\n \"person-military-rifle\": $fa-var-person-military-rifle,\n \"cart-shopping\": $fa-var-cart-shopping,\n \"shopping-cart\": $fa-var-shopping-cart,\n \"vials\": $fa-var-vials,\n \"plug-circle-plus\": $fa-var-plug-circle-plus,\n \"place-of-worship\": $fa-var-place-of-worship,\n \"grip-vertical\": $fa-var-grip-vertical,\n \"hexagon-nodes\": $fa-var-hexagon-nodes,\n \"arrow-turn-up\": $fa-var-arrow-turn-up,\n \"level-up\": $fa-var-level-up,\n \"u\": $fa-var-u,\n \"square-root-variable\": $fa-var-square-root-variable,\n \"square-root-alt\": $fa-var-square-root-alt,\n \"clock\": $fa-var-clock,\n \"clock-four\": $fa-var-clock-four,\n \"backward-step\": $fa-var-backward-step,\n \"step-backward\": $fa-var-step-backward,\n \"pallet\": $fa-var-pallet,\n \"faucet\": $fa-var-faucet,\n \"baseball-bat-ball\": $fa-var-baseball-bat-ball,\n \"s\": $fa-var-s,\n \"timeline\": $fa-var-timeline,\n \"keyboard\": $fa-var-keyboard,\n \"caret-down\": $fa-var-caret-down,\n \"house-chimney-medical\": $fa-var-house-chimney-medical,\n \"clinic-medical\": $fa-var-clinic-medical,\n \"temperature-three-quarters\": $fa-var-temperature-three-quarters,\n \"temperature-3\": $fa-var-temperature-3,\n \"thermometer-3\": $fa-var-thermometer-3,\n \"thermometer-three-quarters\": $fa-var-thermometer-three-quarters,\n \"mobile-screen\": $fa-var-mobile-screen,\n \"mobile-android-alt\": $fa-var-mobile-android-alt,\n \"plane-up\": $fa-var-plane-up,\n \"piggy-bank\": $fa-var-piggy-bank,\n \"battery-half\": $fa-var-battery-half,\n \"battery-3\": $fa-var-battery-3,\n \"mountain-city\": $fa-var-mountain-city,\n \"coins\": $fa-var-coins,\n \"khanda\": $fa-var-khanda,\n \"sliders\": $fa-var-sliders,\n \"sliders-h\": $fa-var-sliders-h,\n \"folder-tree\": $fa-var-folder-tree,\n \"network-wired\": $fa-var-network-wired,\n \"map-pin\": $fa-var-map-pin,\n \"hamsa\": $fa-var-hamsa,\n \"cent-sign\": $fa-var-cent-sign,\n \"flask\": $fa-var-flask,\n \"person-pregnant\": $fa-var-person-pregnant,\n \"wand-sparkles\": $fa-var-wand-sparkles,\n \"ellipsis-vertical\": $fa-var-ellipsis-vertical,\n \"ellipsis-v\": $fa-var-ellipsis-v,\n \"ticket\": $fa-var-ticket,\n \"power-off\": $fa-var-power-off,\n \"right-long\": $fa-var-right-long,\n \"long-arrow-alt-right\": $fa-var-long-arrow-alt-right,\n \"flag-usa\": $fa-var-flag-usa,\n \"laptop-file\": $fa-var-laptop-file,\n \"tty\": $fa-var-tty,\n \"teletype\": $fa-var-teletype,\n \"diagram-next\": $fa-var-diagram-next,\n \"person-rifle\": $fa-var-person-rifle,\n \"house-medical-circle-exclamation\": $fa-var-house-medical-circle-exclamation,\n \"closed-captioning\": $fa-var-closed-captioning,\n \"person-hiking\": $fa-var-person-hiking,\n \"hiking\": $fa-var-hiking,\n \"venus-double\": $fa-var-venus-double,\n \"images\": $fa-var-images,\n \"calculator\": $fa-var-calculator,\n \"people-pulling\": $fa-var-people-pulling,\n \"n\": $fa-var-n,\n \"cable-car\": $fa-var-cable-car,\n \"tram\": $fa-var-tram,\n \"cloud-rain\": $fa-var-cloud-rain,\n \"building-circle-xmark\": $fa-var-building-circle-xmark,\n \"ship\": $fa-var-ship,\n \"arrows-down-to-line\": $fa-var-arrows-down-to-line,\n \"download\": $fa-var-download,\n \"face-grin\": $fa-var-face-grin,\n \"grin\": $fa-var-grin,\n \"delete-left\": $fa-var-delete-left,\n \"backspace\": $fa-var-backspace,\n \"eye-dropper\": $fa-var-eye-dropper,\n \"eye-dropper-empty\": $fa-var-eye-dropper-empty,\n \"eyedropper\": $fa-var-eyedropper,\n \"file-circle-check\": $fa-var-file-circle-check,\n \"forward\": $fa-var-forward,\n \"mobile\": $fa-var-mobile,\n \"mobile-android\": $fa-var-mobile-android,\n \"mobile-phone\": $fa-var-mobile-phone,\n \"face-meh\": $fa-var-face-meh,\n \"meh\": $fa-var-meh,\n \"align-center\": $fa-var-align-center,\n \"book-skull\": $fa-var-book-skull,\n \"book-dead\": $fa-var-book-dead,\n \"id-card\": $fa-var-id-card,\n \"drivers-license\": $fa-var-drivers-license,\n \"outdent\": $fa-var-outdent,\n \"dedent\": $fa-var-dedent,\n \"heart-circle-exclamation\": $fa-var-heart-circle-exclamation,\n \"house\": $fa-var-house,\n \"home\": $fa-var-home,\n \"home-alt\": $fa-var-home-alt,\n \"home-lg-alt\": $fa-var-home-lg-alt,\n \"calendar-week\": $fa-var-calendar-week,\n \"laptop-medical\": $fa-var-laptop-medical,\n \"b\": $fa-var-b,\n \"file-medical\": $fa-var-file-medical,\n \"dice-one\": $fa-var-dice-one,\n \"kiwi-bird\": $fa-var-kiwi-bird,\n \"arrow-right-arrow-left\": $fa-var-arrow-right-arrow-left,\n \"exchange\": $fa-var-exchange,\n \"rotate-right\": $fa-var-rotate-right,\n \"redo-alt\": $fa-var-redo-alt,\n \"rotate-forward\": $fa-var-rotate-forward,\n \"utensils\": $fa-var-utensils,\n \"cutlery\": $fa-var-cutlery,\n \"arrow-up-wide-short\": $fa-var-arrow-up-wide-short,\n \"sort-amount-up\": $fa-var-sort-amount-up,\n \"mill-sign\": $fa-var-mill-sign,\n \"bowl-rice\": $fa-var-bowl-rice,\n \"skull\": $fa-var-skull,\n \"tower-broadcast\": $fa-var-tower-broadcast,\n \"broadcast-tower\": $fa-var-broadcast-tower,\n \"truck-pickup\": $fa-var-truck-pickup,\n \"up-long\": $fa-var-up-long,\n \"long-arrow-alt-up\": $fa-var-long-arrow-alt-up,\n \"stop\": $fa-var-stop,\n \"code-merge\": $fa-var-code-merge,\n \"upload\": $fa-var-upload,\n \"hurricane\": $fa-var-hurricane,\n \"mound\": $fa-var-mound,\n \"toilet-portable\": $fa-var-toilet-portable,\n \"compact-disc\": $fa-var-compact-disc,\n \"file-arrow-down\": $fa-var-file-arrow-down,\n \"file-download\": $fa-var-file-download,\n \"caravan\": $fa-var-caravan,\n \"shield-cat\": $fa-var-shield-cat,\n \"bolt\": $fa-var-bolt,\n \"zap\": $fa-var-zap,\n \"glass-water\": $fa-var-glass-water,\n \"oil-well\": $fa-var-oil-well,\n \"vault\": $fa-var-vault,\n \"mars\": $fa-var-mars,\n \"toilet\": $fa-var-toilet,\n \"plane-circle-xmark\": $fa-var-plane-circle-xmark,\n \"yen-sign\": $fa-var-yen-sign,\n \"cny\": $fa-var-cny,\n \"jpy\": $fa-var-jpy,\n \"rmb\": $fa-var-rmb,\n \"yen\": $fa-var-yen,\n \"ruble-sign\": $fa-var-ruble-sign,\n \"rouble\": $fa-var-rouble,\n \"rub\": $fa-var-rub,\n \"ruble\": $fa-var-ruble,\n \"sun\": $fa-var-sun,\n \"guitar\": $fa-var-guitar,\n \"face-laugh-wink\": $fa-var-face-laugh-wink,\n \"laugh-wink\": $fa-var-laugh-wink,\n \"horse-head\": $fa-var-horse-head,\n \"bore-hole\": $fa-var-bore-hole,\n \"industry\": $fa-var-industry,\n \"circle-down\": $fa-var-circle-down,\n \"arrow-alt-circle-down\": $fa-var-arrow-alt-circle-down,\n \"arrows-turn-to-dots\": $fa-var-arrows-turn-to-dots,\n \"florin-sign\": $fa-var-florin-sign,\n \"arrow-down-short-wide\": $fa-var-arrow-down-short-wide,\n \"sort-amount-desc\": $fa-var-sort-amount-desc,\n \"sort-amount-down-alt\": $fa-var-sort-amount-down-alt,\n \"less-than\": $fa-var-less-than,\n \"angle-down\": $fa-var-angle-down,\n \"car-tunnel\": $fa-var-car-tunnel,\n \"head-side-cough\": $fa-var-head-side-cough,\n \"grip-lines\": $fa-var-grip-lines,\n \"thumbs-down\": $fa-var-thumbs-down,\n \"user-lock\": $fa-var-user-lock,\n \"arrow-right-long\": $fa-var-arrow-right-long,\n \"long-arrow-right\": $fa-var-long-arrow-right,\n \"anchor-circle-xmark\": $fa-var-anchor-circle-xmark,\n \"ellipsis\": $fa-var-ellipsis,\n \"ellipsis-h\": $fa-var-ellipsis-h,\n \"chess-pawn\": $fa-var-chess-pawn,\n \"kit-medical\": $fa-var-kit-medical,\n \"first-aid\": $fa-var-first-aid,\n \"person-through-window\": $fa-var-person-through-window,\n \"toolbox\": $fa-var-toolbox,\n \"hands-holding-circle\": $fa-var-hands-holding-circle,\n \"bug\": $fa-var-bug,\n \"credit-card\": $fa-var-credit-card,\n \"credit-card-alt\": $fa-var-credit-card-alt,\n \"car\": $fa-var-car,\n \"automobile\": $fa-var-automobile,\n \"hand-holding-hand\": $fa-var-hand-holding-hand,\n \"book-open-reader\": $fa-var-book-open-reader,\n \"book-reader\": $fa-var-book-reader,\n \"mountain-sun\": $fa-var-mountain-sun,\n \"arrows-left-right-to-line\": $fa-var-arrows-left-right-to-line,\n \"dice-d20\": $fa-var-dice-d20,\n \"truck-droplet\": $fa-var-truck-droplet,\n \"file-circle-xmark\": $fa-var-file-circle-xmark,\n \"temperature-arrow-up\": $fa-var-temperature-arrow-up,\n \"temperature-up\": $fa-var-temperature-up,\n \"medal\": $fa-var-medal,\n \"bed\": $fa-var-bed,\n \"square-h\": $fa-var-square-h,\n \"h-square\": $fa-var-h-square,\n \"podcast\": $fa-var-podcast,\n \"temperature-full\": $fa-var-temperature-full,\n \"temperature-4\": $fa-var-temperature-4,\n \"thermometer-4\": $fa-var-thermometer-4,\n \"thermometer-full\": $fa-var-thermometer-full,\n \"bell\": $fa-var-bell,\n \"superscript\": $fa-var-superscript,\n \"plug-circle-xmark\": $fa-var-plug-circle-xmark,\n \"star-of-life\": $fa-var-star-of-life,\n \"phone-slash\": $fa-var-phone-slash,\n \"paint-roller\": $fa-var-paint-roller,\n \"handshake-angle\": $fa-var-handshake-angle,\n \"hands-helping\": $fa-var-hands-helping,\n \"location-dot\": $fa-var-location-dot,\n \"map-marker-alt\": $fa-var-map-marker-alt,\n \"file\": $fa-var-file,\n \"greater-than\": $fa-var-greater-than,\n \"person-swimming\": $fa-var-person-swimming,\n \"swimmer\": $fa-var-swimmer,\n \"arrow-down\": $fa-var-arrow-down,\n \"droplet\": $fa-var-droplet,\n \"tint\": $fa-var-tint,\n \"eraser\": $fa-var-eraser,\n \"earth-americas\": $fa-var-earth-americas,\n \"earth\": $fa-var-earth,\n \"earth-america\": $fa-var-earth-america,\n \"globe-americas\": $fa-var-globe-americas,\n \"person-burst\": $fa-var-person-burst,\n \"dove\": $fa-var-dove,\n \"battery-empty\": $fa-var-battery-empty,\n \"battery-0\": $fa-var-battery-0,\n \"socks\": $fa-var-socks,\n \"inbox\": $fa-var-inbox,\n \"section\": $fa-var-section,\n \"gauge-high\": $fa-var-gauge-high,\n \"tachometer-alt\": $fa-var-tachometer-alt,\n \"tachometer-alt-fast\": $fa-var-tachometer-alt-fast,\n \"envelope-open-text\": $fa-var-envelope-open-text,\n \"hospital\": $fa-var-hospital,\n \"hospital-alt\": $fa-var-hospital-alt,\n \"hospital-wide\": $fa-var-hospital-wide,\n \"wine-bottle\": $fa-var-wine-bottle,\n \"chess-rook\": $fa-var-chess-rook,\n \"bars-staggered\": $fa-var-bars-staggered,\n \"reorder\": $fa-var-reorder,\n \"stream\": $fa-var-stream,\n \"dharmachakra\": $fa-var-dharmachakra,\n \"hotdog\": $fa-var-hotdog,\n \"person-walking-with-cane\": $fa-var-person-walking-with-cane,\n \"blind\": $fa-var-blind,\n \"drum\": $fa-var-drum,\n \"ice-cream\": $fa-var-ice-cream,\n \"heart-circle-bolt\": $fa-var-heart-circle-bolt,\n \"fax\": $fa-var-fax,\n \"paragraph\": $fa-var-paragraph,\n \"check-to-slot\": $fa-var-check-to-slot,\n \"vote-yea\": $fa-var-vote-yea,\n \"star-half\": $fa-var-star-half,\n \"boxes-stacked\": $fa-var-boxes-stacked,\n \"boxes\": $fa-var-boxes,\n \"boxes-alt\": $fa-var-boxes-alt,\n \"link\": $fa-var-link,\n \"chain\": $fa-var-chain,\n \"ear-listen\": $fa-var-ear-listen,\n \"assistive-listening-systems\": $fa-var-assistive-listening-systems,\n \"tree-city\": $fa-var-tree-city,\n \"play\": $fa-var-play,\n \"font\": $fa-var-font,\n \"table-cells-row-lock\": $fa-var-table-cells-row-lock,\n \"rupiah-sign\": $fa-var-rupiah-sign,\n \"magnifying-glass\": $fa-var-magnifying-glass,\n \"search\": $fa-var-search,\n \"table-tennis-paddle-ball\": $fa-var-table-tennis-paddle-ball,\n \"ping-pong-paddle-ball\": $fa-var-ping-pong-paddle-ball,\n \"table-tennis\": $fa-var-table-tennis,\n \"person-dots-from-line\": $fa-var-person-dots-from-line,\n \"diagnoses\": $fa-var-diagnoses,\n \"trash-can-arrow-up\": $fa-var-trash-can-arrow-up,\n \"trash-restore-alt\": $fa-var-trash-restore-alt,\n \"naira-sign\": $fa-var-naira-sign,\n \"cart-arrow-down\": $fa-var-cart-arrow-down,\n \"walkie-talkie\": $fa-var-walkie-talkie,\n \"file-pen\": $fa-var-file-pen,\n \"file-edit\": $fa-var-file-edit,\n \"receipt\": $fa-var-receipt,\n \"square-pen\": $fa-var-square-pen,\n \"pen-square\": $fa-var-pen-square,\n \"pencil-square\": $fa-var-pencil-square,\n \"suitcase-rolling\": $fa-var-suitcase-rolling,\n \"person-circle-exclamation\": $fa-var-person-circle-exclamation,\n \"chevron-down\": $fa-var-chevron-down,\n \"battery-full\": $fa-var-battery-full,\n \"battery\": $fa-var-battery,\n \"battery-5\": $fa-var-battery-5,\n \"skull-crossbones\": $fa-var-skull-crossbones,\n \"code-compare\": $fa-var-code-compare,\n \"list-ul\": $fa-var-list-ul,\n \"list-dots\": $fa-var-list-dots,\n \"school-lock\": $fa-var-school-lock,\n \"tower-cell\": $fa-var-tower-cell,\n \"down-long\": $fa-var-down-long,\n \"long-arrow-alt-down\": $fa-var-long-arrow-alt-down,\n \"ranking-star\": $fa-var-ranking-star,\n \"chess-king\": $fa-var-chess-king,\n \"person-harassing\": $fa-var-person-harassing,\n \"brazilian-real-sign\": $fa-var-brazilian-real-sign,\n \"landmark-dome\": $fa-var-landmark-dome,\n \"landmark-alt\": $fa-var-landmark-alt,\n \"arrow-up\": $fa-var-arrow-up,\n \"tv\": $fa-var-tv,\n \"television\": $fa-var-television,\n \"tv-alt\": $fa-var-tv-alt,\n \"shrimp\": $fa-var-shrimp,\n \"list-check\": $fa-var-list-check,\n \"tasks\": $fa-var-tasks,\n \"jug-detergent\": $fa-var-jug-detergent,\n \"circle-user\": $fa-var-circle-user,\n \"user-circle\": $fa-var-user-circle,\n \"user-shield\": $fa-var-user-shield,\n \"wind\": $fa-var-wind,\n \"car-burst\": $fa-var-car-burst,\n \"car-crash\": $fa-var-car-crash,\n \"y\": $fa-var-y,\n \"person-snowboarding\": $fa-var-person-snowboarding,\n \"snowboarding\": $fa-var-snowboarding,\n \"truck-fast\": $fa-var-truck-fast,\n \"shipping-fast\": $fa-var-shipping-fast,\n \"fish\": $fa-var-fish,\n \"user-graduate\": $fa-var-user-graduate,\n \"circle-half-stroke\": $fa-var-circle-half-stroke,\n \"adjust\": $fa-var-adjust,\n \"clapperboard\": $fa-var-clapperboard,\n \"circle-radiation\": $fa-var-circle-radiation,\n \"radiation-alt\": $fa-var-radiation-alt,\n \"baseball\": $fa-var-baseball,\n \"baseball-ball\": $fa-var-baseball-ball,\n \"jet-fighter-up\": $fa-var-jet-fighter-up,\n \"diagram-project\": $fa-var-diagram-project,\n \"project-diagram\": $fa-var-project-diagram,\n \"copy\": $fa-var-copy,\n \"volume-xmark\": $fa-var-volume-xmark,\n \"volume-mute\": $fa-var-volume-mute,\n \"volume-times\": $fa-var-volume-times,\n \"hand-sparkles\": $fa-var-hand-sparkles,\n \"grip\": $fa-var-grip,\n \"grip-horizontal\": $fa-var-grip-horizontal,\n \"share-from-square\": $fa-var-share-from-square,\n \"share-square\": $fa-var-share-square,\n \"child-combatant\": $fa-var-child-combatant,\n \"child-rifle\": $fa-var-child-rifle,\n \"gun\": $fa-var-gun,\n \"square-phone\": $fa-var-square-phone,\n \"phone-square\": $fa-var-phone-square,\n \"plus\": $fa-var-plus,\n \"add\": $fa-var-add,\n \"expand\": $fa-var-expand,\n \"computer\": $fa-var-computer,\n \"xmark\": $fa-var-xmark,\n \"close\": $fa-var-close,\n \"multiply\": $fa-var-multiply,\n \"remove\": $fa-var-remove,\n \"times\": $fa-var-times,\n \"arrows-up-down-left-right\": $fa-var-arrows-up-down-left-right,\n \"arrows\": $fa-var-arrows,\n \"chalkboard-user\": $fa-var-chalkboard-user,\n \"chalkboard-teacher\": $fa-var-chalkboard-teacher,\n \"peso-sign\": $fa-var-peso-sign,\n \"building-shield\": $fa-var-building-shield,\n \"baby\": $fa-var-baby,\n \"users-line\": $fa-var-users-line,\n \"quote-left\": $fa-var-quote-left,\n \"quote-left-alt\": $fa-var-quote-left-alt,\n \"tractor\": $fa-var-tractor,\n \"trash-arrow-up\": $fa-var-trash-arrow-up,\n \"trash-restore\": $fa-var-trash-restore,\n \"arrow-down-up-lock\": $fa-var-arrow-down-up-lock,\n \"lines-leaning\": $fa-var-lines-leaning,\n \"ruler-combined\": $fa-var-ruler-combined,\n \"copyright\": $fa-var-copyright,\n \"equals\": $fa-var-equals,\n \"blender\": $fa-var-blender,\n \"teeth\": $fa-var-teeth,\n \"shekel-sign\": $fa-var-shekel-sign,\n \"ils\": $fa-var-ils,\n \"shekel\": $fa-var-shekel,\n \"sheqel\": $fa-var-sheqel,\n \"sheqel-sign\": $fa-var-sheqel-sign,\n \"map\": $fa-var-map,\n \"rocket\": $fa-var-rocket,\n \"photo-film\": $fa-var-photo-film,\n \"photo-video\": $fa-var-photo-video,\n \"folder-minus\": $fa-var-folder-minus,\n \"hexagon-nodes-bolt\": $fa-var-hexagon-nodes-bolt,\n \"store\": $fa-var-store,\n \"arrow-trend-up\": $fa-var-arrow-trend-up,\n \"plug-circle-minus\": $fa-var-plug-circle-minus,\n \"sign-hanging\": $fa-var-sign-hanging,\n \"sign\": $fa-var-sign,\n \"bezier-curve\": $fa-var-bezier-curve,\n \"bell-slash\": $fa-var-bell-slash,\n \"tablet\": $fa-var-tablet,\n \"tablet-android\": $fa-var-tablet-android,\n \"school-flag\": $fa-var-school-flag,\n \"fill\": $fa-var-fill,\n \"angle-up\": $fa-var-angle-up,\n \"drumstick-bite\": $fa-var-drumstick-bite,\n \"holly-berry\": $fa-var-holly-berry,\n \"chevron-left\": $fa-var-chevron-left,\n \"bacteria\": $fa-var-bacteria,\n \"hand-lizard\": $fa-var-hand-lizard,\n \"notdef\": $fa-var-notdef,\n \"disease\": $fa-var-disease,\n \"briefcase-medical\": $fa-var-briefcase-medical,\n \"genderless\": $fa-var-genderless,\n \"chevron-right\": $fa-var-chevron-right,\n \"retweet\": $fa-var-retweet,\n \"car-rear\": $fa-var-car-rear,\n \"car-alt\": $fa-var-car-alt,\n \"pump-soap\": $fa-var-pump-soap,\n \"video-slash\": $fa-var-video-slash,\n \"battery-quarter\": $fa-var-battery-quarter,\n \"battery-2\": $fa-var-battery-2,\n \"radio\": $fa-var-radio,\n \"baby-carriage\": $fa-var-baby-carriage,\n \"carriage-baby\": $fa-var-carriage-baby,\n \"traffic-light\": $fa-var-traffic-light,\n \"thermometer\": $fa-var-thermometer,\n \"vr-cardboard\": $fa-var-vr-cardboard,\n \"hand-middle-finger\": $fa-var-hand-middle-finger,\n \"percent\": $fa-var-percent,\n \"percentage\": $fa-var-percentage,\n \"truck-moving\": $fa-var-truck-moving,\n \"glass-water-droplet\": $fa-var-glass-water-droplet,\n \"display\": $fa-var-display,\n \"face-smile\": $fa-var-face-smile,\n \"smile\": $fa-var-smile,\n \"thumbtack\": $fa-var-thumbtack,\n \"thumb-tack\": $fa-var-thumb-tack,\n \"trophy\": $fa-var-trophy,\n \"person-praying\": $fa-var-person-praying,\n \"pray\": $fa-var-pray,\n \"hammer\": $fa-var-hammer,\n \"hand-peace\": $fa-var-hand-peace,\n \"rotate\": $fa-var-rotate,\n \"sync-alt\": $fa-var-sync-alt,\n \"spinner\": $fa-var-spinner,\n \"robot\": $fa-var-robot,\n \"peace\": $fa-var-peace,\n \"gears\": $fa-var-gears,\n \"cogs\": $fa-var-cogs,\n \"warehouse\": $fa-var-warehouse,\n \"arrow-up-right-dots\": $fa-var-arrow-up-right-dots,\n \"splotch\": $fa-var-splotch,\n \"face-grin-hearts\": $fa-var-face-grin-hearts,\n \"grin-hearts\": $fa-var-grin-hearts,\n \"dice-four\": $fa-var-dice-four,\n \"sim-card\": $fa-var-sim-card,\n \"transgender\": $fa-var-transgender,\n \"transgender-alt\": $fa-var-transgender-alt,\n \"mercury\": $fa-var-mercury,\n \"arrow-turn-down\": $fa-var-arrow-turn-down,\n \"level-down\": $fa-var-level-down,\n \"person-falling-burst\": $fa-var-person-falling-burst,\n \"award\": $fa-var-award,\n \"ticket-simple\": $fa-var-ticket-simple,\n \"ticket-alt\": $fa-var-ticket-alt,\n \"building\": $fa-var-building,\n \"angles-left\": $fa-var-angles-left,\n \"angle-double-left\": $fa-var-angle-double-left,\n \"qrcode\": $fa-var-qrcode,\n \"clock-rotate-left\": $fa-var-clock-rotate-left,\n \"history\": $fa-var-history,\n \"face-grin-beam-sweat\": $fa-var-face-grin-beam-sweat,\n \"grin-beam-sweat\": $fa-var-grin-beam-sweat,\n \"file-export\": $fa-var-file-export,\n \"arrow-right-from-file\": $fa-var-arrow-right-from-file,\n \"shield\": $fa-var-shield,\n \"shield-blank\": $fa-var-shield-blank,\n \"arrow-up-short-wide\": $fa-var-arrow-up-short-wide,\n \"sort-amount-up-alt\": $fa-var-sort-amount-up-alt,\n \"comment-nodes\": $fa-var-comment-nodes,\n \"house-medical\": $fa-var-house-medical,\n \"golf-ball-tee\": $fa-var-golf-ball-tee,\n \"golf-ball\": $fa-var-golf-ball,\n \"circle-chevron-left\": $fa-var-circle-chevron-left,\n \"chevron-circle-left\": $fa-var-chevron-circle-left,\n \"house-chimney-window\": $fa-var-house-chimney-window,\n \"pen-nib\": $fa-var-pen-nib,\n \"tent-arrow-turn-left\": $fa-var-tent-arrow-turn-left,\n \"tents\": $fa-var-tents,\n \"wand-magic\": $fa-var-wand-magic,\n \"magic\": $fa-var-magic,\n \"dog\": $fa-var-dog,\n \"carrot\": $fa-var-carrot,\n \"moon\": $fa-var-moon,\n \"wine-glass-empty\": $fa-var-wine-glass-empty,\n \"wine-glass-alt\": $fa-var-wine-glass-alt,\n \"cheese\": $fa-var-cheese,\n \"yin-yang\": $fa-var-yin-yang,\n \"music\": $fa-var-music,\n \"code-commit\": $fa-var-code-commit,\n \"temperature-low\": $fa-var-temperature-low,\n \"person-biking\": $fa-var-person-biking,\n \"biking\": $fa-var-biking,\n \"broom\": $fa-var-broom,\n \"shield-heart\": $fa-var-shield-heart,\n \"gopuram\": $fa-var-gopuram,\n \"earth-oceania\": $fa-var-earth-oceania,\n \"globe-oceania\": $fa-var-globe-oceania,\n \"square-xmark\": $fa-var-square-xmark,\n \"times-square\": $fa-var-times-square,\n \"xmark-square\": $fa-var-xmark-square,\n \"hashtag\": $fa-var-hashtag,\n \"up-right-and-down-left-from-center\": $fa-var-up-right-and-down-left-from-center,\n \"expand-alt\": $fa-var-expand-alt,\n \"oil-can\": $fa-var-oil-can,\n \"t\": $fa-var-t,\n \"hippo\": $fa-var-hippo,\n \"chart-column\": $fa-var-chart-column,\n \"infinity\": $fa-var-infinity,\n \"vial-circle-check\": $fa-var-vial-circle-check,\n \"person-arrow-down-to-line\": $fa-var-person-arrow-down-to-line,\n \"voicemail\": $fa-var-voicemail,\n \"fan\": $fa-var-fan,\n \"person-walking-luggage\": $fa-var-person-walking-luggage,\n \"up-down\": $fa-var-up-down,\n \"arrows-alt-v\": $fa-var-arrows-alt-v,\n \"cloud-moon-rain\": $fa-var-cloud-moon-rain,\n \"calendar\": $fa-var-calendar,\n \"trailer\": $fa-var-trailer,\n \"bahai\": $fa-var-bahai,\n \"haykal\": $fa-var-haykal,\n \"sd-card\": $fa-var-sd-card,\n \"dragon\": $fa-var-dragon,\n \"shoe-prints\": $fa-var-shoe-prints,\n \"circle-plus\": $fa-var-circle-plus,\n \"plus-circle\": $fa-var-plus-circle,\n \"face-grin-tongue-wink\": $fa-var-face-grin-tongue-wink,\n \"grin-tongue-wink\": $fa-var-grin-tongue-wink,\n \"hand-holding\": $fa-var-hand-holding,\n \"plug-circle-exclamation\": $fa-var-plug-circle-exclamation,\n \"link-slash\": $fa-var-link-slash,\n \"chain-broken\": $fa-var-chain-broken,\n \"chain-slash\": $fa-var-chain-slash,\n \"unlink\": $fa-var-unlink,\n \"clone\": $fa-var-clone,\n \"person-walking-arrow-loop-left\": $fa-var-person-walking-arrow-loop-left,\n \"arrow-up-z-a\": $fa-var-arrow-up-z-a,\n \"sort-alpha-up-alt\": $fa-var-sort-alpha-up-alt,\n \"fire-flame-curved\": $fa-var-fire-flame-curved,\n \"fire-alt\": $fa-var-fire-alt,\n \"tornado\": $fa-var-tornado,\n \"file-circle-plus\": $fa-var-file-circle-plus,\n \"book-quran\": $fa-var-book-quran,\n \"quran\": $fa-var-quran,\n \"anchor\": $fa-var-anchor,\n \"border-all\": $fa-var-border-all,\n \"face-angry\": $fa-var-face-angry,\n \"angry\": $fa-var-angry,\n \"cookie-bite\": $fa-var-cookie-bite,\n \"arrow-trend-down\": $fa-var-arrow-trend-down,\n \"rss\": $fa-var-rss,\n \"feed\": $fa-var-feed,\n \"draw-polygon\": $fa-var-draw-polygon,\n \"scale-balanced\": $fa-var-scale-balanced,\n \"balance-scale\": $fa-var-balance-scale,\n \"gauge-simple-high\": $fa-var-gauge-simple-high,\n \"tachometer\": $fa-var-tachometer,\n \"tachometer-fast\": $fa-var-tachometer-fast,\n \"shower\": $fa-var-shower,\n \"desktop\": $fa-var-desktop,\n \"desktop-alt\": $fa-var-desktop-alt,\n \"m\": $fa-var-m,\n \"table-list\": $fa-var-table-list,\n \"th-list\": $fa-var-th-list,\n \"comment-sms\": $fa-var-comment-sms,\n \"sms\": $fa-var-sms,\n \"book\": $fa-var-book,\n \"user-plus\": $fa-var-user-plus,\n \"check\": $fa-var-check,\n \"battery-three-quarters\": $fa-var-battery-three-quarters,\n \"battery-4\": $fa-var-battery-4,\n \"house-circle-check\": $fa-var-house-circle-check,\n \"angle-left\": $fa-var-angle-left,\n \"diagram-successor\": $fa-var-diagram-successor,\n \"truck-arrow-right\": $fa-var-truck-arrow-right,\n \"arrows-split-up-and-left\": $fa-var-arrows-split-up-and-left,\n \"hand-fist\": $fa-var-hand-fist,\n \"fist-raised\": $fa-var-fist-raised,\n \"cloud-moon\": $fa-var-cloud-moon,\n \"briefcase\": $fa-var-briefcase,\n \"person-falling\": $fa-var-person-falling,\n \"image-portrait\": $fa-var-image-portrait,\n \"portrait\": $fa-var-portrait,\n \"user-tag\": $fa-var-user-tag,\n \"rug\": $fa-var-rug,\n \"earth-europe\": $fa-var-earth-europe,\n \"globe-europe\": $fa-var-globe-europe,\n \"cart-flatbed-suitcase\": $fa-var-cart-flatbed-suitcase,\n \"luggage-cart\": $fa-var-luggage-cart,\n \"rectangle-xmark\": $fa-var-rectangle-xmark,\n \"rectangle-times\": $fa-var-rectangle-times,\n \"times-rectangle\": $fa-var-times-rectangle,\n \"window-close\": $fa-var-window-close,\n \"baht-sign\": $fa-var-baht-sign,\n \"book-open\": $fa-var-book-open,\n \"book-journal-whills\": $fa-var-book-journal-whills,\n \"journal-whills\": $fa-var-journal-whills,\n \"handcuffs\": $fa-var-handcuffs,\n \"triangle-exclamation\": $fa-var-triangle-exclamation,\n \"exclamation-triangle\": $fa-var-exclamation-triangle,\n \"warning\": $fa-var-warning,\n \"database\": $fa-var-database,\n \"share\": $fa-var-share,\n \"mail-forward\": $fa-var-mail-forward,\n \"bottle-droplet\": $fa-var-bottle-droplet,\n \"mask-face\": $fa-var-mask-face,\n \"hill-rockslide\": $fa-var-hill-rockslide,\n \"right-left\": $fa-var-right-left,\n \"exchange-alt\": $fa-var-exchange-alt,\n \"paper-plane\": $fa-var-paper-plane,\n \"road-circle-exclamation\": $fa-var-road-circle-exclamation,\n \"dungeon\": $fa-var-dungeon,\n \"align-right\": $fa-var-align-right,\n \"money-bill-1-wave\": $fa-var-money-bill-1-wave,\n \"money-bill-wave-alt\": $fa-var-money-bill-wave-alt,\n \"life-ring\": $fa-var-life-ring,\n \"hands\": $fa-var-hands,\n \"sign-language\": $fa-var-sign-language,\n \"signing\": $fa-var-signing,\n \"calendar-day\": $fa-var-calendar-day,\n \"water-ladder\": $fa-var-water-ladder,\n \"ladder-water\": $fa-var-ladder-water,\n \"swimming-pool\": $fa-var-swimming-pool,\n \"arrows-up-down\": $fa-var-arrows-up-down,\n \"arrows-v\": $fa-var-arrows-v,\n \"face-grimace\": $fa-var-face-grimace,\n \"grimace\": $fa-var-grimace,\n \"wheelchair-move\": $fa-var-wheelchair-move,\n \"wheelchair-alt\": $fa-var-wheelchair-alt,\n \"turn-down\": $fa-var-turn-down,\n \"level-down-alt\": $fa-var-level-down-alt,\n \"person-walking-arrow-right\": $fa-var-person-walking-arrow-right,\n \"square-envelope\": $fa-var-square-envelope,\n \"envelope-square\": $fa-var-envelope-square,\n \"dice\": $fa-var-dice,\n \"bowling-ball\": $fa-var-bowling-ball,\n \"brain\": $fa-var-brain,\n \"bandage\": $fa-var-bandage,\n \"band-aid\": $fa-var-band-aid,\n \"calendar-minus\": $fa-var-calendar-minus,\n \"circle-xmark\": $fa-var-circle-xmark,\n \"times-circle\": $fa-var-times-circle,\n \"xmark-circle\": $fa-var-xmark-circle,\n \"gifts\": $fa-var-gifts,\n \"hotel\": $fa-var-hotel,\n \"earth-asia\": $fa-var-earth-asia,\n \"globe-asia\": $fa-var-globe-asia,\n \"id-card-clip\": $fa-var-id-card-clip,\n \"id-card-alt\": $fa-var-id-card-alt,\n \"magnifying-glass-plus\": $fa-var-magnifying-glass-plus,\n \"search-plus\": $fa-var-search-plus,\n \"thumbs-up\": $fa-var-thumbs-up,\n \"user-clock\": $fa-var-user-clock,\n \"hand-dots\": $fa-var-hand-dots,\n \"allergies\": $fa-var-allergies,\n \"file-invoice\": $fa-var-file-invoice,\n \"window-minimize\": $fa-var-window-minimize,\n \"mug-saucer\": $fa-var-mug-saucer,\n \"coffee\": $fa-var-coffee,\n \"brush\": $fa-var-brush,\n \"file-half-dashed\": $fa-var-file-half-dashed,\n \"mask\": $fa-var-mask,\n \"magnifying-glass-minus\": $fa-var-magnifying-glass-minus,\n \"search-minus\": $fa-var-search-minus,\n \"ruler-vertical\": $fa-var-ruler-vertical,\n \"user-large\": $fa-var-user-large,\n \"user-alt\": $fa-var-user-alt,\n \"train-tram\": $fa-var-train-tram,\n \"user-nurse\": $fa-var-user-nurse,\n \"syringe\": $fa-var-syringe,\n \"cloud-sun\": $fa-var-cloud-sun,\n \"stopwatch-20\": $fa-var-stopwatch-20,\n \"square-full\": $fa-var-square-full,\n \"magnet\": $fa-var-magnet,\n \"jar\": $fa-var-jar,\n \"note-sticky\": $fa-var-note-sticky,\n \"sticky-note\": $fa-var-sticky-note,\n \"bug-slash\": $fa-var-bug-slash,\n \"arrow-up-from-water-pump\": $fa-var-arrow-up-from-water-pump,\n \"bone\": $fa-var-bone,\n \"table-cells-row-unlock\": $fa-var-table-cells-row-unlock,\n \"user-injured\": $fa-var-user-injured,\n \"face-sad-tear\": $fa-var-face-sad-tear,\n \"sad-tear\": $fa-var-sad-tear,\n \"plane\": $fa-var-plane,\n \"tent-arrows-down\": $fa-var-tent-arrows-down,\n \"exclamation\": $fa-var-exclamation,\n \"arrows-spin\": $fa-var-arrows-spin,\n \"print\": $fa-var-print,\n \"turkish-lira-sign\": $fa-var-turkish-lira-sign,\n \"try\": $fa-var-try,\n \"turkish-lira\": $fa-var-turkish-lira,\n \"dollar-sign\": $fa-var-dollar-sign,\n \"dollar\": $fa-var-dollar,\n \"usd\": $fa-var-usd,\n \"x\": $fa-var-x,\n \"magnifying-glass-dollar\": $fa-var-magnifying-glass-dollar,\n \"search-dollar\": $fa-var-search-dollar,\n \"users-gear\": $fa-var-users-gear,\n \"users-cog\": $fa-var-users-cog,\n \"person-military-pointing\": $fa-var-person-military-pointing,\n \"building-columns\": $fa-var-building-columns,\n \"bank\": $fa-var-bank,\n \"institution\": $fa-var-institution,\n \"museum\": $fa-var-museum,\n \"university\": $fa-var-university,\n \"umbrella\": $fa-var-umbrella,\n \"trowel\": $fa-var-trowel,\n \"d\": $fa-var-d,\n \"stapler\": $fa-var-stapler,\n \"masks-theater\": $fa-var-masks-theater,\n \"theater-masks\": $fa-var-theater-masks,\n \"kip-sign\": $fa-var-kip-sign,\n \"hand-point-left\": $fa-var-hand-point-left,\n \"handshake-simple\": $fa-var-handshake-simple,\n \"handshake-alt\": $fa-var-handshake-alt,\n \"jet-fighter\": $fa-var-jet-fighter,\n \"fighter-jet\": $fa-var-fighter-jet,\n \"square-share-nodes\": $fa-var-square-share-nodes,\n \"share-alt-square\": $fa-var-share-alt-square,\n \"barcode\": $fa-var-barcode,\n \"plus-minus\": $fa-var-plus-minus,\n \"video\": $fa-var-video,\n \"video-camera\": $fa-var-video-camera,\n \"graduation-cap\": $fa-var-graduation-cap,\n \"mortar-board\": $fa-var-mortar-board,\n \"hand-holding-medical\": $fa-var-hand-holding-medical,\n \"person-circle-check\": $fa-var-person-circle-check,\n \"turn-up\": $fa-var-turn-up,\n \"level-up-alt\": $fa-var-level-up-alt,\n);\n\n$fa-brand-icons: (\n \"monero\": $fa-var-monero,\n \"hooli\": $fa-var-hooli,\n \"yelp\": $fa-var-yelp,\n \"cc-visa\": $fa-var-cc-visa,\n \"lastfm\": $fa-var-lastfm,\n \"shopware\": $fa-var-shopware,\n \"creative-commons-nc\": $fa-var-creative-commons-nc,\n \"aws\": $fa-var-aws,\n \"redhat\": $fa-var-redhat,\n \"yoast\": $fa-var-yoast,\n \"cloudflare\": $fa-var-cloudflare,\n \"ups\": $fa-var-ups,\n \"pixiv\": $fa-var-pixiv,\n \"wpexplorer\": $fa-var-wpexplorer,\n \"dyalog\": $fa-var-dyalog,\n \"bity\": $fa-var-bity,\n \"stackpath\": $fa-var-stackpath,\n \"buysellads\": $fa-var-buysellads,\n \"first-order\": $fa-var-first-order,\n \"modx\": $fa-var-modx,\n \"guilded\": $fa-var-guilded,\n \"vnv\": $fa-var-vnv,\n \"square-js\": $fa-var-square-js,\n \"js-square\": $fa-var-js-square,\n \"microsoft\": $fa-var-microsoft,\n \"qq\": $fa-var-qq,\n \"orcid\": $fa-var-orcid,\n \"java\": $fa-var-java,\n \"invision\": $fa-var-invision,\n \"creative-commons-pd-alt\": $fa-var-creative-commons-pd-alt,\n \"centercode\": $fa-var-centercode,\n \"glide-g\": $fa-var-glide-g,\n \"drupal\": $fa-var-drupal,\n \"jxl\": $fa-var-jxl,\n \"dart-lang\": $fa-var-dart-lang,\n \"hire-a-helper\": $fa-var-hire-a-helper,\n \"creative-commons-by\": $fa-var-creative-commons-by,\n \"unity\": $fa-var-unity,\n \"whmcs\": $fa-var-whmcs,\n \"rocketchat\": $fa-var-rocketchat,\n \"vk\": $fa-var-vk,\n \"untappd\": $fa-var-untappd,\n \"mailchimp\": $fa-var-mailchimp,\n \"css3-alt\": $fa-var-css3-alt,\n \"square-reddit\": $fa-var-square-reddit,\n \"reddit-square\": $fa-var-reddit-square,\n \"vimeo-v\": $fa-var-vimeo-v,\n \"contao\": $fa-var-contao,\n \"square-font-awesome\": $fa-var-square-font-awesome,\n \"deskpro\": $fa-var-deskpro,\n \"brave\": $fa-var-brave,\n \"sistrix\": $fa-var-sistrix,\n \"square-instagram\": $fa-var-square-instagram,\n \"instagram-square\": $fa-var-instagram-square,\n \"battle-net\": $fa-var-battle-net,\n \"the-red-yeti\": $fa-var-the-red-yeti,\n \"square-hacker-news\": $fa-var-square-hacker-news,\n \"hacker-news-square\": $fa-var-hacker-news-square,\n \"edge\": $fa-var-edge,\n \"threads\": $fa-var-threads,\n \"napster\": $fa-var-napster,\n \"square-snapchat\": $fa-var-square-snapchat,\n \"snapchat-square\": $fa-var-snapchat-square,\n \"google-plus-g\": $fa-var-google-plus-g,\n \"artstation\": $fa-var-artstation,\n \"markdown\": $fa-var-markdown,\n \"sourcetree\": $fa-var-sourcetree,\n \"google-plus\": $fa-var-google-plus,\n \"diaspora\": $fa-var-diaspora,\n \"foursquare\": $fa-var-foursquare,\n \"stack-overflow\": $fa-var-stack-overflow,\n \"github-alt\": $fa-var-github-alt,\n \"phoenix-squadron\": $fa-var-phoenix-squadron,\n \"pagelines\": $fa-var-pagelines,\n \"algolia\": $fa-var-algolia,\n \"red-river\": $fa-var-red-river,\n \"creative-commons-sa\": $fa-var-creative-commons-sa,\n \"safari\": $fa-var-safari,\n \"google\": $fa-var-google,\n \"square-font-awesome-stroke\": $fa-var-square-font-awesome-stroke,\n \"font-awesome-alt\": $fa-var-font-awesome-alt,\n \"atlassian\": $fa-var-atlassian,\n \"linkedin-in\": $fa-var-linkedin-in,\n \"digital-ocean\": $fa-var-digital-ocean,\n \"nimblr\": $fa-var-nimblr,\n \"chromecast\": $fa-var-chromecast,\n \"evernote\": $fa-var-evernote,\n \"hacker-news\": $fa-var-hacker-news,\n \"creative-commons-sampling\": $fa-var-creative-commons-sampling,\n \"adversal\": $fa-var-adversal,\n \"creative-commons\": $fa-var-creative-commons,\n \"watchman-monitoring\": $fa-var-watchman-monitoring,\n \"fonticons\": $fa-var-fonticons,\n \"weixin\": $fa-var-weixin,\n \"shirtsinbulk\": $fa-var-shirtsinbulk,\n \"codepen\": $fa-var-codepen,\n \"git-alt\": $fa-var-git-alt,\n \"lyft\": $fa-var-lyft,\n \"rev\": $fa-var-rev,\n \"windows\": $fa-var-windows,\n \"wizards-of-the-coast\": $fa-var-wizards-of-the-coast,\n \"square-viadeo\": $fa-var-square-viadeo,\n \"viadeo-square\": $fa-var-viadeo-square,\n \"meetup\": $fa-var-meetup,\n \"centos\": $fa-var-centos,\n \"adn\": $fa-var-adn,\n \"cloudsmith\": $fa-var-cloudsmith,\n \"opensuse\": $fa-var-opensuse,\n \"pied-piper-alt\": $fa-var-pied-piper-alt,\n \"square-dribbble\": $fa-var-square-dribbble,\n \"dribbble-square\": $fa-var-dribbble-square,\n \"codiepie\": $fa-var-codiepie,\n \"node\": $fa-var-node,\n \"mix\": $fa-var-mix,\n \"steam\": $fa-var-steam,\n \"cc-apple-pay\": $fa-var-cc-apple-pay,\n \"scribd\": $fa-var-scribd,\n \"debian\": $fa-var-debian,\n \"openid\": $fa-var-openid,\n \"instalod\": $fa-var-instalod,\n \"files-pinwheel\": $fa-var-files-pinwheel,\n \"expeditedssl\": $fa-var-expeditedssl,\n \"sellcast\": $fa-var-sellcast,\n \"square-twitter\": $fa-var-square-twitter,\n \"twitter-square\": $fa-var-twitter-square,\n \"r-project\": $fa-var-r-project,\n \"delicious\": $fa-var-delicious,\n \"freebsd\": $fa-var-freebsd,\n \"vuejs\": $fa-var-vuejs,\n \"accusoft\": $fa-var-accusoft,\n \"ioxhost\": $fa-var-ioxhost,\n \"fonticons-fi\": $fa-var-fonticons-fi,\n \"app-store\": $fa-var-app-store,\n \"cc-mastercard\": $fa-var-cc-mastercard,\n \"itunes-note\": $fa-var-itunes-note,\n \"golang\": $fa-var-golang,\n \"kickstarter\": $fa-var-kickstarter,\n \"square-kickstarter\": $fa-var-square-kickstarter,\n \"grav\": $fa-var-grav,\n \"weibo\": $fa-var-weibo,\n \"uncharted\": $fa-var-uncharted,\n \"firstdraft\": $fa-var-firstdraft,\n \"square-youtube\": $fa-var-square-youtube,\n \"youtube-square\": $fa-var-youtube-square,\n \"wikipedia-w\": $fa-var-wikipedia-w,\n \"wpressr\": $fa-var-wpressr,\n \"rendact\": $fa-var-rendact,\n \"angellist\": $fa-var-angellist,\n \"galactic-republic\": $fa-var-galactic-republic,\n \"nfc-directional\": $fa-var-nfc-directional,\n \"skype\": $fa-var-skype,\n \"joget\": $fa-var-joget,\n \"fedora\": $fa-var-fedora,\n \"stripe-s\": $fa-var-stripe-s,\n \"meta\": $fa-var-meta,\n \"laravel\": $fa-var-laravel,\n \"hotjar\": $fa-var-hotjar,\n \"bluetooth-b\": $fa-var-bluetooth-b,\n \"square-letterboxd\": $fa-var-square-letterboxd,\n \"sticker-mule\": $fa-var-sticker-mule,\n \"creative-commons-zero\": $fa-var-creative-commons-zero,\n \"hips\": $fa-var-hips,\n \"css\": $fa-var-css,\n \"behance\": $fa-var-behance,\n \"reddit\": $fa-var-reddit,\n \"discord\": $fa-var-discord,\n \"chrome\": $fa-var-chrome,\n \"app-store-ios\": $fa-var-app-store-ios,\n \"cc-discover\": $fa-var-cc-discover,\n \"wpbeginner\": $fa-var-wpbeginner,\n \"confluence\": $fa-var-confluence,\n \"shoelace\": $fa-var-shoelace,\n \"mdb\": $fa-var-mdb,\n \"dochub\": $fa-var-dochub,\n \"accessible-icon\": $fa-var-accessible-icon,\n \"ebay\": $fa-var-ebay,\n \"amazon\": $fa-var-amazon,\n \"unsplash\": $fa-var-unsplash,\n \"yarn\": $fa-var-yarn,\n \"square-steam\": $fa-var-square-steam,\n \"steam-square\": $fa-var-steam-square,\n \"500px\": $fa-var-500px,\n \"square-vimeo\": $fa-var-square-vimeo,\n \"vimeo-square\": $fa-var-vimeo-square,\n \"asymmetrik\": $fa-var-asymmetrik,\n \"font-awesome\": $fa-var-font-awesome,\n \"font-awesome-flag\": $fa-var-font-awesome-flag,\n \"font-awesome-logo-full\": $fa-var-font-awesome-logo-full,\n \"gratipay\": $fa-var-gratipay,\n \"apple\": $fa-var-apple,\n \"hive\": $fa-var-hive,\n \"gitkraken\": $fa-var-gitkraken,\n \"keybase\": $fa-var-keybase,\n \"apple-pay\": $fa-var-apple-pay,\n \"padlet\": $fa-var-padlet,\n \"amazon-pay\": $fa-var-amazon-pay,\n \"square-github\": $fa-var-square-github,\n \"github-square\": $fa-var-github-square,\n \"stumbleupon\": $fa-var-stumbleupon,\n \"fedex\": $fa-var-fedex,\n \"phoenix-framework\": $fa-var-phoenix-framework,\n \"shopify\": $fa-var-shopify,\n \"neos\": $fa-var-neos,\n \"square-threads\": $fa-var-square-threads,\n \"hackerrank\": $fa-var-hackerrank,\n \"researchgate\": $fa-var-researchgate,\n \"swift\": $fa-var-swift,\n \"angular\": $fa-var-angular,\n \"speakap\": $fa-var-speakap,\n \"angrycreative\": $fa-var-angrycreative,\n \"y-combinator\": $fa-var-y-combinator,\n \"empire\": $fa-var-empire,\n \"envira\": $fa-var-envira,\n \"google-scholar\": $fa-var-google-scholar,\n \"square-gitlab\": $fa-var-square-gitlab,\n \"gitlab-square\": $fa-var-gitlab-square,\n \"studiovinari\": $fa-var-studiovinari,\n \"pied-piper\": $fa-var-pied-piper,\n \"wordpress\": $fa-var-wordpress,\n \"product-hunt\": $fa-var-product-hunt,\n \"firefox\": $fa-var-firefox,\n \"linode\": $fa-var-linode,\n \"goodreads\": $fa-var-goodreads,\n \"square-odnoklassniki\": $fa-var-square-odnoklassniki,\n \"odnoklassniki-square\": $fa-var-odnoklassniki-square,\n \"jsfiddle\": $fa-var-jsfiddle,\n \"sith\": $fa-var-sith,\n \"themeisle\": $fa-var-themeisle,\n \"page4\": $fa-var-page4,\n \"hashnode\": $fa-var-hashnode,\n \"react\": $fa-var-react,\n \"cc-paypal\": $fa-var-cc-paypal,\n \"squarespace\": $fa-var-squarespace,\n \"cc-stripe\": $fa-var-cc-stripe,\n \"creative-commons-share\": $fa-var-creative-commons-share,\n \"bitcoin\": $fa-var-bitcoin,\n \"keycdn\": $fa-var-keycdn,\n \"opera\": $fa-var-opera,\n \"itch-io\": $fa-var-itch-io,\n \"umbraco\": $fa-var-umbraco,\n \"galactic-senate\": $fa-var-galactic-senate,\n \"ubuntu\": $fa-var-ubuntu,\n \"draft2digital\": $fa-var-draft2digital,\n \"stripe\": $fa-var-stripe,\n \"houzz\": $fa-var-houzz,\n \"gg\": $fa-var-gg,\n \"dhl\": $fa-var-dhl,\n \"square-pinterest\": $fa-var-square-pinterest,\n \"pinterest-square\": $fa-var-pinterest-square,\n \"xing\": $fa-var-xing,\n \"blackberry\": $fa-var-blackberry,\n \"creative-commons-pd\": $fa-var-creative-commons-pd,\n \"playstation\": $fa-var-playstation,\n \"quinscape\": $fa-var-quinscape,\n \"less\": $fa-var-less,\n \"blogger-b\": $fa-var-blogger-b,\n \"opencart\": $fa-var-opencart,\n \"vine\": $fa-var-vine,\n \"signal-messenger\": $fa-var-signal-messenger,\n \"paypal\": $fa-var-paypal,\n \"gitlab\": $fa-var-gitlab,\n \"typo3\": $fa-var-typo3,\n \"reddit-alien\": $fa-var-reddit-alien,\n \"yahoo\": $fa-var-yahoo,\n \"dailymotion\": $fa-var-dailymotion,\n \"affiliatetheme\": $fa-var-affiliatetheme,\n \"pied-piper-pp\": $fa-var-pied-piper-pp,\n \"bootstrap\": $fa-var-bootstrap,\n \"odnoklassniki\": $fa-var-odnoklassniki,\n \"nfc-symbol\": $fa-var-nfc-symbol,\n \"mintbit\": $fa-var-mintbit,\n \"ethereum\": $fa-var-ethereum,\n \"speaker-deck\": $fa-var-speaker-deck,\n \"creative-commons-nc-eu\": $fa-var-creative-commons-nc-eu,\n \"patreon\": $fa-var-patreon,\n \"avianex\": $fa-var-avianex,\n \"ello\": $fa-var-ello,\n \"gofore\": $fa-var-gofore,\n \"bimobject\": $fa-var-bimobject,\n \"brave-reverse\": $fa-var-brave-reverse,\n \"facebook-f\": $fa-var-facebook-f,\n \"square-google-plus\": $fa-var-square-google-plus,\n \"google-plus-square\": $fa-var-google-plus-square,\n \"web-awesome\": $fa-var-web-awesome,\n \"mandalorian\": $fa-var-mandalorian,\n \"first-order-alt\": $fa-var-first-order-alt,\n \"osi\": $fa-var-osi,\n \"google-wallet\": $fa-var-google-wallet,\n \"d-and-d-beyond\": $fa-var-d-and-d-beyond,\n \"periscope\": $fa-var-periscope,\n \"fulcrum\": $fa-var-fulcrum,\n \"cloudscale\": $fa-var-cloudscale,\n \"forumbee\": $fa-var-forumbee,\n \"mizuni\": $fa-var-mizuni,\n \"schlix\": $fa-var-schlix,\n \"square-xing\": $fa-var-square-xing,\n \"xing-square\": $fa-var-xing-square,\n \"bandcamp\": $fa-var-bandcamp,\n \"wpforms\": $fa-var-wpforms,\n \"cloudversify\": $fa-var-cloudversify,\n \"usps\": $fa-var-usps,\n \"megaport\": $fa-var-megaport,\n \"magento\": $fa-var-magento,\n \"spotify\": $fa-var-spotify,\n \"optin-monster\": $fa-var-optin-monster,\n \"fly\": $fa-var-fly,\n \"square-bluesky\": $fa-var-square-bluesky,\n \"aviato\": $fa-var-aviato,\n \"itunes\": $fa-var-itunes,\n \"cuttlefish\": $fa-var-cuttlefish,\n \"blogger\": $fa-var-blogger,\n \"flickr\": $fa-var-flickr,\n \"viber\": $fa-var-viber,\n \"soundcloud\": $fa-var-soundcloud,\n \"digg\": $fa-var-digg,\n \"tencent-weibo\": $fa-var-tencent-weibo,\n \"letterboxd\": $fa-var-letterboxd,\n \"symfony\": $fa-var-symfony,\n \"maxcdn\": $fa-var-maxcdn,\n \"etsy\": $fa-var-etsy,\n \"facebook-messenger\": $fa-var-facebook-messenger,\n \"audible\": $fa-var-audible,\n \"think-peaks\": $fa-var-think-peaks,\n \"bilibili\": $fa-var-bilibili,\n \"erlang\": $fa-var-erlang,\n \"x-twitter\": $fa-var-x-twitter,\n \"cotton-bureau\": $fa-var-cotton-bureau,\n \"dashcube\": $fa-var-dashcube,\n \"42-group\": $fa-var-42-group,\n \"innosoft\": $fa-var-innosoft,\n \"stack-exchange\": $fa-var-stack-exchange,\n \"elementor\": $fa-var-elementor,\n \"square-pied-piper\": $fa-var-square-pied-piper,\n \"pied-piper-square\": $fa-var-pied-piper-square,\n \"creative-commons-nd\": $fa-var-creative-commons-nd,\n \"palfed\": $fa-var-palfed,\n \"superpowers\": $fa-var-superpowers,\n \"resolving\": $fa-var-resolving,\n \"xbox\": $fa-var-xbox,\n \"square-web-awesome-stroke\": $fa-var-square-web-awesome-stroke,\n \"searchengin\": $fa-var-searchengin,\n \"tiktok\": $fa-var-tiktok,\n \"square-facebook\": $fa-var-square-facebook,\n \"facebook-square\": $fa-var-facebook-square,\n \"renren\": $fa-var-renren,\n \"linux\": $fa-var-linux,\n \"glide\": $fa-var-glide,\n \"linkedin\": $fa-var-linkedin,\n \"hubspot\": $fa-var-hubspot,\n \"deploydog\": $fa-var-deploydog,\n \"twitch\": $fa-var-twitch,\n \"flutter\": $fa-var-flutter,\n \"ravelry\": $fa-var-ravelry,\n \"mixer\": $fa-var-mixer,\n \"square-lastfm\": $fa-var-square-lastfm,\n \"lastfm-square\": $fa-var-lastfm-square,\n \"vimeo\": $fa-var-vimeo,\n \"mendeley\": $fa-var-mendeley,\n \"uniregistry\": $fa-var-uniregistry,\n \"figma\": $fa-var-figma,\n \"creative-commons-remix\": $fa-var-creative-commons-remix,\n \"cc-amazon-pay\": $fa-var-cc-amazon-pay,\n \"dropbox\": $fa-var-dropbox,\n \"instagram\": $fa-var-instagram,\n \"cmplid\": $fa-var-cmplid,\n \"upwork\": $fa-var-upwork,\n \"facebook\": $fa-var-facebook,\n \"gripfire\": $fa-var-gripfire,\n \"jedi-order\": $fa-var-jedi-order,\n \"uikit\": $fa-var-uikit,\n \"fort-awesome-alt\": $fa-var-fort-awesome-alt,\n \"phabricator\": $fa-var-phabricator,\n \"ussunnah\": $fa-var-ussunnah,\n \"earlybirds\": $fa-var-earlybirds,\n \"trade-federation\": $fa-var-trade-federation,\n \"autoprefixer\": $fa-var-autoprefixer,\n \"whatsapp\": $fa-var-whatsapp,\n \"square-upwork\": $fa-var-square-upwork,\n \"slideshare\": $fa-var-slideshare,\n \"google-play\": $fa-var-google-play,\n \"viadeo\": $fa-var-viadeo,\n \"line\": $fa-var-line,\n \"google-drive\": $fa-var-google-drive,\n \"servicestack\": $fa-var-servicestack,\n \"simplybuilt\": $fa-var-simplybuilt,\n \"bitbucket\": $fa-var-bitbucket,\n \"imdb\": $fa-var-imdb,\n \"deezer\": $fa-var-deezer,\n \"raspberry-pi\": $fa-var-raspberry-pi,\n \"jira\": $fa-var-jira,\n \"docker\": $fa-var-docker,\n \"screenpal\": $fa-var-screenpal,\n \"bluetooth\": $fa-var-bluetooth,\n \"gitter\": $fa-var-gitter,\n \"d-and-d\": $fa-var-d-and-d,\n \"microblog\": $fa-var-microblog,\n \"cc-diners-club\": $fa-var-cc-diners-club,\n \"gg-circle\": $fa-var-gg-circle,\n \"pied-piper-hat\": $fa-var-pied-piper-hat,\n \"kickstarter-k\": $fa-var-kickstarter-k,\n \"yandex\": $fa-var-yandex,\n \"readme\": $fa-var-readme,\n \"html5\": $fa-var-html5,\n \"sellsy\": $fa-var-sellsy,\n \"square-web-awesome\": $fa-var-square-web-awesome,\n \"sass\": $fa-var-sass,\n \"wirsindhandwerk\": $fa-var-wirsindhandwerk,\n \"wsh\": $fa-var-wsh,\n \"buromobelexperte\": $fa-var-buromobelexperte,\n \"salesforce\": $fa-var-salesforce,\n \"octopus-deploy\": $fa-var-octopus-deploy,\n \"medapps\": $fa-var-medapps,\n \"ns8\": $fa-var-ns8,\n \"pinterest-p\": $fa-var-pinterest-p,\n \"apper\": $fa-var-apper,\n \"fort-awesome\": $fa-var-fort-awesome,\n \"waze\": $fa-var-waze,\n \"bluesky\": $fa-var-bluesky,\n \"cc-jcb\": $fa-var-cc-jcb,\n \"snapchat\": $fa-var-snapchat,\n \"snapchat-ghost\": $fa-var-snapchat-ghost,\n \"fantasy-flight-games\": $fa-var-fantasy-flight-games,\n \"rust\": $fa-var-rust,\n \"wix\": $fa-var-wix,\n \"square-behance\": $fa-var-square-behance,\n \"behance-square\": $fa-var-behance-square,\n \"supple\": $fa-var-supple,\n \"webflow\": $fa-var-webflow,\n \"rebel\": $fa-var-rebel,\n \"css3\": $fa-var-css3,\n \"staylinked\": $fa-var-staylinked,\n \"kaggle\": $fa-var-kaggle,\n \"space-awesome\": $fa-var-space-awesome,\n \"deviantart\": $fa-var-deviantart,\n \"cpanel\": $fa-var-cpanel,\n \"goodreads-g\": $fa-var-goodreads-g,\n \"square-git\": $fa-var-square-git,\n \"git-square\": $fa-var-git-square,\n \"square-tumblr\": $fa-var-square-tumblr,\n \"tumblr-square\": $fa-var-tumblr-square,\n \"trello\": $fa-var-trello,\n \"creative-commons-nc-jp\": $fa-var-creative-commons-nc-jp,\n \"get-pocket\": $fa-var-get-pocket,\n \"perbyte\": $fa-var-perbyte,\n \"grunt\": $fa-var-grunt,\n \"weebly\": $fa-var-weebly,\n \"connectdevelop\": $fa-var-connectdevelop,\n \"leanpub\": $fa-var-leanpub,\n \"black-tie\": $fa-var-black-tie,\n \"themeco\": $fa-var-themeco,\n \"python\": $fa-var-python,\n \"android\": $fa-var-android,\n \"bots\": $fa-var-bots,\n \"free-code-camp\": $fa-var-free-code-camp,\n \"hornbill\": $fa-var-hornbill,\n \"js\": $fa-var-js,\n \"ideal\": $fa-var-ideal,\n \"git\": $fa-var-git,\n \"dev\": $fa-var-dev,\n \"sketch\": $fa-var-sketch,\n \"yandex-international\": $fa-var-yandex-international,\n \"cc-amex\": $fa-var-cc-amex,\n \"uber\": $fa-var-uber,\n \"github\": $fa-var-github,\n \"php\": $fa-var-php,\n \"alipay\": $fa-var-alipay,\n \"youtube\": $fa-var-youtube,\n \"skyatlas\": $fa-var-skyatlas,\n \"firefox-browser\": $fa-var-firefox-browser,\n \"replyd\": $fa-var-replyd,\n \"suse\": $fa-var-suse,\n \"jenkins\": $fa-var-jenkins,\n \"twitter\": $fa-var-twitter,\n \"rockrms\": $fa-var-rockrms,\n \"pinterest\": $fa-var-pinterest,\n \"buffer\": $fa-var-buffer,\n \"npm\": $fa-var-npm,\n \"yammer\": $fa-var-yammer,\n \"btc\": $fa-var-btc,\n \"dribbble\": $fa-var-dribbble,\n \"stumbleupon-circle\": $fa-var-stumbleupon-circle,\n \"internet-explorer\": $fa-var-internet-explorer,\n \"stubber\": $fa-var-stubber,\n \"telegram\": $fa-var-telegram,\n \"telegram-plane\": $fa-var-telegram-plane,\n \"old-republic\": $fa-var-old-republic,\n \"odysee\": $fa-var-odysee,\n \"square-whatsapp\": $fa-var-square-whatsapp,\n \"whatsapp-square\": $fa-var-whatsapp-square,\n \"node-js\": $fa-var-node-js,\n \"edge-legacy\": $fa-var-edge-legacy,\n \"slack\": $fa-var-slack,\n \"slack-hash\": $fa-var-slack-hash,\n \"medrt\": $fa-var-medrt,\n \"usb\": $fa-var-usb,\n \"tumblr\": $fa-var-tumblr,\n \"vaadin\": $fa-var-vaadin,\n \"quora\": $fa-var-quora,\n \"square-x-twitter\": $fa-var-square-x-twitter,\n \"reacteurope\": $fa-var-reacteurope,\n \"medium\": $fa-var-medium,\n \"medium-m\": $fa-var-medium-m,\n \"amilia\": $fa-var-amilia,\n \"mixcloud\": $fa-var-mixcloud,\n \"flipboard\": $fa-var-flipboard,\n \"viacoin\": $fa-var-viacoin,\n \"critical-role\": $fa-var-critical-role,\n \"sitrox\": $fa-var-sitrox,\n \"discourse\": $fa-var-discourse,\n \"joomla\": $fa-var-joomla,\n \"mastodon\": $fa-var-mastodon,\n \"airbnb\": $fa-var-airbnb,\n \"wolf-pack-battalion\": $fa-var-wolf-pack-battalion,\n \"buy-n-large\": $fa-var-buy-n-large,\n \"gulp\": $fa-var-gulp,\n \"creative-commons-sampling-plus\": $fa-var-creative-commons-sampling-plus,\n \"strava\": $fa-var-strava,\n \"ember\": $fa-var-ember,\n \"canadian-maple-leaf\": $fa-var-canadian-maple-leaf,\n \"teamspeak\": $fa-var-teamspeak,\n \"pushed\": $fa-var-pushed,\n \"wordpress-simple\": $fa-var-wordpress-simple,\n \"nutritionix\": $fa-var-nutritionix,\n \"wodu\": $fa-var-wodu,\n \"google-pay\": $fa-var-google-pay,\n \"intercom\": $fa-var-intercom,\n \"zhihu\": $fa-var-zhihu,\n \"korvue\": $fa-var-korvue,\n \"pix\": $fa-var-pix,\n \"steam-symbol\": $fa-var-steam-symbol,\n);\n","// icons in a list\n// -------------------------\n\n.#{$fa-css-prefix}-ul {\n list-style-type: none;\n margin-left: var(--#{$fa-css-prefix}-li-margin, #{$fa-li-margin});\n padding-left: 0;\n\n > li { position: relative; }\n}\n\n.#{$fa-css-prefix}-li {\n left: calc(-1 * var(--#{$fa-css-prefix}-li-width, #{$fa-li-width}));\n position: absolute;\n text-align: center;\n width: var(--#{$fa-css-prefix}-li-width, #{$fa-li-width});\n line-height: inherit;\n}\n","// bordered + pulled icons\n// -------------------------\n\n.#{$fa-css-prefix}-border {\n border-color: var(--#{$fa-css-prefix}-border-color, #{$fa-border-color});\n border-radius: var(--#{$fa-css-prefix}-border-radius, #{$fa-border-radius});\n border-style: var(--#{$fa-css-prefix}-border-style, #{$fa-border-style});\n border-width: var(--#{$fa-css-prefix}-border-width, #{$fa-border-width});\n padding: var(--#{$fa-css-prefix}-border-padding, #{$fa-border-padding});\n}\n\n.#{$fa-css-prefix}-pull-left {\n float: left;\n margin-right: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); \n}\n\n.#{$fa-css-prefix}-pull-right {\n float: right;\n margin-left: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); \n}\n","// animating icons\n// --------------------------\n\n.#{$fa-css-prefix}-beat {\n animation-name: #{$fa-css-prefix}-beat;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);\n}\n\n.#{$fa-css-prefix}-bounce {\n animation-name: #{$fa-css-prefix}-bounce;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1));\n}\n\n.#{$fa-css-prefix}-fade {\n animation-name: #{$fa-css-prefix}-fade;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));\n}\n\n.#{$fa-css-prefix}-beat-fade {\n animation-name: #{$fa-css-prefix}-beat-fade;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));\n}\n\n.#{$fa-css-prefix}-flip {\n animation-name: #{$fa-css-prefix}-flip;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);\n}\n\n.#{$fa-css-prefix}-shake {\n animation-name: #{$fa-css-prefix}-shake;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);\n}\n\n.#{$fa-css-prefix}-spin {\n animation-name: #{$fa-css-prefix}-spin;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 2s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);\n}\n\n.#{$fa-css-prefix}-spin-reverse {\n --#{$fa-css-prefix}-animation-direction: reverse;\n}\n\n.#{$fa-css-prefix}-pulse,\n.#{$fa-css-prefix}-spin-pulse {\n animation-name: #{$fa-css-prefix}-spin;\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, steps(8));\n}\n\n// if agent or operating system prefers reduced motion, disable animations\n// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/\n// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion\n@media (prefers-reduced-motion: reduce) {\n .#{$fa-css-prefix}-beat,\n .#{$fa-css-prefix}-bounce,\n .#{$fa-css-prefix}-fade,\n .#{$fa-css-prefix}-beat-fade,\n .#{$fa-css-prefix}-flip,\n .#{$fa-css-prefix}-pulse,\n .#{$fa-css-prefix}-shake,\n .#{$fa-css-prefix}-spin,\n .#{$fa-css-prefix}-spin-pulse {\n animation-delay: -1ms;\n animation-duration: 1ms;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n\n@keyframes #{$fa-css-prefix}-beat {\n 0%, 90% { transform: scale(1); }\n 45% { transform: scale(var(--#{$fa-css-prefix}-beat-scale, 1.25)); }\n}\n\n@keyframes #{$fa-css-prefix}-bounce {\n 0% { transform: scale(1,1) translateY(0); }\n 10% { transform: scale(var(--#{$fa-css-prefix}-bounce-start-scale-x, 1.1),var(--#{$fa-css-prefix}-bounce-start-scale-y, 0.9)) translateY(0); }\n 30% { transform: scale(var(--#{$fa-css-prefix}-bounce-jump-scale-x, 0.9),var(--#{$fa-css-prefix}-bounce-jump-scale-y, 1.1)) translateY(var(--#{$fa-css-prefix}-bounce-height, -0.5em)); }\n 50% { transform: scale(var(--#{$fa-css-prefix}-bounce-land-scale-x, 1.05),var(--#{$fa-css-prefix}-bounce-land-scale-y, 0.95)) translateY(0); }\n 57% { transform: scale(1,1) translateY(var(--#{$fa-css-prefix}-bounce-rebound, -0.125em)); }\n 64% { transform: scale(1,1) translateY(0); }\n 100% { transform: scale(1,1) translateY(0); }\n}\n\n@keyframes #{$fa-css-prefix}-fade {\n 50% { opacity: var(--#{$fa-css-prefix}-fade-opacity, 0.4); }\n}\n\n@keyframes #{$fa-css-prefix}-beat-fade {\n 0%, 100% {\n opacity: var(--#{$fa-css-prefix}-beat-fade-opacity, 0.4);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n transform: scale(var(--#{$fa-css-prefix}-beat-fade-scale, 1.125));\n }\n}\n\n@keyframes #{$fa-css-prefix}-flip {\n 50% {\n transform: rotate3d(var(--#{$fa-css-prefix}-flip-x, 0), var(--#{$fa-css-prefix}-flip-y, 1), var(--#{$fa-css-prefix}-flip-z, 0), var(--#{$fa-css-prefix}-flip-angle, -180deg));\n }\n}\n\n@keyframes #{$fa-css-prefix}-shake {\n 0% { transform: rotate(-15deg); }\n 4% { transform: rotate(15deg); }\n 8%, 24% { transform: rotate(-18deg); }\n 12%, 28% { transform: rotate(18deg); }\n 16% { transform: rotate(-22deg); }\n 20% { transform: rotate(22deg); }\n 32% { transform: rotate(-12deg); }\n 36% { transform: rotate(12deg); }\n 40%, 100% { transform: rotate(0deg); }\n}\n\n@keyframes #{$fa-css-prefix}-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n","// rotating + flipping icons\n// -------------------------\n\n.#{$fa-css-prefix}-rotate-90 {\n transform: rotate(90deg);\n}\n\n.#{$fa-css-prefix}-rotate-180 {\n transform: rotate(180deg);\n}\n\n.#{$fa-css-prefix}-rotate-270 {\n transform: rotate(270deg);\n}\n\n.#{$fa-css-prefix}-flip-horizontal {\n transform: scale(-1, 1);\n}\n\n.#{$fa-css-prefix}-flip-vertical {\n transform: scale(1, -1);\n}\n\n.#{$fa-css-prefix}-flip-both,\n.#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical {\n transform: scale(-1, -1);\n}\n\n.#{$fa-css-prefix}-rotate-by {\n transform: rotate(var(--#{$fa-css-prefix}-rotate-angle, 0));\n}\n","// stacking icons\n// -------------------------\n\n.#{$fa-css-prefix}-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: $fa-stack-vertical-align;\n width: $fa-stack-width;\n}\n\n.#{$fa-css-prefix}-stack-1x,\n.#{$fa-css-prefix}-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%;\n z-index: var(--#{$fa-css-prefix}-stack-z-index, #{$fa-stack-z-index});\n}\n\n.#{$fa-css-prefix}-stack-1x {\n line-height: inherit;\n}\n\n.#{$fa-css-prefix}-stack-2x {\n font-size: 2em;\n}\n\n.#{$fa-css-prefix}-inverse {\n color: var(--#{$fa-css-prefix}-inverse, #{$fa-inverse});\n}\n","// specific icon class definition\n// -------------------------\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n\n@each $name, $icon in $fa-icons {\n .#{$fa-css-prefix}-#{$name} {\n #{$fa-icon-property}: unquote(\"\\\"#{ $icon }\\\"\");\n #{$fa-duotone-icon-property}: unquote(\"\\\"#{$icon}#{$icon}\\\"\");\n }\n}\n\n","// screen-reader utilities\n// -------------------------\n\n// only display content to screen readers\n.sr-only,\n.#{$fa-css-prefix}-sr-only {\n @include fa-sr-only;\n}\n\n// use in conjunction with .sr-only to only display content when it's focused\n.sr-only-focusable,\n.#{$fa-css-prefix}-sr-only-focusable {\n @include fa-sr-only-focusable;\n}\n","/*!\n * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n@import 'functions';\n@import 'variables';\n\n:root, :host {\n --#{$fa-css-prefix}-style-family-classic: '#{ $fa-style-family }';\n --#{$fa-css-prefix}-font-solid: normal 900 1em/1 '#{ $fa-style-family }';\n}\n\n\n@font-face {\n font-family: 'Font Awesome 6 Free';\n font-style: normal;\n font-weight: 900;\n font-display: $fa-font-display;\n src: url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),\n url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype');\n}\n\n.fas,\n.#{$fa-css-prefix}-solid {\n font-weight: 900;\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/.extlib/simplesamlphp/public/assets/base/fonts/fa-solid-900.ttf b/.extlib/simplesamlphp/public/assets/base/fonts/fa-solid-900.ttf
index e7e2ecfa3..f3b468e5b 100644
Binary files a/.extlib/simplesamlphp/public/assets/base/fonts/fa-solid-900.ttf and b/.extlib/simplesamlphp/public/assets/base/fonts/fa-solid-900.ttf differ
diff --git a/.extlib/simplesamlphp/public/assets/base/fonts/fa-solid-900.woff2 b/.extlib/simplesamlphp/public/assets/base/fonts/fa-solid-900.woff2
index fec1fae77..42eaaa697 100644
Binary files a/.extlib/simplesamlphp/public/assets/base/fonts/fa-solid-900.woff2 and b/.extlib/simplesamlphp/public/assets/base/fonts/fa-solid-900.woff2 differ
diff --git a/.extlib/simplesamlphp/src/SimpleSAML/Configuration.php b/.extlib/simplesamlphp/src/SimpleSAML/Configuration.php
index bbd6e8e37..3d913a046 100644
--- a/.extlib/simplesamlphp/src/SimpleSAML/Configuration.php
+++ b/.extlib/simplesamlphp/src/SimpleSAML/Configuration.php
@@ -41,7 +41,7 @@ class Configuration implements Utils\ClearableState
/**
* The release version of this package
*/
- public const VERSION = '2.3.3';
+ public const VERSION = '2.3.5';
/**
* A default value which means that the given option is required.
@@ -1207,9 +1207,14 @@ public function getEndpoints(string $endpointType): array
return [];
}
-
$eps = $this->configuration[$endpointType];
- Assert::isArray($eps, Error\CriticalConfigurationError::class);
+ if (!is_array($eps)) {
+ $filename = explode('/', $loc)[0];
+ throw new Error\CriticalConfigurationError(
+ "Endpoint of type $endpointType is not an array in $loc.",
+ $filename,
+ );
+ }
$eps_count = count($eps);
diff --git a/.extlib/simplesamlphp/src/SimpleSAML/Locale/Language.php b/.extlib/simplesamlphp/src/SimpleSAML/Locale/Language.php
index 23d247165..b4e295257 100644
--- a/.extlib/simplesamlphp/src/SimpleSAML/Locale/Language.php
+++ b/.extlib/simplesamlphp/src/SimpleSAML/Locale/Language.php
@@ -172,7 +172,7 @@ private function getInstalledLanguages(): array
);
// @deprecated - remove entire if-block in a new major release
- if (array_intersect(['pt-br', 'st', 'zh-tw'], $configuredAvailableLanguages)) {
+ if (array_intersect(['pt-br', 'zh-tw'], $configuredAvailableLanguages)) {
Logger::warning(
"Deprecated locales found in `language.available`. "
. "Please replace 'pt-br' with 'pt_BR',"
diff --git a/.extlib/simplesamlphp/vendor/autoload.php b/.extlib/simplesamlphp/vendor/autoload.php
index 14b40e3e6..c8708a09e 100644
--- a/.extlib/simplesamlphp/vendor/autoload.php
+++ b/.extlib/simplesamlphp/vendor/autoload.php
@@ -22,4 +22,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
-return ComposerAutoloaderInitd92254016c92c1549c1187a87107524d::getLoader();
+return ComposerAutoloaderIniteb8044a5f31df9017f83ac696a2e46a4::getLoader();
diff --git a/.extlib/simplesamlphp/vendor/bin/export-plural-rules b/.extlib/simplesamlphp/vendor/bin/export-plural-rules
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/vendor/bin/patch-type-declarations b/.extlib/simplesamlphp/vendor/bin/patch-type-declarations
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/vendor/bin/var-dump-server b/.extlib/simplesamlphp/vendor/bin/var-dump-server
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/vendor/bin/yaml-lint b/.extlib/simplesamlphp/vendor/bin/yaml-lint
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/vendor/composer/autoload_real.php b/.extlib/simplesamlphp/vendor/composer/autoload_real.php
index 5b0b2327a..27114e969 100644
--- a/.extlib/simplesamlphp/vendor/composer/autoload_real.php
+++ b/.extlib/simplesamlphp/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInitd92254016c92c1549c1187a87107524d
+class ComposerAutoloaderIniteb8044a5f31df9017f83ac696a2e46a4
{
private static $loader;
@@ -24,16 +24,16 @@ public static function getLoader()
require __DIR__ . '/platform_check.php';
- spl_autoload_register(array('ComposerAutoloaderInitd92254016c92c1549c1187a87107524d', 'loadClassLoader'), true, true);
+ spl_autoload_register(array('ComposerAutoloaderIniteb8044a5f31df9017f83ac696a2e46a4', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
- spl_autoload_unregister(array('ComposerAutoloaderInitd92254016c92c1549c1187a87107524d', 'loadClassLoader'));
+ spl_autoload_unregister(array('ComposerAutoloaderIniteb8044a5f31df9017f83ac696a2e46a4', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
- call_user_func(\Composer\Autoload\ComposerStaticInitd92254016c92c1549c1187a87107524d::getInitializer($loader));
+ call_user_func(\Composer\Autoload\ComposerStaticIniteb8044a5f31df9017f83ac696a2e46a4::getInitializer($loader));
$loader->register(true);
- $filesToLoad = \Composer\Autoload\ComposerStaticInitd92254016c92c1549c1187a87107524d::$files;
+ $filesToLoad = \Composer\Autoload\ComposerStaticIniteb8044a5f31df9017f83ac696a2e46a4::$files;
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
diff --git a/.extlib/simplesamlphp/vendor/composer/autoload_static.php b/.extlib/simplesamlphp/vendor/composer/autoload_static.php
index 5e2ec9feb..8fbe8acfc 100644
--- a/.extlib/simplesamlphp/vendor/composer/autoload_static.php
+++ b/.extlib/simplesamlphp/vendor/composer/autoload_static.php
@@ -4,7 +4,7 @@
namespace Composer\Autoload;
-class ComposerStaticInitd92254016c92c1549c1187a87107524d
+class ComposerStaticIniteb8044a5f31df9017f83ac696a2e46a4
{
public static $files = array (
'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
@@ -354,9 +354,9 @@ class ComposerStaticInitd92254016c92c1549c1187a87107524d
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
- $loader->prefixLengthsPsr4 = ComposerStaticInitd92254016c92c1549c1187a87107524d::$prefixLengthsPsr4;
- $loader->prefixDirsPsr4 = ComposerStaticInitd92254016c92c1549c1187a87107524d::$prefixDirsPsr4;
- $loader->classMap = ComposerStaticInitd92254016c92c1549c1187a87107524d::$classMap;
+ $loader->prefixLengthsPsr4 = ComposerStaticIniteb8044a5f31df9017f83ac696a2e46a4::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticIniteb8044a5f31df9017f83ac696a2e46a4::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticIniteb8044a5f31df9017f83ac696a2e46a4::$classMap;
}, null, ClassLoader::class);
}
diff --git a/.extlib/simplesamlphp/vendor/composer/installed.json b/.extlib/simplesamlphp/vendor/composer/installed.json
index 459a58926..12ba2aebf 100644
--- a/.extlib/simplesamlphp/vendor/composer/installed.json
+++ b/.extlib/simplesamlphp/vendor/composer/installed.json
@@ -2,17 +2,17 @@
"packages": [
{
"name": "gettext/gettext",
- "version": "v5.7.1",
- "version_normalized": "5.7.1.0",
+ "version": "v5.7.3",
+ "version_normalized": "5.7.3.0",
"source": {
"type": "git",
"url": "https://github.com/php-gettext/Gettext.git",
- "reference": "a9f89e0cc9d9a67b422632b594b5f1afb16eccfc"
+ "reference": "95820f020e4f2f05e0bbaa5603e4c6ec3edc50f1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/a9f89e0cc9d9a67b422632b594b5f1afb16eccfc",
- "reference": "a9f89e0cc9d9a67b422632b594b5f1afb16eccfc",
+ "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/95820f020e4f2f05e0bbaa5603e4c6ec3edc50f1",
+ "reference": "95820f020e4f2f05e0bbaa5603e4c6ec3edc50f1",
"shasum": ""
},
"require": {
@@ -26,7 +26,7 @@
"phpunit/phpunit": "^8.0|^9.0",
"squizlabs/php_codesniffer": "^3.0"
},
- "time": "2024-07-24T22:05:18+00:00",
+ "time": "2024-12-01T10:18:08+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -59,7 +59,7 @@
"support": {
"email": "oom@oscarotero.com",
"issues": "https://github.com/php-gettext/Gettext/issues",
- "source": "https://github.com/php-gettext/Gettext/tree/v5.7.1"
+ "source": "https://github.com/php-gettext/Gettext/tree/v5.7.3"
},
"funding": [
{
@@ -648,24 +648,24 @@
},
{
"name": "robrichards/xmlseclibs",
- "version": "3.1.1",
- "version_normalized": "3.1.1.0",
+ "version": "3.1.3",
+ "version_normalized": "3.1.3.0",
"source": {
"type": "git",
"url": "https://github.com/robrichards/xmlseclibs.git",
- "reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df"
+ "reference": "2bdfd742624d739dfadbd415f00181b4a77aaf07"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/f8f19e58f26cdb42c54b214ff8a820760292f8df",
- "reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df",
+ "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/2bdfd742624d739dfadbd415f00181b4a77aaf07",
+ "reference": "2bdfd742624d739dfadbd415f00181b4a77aaf07",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"php": ">= 5.4"
},
- "time": "2020-09-05T13:00:25+00:00",
+ "time": "2024-11-20T21:13:56+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -687,23 +687,23 @@
],
"support": {
"issues": "https://github.com/robrichards/xmlseclibs/issues",
- "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.1"
+ "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.3"
},
"install-path": "../robrichards/xmlseclibs"
},
{
"name": "simplesamlphp/assert",
- "version": "v1.4.0",
- "version_normalized": "1.4.0.0",
+ "version": "v1.5.0",
+ "version_normalized": "1.5.0.0",
"source": {
"type": "git",
"url": "https://github.com/simplesamlphp/assert.git",
- "reference": "cf9465870eb9fb52103e045217f6dca19aee7c84"
+ "reference": "f6872f002d34b8e20c19d0823b107d2c74ddfd9d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplesamlphp/assert/zipball/cf9465870eb9fb52103e045217f6dca19aee7c84",
- "reference": "cf9465870eb9fb52103e045217f6dca19aee7c84",
+ "url": "https://api.github.com/repos/simplesamlphp/assert/zipball/f6872f002d34b8e20c19d0823b107d2c74ddfd9d",
+ "reference": "f6872f002d34b8e20c19d0823b107d2c74ddfd9d",
"shasum": ""
},
"require": {
@@ -719,7 +719,7 @@
"ext-intl": "*",
"simplesamlphp/simplesamlphp-test-framework": "^1.7"
},
- "time": "2024-10-28T22:10:22+00:00",
+ "time": "2024-11-19T18:52:10+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -749,23 +749,23 @@
"description": "A wrapper around webmozart/assert to make it useful beyond checking method arguments",
"support": {
"issues": "https://github.com/simplesamlphp/assert/issues",
- "source": "https://github.com/simplesamlphp/assert/tree/v1.4.0"
+ "source": "https://github.com/simplesamlphp/assert/tree/v1.5.0"
},
"install-path": "../simplesamlphp/assert"
},
{
"name": "simplesamlphp/composer-module-installer",
- "version": "v1.3.4",
- "version_normalized": "1.3.4.0",
+ "version": "v1.3.5",
+ "version_normalized": "1.3.5.0",
"source": {
"type": "git",
"url": "https://github.com/simplesamlphp/composer-module-installer.git",
- "reference": "36508ed9580a30c4d5ab0bb3c25c00d0b5d42946"
+ "reference": "7bf413c2d28e48dff6755d74a7e45087cf144604"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplesamlphp/composer-module-installer/zipball/36508ed9580a30c4d5ab0bb3c25c00d0b5d42946",
- "reference": "36508ed9580a30c4d5ab0bb3c25c00d0b5d42946",
+ "url": "https://api.github.com/repos/simplesamlphp/composer-module-installer/zipball/7bf413c2d28e48dff6755d74a7e45087cf144604",
+ "reference": "7bf413c2d28e48dff6755d74a7e45087cf144604",
"shasum": ""
},
"require": {
@@ -777,7 +777,7 @@
"composer/composer": "^2.4",
"simplesamlphp/simplesamlphp-test-framework": "^1.2.1"
},
- "time": "2023-03-08T20:58:22+00:00",
+ "time": "2024-11-16T09:42:27+00:00",
"type": "composer-plugin",
"extra": {
"class": "SimpleSAML\\Composer\\ModuleInstallerPlugin"
@@ -795,7 +795,7 @@
"description": "A Composer plugin that allows installing SimpleSAMLphp modules through Composer.",
"support": {
"issues": "https://github.com/simplesamlphp/composer-module-installer/issues",
- "source": "https://github.com/simplesamlphp/composer-module-installer/tree/v1.3.4"
+ "source": "https://github.com/simplesamlphp/composer-module-installer/tree/v1.3.5"
},
"install-path": "../simplesamlphp/composer-module-installer"
},
@@ -846,17 +846,17 @@
},
{
"name": "simplesamlphp/saml2",
- "version": "v4.6.12",
- "version_normalized": "4.6.12.0",
+ "version": "v4.16.14",
+ "version_normalized": "4.16.14.0",
"source": {
"type": "git",
"url": "https://github.com/simplesamlphp/saml2.git",
- "reference": "9545abd0d9d48388f2fa00469c5c1e0294f0303e"
+ "reference": "fe6c7bdda5e166e326d19d78f230d959ab51d01d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/9545abd0d9d48388f2fa00469c5c1e0294f0303e",
- "reference": "9545abd0d9d48388f2fa00469c5c1e0294f0303e",
+ "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/fe6c7bdda5e166e326d19d78f230d959ab51d01d",
+ "reference": "fe6c7bdda5e166e326d19d78f230d959ab51d01d",
"shasum": ""
},
"require": {
@@ -868,6 +868,9 @@
"robrichards/xmlseclibs": "^3.1.1",
"webmozart/assert": "^1.9"
},
+ "conflict": {
+ "robrichards/xmlseclibs": "3.1.2"
+ },
"require-dev": {
"mockery/mockery": "^1.3",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
@@ -875,7 +878,7 @@
"simplesamlphp/simplesamlphp-test-framework": "~0.1.0",
"squizlabs/php_codesniffer": "~3.5"
},
- "time": "2024-04-25T14:10:08+00:00",
+ "time": "2024-12-01T22:26:30+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -901,30 +904,30 @@
"description": "SAML2 PHP library from SimpleSAMLphp",
"support": {
"issues": "https://github.com/simplesamlphp/saml2/issues",
- "source": "https://github.com/simplesamlphp/saml2/tree/v4.6.12"
+ "source": "https://github.com/simplesamlphp/saml2/tree/v4.16.14"
},
"install-path": "../simplesamlphp/saml2"
},
{
"name": "simplesamlphp/simplesamlphp-assets-base",
- "version": "v2.3.1",
- "version_normalized": "2.3.1.0",
+ "version": "v2.3.2",
+ "version_normalized": "2.3.2.0",
"source": {
"type": "git",
"url": "https://github.com/simplesamlphp/simplesamlphp-assets-base.git",
- "reference": "b21b0a05cdedce3eb242b06d9bea30186bfea8e1"
+ "reference": "3f83d1afb16a2a807ac26f6a6a8e2f03bad75abe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-assets-base/zipball/b21b0a05cdedce3eb242b06d9bea30186bfea8e1",
- "reference": "b21b0a05cdedce3eb242b06d9bea30186bfea8e1",
+ "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-assets-base/zipball/3f83d1afb16a2a807ac26f6a6a8e2f03bad75abe",
+ "reference": "3f83d1afb16a2a807ac26f6a6a8e2f03bad75abe",
"shasum": ""
},
"require": {
"php": "^8.1",
"simplesamlphp/composer-module-installer": "^1.3.4"
},
- "time": "2024-10-13T01:14:49+00:00",
+ "time": "2024-12-01T01:26:55+00:00",
"type": "simplesamlphp-module",
"installation-source": "dist",
"notification-url": "https://packagist.org/downloads/",
@@ -940,23 +943,23 @@
"description": "Assets for the SimpleSAMLphp main repository",
"support": {
"issues": "https://github.com/simplesamlphp/simplesamlphp-assets-base/issues",
- "source": "https://github.com/simplesamlphp/simplesamlphp-assets-base/tree/v2.3.1"
+ "source": "https://github.com/simplesamlphp/simplesamlphp-assets-base/tree/v2.3.2"
},
"install-path": "../../public/assets/base"
},
{
"name": "simplesamlphp/xml-common",
- "version": "v1.18.5",
- "version_normalized": "1.18.5.0",
+ "version": "v1.20.0",
+ "version_normalized": "1.20.0.0",
"source": {
"type": "git",
"url": "https://github.com/simplesamlphp/xml-common.git",
- "reference": "daed5738bc22067c9b0abec2d2b877dc8a1d7647"
+ "reference": "9cf986ee7d97c02feb992c78f51024f45b068c19"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplesamlphp/xml-common/zipball/daed5738bc22067c9b0abec2d2b877dc8a1d7647",
- "reference": "daed5738bc22067c9b0abec2d2b877dc8a1d7647",
+ "url": "https://api.github.com/repos/simplesamlphp/xml-common/zipball/9cf986ee7d97c02feb992c78f51024f45b068c19",
+ "reference": "9cf986ee7d97c02feb992c78f51024f45b068c19",
"shasum": ""
},
"require": {
@@ -974,7 +977,7 @@
"require-dev": {
"simplesamlphp/simplesamlphp-test-framework": "^1.7"
},
- "time": "2024-11-06T09:36:15+00:00",
+ "time": "2024-12-01T23:01:07+00:00",
"type": "simplesamlphp-xmlprovider",
"installation-source": "dist",
"autoload": {
@@ -1010,17 +1013,17 @@
},
{
"name": "simplesamlphp/xml-security",
- "version": "v1.9.5",
- "version_normalized": "1.9.5.0",
+ "version": "v1.10.0",
+ "version_normalized": "1.10.0.0",
"source": {
"type": "git",
"url": "https://github.com/simplesamlphp/xml-security.git",
- "reference": "91e31f5930305e84ad92d573faf817abc8ad09c9"
+ "reference": "2f478b2308b06c10542488ce9690a98baaf2fdfa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/simplesamlphp/xml-security/zipball/91e31f5930305e84ad92d573faf817abc8ad09c9",
- "reference": "91e31f5930305e84ad92d573faf817abc8ad09c9",
+ "url": "https://api.github.com/repos/simplesamlphp/xml-security/zipball/2f478b2308b06c10542488ce9690a98baaf2fdfa",
+ "reference": "2f478b2308b06c10542488ce9690a98baaf2fdfa",
"shasum": ""
},
"require": {
@@ -1031,13 +1034,13 @@
"ext-pcre": "*",
"ext-spl": "*",
"php": "^8.1",
- "simplesamlphp/assert": "^1.3",
- "simplesamlphp/xml-common": "^1.18"
+ "simplesamlphp/assert": "^1.5",
+ "simplesamlphp/xml-common": "^1.20.0"
},
"require-dev": {
"simplesamlphp/simplesamlphp-test-framework": "^1.7"
},
- "time": "2024-09-16T21:10:04+00:00",
+ "time": "2024-12-01T23:34:04+00:00",
"type": "simplesamlphp-xmlprovider",
"installation-source": "dist",
"autoload": {
@@ -1071,23 +1074,23 @@
],
"support": {
"issues": "https://github.com/simplesamlphp/xml-security/issues",
- "source": "https://github.com/simplesamlphp/xml-security/tree/v1.9.5"
+ "source": "https://github.com/simplesamlphp/xml-security/tree/v1.10.0"
},
"install-path": "../simplesamlphp/xml-security"
},
{
"name": "symfony/cache",
- "version": "v6.4.14",
- "version_normalized": "6.4.14.0",
+ "version": "v6.4.16",
+ "version_normalized": "6.4.16.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "36fb8aa88833708e9f29014b6f15fac051a8b613"
+ "reference": "70d60e9a3603108563010f8592dff15a6f15dfae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/36fb8aa88833708e9f29014b6f15fac051a8b613",
- "reference": "36fb8aa88833708e9f29014b6f15fac051a8b613",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/70d60e9a3603108563010f8592dff15a6f15dfae",
+ "reference": "70d60e9a3603108563010f8592dff15a6f15dfae",
"shasum": ""
},
"require": {
@@ -1121,7 +1124,7 @@
"symfony/messenger": "^5.4|^6.0|^7.0",
"symfony/var-dumper": "^5.4|^6.0|^7.0"
},
- "time": "2024-11-05T15:34:40+00:00",
+ "time": "2024-11-20T10:10:54+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1156,7 +1159,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v6.4.14"
+ "source": "https://github.com/symfony/cache/tree/v6.4.16"
},
"funding": [
{
@@ -1176,24 +1179,24 @@
},
{
"name": "symfony/cache-contracts",
- "version": "v3.5.0",
- "version_normalized": "3.5.0.0",
+ "version": "v3.5.1",
+ "version_normalized": "3.5.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache-contracts.git",
- "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197"
+ "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197",
- "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b",
+ "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/cache": "^3.0"
},
- "time": "2024-04-18T09:32:20+00:00",
+ "time": "2024-09-25T14:20:29+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -1235,7 +1238,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0"
+ "source": "https://github.com/symfony/cache-contracts/tree/v3.5.1"
},
"funding": [
{
@@ -1430,17 +1433,17 @@
},
{
"name": "symfony/dependency-injection",
- "version": "v6.4.15",
- "version_normalized": "6.4.15.0",
+ "version": "v6.4.16",
+ "version_normalized": "6.4.16.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "70ab1f65a4516ef741e519ea938e6aa465e6aa36"
+ "reference": "7a379d8871f6a36f01559c14e11141cc02eb8dc8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/70ab1f65a4516ef741e519ea938e6aa465e6aa36",
- "reference": "70ab1f65a4516ef741e519ea938e6aa465e6aa36",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/7a379d8871f6a36f01559c14e11141cc02eb8dc8",
+ "reference": "7a379d8871f6a36f01559c14e11141cc02eb8dc8",
"shasum": ""
},
"require": {
@@ -1466,7 +1469,7 @@
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
- "time": "2024-11-09T06:56:25+00:00",
+ "time": "2024-11-25T14:52:46+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1494,7 +1497,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v6.4.15"
+ "source": "https://github.com/symfony/dependency-injection/tree/v6.4.16"
},
"funding": [
{
@@ -1514,23 +1517,23 @@
},
{
"name": "symfony/deprecation-contracts",
- "version": "v3.5.0",
- "version_normalized": "3.5.0.0",
+ "version": "v3.5.1",
+ "version_normalized": "3.5.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
+ "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
- "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6",
+ "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
- "time": "2024-04-18T09:32:20+00:00",
+ "time": "2024-09-25T14:20:29+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -1564,7 +1567,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1"
},
"funding": [
{
@@ -1745,24 +1748,24 @@
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v3.5.0",
- "version_normalized": "3.5.0.0",
+ "version": "v3.5.1",
+ "version_normalized": "3.5.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50"
+ "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50",
- "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f",
+ "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/event-dispatcher": "^1"
},
- "time": "2024-04-18T09:32:20+00:00",
+ "time": "2024-09-25T14:20:29+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -1804,7 +1807,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1"
},
"funding": [
{
@@ -2112,17 +2115,17 @@
},
{
"name": "symfony/http-foundation",
- "version": "v6.4.15",
- "version_normalized": "6.4.15.0",
+ "version": "v6.4.16",
+ "version_normalized": "6.4.16.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6"
+ "reference": "431771b7a6f662f1575b3cfc8fd7617aa9864d57"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6",
- "reference": "9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/431771b7a6f662f1575b3cfc8fd7617aa9864d57",
+ "reference": "431771b7a6f662f1575b3cfc8fd7617aa9864d57",
"shasum": ""
},
"require": {
@@ -2144,7 +2147,7 @@
"symfony/mime": "^5.4|^6.0|^7.0",
"symfony/rate-limiter": "^5.4|^6.0|^7.0"
},
- "time": "2024-11-08T16:09:24+00:00",
+ "time": "2024-11-13T18:58:10+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2172,7 +2175,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v6.4.15"
+ "source": "https://github.com/symfony/http-foundation/tree/v6.4.16"
},
"funding": [
{
@@ -2192,17 +2195,17 @@
},
{
"name": "symfony/http-kernel",
- "version": "v6.4.15",
- "version_normalized": "6.4.15.0",
+ "version": "v6.4.16",
+ "version_normalized": "6.4.16.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "b002a5b3947653c5aee3adac2a024ea615fd3ff5"
+ "reference": "8838b5b21d807923b893ccbfc2cbeda0f1bc00f0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b002a5b3947653c5aee3adac2a024ea615fd3ff5",
- "reference": "b002a5b3947653c5aee3adac2a024ea615fd3ff5",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8838b5b21d807923b893ccbfc2cbeda0f1bc00f0",
+ "reference": "8838b5b21d807923b893ccbfc2cbeda0f1bc00f0",
"shasum": ""
},
"require": {
@@ -2261,7 +2264,7 @@
"symfony/var-exporter": "^6.2|^7.0",
"twig/twig": "^2.13|^3.0.4"
},
- "time": "2024-11-13T13:57:37+00:00",
+ "time": "2024-11-27T12:49:36+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2289,7 +2292,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v6.4.15"
+ "source": "https://github.com/symfony/http-kernel/tree/v6.4.16"
},
"funding": [
{
@@ -3045,17 +3048,17 @@
},
{
"name": "symfony/routing",
- "version": "v6.4.13",
- "version_normalized": "6.4.13.0",
+ "version": "v6.4.16",
+ "version_normalized": "6.4.16.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "640a74250d13f9c30d5ca045b6aaaabcc8215278"
+ "reference": "91e02e606b4b705c2f4fb42f7e7708b7923a3220"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/640a74250d13f9c30d5ca045b6aaaabcc8215278",
- "reference": "640a74250d13f9c30d5ca045b6aaaabcc8215278",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/91e02e606b4b705c2f4fb42f7e7708b7923a3220",
+ "reference": "91e02e606b4b705c2f4fb42f7e7708b7923a3220",
"shasum": ""
},
"require": {
@@ -3077,7 +3080,7 @@
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/yaml": "^5.4|^6.0|^7.0"
},
- "time": "2024-10-01T08:30:56+00:00",
+ "time": "2024-11-13T15:31:34+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -3111,7 +3114,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v6.4.13"
+ "source": "https://github.com/symfony/routing/tree/v6.4.16"
},
"funding": [
{
@@ -3131,17 +3134,17 @@
},
{
"name": "symfony/service-contracts",
- "version": "v3.5.0",
- "version_normalized": "3.5.0.0",
+ "version": "v3.5.1",
+ "version_normalized": "3.5.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f"
+ "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
- "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0",
+ "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0",
"shasum": ""
},
"require": {
@@ -3152,7 +3155,7 @@
"conflict": {
"ext-psr": "<1.1|>=2"
},
- "time": "2024-04-18T09:32:20+00:00",
+ "time": "2024-09-25T14:20:29+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -3197,7 +3200,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.5.0"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.5.1"
},
"funding": [
{
@@ -3306,23 +3309,23 @@
},
{
"name": "symfony/translation-contracts",
- "version": "v3.5.0",
- "version_normalized": "3.5.0.0",
+ "version": "v3.5.1",
+ "version_normalized": "3.5.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a"
+ "reference": "4667ff3bd513750603a09c8dedbea942487fb07c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a",
- "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c",
+ "reference": "4667ff3bd513750603a09c8dedbea942487fb07c",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
- "time": "2024-04-18T09:32:20+00:00",
+ "time": "2024-09-25T14:20:29+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -3367,7 +3370,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1"
},
"funding": [
{
@@ -3387,17 +3390,17 @@
},
{
"name": "symfony/twig-bridge",
- "version": "v6.4.13",
- "version_normalized": "6.4.13.0",
+ "version": "v6.4.16",
+ "version_normalized": "6.4.16.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
- "reference": "ec3511eef0576f378b2758da9e1c157086babd59"
+ "reference": "32ec012ed4f6426441a66014471bdb26674744be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/ec3511eef0576f378b2758da9e1c157086babd59",
- "reference": "ec3511eef0576f378b2758da9e1c157086babd59",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/32ec012ed4f6426441a66014471bdb26674744be",
+ "reference": "32ec012ed4f6426441a66014471bdb26674744be",
"shasum": ""
},
"require": {
@@ -3451,7 +3454,7 @@
"twig/inky-extra": "^2.12|^3",
"twig/markdown-extra": "^2.12|^3"
},
- "time": "2024-10-25T15:07:50+00:00",
+ "time": "2024-11-25T11:59:11+00:00",
"type": "symfony-bridge",
"installation-source": "dist",
"autoload": {
@@ -3479,7 +3482,7 @@
"description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bridge/tree/v6.4.13"
+ "source": "https://github.com/symfony/twig-bridge/tree/v6.4.16"
},
"funding": [
{
@@ -3742,17 +3745,17 @@
},
{
"name": "twig/intl-extra",
- "version": "v3.13.0",
- "version_normalized": "3.13.0.0",
+ "version": "v3.16.0",
+ "version_normalized": "3.16.0.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/intl-extra.git",
- "reference": "1b8d78c5db08bdc61015fd55009d2e84b3aa7e38"
+ "reference": "4eeab2a3f8d04d1838be7251ab2d183f817aea7b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/1b8d78c5db08bdc61015fd55009d2e84b3aa7e38",
- "reference": "1b8d78c5db08bdc61015fd55009d2e84b3aa7e38",
+ "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/4eeab2a3f8d04d1838be7251ab2d183f817aea7b",
+ "reference": "4eeab2a3f8d04d1838be7251ab2d183f817aea7b",
"shasum": ""
},
"require": {
@@ -3763,7 +3766,7 @@
"require-dev": {
"symfony/phpunit-bridge": "^6.4|^7.0"
},
- "time": "2024-09-03T13:08:40+00:00",
+ "time": "2024-11-20T13:19:52+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -3793,7 +3796,7 @@
"twig"
],
"support": {
- "source": "https://github.com/twigphp/intl-extra/tree/v3.13.0"
+ "source": "https://github.com/twigphp/intl-extra/tree/v3.16.0"
},
"funding": [
{
@@ -3809,17 +3812,17 @@
},
{
"name": "twig/twig",
- "version": "v3.14.2",
- "version_normalized": "3.14.2.0",
+ "version": "v3.16.0",
+ "version_normalized": "3.16.0.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a"
+ "reference": "475ad2dc97d65d8631393e721e7e44fb544f0561"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a",
- "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/475ad2dc97d65d8631393e721e7e44fb544f0561",
+ "reference": "475ad2dc97d65d8631393e721e7e44fb544f0561",
"shasum": ""
},
"require": {
@@ -3830,10 +3833,11 @@
"symfony/polyfill-php81": "^1.29"
},
"require-dev": {
+ "phpstan/phpstan": "^2.0",
"psr/container": "^1.0|^2.0",
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
},
- "time": "2024-11-07T12:36:22+00:00",
+ "time": "2024-11-29T08:27:05+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -3875,7 +3879,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v3.14.2"
+ "source": "https://github.com/twigphp/Twig/tree/v3.16.0"
},
"funding": [
{
diff --git a/.extlib/simplesamlphp/vendor/composer/installed.php b/.extlib/simplesamlphp/vendor/composer/installed.php
index fbf726ac3..23a0eeb04 100644
--- a/.extlib/simplesamlphp/vendor/composer/installed.php
+++ b/.extlib/simplesamlphp/vendor/composer/installed.php
@@ -1,8 +1,8 @@
array(
'name' => 'simplesamlphp/simplesamlphp',
- 'pretty_version' => 'v2.3.3',
- 'version' => '2.3.3.0',
+ 'pretty_version' => 'v2.3.5',
+ 'version' => '2.3.5.0',
'reference' => null,
'type' => 'project',
'install_path' => __DIR__ . '/../../',
@@ -11,9 +11,9 @@
),
'versions' => array(
'gettext/gettext' => array(
- 'pretty_version' => 'v5.7.1',
- 'version' => '5.7.1.0',
- 'reference' => 'a9f89e0cc9d9a67b422632b594b5f1afb16eccfc',
+ 'pretty_version' => 'v5.7.3',
+ 'version' => '5.7.3.0',
+ 'reference' => '95820f020e4f2f05e0bbaa5603e4c6ec3edc50f1',
'type' => 'library',
'install_path' => __DIR__ . '/../gettext/gettext',
'aliases' => array(),
@@ -131,27 +131,27 @@
),
),
'robrichards/xmlseclibs' => array(
- 'pretty_version' => '3.1.1',
- 'version' => '3.1.1.0',
- 'reference' => 'f8f19e58f26cdb42c54b214ff8a820760292f8df',
+ 'pretty_version' => '3.1.3',
+ 'version' => '3.1.3.0',
+ 'reference' => '2bdfd742624d739dfadbd415f00181b4a77aaf07',
'type' => 'library',
'install_path' => __DIR__ . '/../robrichards/xmlseclibs',
'aliases' => array(),
'dev_requirement' => false,
),
'simplesamlphp/assert' => array(
- 'pretty_version' => 'v1.4.0',
- 'version' => '1.4.0.0',
- 'reference' => 'cf9465870eb9fb52103e045217f6dca19aee7c84',
+ 'pretty_version' => 'v1.5.0',
+ 'version' => '1.5.0.0',
+ 'reference' => 'f6872f002d34b8e20c19d0823b107d2c74ddfd9d',
'type' => 'library',
'install_path' => __DIR__ . '/../simplesamlphp/assert',
'aliases' => array(),
'dev_requirement' => false,
),
'simplesamlphp/composer-module-installer' => array(
- 'pretty_version' => 'v1.3.4',
- 'version' => '1.3.4.0',
- 'reference' => '36508ed9580a30c4d5ab0bb3c25c00d0b5d42946',
+ 'pretty_version' => 'v1.3.5',
+ 'version' => '1.3.5.0',
+ 'reference' => '7bf413c2d28e48dff6755d74a7e45087cf144604',
'type' => 'composer-plugin',
'install_path' => __DIR__ . '/../simplesamlphp/composer-module-installer',
'aliases' => array(),
@@ -167,17 +167,17 @@
'dev_requirement' => false,
),
'simplesamlphp/saml2' => array(
- 'pretty_version' => 'v4.6.12',
- 'version' => '4.6.12.0',
- 'reference' => '9545abd0d9d48388f2fa00469c5c1e0294f0303e',
+ 'pretty_version' => 'v4.16.14',
+ 'version' => '4.16.14.0',
+ 'reference' => 'fe6c7bdda5e166e326d19d78f230d959ab51d01d',
'type' => 'library',
'install_path' => __DIR__ . '/../simplesamlphp/saml2',
'aliases' => array(),
'dev_requirement' => false,
),
'simplesamlphp/simplesamlphp' => array(
- 'pretty_version' => 'v2.3.3',
- 'version' => '2.3.3.0',
+ 'pretty_version' => 'v2.3.5',
+ 'version' => '2.3.5.0',
'reference' => null,
'type' => 'project',
'install_path' => __DIR__ . '/../../',
@@ -185,45 +185,45 @@
'dev_requirement' => false,
),
'simplesamlphp/simplesamlphp-assets-base' => array(
- 'pretty_version' => 'v2.3.1',
- 'version' => '2.3.1.0',
- 'reference' => 'b21b0a05cdedce3eb242b06d9bea30186bfea8e1',
+ 'pretty_version' => 'v2.3.2',
+ 'version' => '2.3.2.0',
+ 'reference' => '3f83d1afb16a2a807ac26f6a6a8e2f03bad75abe',
'type' => 'simplesamlphp-module',
'install_path' => __DIR__ . '/../../public/assets/base',
'aliases' => array(),
'dev_requirement' => false,
),
'simplesamlphp/xml-common' => array(
- 'pretty_version' => 'v1.18.5',
- 'version' => '1.18.5.0',
- 'reference' => 'daed5738bc22067c9b0abec2d2b877dc8a1d7647',
+ 'pretty_version' => 'v1.20.0',
+ 'version' => '1.20.0.0',
+ 'reference' => '9cf986ee7d97c02feb992c78f51024f45b068c19',
'type' => 'simplesamlphp-xmlprovider',
'install_path' => __DIR__ . '/../simplesamlphp/xml-common',
'aliases' => array(),
'dev_requirement' => false,
),
'simplesamlphp/xml-security' => array(
- 'pretty_version' => 'v1.9.5',
- 'version' => '1.9.5.0',
- 'reference' => '91e31f5930305e84ad92d573faf817abc8ad09c9',
+ 'pretty_version' => 'v1.10.0',
+ 'version' => '1.10.0.0',
+ 'reference' => '2f478b2308b06c10542488ce9690a98baaf2fdfa',
'type' => 'simplesamlphp-xmlprovider',
'install_path' => __DIR__ . '/../simplesamlphp/xml-security',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/cache' => array(
- 'pretty_version' => 'v6.4.14',
- 'version' => '6.4.14.0',
- 'reference' => '36fb8aa88833708e9f29014b6f15fac051a8b613',
+ 'pretty_version' => 'v6.4.16',
+ 'version' => '6.4.16.0',
+ 'reference' => '70d60e9a3603108563010f8592dff15a6f15dfae',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/cache',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/cache-contracts' => array(
- 'pretty_version' => 'v3.5.0',
- 'version' => '3.5.0.0',
- 'reference' => 'df6a1a44c890faded49a5fca33c2d5c5fd3c2197',
+ 'pretty_version' => 'v3.5.1',
+ 'version' => '3.5.1.0',
+ 'reference' => '15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/cache-contracts',
'aliases' => array(),
@@ -254,18 +254,18 @@
'dev_requirement' => false,
),
'symfony/dependency-injection' => array(
- 'pretty_version' => 'v6.4.15',
- 'version' => '6.4.15.0',
- 'reference' => '70ab1f65a4516ef741e519ea938e6aa465e6aa36',
+ 'pretty_version' => 'v6.4.16',
+ 'version' => '6.4.16.0',
+ 'reference' => '7a379d8871f6a36f01559c14e11141cc02eb8dc8',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/dependency-injection',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/deprecation-contracts' => array(
- 'pretty_version' => 'v3.5.0',
- 'version' => '3.5.0.0',
- 'reference' => '0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1',
+ 'pretty_version' => 'v3.5.1',
+ 'version' => '3.5.1.0',
+ 'reference' => '74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
'aliases' => array(),
@@ -290,9 +290,9 @@
'dev_requirement' => false,
),
'symfony/event-dispatcher-contracts' => array(
- 'pretty_version' => 'v3.5.0',
- 'version' => '3.5.0.0',
- 'reference' => '8f93aec25d41b72493c6ddff14e916177c9efc50',
+ 'pretty_version' => 'v3.5.1',
+ 'version' => '3.5.1.0',
+ 'reference' => '7642f5e970b672283b7823222ae8ef8bbc160b9f',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts',
'aliases' => array(),
@@ -332,18 +332,18 @@
'dev_requirement' => false,
),
'symfony/http-foundation' => array(
- 'pretty_version' => 'v6.4.15',
- 'version' => '6.4.15.0',
- 'reference' => '9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6',
+ 'pretty_version' => 'v6.4.16',
+ 'version' => '6.4.16.0',
+ 'reference' => '431771b7a6f662f1575b3cfc8fd7617aa9864d57',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/http-foundation',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/http-kernel' => array(
- 'pretty_version' => 'v6.4.15',
- 'version' => '6.4.15.0',
- 'reference' => 'b002a5b3947653c5aee3adac2a024ea615fd3ff5',
+ 'pretty_version' => 'v6.4.16',
+ 'version' => '6.4.16.0',
+ 'reference' => '8838b5b21d807923b893ccbfc2cbeda0f1bc00f0',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/http-kernel',
'aliases' => array(),
@@ -431,18 +431,18 @@
'dev_requirement' => false,
),
'symfony/routing' => array(
- 'pretty_version' => 'v6.4.13',
- 'version' => '6.4.13.0',
- 'reference' => '640a74250d13f9c30d5ca045b6aaaabcc8215278',
+ 'pretty_version' => 'v6.4.16',
+ 'version' => '6.4.16.0',
+ 'reference' => '91e02e606b4b705c2f4fb42f7e7708b7923a3220',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/routing',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/service-contracts' => array(
- 'pretty_version' => 'v3.5.0',
- 'version' => '3.5.0.0',
- 'reference' => 'bd1d9e59a81d8fa4acdcea3f617c581f7475a80f',
+ 'pretty_version' => 'v3.5.1',
+ 'version' => '3.5.1.0',
+ 'reference' => 'e53260aabf78fb3d63f8d79d69ece59f80d5eda0',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/service-contracts',
'aliases' => array(),
@@ -464,18 +464,18 @@
'dev_requirement' => false,
),
'symfony/translation-contracts' => array(
- 'pretty_version' => 'v3.5.0',
- 'version' => '3.5.0.0',
- 'reference' => 'b9d2189887bb6b2e0367a9fc7136c5239ab9b05a',
+ 'pretty_version' => 'v3.5.1',
+ 'version' => '3.5.1.0',
+ 'reference' => '4667ff3bd513750603a09c8dedbea942487fb07c',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/translation-contracts',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/twig-bridge' => array(
- 'pretty_version' => 'v6.4.13',
- 'version' => '6.4.13.0',
- 'reference' => 'ec3511eef0576f378b2758da9e1c157086babd59',
+ 'pretty_version' => 'v6.4.16',
+ 'version' => '6.4.16.0',
+ 'reference' => '32ec012ed4f6426441a66014471bdb26674744be',
'type' => 'symfony-bridge',
'install_path' => __DIR__ . '/../symfony/twig-bridge',
'aliases' => array(),
@@ -509,18 +509,18 @@
'dev_requirement' => false,
),
'twig/intl-extra' => array(
- 'pretty_version' => 'v3.13.0',
- 'version' => '3.13.0.0',
- 'reference' => '1b8d78c5db08bdc61015fd55009d2e84b3aa7e38',
+ 'pretty_version' => 'v3.16.0',
+ 'version' => '3.16.0.0',
+ 'reference' => '4eeab2a3f8d04d1838be7251ab2d183f817aea7b',
'type' => 'library',
'install_path' => __DIR__ . '/../twig/intl-extra',
'aliases' => array(),
'dev_requirement' => false,
),
'twig/twig' => array(
- 'pretty_version' => 'v3.14.2',
- 'version' => '3.14.2.0',
- 'reference' => '0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a',
+ 'pretty_version' => 'v3.16.0',
+ 'version' => '3.16.0.0',
+ 'reference' => '475ad2dc97d65d8631393e721e7e44fb544f0561',
'type' => 'library',
'install_path' => __DIR__ . '/../twig/twig',
'aliases' => array(),
diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/CHANGELOG.md b/.extlib/simplesamlphp/vendor/gettext/gettext/CHANGELOG.md
index 662cb5206..101f27a7c 100644
--- a/.extlib/simplesamlphp/vendor/gettext/gettext/CHANGELOG.md
+++ b/.extlib/simplesamlphp/vendor/gettext/gettext/CHANGELOG.md
@@ -6,6 +6,14 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
Previous releases are documented in [github releases](https://github.com/oscarotero/Gettext/releases)
+## [5.7.3] - 2024-12-01
+### Fixed
+- Php 8.4 support [#302].
+
+## [5.7.2] - 2024-11-24
+### Fixed
+- Php 8.4 support [#300].
+
## [5.7.1] - 2024-07-24
### Fixed
- Parsing of PO files with empty comments instead of empty lines [#296]
@@ -127,7 +135,11 @@ Previous releases are documented in [github releases](https://github.com/oscarot
[#282]: https://github.com/php-gettext/Gettext/issues/282
[#296]: https://github.com/php-gettext/Gettext/issues/296
[#299]: https://github.com/php-gettext/Gettext/issues/299
+[#300]: https://github.com/php-gettext/Gettext/issues/300
+[#302]: https://github.com/php-gettext/Gettext/issues/302
+[5.7.3]: https://github.com/php-gettext/Gettext/compare/v5.7.2...v5.7.3
+[5.7.2]: https://github.com/php-gettext/Gettext/compare/v5.7.1...v5.7.2
[5.7.1]: https://github.com/php-gettext/Gettext/compare/v5.7.0...v5.7.1
[5.7.0]: https://github.com/php-gettext/Gettext/compare/v5.6.1...v5.7.0
[5.6.1]: https://github.com/php-gettext/Gettext/compare/v5.6.0...v5.6.1
diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/Loader.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/Loader.php
index 684f7cab2..3ad072da6 100644
--- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/Loader.php
+++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/Loader.php
@@ -12,14 +12,14 @@
*/
abstract class Loader implements LoaderInterface
{
- public function loadFile(string $filename, Translations $translations = null): Translations
+ public function loadFile(string $filename, ?Translations $translations = null): Translations
{
$string = static::readFile($filename);
return $this->loadString($string, $translations);
}
- public function loadString(string $string, Translations $translations = null): Translations
+ public function loadString(string $string, ?Translations $translations = null): Translations
{
return $translations ?: $this->createTranslations();
}
@@ -29,7 +29,7 @@ protected function createTranslations(): Translations
return Translations::create();
}
- protected function createTranslation(?string $context, string $original, string $plural = null): ?Translation
+ protected function createTranslation(?string $context, string $original, ?string $plural = null): ?Translation
{
$translation = Translation::create($context, $original);
diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/LoaderInterface.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/LoaderInterface.php
index 4f330d3b2..0d884e4be 100644
--- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/LoaderInterface.php
+++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/LoaderInterface.php
@@ -7,7 +7,7 @@
interface LoaderInterface
{
- public function loadFile(string $filename, Translations $translations = null): Translations;
+ public function loadFile(string $filename, ?Translations $translations = null): Translations;
- public function loadString(string $string, Translations $translations = null): Translations;
+ public function loadString(string $string, ?Translations $translations = null): Translations;
}
diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/MoLoader.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/MoLoader.php
index c50790481..57406813f 100644
--- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/MoLoader.php
+++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/MoLoader.php
@@ -19,7 +19,7 @@ final class MoLoader extends Loader
private const MAGIC2 = -569244523;
private const MAGIC3 = 2500072158;
- public function loadString(string $string, Translations $translations = null): Translations
+ public function loadString(string $string, ?Translations $translations = null): Translations
{
$translations = parent::loadString($string, $translations);
$this->init($string);
diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/PoLoader.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/PoLoader.php
index d7e4da022..e7e706c7d 100644
--- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/PoLoader.php
+++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/PoLoader.php
@@ -11,7 +11,7 @@
*/
final class PoLoader extends Loader
{
- public function loadString(string $string, Translations $translations = null): Translations
+ public function loadString(string $string, ?Translations $translations = null): Translations
{
$translations = parent::loadString($string, $translations);
diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/StrictPoLoader.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/StrictPoLoader.php
index 08233b5f6..5a9c11522 100644
--- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/StrictPoLoader.php
+++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/StrictPoLoader.php
@@ -41,7 +41,7 @@ final class StrictPoLoader extends Loader
/**
* Generates a Translations object from a .po based string
*/
- public function loadString(string $data, Translations $translations = null): Translations
+ public function loadString(string $data, ?Translations $translations = null): Translations
{
$this->data = $data;
$this->position = 0;
diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/References.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/References.php
index 8a0a6351a..b6758b17d 100644
--- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/References.php
+++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/References.php
@@ -29,7 +29,7 @@ public function __debugInfo()
return $this->toArray();
}
- public function add(string $filename, int $line = null): self
+ public function add(string $filename, ?int $line = null): self
{
$fileReferences = $this->references[$filename] ?? [];
diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/FunctionsHandlersTrait.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/FunctionsHandlersTrait.php
index a31da4414..47301427d 100644
--- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/FunctionsHandlersTrait.php
+++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/FunctionsHandlersTrait.php
@@ -140,6 +140,6 @@ abstract protected function saveTranslation(
?string $domain,
?string $context,
string $original,
- string $plural = null
+ ?string $plural = null
): ?Translation;
}
diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/ParsedFunction.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/ParsedFunction.php
index 5e7aff052..255df4d1a 100644
--- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/ParsedFunction.php
+++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/ParsedFunction.php
@@ -16,7 +16,7 @@ final class ParsedFunction
private $comments = [];
private $flags = [];
- public function __construct(string $name, string $filename, int $line, int $lastLine = null)
+ public function __construct(string $name, string $filename, int $line, ?int $lastLine = null)
{
$this->name = $name;
$this->filename = $filename;
diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/Scanner.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/Scanner.php
index 62a9f7cf0..f8267b2d1 100644
--- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/Scanner.php
+++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/Scanner.php
@@ -51,7 +51,7 @@ protected function saveTranslation(
?string $domain,
?string $context,
string $original,
- string $plural = null
+ ?string $plural = null
): ?Translation {
if (is_null($domain)) {
$domain = $this->defaultDomain;
diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translation.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translation.php
index 6f590c42e..f4c86adb6 100644
--- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translation.php
+++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translation.php
@@ -194,7 +194,7 @@ public function translatePlural(string ...$translations): self
return $this;
}
- public function getPluralTranslations(int $size = null): array
+ public function getPluralTranslations(?int $size = null): array
{
if ($size === null) {
return $this->pluralTranslations;
diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translations.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translations.php
index f0a5964fb..761851b57 100644
--- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translations.php
+++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translations.php
@@ -20,7 +20,7 @@ class Translations implements Countable, IteratorAggregate
protected $headers;
protected $flags;
- public static function create(string $domain = null, string $language = null): Translations
+ public static function create(?string $domain = null, ?string $language = null): Translations
{
$translations = new static();
diff --git a/.extlib/simplesamlphp/vendor/gettext/languages/bin/export-plural-rules b/.extlib/simplesamlphp/vendor/gettext/languages/bin/export-plural-rules
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/.github/workflows/ci.yml b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/.github/workflows/ci.yml
new file mode 100644
index 000000000..d4d395acf
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/.github/workflows/ci.yml
@@ -0,0 +1,112 @@
+name: Tests
+
+on: [push, pull_request]
+
+jobs:
+ tests-legacy:
+ name: PHP ${{ matrix.php-versions }} Tests
+ runs-on: ${{ matrix.operating-system }}
+ strategy:
+ matrix:
+ operating-system: ['ubuntu-latest']
+ php-versions: ['5.4', '5.5', '5.6']
+
+ steps:
+ - uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extensions: openssl
+ tools: phpunit:4.8
+
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Run tests
+ run: phpunit --coverage-clover clover.xml tests
+
+ - uses: codecov/codecov-action@v2
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ files: ./clover.xml
+
+ tests-older:
+ name: PHP ${{ matrix.php-versions }} Tests
+ runs-on: ${{ matrix.operating-system }}
+ strategy:
+ matrix:
+ operating-system: ['ubuntu-latest']
+ php-versions: ['7.0', '7.1']
+
+ steps:
+ - uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extensions: openssl
+ tools: phpunit:6.5
+
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Run tests
+ run: phpunit --coverage-clover clover.xml tests
+
+ - uses: codecov/codecov-action@v2
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ files: ./clover.xml
+
+ tests-old:
+ name: PHP ${{ matrix.php-versions }} Tests
+ runs-on: ${{ matrix.operating-system }}
+ strategy:
+ matrix:
+ operating-system: ['ubuntu-latest']
+ php-versions: ['7.2', '7.3', '7.4']
+
+ steps:
+ - uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extensions: openssl
+ tools: phpunit:8.5
+
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Run tests
+ run: phpunit --coverage-clover clover.xml tests
+
+ - uses: codecov/codecov-action@v2
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ files: ./clover.xml
+
+ tests:
+ name: PHP ${{ matrix.php-versions }} Tests
+ runs-on: ${{ matrix.operating-system }}
+ strategy:
+ matrix:
+ operating-system: ['ubuntu-latest']
+ php-versions: ['8.0', '8.1']
+
+ steps:
+ - uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extensions: openssl
+ tools: phpunit/phpunit:9.5
+
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Run tests
+ run: phpunit --coverage-clover clover.xml tests
+
+ - uses: codecov/codecov-action@v2
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ files: ./clover.xml
diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/CHANGELOG.txt b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/CHANGELOG.txt
index 351b10421..51654e838 100644
--- a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/CHANGELOG.txt
+++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/CHANGELOG.txt
@@ -1,5 +1,15 @@
xmlseclibs.php
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+20, Nov 2024, 3.1.3
+Bug Fixes:
+- remove loadKey check due to BC issues
+
+20, Nov 2024, 3.1.2
+Improvements:
+- Add tab to list of whitespace values to remove from cert. refs #252
+- loadKey should check return value for openssl_get_privatekey (sammarshallou)
+- Switch to GitHub actions (SharkMachine)
+
05, Sep 2020, 3.1.1
Features:
- Support OAEP (iggyvolz)
diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/LICENSE b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/LICENSE
index 4fe5e5ffb..b516c0093 100644
--- a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/LICENSE
+++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2007-2019, Robert Richards .
+Copyright (c) 2007-2024, Robert Richards .
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/phpunit.xml b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/phpunit.xml
new file mode 100644
index 000000000..4f326275f
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/phpunit.xml
@@ -0,0 +1,7 @@
+
+
+
+ src
+
+
+
diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecEnc.php b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecEnc.php
index b9df7611f..807f279dc 100644
--- a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecEnc.php
+++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecEnc.php
@@ -11,7 +11,7 @@
/**
* xmlseclibs.php
*
- * Copyright (c) 2007-2020, Robert Richards .
+ * Copyright (c) 2007-2024, Robert Richards .
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,7 +44,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* @author Robert Richards
- * @copyright 2007-2020 Robert Richards
+ * @copyright 2007-2024 Robert Richards
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
*/
@@ -485,7 +485,7 @@ public static function staticLocateKeyInfo($objBaseKey=null, $node=null)
if ($x509certNodes = $child->getElementsByTagName('X509Certificate')) {
if ($x509certNodes->length > 0) {
$x509cert = $x509certNodes->item(0)->textContent;
- $x509cert = str_replace(array("\r", "\n", " "), "", $x509cert);
+ $x509cert = str_replace(array("\r", "\n", " ", "\t"), "", $x509cert);
$x509cert = "-----BEGIN CERTIFICATE-----\n".chunk_split($x509cert, 64, "\n")."-----END CERTIFICATE-----\n";
$objBaseKey->loadKey($x509cert, false, true);
}
diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityDSig.php b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityDSig.php
index 9986123e3..507edad9e 100644
--- a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityDSig.php
+++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityDSig.php
@@ -11,7 +11,7 @@
/**
* xmlseclibs.php
*
- * Copyright (c) 2007-2020, Robert Richards .
+ * Copyright (c) 2007-2024, Robert Richards .
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,7 +44,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* @author Robert Richards
- * @copyright 2007-2020 Robert Richards
+ * @copyright 2007-2024 Robert Richards
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
*/
@@ -1050,7 +1050,7 @@ public static function staticAdd509Cert($parentRef, $cert, $isPEMFormat=true, $i
}
$subjectNameValue = implode(',', $parts);
} else {
- $subjectNameValue = $certData['issuer'];
+ $subjectNameValue = $certData['subject'];
}
$x509SubjectNode = $baseDoc->createElementNS(self::XMLDSIGNS, $dsig_pfx.'X509SubjectName', $subjectNameValue);
$x509DataNode->appendChild($x509SubjectNode);
diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityKey.php b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityKey.php
index 7eed04d22..2fd2a3862 100644
--- a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityKey.php
+++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityKey.php
@@ -7,7 +7,7 @@
/**
* xmlseclibs.php
*
- * Copyright (c) 2007-2020, Robert Richards .
+ * Copyright (c) 2007-2024, Robert Richards .
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -40,7 +40,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* @author Robert Richards
- * @copyright 2007-2020 Robert Richards
+ * @copyright 2007-2024 Robert Richards
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
*/
diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/xmlseclibs.php b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/xmlseclibs.php
index 1c10acc73..05b7a1fe5 100644
--- a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/xmlseclibs.php
+++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/xmlseclibs.php
@@ -2,7 +2,7 @@
/**
* xmlseclibs.php
*
- * Copyright (c) 2007-2020, Robert Richards .
+ * Copyright (c) 2007-2024, Robert Richards .
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -35,9 +35,9 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* @author Robert Richards
- * @copyright 2007-2020 Robert Richards
+ * @copyright 2007-2024 Robert Richards
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version 3.1.1
+ * @version 3.1.3
*/
$xmlseclibs_srcdir = dirname(__FILE__) . '/src/';
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/Assert.php b/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/Assert.php
index 59de7b1e5..2ce4587a6 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/Assert.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/Assert.php
@@ -15,6 +15,9 @@
use function array_unshift;
use function call_user_func_array;
use function end;
+use function enum_exists;
+use function function_exists;
+use function get_class;
use function is_object;
use function is_resource;
use function is_string;
@@ -465,6 +468,10 @@ protected static function valueToString(mixed $value): string
return $value::class . ': ' . self::valueToString($value->format('c'));
}
+ if (function_exists('enum_exists') && enum_exists(get_class($value))) {
+ return get_class($value) . '::' . $value->name;
+ }
+
return $value::class;
}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/CustomAssertionTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/CustomAssertionTrait.php
index f8ed12471..7884861af 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/CustomAssertionTrait.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/CustomAssertionTrait.php
@@ -23,29 +23,26 @@
trait CustomAssertionTrait
{
/** @var string */
- private static string $nmtoken_regex = '/^[\w.:-]+$/u';
+ private static string $nmtoken_regex = '/^[\w.:-]+$/Du';
/** @var string */
- private static string $nmtokens_regex = '/^([\w.:-]+)([\s][\w.:-]+)*$/u';
+ private static string $nmtokens_regex = '/^([\w.:-]+)([\s][\w.:-]+)*$/Du';
/** @var string */
- private static string $datetime_regex = '/-?[0-9]{4}-(((0(1|3|5|7|8)|1(0|2))-(0[1-9]|(1|2)[0-9]|3[0-1]))|((0(4|6|9)|11)-(0[1-9]|(1|2)[0-9]|30))|(02-(0[1-9]|(1|2)[0-9])))T([0-1][0-9]|2[0-4]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\.[0-999])?((\+|-)([0-1][0-9]|2[0-4]):(0[0-9]|[1-5][0-9])|Z)?/i';
+ private static string $datetime_regex = '/-?[0-9]{4}-(((0(1|3|5|7|8)|1(0|2))-(0[1-9]|(1|2)[0-9]|3[0-1]))|((0(4|6|9)|11)-(0[1-9]|(1|2)[0-9]|30))|(02-(0[1-9]|(1|2)[0-9])))T([0-1][0-9]|2[0-4]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\.[0-999])?((\+|-)([0-1][0-9]|2[0-4]):(0[0-9]|[1-5][0-9])|Z)?/Di';
/** @var string */
- private static string $duration_regex = '/^([-+]?)P(?!$)(?:(?\d+(?:[\.\,]\d+)?)Y)?(?:(?\d+(?:[\.\,]\d+)?)M)?(?:(?\d+(?:[\.\,]\d+)?)W)?(?:(?\d+(?:[\.\,]\d+)?)D)?(T(?=\d)(?:(?\d+(?:[\.\,]\d+)?)H)?(?:(?\d+(?:[\.\,]\d+)?)M)?(?:(?\d+(?:[\.\,]\d+)?)S)?)?$/';
+ private static string $duration_regex = '/^([-+]?)P(?!$)(?:(?\d+(?:[\.\,]\d+)?)Y)?(?:(?\d+(?:[\.\,]\d+)?)M)?(?:(?\d+(?:[\.\,]\d+)?)W)?(?:(?\d+(?:[\.\,]\d+)?)D)?(T(?=\d)(?:(?\d+(?:[\.\,]\d+)?)H)?(?:(?\d+(?:[\.\,]\d+)?)M)?(?:(?\d+(?:[\.\,]\d+)?)S)?)?$/D';
/** @var string */
- private static string $qname_regex = '/^[a-zA-Z_][\w.-]*:[a-zA-Z_][\w.-]*$/';
+ private static string $qname_regex = '/^[a-zA-Z_][\w.-]*:[a-zA-Z_][\w.-]*$/D';
/** @var string */
- private static string $ncname_regex = '/^[a-zA-Z_][\w.-]*$/';
+ private static string $ncname_regex = '/^[a-zA-Z_][\w.-]*$/D';
/** @var string */
private static string $base64_regex = '/^(?:[a-z0-9+\/]{4})*(?:[a-z0-9+\/]{2}==|[a-z0-9+\/]{3}=)?$/i';
- /** @var string */
- private static string $hostname_regex = '/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/';
-
/***********************************************************************************
* NOTE: Custom assertions may be added below this line. *
* They SHOULD be marked as `private` to ensure the call is forced *
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.gitignore b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.gitignore
deleted file mode 100644
index ce45e2079..000000000
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-.phpunit.result.cache
-composer.lock
-composer.phar
-/vendor/
-
-# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
-# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
-# composer.lock
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.php_cs.dist b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.php_cs.dist
deleted file mode 100644
index b861fd268..000000000
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.php_cs.dist
+++ /dev/null
@@ -1,15 +0,0 @@
-in([
- __DIR__ . '/src',
- __DIR__ . '/tests',
- ])
-;
-
-return PhpCsFixer\Config::create()
- ->setRules([
- '@PSR2' => true,
- ])
- ->setFinder($finder)
-;
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/README.md b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/README.md
index ba3d6c4c8..6edce8dd8 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/README.md
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/README.md
@@ -1,4 +1,4 @@
-# SimpleSAMLphpSimpleSAMLphp Composer module installer
+# SimpleSAMLphp Composer module installer
![Build Status](https://github.com/simplesamlphp/composer-module-installer/workflows/CI/badge.svg?branch=master)
[![Coverage Status](https://codecov.io/gh/simplesamlphp/composer-module-installer/branch/master/graph/badge.svg)](https://codecov.io/gh/simplesamlphp/composer-module-installer)
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/codecov.yml b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/codecov.yml
deleted file mode 100644
index 1e5da3250..000000000
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/codecov.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-coverage:
- status:
- project:
- default:
- target: 0%
- threshold: 2%
- patch: off
-comment:
- layout: "diff"
- behavior: once
- require_changes: true
- require_base: no
- require_head: yes
- branches: null
-github_checks:
- annotations: false
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpcs.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpcs.xml
deleted file mode 100644
index b93cbf3c1..000000000
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpcs.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
- By default it is less stringent about long lines than other coding standards
-
-
- src
- tests
-
-
-
-
-
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpunit.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpunit.xml
deleted file mode 100644
index a00446c1c..000000000
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpunit.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- ./src
-
-
- ./tests
-
-
-
-
-
-
-
-
-
- ./tests
-
-
-
-
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/psalm.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/psalm.xml
deleted file mode 100644
index 7b5e6f56c..000000000
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/psalm.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/src/ModuleInstaller.php b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/src/ModuleInstaller.php
index 4a03ff3a4..923d91c1f 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/src/ModuleInstaller.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/src/ModuleInstaller.php
@@ -36,10 +36,10 @@ public function getInstallPath(PackageInterface $package)
*/
protected function getPackageBasePath(PackageInterface $package)
{
- if($this->composer->getPackage()->getPrettyName() === 'simplesamlphp/simplesamlphp') {
+ if ($this->composer->getPackage()->getPrettyName() === 'simplesamlphp/simplesamlphp') {
$ssp_path = ".";
} else {
- $ssp_path = $this->composer->getConfig()->get('vendor-dir').'/simplesamlphp/simplesamlphp';
+ $ssp_path = $this->composer->getConfig()->get('vendor-dir') . '/simplesamlphp/simplesamlphp';
}
$matches = [];
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/element.registry.e2caf4bd4863521540091558bb31dc3a1899181e.php b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/element.registry.9eadaddda070e6fc2370298410b63dbaf3d3a3eb.php
similarity index 95%
rename from .extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/element.registry.e2caf4bd4863521540091558bb31dc3a1899181e.php
rename to .extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/element.registry.9eadaddda070e6fc2370298410b63dbaf3d3a3eb.php
index 5a371ef84..9a55180d1 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/element.registry.e2caf4bd4863521540091558bb31dc3a1899181e.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/element.registry.9eadaddda070e6fc2370298410b63dbaf3d3a3eb.php
@@ -43,10 +43,10 @@
'InclusiveNamespaces' => '\SimpleSAML\XMLSecurity\XML\ec\InclusiveNamespaces',
],
'http://www.w3.org/2001/04/xmlenc#' => [
-// 'AgreementMethod' => '\SimpleSAML\XMLSecurity\XML\xenc\AgreementMethod',
+ 'AgreementMethod' => '\SimpleSAML\XMLSecurity\XML\xenc\AgreementMethod',
'CipherData' => '\SimpleSAML\XMLSecurity\XML\xenc\CipherData',
'CipherReference' => '\SimpleSAML\XMLSecurity\XML\xenc\CipherReference',
-// 'DHKeyValue' => '\SimpleSAML\XMLSecurity\XML\xenc\DHKeyValue',
+ 'DHKeyValue' => '\SimpleSAML\XMLSecurity\XML\xenc\DHKeyValue',
'EncryptedData' => '\SimpleSAML\XMLSecurity\XML\xenc\EncryptedData',
'EncryptedKey' => '\SimpleSAML\XMLSecurity\XML\xenc\EncryptedKey',
'EncryptionProperties' => '\SimpleSAML\XMLSecurity\XML\xenc\EncryptionProperties',
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/composer.json b/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/composer.json
index 872baa73e..6b5567f21 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/composer.json
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/composer.json
@@ -25,6 +25,9 @@
"sebastian/phpcpd": "~4.1 || ^5.0 || ^6.0",
"squizlabs/php_codesniffer": "~3.5"
},
+ "conflict": {
+ "robrichards/xmlseclibs": "3.1.2"
+ },
"autoload": {
"psr-4": {
"SAML2\\": "src/SAML2"
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/src/SAML2/DOMDocumentFactory.php b/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/src/SAML2/DOMDocumentFactory.php
index 811ae10b6..f69a49e4b 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/src/SAML2/DOMDocumentFactory.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/src/SAML2/DOMDocumentFactory.php
@@ -30,15 +30,27 @@ public static function fromString(string $xml) : DOMDocument
{
if (trim($xml) === '') {
throw InvalidArgumentException::invalidType('non-empty string', $xml);
+ } elseif (preg_match('/<(\s*)!(\s*)DOCTYPE/', $xml)) {
+ throw new RuntimeException(
+ 'Dangerous XML detected, DOCTYPE nodes are not allowed in the XML body'
+ );
} elseif (PHP_VERSION_ID < 80000) {
$entityLoader = libxml_disable_entity_loader(true);
+ } else {
+ libxml_set_external_entity_loader(null);
}
$internalErrors = libxml_use_internal_errors(true);
libxml_clear_errors();
$domDocument = self::create();
- $options = LIBXML_DTDLOAD | LIBXML_DTDATTR | LIBXML_NONET | LIBXML_PARSEHUGE;
+ $options = LIBXML_NONET | LIBXML_PARSEHUGE;
+
+ /* LIBXML_NO_XXE available from PHP 8.4 */
+ if (defined('LIBXML_NO_XXE')) {
+ $options |= LIBXML_NO_XXE;
+ }
+
if (defined('LIBXML_COMPACT')) {
$options |= LIBXML_COMPACT;
}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/AbstractElement.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/AbstractElement.php
index 83771a0e8..3ab8487b6 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/AbstractElement.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/AbstractElement.php
@@ -36,7 +36,7 @@ abstract class AbstractElement implements SerializableElementInterface
* @param \DOMElement|null $parent The element we should append to.
* @return \DOMElement
*/
- public function instantiateParentElement(DOMElement $parent = null): DOMElement
+ public function instantiateParentElement(?DOMElement $parent = null): DOMElement
{
$qualifiedName = $this->getQualifiedName();
$namespace = static::getNamespaceURI();
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Base64ElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Base64ElementTrait.php
index e78c52efe..fa47cd9fc 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Base64ElementTrait.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Base64ElementTrait.php
@@ -7,7 +7,6 @@
use DOMElement;
use SimpleSAML\Assert\Assert;
use SimpleSAML\XML\Exception\SchemaViolationException;
-use SimpleSAML\XML\StringElementTrait;
use function str_replace;
@@ -61,5 +60,5 @@ abstract public static function getLocalName(): string;
* @param \DOMElement|null $parent The element we should append to.
* @return \DOMElement
*/
- abstract public function instantiateParentElement(DOMElement $parent = null): DOMElement;
+ abstract public function instantiateParentElement(?DOMElement $parent = null): DOMElement;
}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/BooleanElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/BooleanElementTrait.php
index fa1ad383d..c74e41925 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/BooleanElementTrait.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/BooleanElementTrait.php
@@ -58,7 +58,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent
* @return \DOMElement
*/
- final public function toXML(DOMElement $parent = null): DOMElement
+ final public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->textContent = $this->getContent();
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Chunk.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Chunk.php
index 6d923240d..32063db43 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Chunk.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Chunk.php
@@ -99,7 +99,7 @@ public function getNamespaceURI(): ?string
*
* @param string|null $namespaceURI
*/
- protected function setNamespaceURI(string $namespaceURI = null): void
+ protected function setNamespaceURI(?string $namespaceURI = null): void
{
Assert::nullOrValidURI($namespaceURI, SchemaViolationException::class);
$this->namespaceURI = $namespaceURI;
@@ -133,7 +133,7 @@ public function getPrefix(): string
*
* @param string|null $prefix
*/
- protected function setPrefix(string $prefix = null): void
+ protected function setPrefix(?string $prefix = null): void
{
$this->prefix = strval($prefix);
}
@@ -304,7 +304,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this element to.
* @return \DOMElement The new element.
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
if ($parent === null) {
$doc = DOMDocumentFactory::create();
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Constants.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Constants.php
index 6d6a5dc9a..60712ecc5 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Constants.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Constants.php
@@ -28,6 +28,7 @@ class Constants
/**
* The maximum amount of child nodes this library is willing to handle.
+ * By specification, this limit is 150K, but that opens up for denial of service.
*/
public const UNBOUNDED_LIMIT = 10000;
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/DOMDocumentFactory.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/DOMDocumentFactory.php
index 9ab2a767c..144748300 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/DOMDocumentFactory.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/DOMDocumentFactory.php
@@ -5,15 +5,16 @@
namespace SimpleSAML\XML;
use DOMDocument;
-use RuntimeException;
use SimpleSAML\Assert\Assert;
use SimpleSAML\XML\Exception\IOException;
+use SimpleSAML\XML\Exception\RuntimeException;
use SimpleSAML\XML\Exception\UnparseableXMLException;
-use function defined;
use function file_get_contents;
+use function func_num_args;
use function libxml_clear_errors;
use function libxml_get_last_error;
+use function libxml_set_external_entity_loader;
use function libxml_use_internal_errors;
use function sprintf;
@@ -22,25 +23,41 @@
*/
final class DOMDocumentFactory
{
+ /**
+ * @var non-negative-int
+ * TODO: Add LIBXML_NO_XXE to the defaults when PHP 8.4.0 + libxml 2.13.0 become generally available
+ */
+ public const DEFAULT_OPTIONS = LIBXML_COMPACT | LIBXML_NONET | LIBXML_NSCLEAN;
+
+
/**
* @param string $xml
- * @param non-empty-string $xml
+ * @param non-negative-int $options
*
* @return \DOMDocument
*/
- public static function fromString(string $xml): DOMDocument
- {
+ public static function fromString(
+ string $xml,
+ int $options = self::DEFAULT_OPTIONS,
+ ): DOMDocument {
+ libxml_set_external_entity_loader(null);
Assert::notWhitespaceOnly($xml);
+ Assert::notRegex(
+ $xml,
+ '/<(\s*)!(\s*)DOCTYPE/',
+ 'Dangerous XML detected, DOCTYPE nodes are not allowed in the XML body',
+ RuntimeException::class,
+ );
$internalErrors = libxml_use_internal_errors(true);
libxml_clear_errors();
- $domDocument = self::create();
- $options = LIBXML_DTDLOAD | LIBXML_DTDATTR | LIBXML_NONET | LIBXML_PARSEHUGE | LIBXML_NSCLEAN;
- if (defined('LIBXML_COMPACT')) {
- $options |= LIBXML_COMPACT;
+ // If LIBXML_NO_XXE is available and option not set
+ if (func_num_args() === 1 && defined('LIBXML_NO_XXE')) {
+ $options != LIBXML_NO_XXE;
}
+ $domDocument = self::create();
$loaded = $domDocument->loadXML($xml, $options);
libxml_use_internal_errors($internalErrors);
@@ -55,11 +72,11 @@ public static function fromString(string $xml): DOMDocument
libxml_clear_errors();
foreach ($domDocument->childNodes as $child) {
- if ($child->nodeType === XML_DOCUMENT_TYPE_NODE) {
- throw new RuntimeException(
- 'Dangerous XML detected, DOCTYPE nodes are not allowed in the XML body',
- );
- }
+ Assert::false(
+ $child->nodeType === XML_DOCUMENT_TYPE_NODE,
+ 'Dangerous XML detected, DOCTYPE nodes are not allowed in the XML body',
+ RuntimeException::class,
+ );
}
return $domDocument;
@@ -68,10 +85,11 @@ public static function fromString(string $xml): DOMDocument
/**
* @param string $file
+ * @param non-negative-int $options
*
* @return \DOMDocument
*/
- public static function fromFile(string $file): DOMDocument
+ public static function fromFile(string $file, int $options = self::DEFAULT_OPTIONS): DOMDocument
{
error_clear_last();
$xml = @file_get_contents($file);
@@ -83,7 +101,7 @@ public static function fromFile(string $file): DOMDocument
}
Assert::notWhitespaceOnly($xml, sprintf('File "%s" does not have content', $file), RuntimeException::class);
- return static::fromString($xml);
+ return (func_num_args() === 1) ? static::fromString($xml) : static::fromString($xml, $options);
}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableAttributesTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableAttributesTrait.php
index 4eb33a4bd..d16fa02a4 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableAttributesTrait.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableAttributesTrait.php
@@ -93,7 +93,7 @@ public function getAttributesNS(): array
*
* @return array $attributes
*/
- protected static function getAttributesNSFromXML(DOMElement $xml, NS|array $namespace = null): array
+ protected static function getAttributesNSFromXML(DOMElement $xml, NS|array|null $namespace = null): array
{
$namespace = $namespace ?? self::XS_ANY_ATTR_NAMESPACE;
$exclusionList = self::getAttributeExclusions();
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableElementTrait.php
index 45016f33f..3e5c84b0b 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableElementTrait.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableElementTrait.php
@@ -42,7 +42,7 @@ trait ExtendableElementTrait
*
* @return list<\SimpleSAML\XML\SerializableElementInterface> $elements
*/
- protected static function getChildElementsFromXML(DOMElement $xml, NS|array $namespace = null): array
+ protected static function getChildElementsFromXML(DOMElement $xml, NS|array|null $namespace = null): array
{
$namespace = $namespace ?? self::XS_ANY_ELT_NAMESPACE;
$exclusionList = self::getElementExclusions();
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/IntegerElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/IntegerElementTrait.php
new file mode 100644
index 000000000..ded61955b
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/IntegerElementTrait.php
@@ -0,0 +1,35 @@
+instantiateParentElement($parent);
- $e->setAttributeNS(C::NS_XML, 'xml:lang', $this->language);
+ $e->setAttributeNS(C::NS_XML, 'xml:lang', $this->getLanguage());
$e->textContent = $this->getContent();
return $e;
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/QNameElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/QNameElementTrait.php
index 800fcc81a..02c143a06 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/QNameElementTrait.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/QNameElementTrait.php
@@ -111,7 +111,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
@@ -140,5 +140,5 @@ abstract public static function getLocalName(): string;
* @param \DOMElement|null $parent The element we should append to.
* @return \DOMElement
*/
- abstract public function instantiateParentElement(DOMElement $parent = null): DOMElement;
+ abstract public function instantiateParentElement(?DOMElement $parent = null): DOMElement;
}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementInterface.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementInterface.php
index 2baa9d1ac..527240ff1 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementInterface.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementInterface.php
@@ -44,5 +44,5 @@ public static function fromXML(DOMElement $xml): static;
* @param \DOMElement|null $parent
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement;
+ public function toXML(?DOMElement $parent = null): DOMElement;
}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementTrait.php
index 28d34e768..e5cb179ca 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementTrait.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementTrait.php
@@ -86,5 +86,5 @@ public function __unserialize(array $serialized): void
* @param \DOMElement|null $parent
* @return \DOMElement
*/
- abstract public function toXML(DOMElement $parent = null): DOMElement;
+ abstract public function toXML(?DOMElement $parent = null): DOMElement;
}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/StringElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/StringElementTrait.php
index 835ca9060..abdfd7aae 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/StringElementTrait.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/StringElementTrait.php
@@ -110,7 +110,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->textContent = $this->getContent();
@@ -131,5 +131,5 @@ abstract public static function getLocalName(): string;
* @param \DOMElement|null $parent The element we should append to.
* @return \DOMElement
*/
- abstract public function instantiateParentElement(DOMElement $parent = null): DOMElement;
+ abstract public function instantiateParentElement(?DOMElement $parent = null): DOMElement;
}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/URIElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/URIElementTrait.php
index f5d7fc8eb..cb7c79fc8 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/URIElementTrait.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/URIElementTrait.php
@@ -53,7 +53,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent
* @return \DOMElement
*/
- final public function toXML(DOMElement $parent = null): DOMElement
+ final public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->textContent = $this->getContent();
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/composer.json b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/composer.json
index 687c3455b..f891a767b 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/composer.json
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/composer.json
@@ -43,8 +43,8 @@
"ext-pcre": "*",
"ext-spl": "*",
- "simplesamlphp/assert": "^1.3",
- "simplesamlphp/xml-common": "^1.18"
+ "simplesamlphp/assert": "^1.5",
+ "simplesamlphp/xml-common": "^1.20.0"
},
"require-dev": {
"simplesamlphp/simplesamlphp-test-framework": "^1.7"
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Constants.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Constants.php
index f9e64f35a..7b39c1597 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Constants.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Constants.php
@@ -153,5 +153,6 @@ class Constants extends \SimpleSAML\XML\Constants
public const XMLENC_ENCRYPTEDKEY = 'http://www.w3.org/2001/04/xmlenc#EncryptedKey';
public const XMLENC_EXI = 'http://www.w3.org/2009/xmlenc11#EXI';
- public const XPATH_URI = 'http://www.w3.org/TR/1999/REC-xpath-19991116';
+ // The namespace for the Elliptic Curve Diffie-Hellman Ephemeral Static (ECDH-ES) algorithm
+ public const XMLENC11_ECDH_ES = 'http://www.w3.org/2009/xmlenc11#ECDH-ES';
}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Key/PrivateKey.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Key/PrivateKey.php
index 602ce28d2..87bdaa6ae 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Key/PrivateKey.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Key/PrivateKey.php
@@ -56,7 +56,7 @@ public static function fromFile(
): static {
if (preg_match(PEM::PEM_REGEX, $file) !== 1) {
// Not a PEM-encoded key. Must be a file
- if (preg_match('/^(file:\/\/)/i', $file) !== 1) {
+ if (preg_match('/^(file:\/\/)/Di', $file) !== 1) {
$file = preg_filter('/^/', 'file://', $file);
}
}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Utils/XML.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Utils/XML.php
index b7a3df3cf..f2dafca5d 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Utils/XML.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Utils/XML.php
@@ -33,8 +33,8 @@ class XML
public static function canonicalizeData(
DOMElement $element,
string $c14nMethod,
- array $xpaths = null,
- array $prefixes = null,
+ ?array $xpaths = null,
+ ?array $prefixes = null,
): string {
$withComments = match ($c14nMethod) {
C::C14N_EXCLUSIVE_WITH_COMMENTS, C::C14N_INCLUSIVE_WITH_COMMENTS => true,
@@ -101,7 +101,7 @@ public static function processTransforms(
}
}
break;
- case C::XPATH_URI:
+ case C::XPATH10_URI:
$xpath = $transform->getXPath();
if ($xpath !== null) {
$arXPath = [];
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/EncryptedElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/EncryptedElementTrait.php
index 5c8c95487..48b381f86 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/EncryptedElementTrait.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/EncryptedElementTrait.php
@@ -179,7 +179,7 @@ public static function fromXML(DOMElement $xml): static
/**
* @inheritDoc
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$this->encryptedData->toXML($e);
@@ -196,7 +196,7 @@ public function toXML(DOMElement $parent = null): DOMElement
* @param \DOMElement|null $parent The element we should append to.
* @return \DOMElement
*/
- abstract public function instantiateParentElement(DOMElement $parent = null): DOMElement;
+ abstract public function instantiateParentElement(?DOMElement $parent = null): DOMElement;
/**
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementInterface.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementInterface.php
index cf2e3c9ab..d48ef0c31 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementInterface.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementInterface.php
@@ -65,5 +65,5 @@ public function isSigned(): bool;
* in the signature.
* @throws \SimpleSAML\XMLSecurity\Exception\RuntimeException if the signature fails to validate.
*/
- public function verify(SignatureAlgorithmInterface $verifier = null): SignedElementInterface;
+ public function verify(?SignatureAlgorithmInterface $verifier = null): SignedElementInterface;
}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementTrait.php
index 10b7ccbea..8fa736589 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementTrait.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementTrait.php
@@ -251,7 +251,7 @@ public function isSigned(): bool
* in the signature.
* @throws \SimpleSAML\XMLSecurity\Exception\RuntimeException if the signature fails to verify.
*/
- public function verify(SignatureAlgorithmInterface $verifier = null): SignedElementInterface
+ public function verify(?SignatureAlgorithmInterface $verifier = null): SignedElementInterface
{
if (!$this->isSigned()) {
throw new NoSignatureFoundException();
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/AbstractKeyInfoType.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/AbstractKeyInfoType.php
new file mode 100644
index 000000000..2de04d673
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/AbstractKeyInfoType.php
@@ -0,0 +1,117 @@
+Id;
+ }
+
+
+ /**
+ * Collect the value of the info-property
+ *
+ * @return list<\SimpleSAML\XML\SerializableElementInterface>
+ */
+ public function getInfo(): array
+ {
+ return $this->info;
+ }
+
+
+ /**
+ * Convert this KeyInfo to XML.
+ *
+ * @param \DOMElement|null $parent The element we should append this KeyInfo to.
+ * @return \DOMElement
+ */
+ public function toXML(?DOMElement $parent = null): DOMElement
+ {
+ $e = $this->instantiateParentElement($parent);
+
+ if ($this->getId() !== null) {
+ $e->setAttribute('Id', $this->getId());
+ }
+
+ foreach ($this->getInfo() as $elt) {
+ $elt->toXML($e);
+ }
+
+ return $e;
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/CanonicalizationMethod.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/CanonicalizationMethod.php
index f7844a3f6..ddb319f5c 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/CanonicalizationMethod.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/CanonicalizationMethod.php
@@ -78,7 +78,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this KeyName element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->setAttribute('Algorithm', $this->getAlgorithm());
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DigestMethod.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DigestMethod.php
index 9ce95f549..335d5d4e1 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DigestMethod.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DigestMethod.php
@@ -84,7 +84,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this DigestMethod element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->setAttribute('Algorithm', $this->getAlgorithm());
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DsObject.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DsObject.php
index 72f78f5ad..00f0fae04 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DsObject.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DsObject.php
@@ -123,7 +123,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this ds:Object element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyInfo.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyInfo.php
index e33f2a1b1..5f4993451 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyInfo.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyInfo.php
@@ -7,85 +7,16 @@
use DOMElement;
use SimpleSAML\Assert\Assert;
use SimpleSAML\XML\Exception\InvalidDOMElementException;
-use SimpleSAML\XML\Exception\SchemaViolationException;
-use SimpleSAML\XML\ExtendableElementTrait;
-use SimpleSAML\XML\SerializableElementInterface;
-use SimpleSAML\XML\XsNamespace as NS;
-use SimpleSAML\XMLSecurity\Constants as C;
-use SimpleSAML\XMLSecurity\Exception\InvalidArgumentException;
+
+use function array_merge;
/**
* Class representing a ds:KeyInfo element.
*
* @package simplesamlphp/xml-security
*/
-final class KeyInfo extends AbstractDsElement
+final class KeyInfo extends AbstractKeyInfoType
{
- use ExtendableElementTrait;
-
- /** @var \SimpleSAML\XML\XsNamespace */
- public const XS_ANY_ELT_NAMESPACE = NS::OTHER;
-
-
- /**
- * Initialize a KeyInfo element.
- *
- * @param (
- * \SimpleSAML\XMLSecurity\XML\ds\KeyName|
- * \SimpleSAML\XMLSecurity\XML\ds\KeyValue|
- * \SimpleSAML\XMLSecurity\XML\ds\RetrievalMethod|
- * \SimpleSAML\XMLSecurity\XML\ds\X509Data|
- * \SimpleSAML\XML\SerializableElementInterface
- * )[] $info
- * @param string|null $Id
- */
- public function __construct(
- protected array $info,
- protected ?string $Id = null,
- ) {
- Assert::notEmpty($info, 'ds:KeyInfo cannot be empty', InvalidArgumentException::class);
- Assert::maxCount($info, C::UNBOUNDED_LIMIT);
- Assert::allIsInstanceOf(
- $info,
- SerializableElementInterface::class,
- InvalidArgumentException::class,
- );
- Assert::nullOrValidNCName($Id);
-
- foreach ($info as $item) {
- if ($item->getNamespaceURI() === static::NS) {
- Assert::isInstanceOfAny(
- $item,
- [KeyName::class, KeyValue::class, RetrievalMethod::class, X509Data::class],
- SchemaViolationException::class,
- );
- }
- }
- }
-
-
- /**
- * Collect the value of the Id-property
- *
- * @return string|null
- */
- public function getId(): ?string
- {
- return $this->Id;
- }
-
-
- /**
- * Collect the value of the info-property
- *
- * @return list<\SimpleSAML\XML\SerializableElementInterface>
- */
- public function getInfo(): array
- {
- return $this->info;
- }
-
-
/**
* Convert XML into a KeyInfo
*
@@ -124,26 +55,4 @@ public static function fromXML(DOMElement $xml): static
return new static($info, $Id);
}
-
-
- /**
- * Convert this KeyInfo to XML.
- *
- * @param \DOMElement|null $parent The element we should append this KeyInfo to.
- * @return \DOMElement
- */
- public function toXML(DOMElement $parent = null): DOMElement
- {
- $e = $this->instantiateParentElement($parent);
-
- if ($this->getId() !== null) {
- $e->setAttribute('Id', $this->getId());
- }
-
- foreach ($this->getInfo() as $elt) {
- $elt->toXML($e);
- }
-
- return $e;
- }
}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyValue.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyValue.php
index b6f2d0183..7677371b6 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyValue.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyValue.php
@@ -100,7 +100,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this KeyValue element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Manifest.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Manifest.php
index b78c53cd0..9eac89ab4 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Manifest.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Manifest.php
@@ -88,7 +88,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this Manifest element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RSAKeyValue.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RSAKeyValue.php
index 1a23e70bf..ff56e9353 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RSAKeyValue.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RSAKeyValue.php
@@ -104,7 +104,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this RSAKeyValue element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Reference.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Reference.php
index fc7e2e830..86baeab8b 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Reference.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Reference.php
@@ -167,7 +167,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this Reference element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
if ($this->getId() !== null) {
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RetrievalMethod.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RetrievalMethod.php
index e75fcca8d..e14b15c44 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RetrievalMethod.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RetrievalMethod.php
@@ -100,7 +100,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this RetrievalMethod element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->setAttribute('URI', $this->getURI());
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Signature.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Signature.php
index d004a3143..936587068 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Signature.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Signature.php
@@ -161,7 +161,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this Signature element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureMethod.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureMethod.php
index 095e1ecb3..df2470e37 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureMethod.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureMethod.php
@@ -76,7 +76,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this SignatureMethod element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->setAttribute('Algorithm', $this->getAlgorithm());
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperties.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperties.php
index cd5ff1960..cb8cbe109 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperties.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperties.php
@@ -89,7 +89,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this SignatureProperties element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperty.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperty.php
index c8b312c6c..858b16f47 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperty.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperty.php
@@ -102,7 +102,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this SignatureProperty element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->setAttribute('Target', $this->getTarget());
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureValue.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureValue.php
index d023cf4e0..d90f3c7db 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureValue.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureValue.php
@@ -70,7 +70,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this SignatureValue element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->textContent = $this->getContent();
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignedInfo.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignedInfo.php
index 0779cc428..4c83d61d9 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignedInfo.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignedInfo.php
@@ -172,7 +172,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this SignedInfo element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transform.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transform.php
index a10258816..b18abb314 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transform.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transform.php
@@ -38,8 +38,8 @@ final public function __construct(
if ($xpath !== null) {
Assert::nullOrEq(
$this->algorithm,
- C::XPATH_URI,
- sprintf('Transform algorithm "%s" required if XPath provided.', C::XPATH_URI),
+ C::XPATH10_URI,
+ sprintf('Transform algorithm "%s" required if XPath provided.', C::XPATH10_URI),
);
}
@@ -127,7 +127,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this Transform element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
@@ -135,7 +135,7 @@ public function toXML(DOMElement $parent = null): DOMElement
$e->setAttribute('Algorithm', $algorithm);
switch ($algorithm) {
- case C::XPATH_URI:
+ case C::XPATH10_URI:
$this->getXpath()?->toXML($e);
break;
case C::C14N_EXCLUSIVE_WITH_COMMENTS:
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transforms.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transforms.php
index db46c4fe2..aef932030 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transforms.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transforms.php
@@ -76,7 +76,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this Transforms element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509Data.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509Data.php
index b9c68947b..d810143d3 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509Data.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509Data.php
@@ -98,7 +98,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this X509Data element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509IssuerSerial.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509IssuerSerial.php
index 483d19067..dc0a70da8 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509IssuerSerial.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509IssuerSerial.php
@@ -90,7 +90,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this X509IssuerSerial element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509SerialNumber.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509SerialNumber.php
index d7b659139..a24f19c9d 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509SerialNumber.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509SerialNumber.php
@@ -66,7 +66,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this X509SerialNumber element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->textContent = $this->getContent();
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/XPath.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/XPath.php
index cf84778d3..087c8b17a 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/XPath.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/XPath.php
@@ -88,7 +88,7 @@ public static function fromXML(DOMElement $xml): static
* @param DOMElement|null $parent
* @return DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->textContent = $this->getExpression();
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/KeyInfoReference.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/KeyInfoReference.php
index e1bdc5f65..b9a6a78e2 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/KeyInfoReference.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/KeyInfoReference.php
@@ -80,7 +80,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this KeyInfoReference element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->setAttribute('URI', $this->getURI());
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/X509Digest.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/X509Digest.php
index 277dee82a..0eda198a3 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/X509Digest.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/X509Digest.php
@@ -81,7 +81,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this X509Digest element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->textContent = $this->getContent();
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ec/InclusiveNamespaces.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ec/InclusiveNamespaces.php
index 7deff9eb0..eb79c964e 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ec/InclusiveNamespaces.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ec/InclusiveNamespaces.php
@@ -68,7 +68,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this InclusiveNamespaces to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/element.registry.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/element.registry.php
index 5a371ef84..9a55180d1 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/element.registry.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/element.registry.php
@@ -43,10 +43,10 @@
'InclusiveNamespaces' => '\SimpleSAML\XMLSecurity\XML\ec\InclusiveNamespaces',
],
'http://www.w3.org/2001/04/xmlenc#' => [
-// 'AgreementMethod' => '\SimpleSAML\XMLSecurity\XML\xenc\AgreementMethod',
+ 'AgreementMethod' => '\SimpleSAML\XMLSecurity\XML\xenc\AgreementMethod',
'CipherData' => '\SimpleSAML\XMLSecurity\XML\xenc\CipherData',
'CipherReference' => '\SimpleSAML\XMLSecurity\XML\xenc\CipherReference',
-// 'DHKeyValue' => '\SimpleSAML\XMLSecurity\XML\xenc\DHKeyValue',
+ 'DHKeyValue' => '\SimpleSAML\XMLSecurity\XML\xenc\DHKeyValue',
'EncryptedData' => '\SimpleSAML\XMLSecurity\XML\xenc\EncryptedData',
'EncryptedKey' => '\SimpleSAML\XMLSecurity\XML\xenc\EncryptedKey',
'EncryptionProperties' => '\SimpleSAML\XMLSecurity\XML\xenc\EncryptionProperties',
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractAgreementMethodType.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractAgreementMethodType.php
new file mode 100644
index 000000000..978dbb62a
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractAgreementMethodType.php
@@ -0,0 +1,159 @@
+ $children
+ */
+ final public function __construct(
+ protected string $algorithm,
+ protected ?KANonce $kaNonce = null,
+ protected ?OriginatorKeyInfo $originatorKeyInfo = null,
+ protected ?RecipientKeyInfo $recipientKeyInfo = null,
+ protected array $children = [],
+ ) {
+ Assert::validURI($algorithm, SchemaViolationException::class); // Covers the empty string
+
+ $this->setElements($children);
+ }
+
+
+ /**
+ * Get the URI identifying the algorithm used by this agreement method.
+ *
+ * @return string
+ */
+ public function getAlgorithm(): string
+ {
+ return $this->algorithm;
+ }
+
+
+ /**
+ * Get the KA-Nonce.
+ *
+ * @return \SimpleSAML\XMLSecurity\XML\xenc\KANonce|null
+ */
+ public function getKANonce(): ?KANonce
+ {
+ return $this->kaNonce;
+ }
+
+
+ /**
+ * Get the Originator KeyInfo.
+ *
+ * @return \SimpleSAML\XMLSecurity\XML\xenc\OriginatorKeyInfo|null
+ */
+ public function getOriginatorKeyInfo(): ?OriginatorKeyInfo
+ {
+ return $this->originatorKeyInfo;
+ }
+
+
+ /**
+ * Get the Recipient KeyInfo.
+ *
+ * @return \SimpleSAML\XMLSecurity\XML\xenc\RecipientKeyInfo|null
+ */
+ public function getRecipientKeyInfo(): ?RecipientKeyInfo
+ {
+ return $this->recipientKeyInfo;
+ }
+
+
+ /**
+ * Initialize an AgreementMethod object from an existing XML.
+ *
+ * @param \DOMElement $xml
+ * @return static
+ *
+ * @throws \SimpleSAML\XML\Exception\InvalidDOMElementException
+ * if the qualified name of the supplied element is wrong
+ * @throws \SimpleSAML\XML\Exception\MissingAttributeException
+ * if the supplied element is missing one of the mandatory attributes
+ * @throws \SimpleSAML\XML\Exception\TooManyElementsException
+ * if too many child-elements of a type are specified
+ */
+ public static function fromXML(DOMElement $xml): static
+ {
+ Assert::same($xml->localName, 'AgreementMethod', InvalidDOMElementException::class);
+ Assert::same($xml->namespaceURI, static::NS, InvalidDOMElementException::class);
+
+ $algorithm = self::getAttribute($xml, 'Algorithm');
+
+ $kaNonce = KANonce::getChildrenOfClass($xml);
+ Assert::maxCount($kaNonce, 1, TooManyElementsException::class);
+
+ $originatorKeyInfo = OriginatorKeyInfo::getChildrenOfClass($xml);
+ Assert::maxCount($originatorKeyInfo, 1, TooManyElementsException::class);
+
+ $recipientKeyInfo = RecipientKeyInfo::getChildrenOfClass($xml);
+ Assert::maxCount($recipientKeyInfo, 1, TooManyElementsException::class);
+
+ $children = self::getChildElementsFromXML($xml);
+
+ return new static(
+ $algorithm,
+ array_pop($kaNonce),
+ array_pop($originatorKeyInfo),
+ array_pop($recipientKeyInfo),
+ $children,
+ );
+ }
+
+
+ /**
+ * Convert this AgreementMethod object to XML.
+ *
+ * @param \DOMElement|null $parent The element we should append this AgreementMethod to.
+ * @return \DOMElement
+ */
+ public function toXML(?DOMElement $parent = null): DOMElement
+ {
+ $e = $this->instantiateParentElement($parent);
+ $e->setAttribute('Algorithm', $this->getAlgorithm());
+
+ $this->getKANonce()?->toXML($e);
+
+ foreach ($this->getElements() as $child) {
+ $child->toXML($e);
+ }
+
+ $this->getOriginatorKeyInfo()?->toXML($e);
+ $this->getRecipientKeyInfo()?->toXML($e);
+
+ return $e;
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractDHKeyValueType.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractDHKeyValueType.php
new file mode 100644
index 000000000..ff1afde26
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractDHKeyValueType.php
@@ -0,0 +1,188 @@
+xencPublic;
+ }
+
+
+ /**
+ * Get the P.
+ *
+ * @return \SimpleSAML\XMLSecurity\XML\xenc\P|null
+ */
+ public function getP(): ?P
+ {
+ return $this->p;
+ }
+
+
+ /**
+ * Get the Q.
+ *
+ * @return \SimpleSAML\XMLSecurity\XML\xenc\Q|null
+ */
+ public function getQ(): ?Q
+ {
+ return $this->q;
+ }
+
+
+ /**
+ * Get the Generator.
+ *
+ * @return \SimpleSAML\XMLSecurity\XML\xenc\Generator|null
+ */
+ public function getGenerator(): ?Generator
+ {
+ return $this->generator;
+ }
+
+
+ /**
+ * Get the Seed.
+ *
+ * @return \SimpleSAML\XMLSecurity\XML\xenc\Seed|null
+ */
+ public function getSeed(): ?Seed
+ {
+ return $this->seed;
+ }
+
+
+ /**
+ * Get the PgenCounter.
+ *
+ * @return \SimpleSAML\XMLSecurity\XML\xenc\PgenCounter|null
+ */
+ public function getPgenCounter(): ?PgenCounter
+ {
+ return $this->pgenCounter;
+ }
+
+
+ /**
+ * Initialize an DHKeyValue object from an existing XML.
+ *
+ * @param \DOMElement $xml
+ * @return static
+ *
+ * @throws \SimpleSAML\XML\Exception\InvalidDOMElementException
+ * if the qualified name of the supplied element is wrong
+ * @throws \SimpleSAML\XML\Exception\MissingAttributeException
+ * if the supplied element is missing one of the mandatory attributes
+ * @throws \SimpleSAML\XML\Exception\TooManyElementsException
+ * if too many child-elements of a type are specified
+ */
+ public static function fromXML(DOMElement $xml): static
+ {
+ Assert::same($xml->localName, 'DHKeyValue', InvalidDOMElementException::class);
+ Assert::same($xml->namespaceURI, static::NS, InvalidDOMElementException::class);
+
+ $xencPublic = XencPublic::getChildrenOfClass($xml);
+ Assert::minCount($xencPublic, 1, MissingElementException::class);
+ Assert::maxCount($xencPublic, 1, TooManyElementsException::class);
+
+ $p = P::getChildrenOfClass($xml);
+ Assert::maxCount($p, 1, TooManyElementsException::class);
+
+ $q = Q::getChildrenOfClass($xml);
+ Assert::maxCount($q, 1, TooManyElementsException::class);
+
+ $generator = Generator::getChildrenOfClass($xml);
+ Assert::maxCount($generator, 1, TooManyElementsException::class);
+
+ $seed = Seed::getChildrenOfClass($xml);
+ Assert::maxCount($seed, 1, TooManyElementsException::class);
+
+ $pgenCounter = PgenCounter::getChildrenOfClass($xml);
+ Assert::maxCount($pgenCounter, 1, TooManyElementsException::class);
+
+ return new static(
+ array_pop($xencPublic),
+ array_pop($p),
+ array_pop($q),
+ array_pop($generator),
+ array_pop($seed),
+ array_pop($pgenCounter),
+ );
+ }
+
+
+ /**
+ * Convert this DHKeyValue object to XML.
+ *
+ * @param \DOMElement|null $parent The element we should append this DHKeyValue to.
+ * @return \DOMElement
+ */
+ public function toXML(?DOMElement $parent = null): DOMElement
+ {
+ $e = $this->instantiateParentElement($parent);
+
+ $this->getP()?->toXML($e);
+ $this->getQ()?->toXML($e);
+ $this->getGenerator()?->toXML($e);
+ $this->getPublic()->toXML($e);
+ $this->getSeed()?->toXML($e);
+ $this->getPgenCounter()?->toXML($e);
+
+ return $e;
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptedType.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptedType.php
index 6a3e7c964..ad005c03b 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptedType.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptedType.php
@@ -125,7 +125,7 @@ public function getType(): ?string
/**
* @inheritDoc
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionMethod.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionMethod.php
index bafc54fa0..0b3861621 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionMethod.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionMethod.php
@@ -118,7 +118,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this EncryptionMethod to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->setAttribute('Algorithm', $this->getAlgorithm());
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertiesType.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertiesType.php
index 63c79f3c1..5b9810b85 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertiesType.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertiesType.php
@@ -75,7 +75,7 @@ public static function fromXML(DOMElement $xml): static
/**
* @inheritDoc
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertyType.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertyType.php
index 9a56bc771..a70ff2376 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertyType.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertyType.php
@@ -99,7 +99,7 @@ public static function fromXML(DOMElement $xml): static
/**
* @inheritDoc
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractReference.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractReference.php
index f67f6e1db..225fdbf18 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractReference.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractReference.php
@@ -74,7 +74,7 @@ public static function fromXML(DOMElement $xml): static
/**
* @inheritDoc
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->setAttribute('URI', $this->getUri());
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AgreementMethod.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AgreementMethod.php
new file mode 100644
index 000000000..3a7bc106c
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AgreementMethod.php
@@ -0,0 +1,14 @@
+instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/CipherReference.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/CipherReference.php
index e2a169f35..592ee0cf9 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/CipherReference.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/CipherReference.php
@@ -68,7 +68,7 @@ public static function fromXML(DOMElement $xml): static
/**
* @inheritDoc
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->setAttribute('URI', $this->getUri());
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/DHKeyValue.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/DHKeyValue.php
new file mode 100644
index 000000000..66ab70826
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/DHKeyValue.php
@@ -0,0 +1,14 @@
+setContent($content);
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KANonce.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KANonce.php
new file mode 100644
index 000000000..44e72e2a4
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KANonce.php
@@ -0,0 +1,29 @@
+setContent($content);
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KeySize.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KeySize.php
index c2faef38f..c08649221 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KeySize.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KeySize.php
@@ -60,7 +60,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
$e->textContent = strval($this->getKeySize());
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/OriginatorKeyInfo.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/OriginatorKeyInfo.php
new file mode 100644
index 000000000..2f7db9a15
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/OriginatorKeyInfo.php
@@ -0,0 +1,71 @@
+localName, 'OriginatorKeyInfo', InvalidDOMElementException::class);
+ Assert::same($xml->namespaceURI, OriginatorKeyInfo::NS, InvalidDOMElementException::class);
+
+ $Id = self::getOptionalAttribute($xml, 'Id', null);
+
+ $keyName = KeyName::getChildrenOfClass($xml);
+ $keyValue = KeyValue::getChildrenOfClass($xml);
+ $retrievalMethod = RetrievalMethod::getChildrenOfClass($xml);
+ $x509Data = X509Data::getChildrenOfClass($xml);
+ //$pgpData = PGPData::getChildrenOfClass($xml);
+ //$spkiData = SPKIData::getChildrenOfClass($xml);
+ //$mgmtData = MgmtData::getChildrenOfClass($xml);
+ $other = self::getChildElementsFromXML($xml);
+
+ $info = array_merge(
+ $keyName,
+ $keyValue,
+ $retrievalMethod,
+ $x509Data,
+ //$pgpdata,
+ //$spkidata,
+ //$mgmtdata,
+ $other,
+ );
+
+ return new static($info, $Id);
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/P.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/P.php
new file mode 100644
index 000000000..a9f4a530b
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/P.php
@@ -0,0 +1,26 @@
+setContent($content);
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/PgenCounter.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/PgenCounter.php
new file mode 100644
index 000000000..5350a3c4b
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/PgenCounter.php
@@ -0,0 +1,29 @@
+setContent($content);
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Q.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Q.php
new file mode 100644
index 000000000..379ecb545
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Q.php
@@ -0,0 +1,26 @@
+setContent($content);
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/RecipientKeyInfo.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/RecipientKeyInfo.php
new file mode 100644
index 000000000..c5eb61b9d
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/RecipientKeyInfo.php
@@ -0,0 +1,71 @@
+localName, 'RecipientKeyInfo', InvalidDOMElementException::class);
+ Assert::same($xml->namespaceURI, RecipientKeyInfo::NS, InvalidDOMElementException::class);
+
+ $Id = self::getOptionalAttribute($xml, 'Id', null);
+
+ $keyName = KeyName::getChildrenOfClass($xml);
+ $keyValue = KeyValue::getChildrenOfClass($xml);
+ $retrievalMethod = RetrievalMethod::getChildrenOfClass($xml);
+ $x509Data = X509Data::getChildrenOfClass($xml);
+ //$pgpData = PGPData::getChildrenOfClass($xml);
+ //$spkiData = SPKIData::getChildrenOfClass($xml);
+ //$mgmtData = MgmtData::getChildrenOfClass($xml);
+ $other = self::getChildElementsFromXML($xml);
+
+ $info = array_merge(
+ $keyName,
+ $keyValue,
+ $retrievalMethod,
+ $x509Data,
+ //$pgpdata,
+ //$spkidata,
+ //$mgmtdata,
+ $other,
+ );
+
+ return new static($info, $Id);
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/ReferenceList.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/ReferenceList.php
index 1791b75dd..537768e8f 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/ReferenceList.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/ReferenceList.php
@@ -98,7 +98,7 @@ public static function fromXML(DOMElement $xml): static
/**
* @inheritDoc
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Seed.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Seed.php
new file mode 100644
index 000000000..7eb7823a7
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Seed.php
@@ -0,0 +1,29 @@
+setContent($content);
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Transforms.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Transforms.php
index 02f204493..078f252c7 100644
--- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Transforms.php
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Transforms.php
@@ -77,7 +77,7 @@ public static function fromXML(DOMElement $xml): static
* @param \DOMElement|null $parent The element we should append this Transforms element to.
* @return \DOMElement
*/
- public function toXML(DOMElement $parent = null): DOMElement
+ public function toXML(?DOMElement $parent = null): DOMElement
{
$e = $this->instantiateParentElement($parent);
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/XencPublic.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/XencPublic.php
new file mode 100644
index 000000000..d8169c0e1
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/XencPublic.php
@@ -0,0 +1,29 @@
+setContent($content);
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_AgreementMethod.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_AgreementMethod.xml
new file mode 100644
index 000000000..f4847ade6
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_AgreementMethod.xml
@@ -0,0 +1,22 @@
+
+ /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
+
+ some
+
+
+ testkey
+
+ MIICxDCCAi2gAwIBAgIUZ9QDx+SBFHednUWDFGm9tyVKrgQwDQYJKoZIhvcNAQELBQAwczElMCMGA1UEAwwcc2VsZnNpZ25lZC5zaW1wbGVzYW1scGhwLm9yZzEZMBcGA1UECgwQU2ltcGxlU0FNTHBocCBIUTERMA8GA1UEBwwISG9ub2x1bHUxDzANBgNVBAgMBkhhd2FpaTELMAkGA1UEBhMCVVMwIBcNMjIxMjAzMTAzNTQwWhgPMjEyMjExMDkxMDM1NDBaMHMxJTAjBgNVBAMMHHNlbGZzaWduZWQuc2ltcGxlc2FtbHBocC5vcmcxGTAXBgNVBAoMEFNpbXBsZVNBTUxwaHAgSFExETAPBgNVBAcMCEhvbm9sdWx1MQ8wDQYDVQQIDAZIYXdhaWkxCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDessdFRVDTMQQW3Na81B1CjJV1tmY3nopoIhZrkbDxLa+pv7jGDRcYreyu1DoQxEs06V2nHLoyOPhqJXSFivqtUwVYhR6NYgbNI6RRSsIJCweH0YOdlHna7gULPcLX0Bfbi4odStaFwG9yzDySwSEPtsKxm5pENPjNVGh+jJ+H/QIDAQABo1MwUTAdBgNVHQ4EFgQUvV75t8EoQo2fVa0E9otdtIGK5X0wHwYDVR0jBBgwFoAUvV75t8EoQo2fVa0E9otdtIGK5X0wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQANQUeiwPJXkWMXuaDHToEBKcezYGqGEYnGUi9LMjeb+Kln7X8nn5iknlz4k77rWCbSwLPC/WDr0ySYQA+HagaeUaFpoiYFJKS6uFlK1HYWnM3W4PUiGHg1/xeZlMO44wTwybXVo0y9KMhchfB5XNbDdoJcqWYvi6xtmZZNRbxUyw==
+ /CN=selfsigned.simplesamlphp.org/O=SimpleSAMLphp HQ/L=Honolulu/ST=Hawaii/C=US
+
+ originator
+
+
+ testkey
+
+ MIICxDCCAi2gAwIBAgIUZ9QDx+SBFHednUWDFGm9tyVKrgQwDQYJKoZIhvcNAQELBQAwczElMCMGA1UEAwwcc2VsZnNpZ25lZC5zaW1wbGVzYW1scGhwLm9yZzEZMBcGA1UECgwQU2ltcGxlU0FNTHBocCBIUTERMA8GA1UEBwwISG9ub2x1bHUxDzANBgNVBAgMBkhhd2FpaTELMAkGA1UEBhMCVVMwIBcNMjIxMjAzMTAzNTQwWhgPMjEyMjExMDkxMDM1NDBaMHMxJTAjBgNVBAMMHHNlbGZzaWduZWQuc2ltcGxlc2FtbHBocC5vcmcxGTAXBgNVBAoMEFNpbXBsZVNBTUxwaHAgSFExETAPBgNVBAcMCEhvbm9sdWx1MQ8wDQYDVQQIDAZIYXdhaWkxCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDessdFRVDTMQQW3Na81B1CjJV1tmY3nopoIhZrkbDxLa+pv7jGDRcYreyu1DoQxEs06V2nHLoyOPhqJXSFivqtUwVYhR6NYgbNI6RRSsIJCweH0YOdlHna7gULPcLX0Bfbi4odStaFwG9yzDySwSEPtsKxm5pENPjNVGh+jJ+H/QIDAQABo1MwUTAdBgNVHQ4EFgQUvV75t8EoQo2fVa0E9otdtIGK5X0wHwYDVR0jBBgwFoAUvV75t8EoQo2fVa0E9otdtIGK5X0wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQANQUeiwPJXkWMXuaDHToEBKcezYGqGEYnGUi9LMjeb+Kln7X8nn5iknlz4k77rWCbSwLPC/WDr0ySYQA+HagaeUaFpoiYFJKS6uFlK1HYWnM3W4PUiGHg1/xeZlMO44wTwybXVo0y9KMhchfB5XNbDdoJcqWYvi6xtmZZNRbxUyw==
+ /CN=selfsigned.simplesamlphp.org/O=SimpleSAMLphp HQ/L=Honolulu/ST=Hawaii/C=US
+
+ recipient
+
+
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_DHKeyValue.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_DHKeyValue.xml
new file mode 100644
index 000000000..68e0969fb
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_DHKeyValue.xml
@@ -0,0 +1,8 @@
+
+ /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
+ /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
+ /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
+ /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
+ /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
+ /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
+
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Generator.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Generator.xml
new file mode 100644
index 000000000..a87db2210
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Generator.xml
@@ -0,0 +1 @@
+/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_KA-Nonce.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_KA-Nonce.xml
new file mode 100644
index 000000000..285522773
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_KA-Nonce.xml
@@ -0,0 +1 @@
+/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_OriginatorKeyInfo.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_OriginatorKeyInfo.xml
new file mode 100644
index 000000000..080836d04
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_OriginatorKeyInfo.xml
@@ -0,0 +1,8 @@
+
+ testkey
+
+ MIICxDCCAi2gAwIBAgIUZ9QDx+SBFHednUWDFGm9tyVKrgQwDQYJKoZIhvcNAQELBQAwczElMCMGA1UEAwwcc2VsZnNpZ25lZC5zaW1wbGVzYW1scGhwLm9yZzEZMBcGA1UECgwQU2ltcGxlU0FNTHBocCBIUTERMA8GA1UEBwwISG9ub2x1bHUxDzANBgNVBAgMBkhhd2FpaTELMAkGA1UEBhMCVVMwIBcNMjIxMjAzMTAzNTQwWhgPMjEyMjExMDkxMDM1NDBaMHMxJTAjBgNVBAMMHHNlbGZzaWduZWQuc2ltcGxlc2FtbHBocC5vcmcxGTAXBgNVBAoMEFNpbXBsZVNBTUxwaHAgSFExETAPBgNVBAcMCEhvbm9sdWx1MQ8wDQYDVQQIDAZIYXdhaWkxCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDessdFRVDTMQQW3Na81B1CjJV1tmY3nopoIhZrkbDxLa+pv7jGDRcYreyu1DoQxEs06V2nHLoyOPhqJXSFivqtUwVYhR6NYgbNI6RRSsIJCweH0YOdlHna7gULPcLX0Bfbi4odStaFwG9yzDySwSEPtsKxm5pENPjNVGh+jJ+H/QIDAQABo1MwUTAdBgNVHQ4EFgQUvV75t8EoQo2fVa0E9otdtIGK5X0wHwYDVR0jBBgwFoAUvV75t8EoQo2fVa0E9otdtIGK5X0wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQANQUeiwPJXkWMXuaDHToEBKcezYGqGEYnGUi9LMjeb+Kln7X8nn5iknlz4k77rWCbSwLPC/WDr0ySYQA+HagaeUaFpoiYFJKS6uFlK1HYWnM3W4PUiGHg1/xeZlMO44wTwybXVo0y9KMhchfB5XNbDdoJcqWYvi6xtmZZNRbxUyw==
+ /CN=selfsigned.simplesamlphp.org/O=SimpleSAMLphp HQ/L=Honolulu/ST=Hawaii/C=US
+
+ some
+
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_P.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_P.xml
new file mode 100644
index 000000000..9c7ff0e6e
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_P.xml
@@ -0,0 +1 @@
+/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Public.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Public.xml
new file mode 100644
index 000000000..55f5b592d
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Public.xml
@@ -0,0 +1 @@
+/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Q.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Q.xml
new file mode 100644
index 000000000..421da4f6d
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Q.xml
@@ -0,0 +1 @@
+/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_RecipientKeyInfo.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_RecipientKeyInfo.xml
new file mode 100644
index 000000000..bee00edee
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_RecipientKeyInfo.xml
@@ -0,0 +1,8 @@
+
+ testkey
+
+ MIICxDCCAi2gAwIBAgIUZ9QDx+SBFHednUWDFGm9tyVKrgQwDQYJKoZIhvcNAQELBQAwczElMCMGA1UEAwwcc2VsZnNpZ25lZC5zaW1wbGVzYW1scGhwLm9yZzEZMBcGA1UECgwQU2ltcGxlU0FNTHBocCBIUTERMA8GA1UEBwwISG9ub2x1bHUxDzANBgNVBAgMBkhhd2FpaTELMAkGA1UEBhMCVVMwIBcNMjIxMjAzMTAzNTQwWhgPMjEyMjExMDkxMDM1NDBaMHMxJTAjBgNVBAMMHHNlbGZzaWduZWQuc2ltcGxlc2FtbHBocC5vcmcxGTAXBgNVBAoMEFNpbXBsZVNBTUxwaHAgSFExETAPBgNVBAcMCEhvbm9sdWx1MQ8wDQYDVQQIDAZIYXdhaWkxCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDessdFRVDTMQQW3Na81B1CjJV1tmY3nopoIhZrkbDxLa+pv7jGDRcYreyu1DoQxEs06V2nHLoyOPhqJXSFivqtUwVYhR6NYgbNI6RRSsIJCweH0YOdlHna7gULPcLX0Bfbi4odStaFwG9yzDySwSEPtsKxm5pENPjNVGh+jJ+H/QIDAQABo1MwUTAdBgNVHQ4EFgQUvV75t8EoQo2fVa0E9otdtIGK5X0wHwYDVR0jBBgwFoAUvV75t8EoQo2fVa0E9otdtIGK5X0wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQANQUeiwPJXkWMXuaDHToEBKcezYGqGEYnGUi9LMjeb+Kln7X8nn5iknlz4k77rWCbSwLPC/WDr0ySYQA+HagaeUaFpoiYFJKS6uFlK1HYWnM3W4PUiGHg1/xeZlMO44wTwybXVo0y9KMhchfB5XNbDdoJcqWYvi6xtmZZNRbxUyw==
+ /CN=selfsigned.simplesamlphp.org/O=SimpleSAMLphp HQ/L=Honolulu/ST=Hawaii/C=US
+
+ some
+
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_pgenCounter.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_pgenCounter.xml
new file mode 100644
index 000000000..f56ccdd46
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_pgenCounter.xml
@@ -0,0 +1 @@
+/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_seed.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_seed.xml
new file mode 100644
index 000000000..019a5caf5
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_seed.xml
@@ -0,0 +1 @@
+/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=
diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/CopyTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/CopyTrait.php
new file mode 100644
index 000000000..a271a9d10
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/CopyTrait.php
@@ -0,0 +1,36 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits\Relay;
+
+if (version_compare(phpversion('relay'), '0.8.1', '>=')) {
+ /**
+ * @internal
+ */
+ trait CopyTrait
+ {
+ public function copy($src, $dst, $options = null): \Relay\Relay|bool
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->copy(...\func_get_args());
+ }
+ }
+} else {
+ /**
+ * @internal
+ */
+ trait CopyTrait
+ {
+ public function copy($src, $dst, $options = null): \Relay\Relay|false|int
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->copy(...\func_get_args());
+ }
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GeosearchTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GeosearchTrait.php
new file mode 100644
index 000000000..88ed1e9d3
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GeosearchTrait.php
@@ -0,0 +1,36 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits\Relay;
+
+if (version_compare(phpversion('relay'), '0.9.0', '>=')) {
+ /**
+ * @internal
+ */
+ trait GeosearchTrait
+ {
+ public function geosearch($key, $position, $shape, $unit, $options = []): \Relay\Relay|array|false
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geosearch(...\func_get_args());
+ }
+ }
+} else {
+ /**
+ * @internal
+ */
+ trait GeosearchTrait
+ {
+ public function geosearch($key, $position, $shape, $unit, $options = []): \Relay\Relay|array
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geosearch(...\func_get_args());
+ }
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GetrangeTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GetrangeTrait.php
new file mode 100644
index 000000000..4522d20b5
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GetrangeTrait.php
@@ -0,0 +1,36 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits\Relay;
+
+if (version_compare(phpversion('relay'), '0.9.0', '>=')) {
+ /**
+ * @internal
+ */
+ trait GetrangeTrait
+ {
+ public function getrange($key, $start, $end): mixed
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->getrange(...\func_get_args());
+ }
+ }
+} else {
+ /**
+ * @internal
+ */
+ trait GetrangeTrait
+ {
+ public function getrange($key, $start, $end): \Relay\Relay|false|string
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->getrange(...\func_get_args());
+ }
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/HsetTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/HsetTrait.php
new file mode 100644
index 000000000..a7cb8fff0
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/HsetTrait.php
@@ -0,0 +1,36 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits\Relay;
+
+if (version_compare(phpversion('relay'), '0.9.0', '>=')) {
+ /**
+ * @internal
+ */
+ trait HsetTrait
+ {
+ public function hset($key, ...$keys_and_vals): \Relay\Relay|false|int
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hset(...\func_get_args());
+ }
+ }
+} else {
+ /**
+ * @internal
+ */
+ trait HsetTrait
+ {
+ public function hset($key, $mem, $val, ...$kvals): \Relay\Relay|false|int
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hset(...\func_get_args());
+ }
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/MoveTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/MoveTrait.php
new file mode 100644
index 000000000..d00735ddb
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/MoveTrait.php
@@ -0,0 +1,46 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits\Relay;
+
+if (version_compare(phpversion('relay'), '0.9.0', '>=')) {
+ /**
+ * @internal
+ */
+ trait MoveTrait
+ {
+ public function blmove($srckey, $dstkey, $srcpos, $dstpos, $timeout): mixed
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->blmove(...\func_get_args());
+ }
+
+ public function lmove($srckey, $dstkey, $srcpos, $dstpos): mixed
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->lmove(...\func_get_args());
+ }
+ }
+} else {
+ /**
+ * @internal
+ */
+ trait MoveTrait
+ {
+ public function blmove($srckey, $dstkey, $srcpos, $dstpos, $timeout): \Relay\Relay|false|null|string
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->blmove(...\func_get_args());
+ }
+
+ public function lmove($srckey, $dstkey, $srcpos, $dstpos): \Relay\Relay|false|null|string
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->lmove(...\func_get_args());
+ }
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/NullableReturnTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/NullableReturnTrait.php
new file mode 100644
index 000000000..0b7409045
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/NullableReturnTrait.php
@@ -0,0 +1,96 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits\Relay;
+
+if (version_compare(phpversion('relay'), '0.9.0', '>=')) {
+ /**
+ * @internal
+ */
+ trait NullableReturnTrait
+ {
+ public function dump($key): \Relay\Relay|false|string|null
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->dump(...\func_get_args());
+ }
+
+ public function geodist($key, $src, $dst, $unit = null): \Relay\Relay|false|float|null
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geodist(...\func_get_args());
+ }
+
+ public function hrandfield($hash, $options = null): \Relay\Relay|array|false|string|null
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hrandfield(...\func_get_args());
+ }
+
+ public function xadd($key, $id, $values, $maxlen = 0, $approx = false, $nomkstream = false): \Relay\Relay|false|string|null
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->xadd(...\func_get_args());
+ }
+
+ public function zrank($key, $rank, $withscore = false): \Relay\Relay|array|false|int|null
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrank(...\func_get_args());
+ }
+
+ public function zrevrank($key, $rank, $withscore = false): \Relay\Relay|array|false|int|null
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrevrank(...\func_get_args());
+ }
+
+ public function zscore($key, $member): \Relay\Relay|false|float|null
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zscore(...\func_get_args());
+ }
+ }
+} else {
+ /**
+ * @internal
+ */
+ trait NullableReturnTrait
+ {
+ public function dump($key): \Relay\Relay|false|string
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->dump(...\func_get_args());
+ }
+
+ public function geodist($key, $src, $dst, $unit = null): \Relay\Relay|false|float
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geodist(...\func_get_args());
+ }
+
+ public function hrandfield($hash, $options = null): \Relay\Relay|array|false|string
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hrandfield(...\func_get_args());
+ }
+
+ public function xadd($key, $id, $values, $maxlen = 0, $approx = false, $nomkstream = false): \Relay\Relay|false|string
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->xadd(...\func_get_args());
+ }
+
+ public function zrank($key, $rank, $withscore = false): \Relay\Relay|array|false|int
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrank(...\func_get_args());
+ }
+
+ public function zrevrank($key, $rank, $withscore = false): \Relay\Relay|array|false|int
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrevrank(...\func_get_args());
+ }
+
+ public function zscore($key, $member): \Relay\Relay|false|float
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zscore(...\func_get_args());
+ }
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/PfcountTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/PfcountTrait.php
new file mode 100644
index 000000000..340db8af7
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/PfcountTrait.php
@@ -0,0 +1,36 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits\Relay;
+
+if (version_compare(phpversion('relay'), '0.9.0', '>=')) {
+ /**
+ * @internal
+ */
+ trait PfcountTrait
+ {
+ public function pfcount($key_or_keys): \Relay\Relay|false|int
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->pfcount(...\func_get_args());
+ }
+ }
+} else {
+ /**
+ * @internal
+ */
+ trait PfcountTrait
+ {
+ public function pfcount($key): \Relay\Relay|false|int
+ {
+ return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->pfcount(...\func_get_args());
+ }
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxy.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxy.php
index 96d7d19b4..e86c2102a 100644
--- a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxy.php
+++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxy.php
@@ -11,6 +11,13 @@
namespace Symfony\Component\Cache\Traits;
+use Symfony\Component\Cache\Traits\Relay\CopyTrait;
+use Symfony\Component\Cache\Traits\Relay\GeosearchTrait;
+use Symfony\Component\Cache\Traits\Relay\GetrangeTrait;
+use Symfony\Component\Cache\Traits\Relay\HsetTrait;
+use Symfony\Component\Cache\Traits\Relay\MoveTrait;
+use Symfony\Component\Cache\Traits\Relay\NullableReturnTrait;
+use Symfony\Component\Cache\Traits\Relay\PfcountTrait;
use Symfony\Component\VarExporter\LazyObjectInterface;
use Symfony\Component\VarExporter\LazyProxyTrait;
use Symfony\Contracts\Service\ResetInterface;
@@ -25,9 +32,16 @@ class_exists(\Symfony\Component\VarExporter\Internal\LazyObjectState::class);
*/
class RelayProxy extends \Relay\Relay implements ResetInterface, LazyObjectInterface
{
+ use CopyTrait;
+ use GeosearchTrait;
+ use GetrangeTrait;
+ use HsetTrait;
use LazyProxyTrait {
resetLazyObject as reset;
}
+ use MoveTrait;
+ use NullableReturnTrait;
+ use PfcountTrait;
use RelayProxyTrait;
private const LAZY_OBJECT_PROPERTY_SCOPES = [];
@@ -267,11 +281,6 @@ public function dbsize(): \Relay\Relay|false|int
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->dbsize(...\func_get_args());
}
- public function dump($key): \Relay\Relay|false|string
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->dump(...\func_get_args());
- }
-
public function replicaof($host = null, $port = 0): \Relay\Relay|bool
{
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->replicaof(...\func_get_args());
@@ -392,11 +401,6 @@ public function geoadd($key, $lng, $lat, $member, ...$other_triples_and_options)
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geoadd(...\func_get_args());
}
- public function geodist($key, $src, $dst, $unit = null): \Relay\Relay|false|float
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geodist(...\func_get_args());
- }
-
public function geohash($key, $member, ...$other_members): \Relay\Relay|array|false
{
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geohash(...\func_get_args());
@@ -422,11 +426,6 @@ public function georadius_ro($key, $lng, $lat, $radius, $unit, $options = []): m
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->georadius_ro(...\func_get_args());
}
- public function geosearch($key, $position, $shape, $unit, $options = []): \Relay\Relay|array
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geosearch(...\func_get_args());
- }
-
public function geosearchstore($dst, $src, $position, $shape, $unit, $options = []): \Relay\Relay|false|int
{
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geosearchstore(...\func_get_args());
@@ -442,11 +441,6 @@ public function getset($key, $value): mixed
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->getset(...\func_get_args());
}
- public function getrange($key, $start, $end): \Relay\Relay|false|string
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->getrange(...\func_get_args());
- }
-
public function setrange($key, $start, $value): \Relay\Relay|false|int
{
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->setrange(...\func_get_args());
@@ -527,11 +521,6 @@ public function pfadd($key, $elements): \Relay\Relay|false|int
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->pfadd(...\func_get_args());
}
- public function pfcount($key): \Relay\Relay|false|int
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->pfcount(...\func_get_args());
- }
-
public function pfmerge($dst, $srckeys): \Relay\Relay|bool
{
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->pfmerge(...\func_get_args());
@@ -642,16 +631,6 @@ public function type($key): \Relay\Relay|bool|int|string
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->type(...\func_get_args());
}
- public function lmove($srckey, $dstkey, $srcpos, $dstpos): \Relay\Relay|false|null|string
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->lmove(...\func_get_args());
- }
-
- public function blmove($srckey, $dstkey, $srcpos, $dstpos, $timeout): \Relay\Relay|false|null|string
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->blmove(...\func_get_args());
- }
-
public function lrange($key, $start, $stop): \Relay\Relay|array|false
{
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->lrange(...\func_get_args());
@@ -807,11 +786,6 @@ public function hmget($hash, $members): \Relay\Relay|array|false
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hmget(...\func_get_args());
}
- public function hrandfield($hash, $options = null): \Relay\Relay|array|false|string
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hrandfield(...\func_get_args());
- }
-
public function hmset($hash, $members): \Relay\Relay|bool
{
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hmset(...\func_get_args());
@@ -827,11 +801,6 @@ public function hsetnx($hash, $member, $value): \Relay\Relay|bool
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hsetnx(...\func_get_args());
}
- public function hset($key, $mem, $val, ...$kvals): \Relay\Relay|false|int
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hset(...\func_get_args());
- }
-
public function hdel($key, $mem, ...$mems): \Relay\Relay|false|int
{
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hdel(...\func_get_args());
@@ -1097,11 +1066,6 @@ public function xack($key, $group, $ids): \Relay\Relay|false|int
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->xack(...\func_get_args());
}
- public function xadd($key, $id, $values, $maxlen = 0, $approx = false, $nomkstream = false): \Relay\Relay|false|string
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->xadd(...\func_get_args());
- }
-
public function xclaim($key, $group, $consumer, $min_idle, $ids, $options): \Relay\Relay|array|bool
{
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->xclaim(...\func_get_args());
@@ -1207,16 +1171,6 @@ public function zrevrangebylex($key, $max, $min, $offset = -1, $count = -1): \Re
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrevrangebylex(...\func_get_args());
}
- public function zrank($key, $rank, $withscore = false): \Relay\Relay|array|false|int
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrank(...\func_get_args());
- }
-
- public function zrevrank($key, $rank, $withscore = false): \Relay\Relay|array|false|int
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrevrank(...\func_get_args());
- }
-
public function zrem($key, ...$args): \Relay\Relay|false|int
{
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrem(...\func_get_args());
@@ -1272,11 +1226,6 @@ public function zmscore($key, ...$mems): \Relay\Relay|array|false
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zmscore(...\func_get_args());
}
- public function zscore($key, $member): \Relay\Relay|false|float
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zscore(...\func_get_args());
- }
-
public function zinter($keys, $weights = null, $options = null): \Relay\Relay|array|false
{
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zinter(...\func_get_args());
diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxyTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxyTrait.php
index a1d252b96..c35b5fa01 100644
--- a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxyTrait.php
+++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxyTrait.php
@@ -17,11 +17,6 @@
*/
trait RelayProxyTrait
{
- public function copy($src, $dst, $options = null): \Relay\Relay|bool
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->copy(...\func_get_args());
- }
-
public function jsonArrAppend($key, $value_or_array, $path = null): \Relay\Relay|array|false
{
return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->jsonArrAppend(...\func_get_args());
@@ -148,9 +143,5 @@ public function jsonType($key, $path = null): \Relay\Relay|array|false
*/
trait RelayProxyTrait
{
- public function copy($src, $dst, $options = null): \Relay\Relay|false|int
- {
- return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->copy(...\func_get_args());
- }
}
}
diff --git a/.extlib/simplesamlphp/vendor/symfony/dependency-injection/Attribute/AutowireLocator.php b/.extlib/simplesamlphp/vendor/symfony/dependency-injection/Attribute/AutowireLocator.php
index 853a18a82..5d3cf374f 100644
--- a/.extlib/simplesamlphp/vendor/symfony/dependency-injection/Attribute/AutowireLocator.php
+++ b/.extlib/simplesamlphp/vendor/symfony/dependency-injection/Attribute/AutowireLocator.php
@@ -28,8 +28,8 @@ class AutowireLocator extends Autowire
/**
* @see ServiceSubscriberInterface::getSubscribedServices()
*
- * @param string|array $services An explicit list of services or a tag name
- * @param string|string[] $exclude A service or a list of services to exclude
+ * @param string|array $services An explicit list of services or a tag name
+ * @param string|string[] $exclude A service or a list of services to exclude
*/
public function __construct(
string|array $services,
diff --git a/.extlib/simplesamlphp/vendor/symfony/dependency-injection/ContainerBuilder.php b/.extlib/simplesamlphp/vendor/symfony/dependency-injection/ContainerBuilder.php
index 62b41a06c..5be5b76f5 100644
--- a/.extlib/simplesamlphp/vendor/symfony/dependency-injection/ContainerBuilder.php
+++ b/.extlib/simplesamlphp/vendor/symfony/dependency-injection/ContainerBuilder.php
@@ -360,7 +360,7 @@ public function getReflectionClass(?string $class, bool $throw = true): ?\Reflec
$resource = new ClassExistenceResource($class, false);
$classReflector = $resource->isFresh(0) ? false : new \ReflectionClass($class);
} else {
- $classReflector = class_exists($class) ? new \ReflectionClass($class) : false;
+ $classReflector = class_exists($class) || interface_exists($class, false) ? new \ReflectionClass($class) : false;
}
} catch (\ReflectionException $e) {
if ($throw) {
diff --git a/.extlib/simplesamlphp/vendor/symfony/error-handler/Resources/bin/extract-tentative-return-types.php b/.extlib/simplesamlphp/vendor/symfony/error-handler/Resources/bin/extract-tentative-return-types.php
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/vendor/symfony/error-handler/Resources/bin/patch-type-declarations b/.extlib/simplesamlphp/vendor/symfony/error-handler/Resources/bin/patch-type-declarations
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/vendor/symfony/http-foundation/Request.php b/.extlib/simplesamlphp/vendor/symfony/http-foundation/Request.php
index c45170e3f..922014133 100644
--- a/.extlib/simplesamlphp/vendor/symfony/http-foundation/Request.php
+++ b/.extlib/simplesamlphp/vendor/symfony/http-foundation/Request.php
@@ -351,13 +351,7 @@ public static function create(string $uri, string $method = 'GET', array $parame
$server['PATH_INFO'] = '';
$server['REQUEST_METHOD'] = strtoupper($method);
- if (false === ($components = parse_url($uri)) && '/' === ($uri[0] ?? '')) {
- trigger_deprecation('symfony/http-foundation', '6.3', 'Calling "%s()" with an invalid URI is deprecated.', __METHOD__);
- $components = parse_url($uri.'#');
- unset($components['fragment']);
- }
-
- if (false === $components) {
+ if (false === $components = parse_url(\strlen($uri) !== strcspn($uri, '?#') ? $uri : $uri.'#')) {
throw new BadRequestException('Invalid URI.');
}
diff --git a/.extlib/simplesamlphp/vendor/symfony/http-kernel/HttpCache/HttpCache.php b/.extlib/simplesamlphp/vendor/symfony/http-kernel/HttpCache/HttpCache.php
index 6ffe88905..3b484e5c3 100644
--- a/.extlib/simplesamlphp/vendor/symfony/http-kernel/HttpCache/HttpCache.php
+++ b/.extlib/simplesamlphp/vendor/symfony/http-kernel/HttpCache/HttpCache.php
@@ -17,6 +17,7 @@
namespace Symfony\Component\HttpKernel\HttpCache;
+use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\HttpKernelInterface;
@@ -725,7 +726,11 @@ private function getTraceKey(Request $request): string
$path .= '?'.$qs;
}
- return $request->getMethod().' '.$path;
+ try {
+ return $request->getMethod().' '.$path;
+ } catch (SuspiciousOperationException $e) {
+ return '_BAD_METHOD_ '.$path;
+ }
}
/**
diff --git a/.extlib/simplesamlphp/vendor/symfony/http-kernel/Kernel.php b/.extlib/simplesamlphp/vendor/symfony/http-kernel/Kernel.php
index e2e4423b2..e4d06fad6 100644
--- a/.extlib/simplesamlphp/vendor/symfony/http-kernel/Kernel.php
+++ b/.extlib/simplesamlphp/vendor/symfony/http-kernel/Kernel.php
@@ -76,11 +76,11 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
*/
private static array $freshCache = [];
- public const VERSION = '6.4.15';
- public const VERSION_ID = 60415;
+ public const VERSION = '6.4.16';
+ public const VERSION_ID = 60416;
public const MAJOR_VERSION = 6;
public const MINOR_VERSION = 4;
- public const RELEASE_VERSION = 15;
+ public const RELEASE_VERSION = 16;
public const EXTRA_VERSION = '';
public const END_OF_MAINTENANCE = '11/2026';
diff --git a/.extlib/simplesamlphp/vendor/symfony/intl/Resources/bin/compile b/.extlib/simplesamlphp/vendor/symfony/intl/Resources/bin/compile
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/vendor/symfony/intl/Resources/bin/compress b/.extlib/simplesamlphp/vendor/symfony/intl/Resources/bin/compress
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php b/.extlib/simplesamlphp/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php
index d275f6c67..1050bb0fb 100644
--- a/.extlib/simplesamlphp/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php
+++ b/.extlib/simplesamlphp/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php
@@ -28,6 +28,7 @@ final protected function addHost(RouteCollection $routes, string|array $hosts):
foreach ($routes->all() as $name => $route) {
if (null === $locale = $route->getDefault('_locale')) {
+ $priority = $routes->getPriority($name) ?? 0;
$routes->remove($name);
foreach ($hosts as $locale => $host) {
$localizedRoute = clone $route;
@@ -35,14 +36,14 @@ final protected function addHost(RouteCollection $routes, string|array $hosts):
$localizedRoute->setRequirement('_locale', preg_quote($locale));
$localizedRoute->setDefault('_canonical_route', $name);
$localizedRoute->setHost($host);
- $routes->add($name.'.'.$locale, $localizedRoute);
+ $routes->add($name.'.'.$locale, $localizedRoute, $priority);
}
} elseif (!isset($hosts[$locale])) {
throw new \InvalidArgumentException(sprintf('Route "%s" with locale "%s" is missing a corresponding host in its parent collection.', $name, $locale));
} else {
$route->setHost($hosts[$locale]);
$route->setRequirement('_locale', preg_quote($locale));
- $routes->add($name, $route);
+ $routes->add($name, $route, $routes->getPriority($name) ?? 0);
}
}
}
diff --git a/.extlib/simplesamlphp/vendor/symfony/twig-bridge/NodeVisitor/TranslationDefaultDomainNodeVisitor.php b/.extlib/simplesamlphp/vendor/symfony/twig-bridge/NodeVisitor/TranslationDefaultDomainNodeVisitor.php
index 757606971..a0afb5eef 100644
--- a/.extlib/simplesamlphp/vendor/symfony/twig-bridge/NodeVisitor/TranslationDefaultDomainNodeVisitor.php
+++ b/.extlib/simplesamlphp/vendor/symfony/twig-bridge/NodeVisitor/TranslationDefaultDomainNodeVisitor.php
@@ -15,6 +15,7 @@
use Symfony\Bridge\Twig\Node\TransNode;
use Twig\Environment;
use Twig\Node\BlockNode;
+use Twig\Node\EmptyNode;
use Twig\Node\Expression\ArrayExpression;
use Twig\Node\Expression\AssignNameExpression;
use Twig\Node\Expression\ConstantExpression;
@@ -70,6 +71,12 @@ public function enterNode(Node $node, Environment $env): Node
if ($node instanceof FilterExpression && 'trans' === ($node->hasAttribute('twig_callable') ? $node->getAttribute('twig_callable')->getName() : $node->getNode('filter')->getAttribute('value'))) {
$arguments = $node->getNode('arguments');
+
+ if ($arguments instanceof EmptyNode) {
+ $arguments = new Nodes();
+ $node->setNode('arguments', $arguments);
+ }
+
if ($this->isNamedArguments($arguments)) {
if (!$arguments->hasNode('domain') && !$arguments->hasNode(1)) {
$arguments->setNode('domain', $this->scope->get('domain'));
diff --git a/.extlib/simplesamlphp/vendor/symfony/var-dumper/Resources/bin/var-dump-server b/.extlib/simplesamlphp/vendor/symfony/var-dumper/Resources/bin/var-dump-server
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/vendor/symfony/yaml/Resources/bin/yaml-lint b/.extlib/simplesamlphp/vendor/symfony/yaml/Resources/bin/yaml-lint
old mode 100755
new mode 100644
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/CHANGELOG b/.extlib/simplesamlphp/vendor/twig/twig/CHANGELOG
index 276abe722..6f3062d3f 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/CHANGELOG
+++ b/.extlib/simplesamlphp/vendor/twig/twig/CHANGELOG
@@ -1,3 +1,50 @@
+# 3.16.0 (2024-XX-XX)
+
+ * Deprecate `InlinePrint`
+ * Fix having macro variables starting with an underscore
+ * Deprecate not passing a `Source` instance to `TokenStream`
+ * Deprecate returning `null` from `TwigFilter::getSafe()` and `TwigFunction::getSafe()`, return `[]` instead
+
+# 3.15.0 (2024-11-17)
+
+ * [BC BREAK] Add support for accessing class constants with the dot operator;
+ this can be a BC break if you don't use UPPERCASE constant names
+ * Add Spanish inflector support for the `plural` and `singular` filters in the String extension
+ * Deprecate `TempNameExpression` in favor of `LocalVariable`
+ * Deprecate `NameExpression` in favor of `ContextVariable`
+ * Deprecate `AssignNameExpression` in favor of `AssignContextVariable`
+ * Remove `MacroAutoImportNodeVisitor`
+ * Deprecate `MethodCallExpression` in favor of `MacroReferenceExpression`
+ * Fix support for the "is defined" test on `_self.xxx` (auto-imported) macros
+ * Fix support for the "is defined" test on inherited macros
+ * Add named arguments support for the dot operator arguments (`foo.bar(some: arg)`)
+ * Add named arguments support for macros
+ * Add a new `guard` tag that allows to test if some Twig callables are available at compilation time
+ * Allow arrow functions everywhere
+ * Deprecate passing a string or an array to Twig callable arguments accepting arrow functions (pass a `\Closure`)
+ * Add support for triggering deprecations for future operator precedence changes
+ * Deprecate using the `not` unary operator in an expression with ``*``, ``/``, ``//``, or ``%`` without using explicit parentheses to clarify precedence
+ * Deprecate using the `??` binary operator without explicit parentheses
+ * Deprecate using the `~` binary operator in an expression with `+` or `-` without using parentheses to clarify precedence
+ * Deprecate not passing `AbstractExpression` args to most constructor arguments for classes extending `AbstractExpression`
+ * Fix `power` expressions with a negative number in parenthesis (`(-1) ** 2`)
+ * Deprecate instantiating `Node` directly. Use `EmptyNode` or `Nodes` instead.
+ * Add support for inline comments
+ * Add `Profile::getStartTime()` and `Profile::getEndTime()`
+ * Fix "ignore missing" when used on an "embed" tag
+ * Fix the possibility to override an aliased block (via use)
+ * Add template cache hot reload
+ * Allow Twig callable argument names to be free-form (snake-case or camelCase) independently of the PHP callable signature
+ They were automatically converted to snake-cased before
+ * Deprecate the `attribute` function; use the `.` notation and wrap the name with parenthesis instead
+ * Add support for argument unpackaging
+ * Add JSON support for the file extension escaping strategy
+ * Support Markup instances (and any other \Stringable) as dynamic mapping keys
+ * Deprecate the `sandbox` tag
+ * Improve the way one can deprecate a Twig callable (use `deprecation_info` instead of the other callable options)
+ * Add the `enum` function
+ * Add support for logical `xor` operator
+
# 3.14.2 (2024-11-07)
* Fix an infinite recursion in the sandbox code
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/composer.json b/.extlib/simplesamlphp/vendor/twig/twig/composer.json
index e0c3e6c6c..079f1daf3 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/composer.json
+++ b/.extlib/simplesamlphp/vendor/twig/twig/composer.json
@@ -32,7 +32,8 @@
},
"require-dev": {
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0",
- "psr/container": "^1.0|^2.0"
+ "psr/container": "^1.0|^2.0",
+ "phpstan/phpstan": "^2.0"
},
"autoload": {
"files": [
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/phpstan-baseline.neon b/.extlib/simplesamlphp/vendor/twig/twig/phpstan-baseline.neon
new file mode 100644
index 000000000..1121ae1b2
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/phpstan-baseline.neon
@@ -0,0 +1,25 @@
+parameters:
+ ignoreErrors:
+ - # The method is dynamically generated by the CheckSecurityNode
+ message: '#^Call to an undefined method Twig\\Template\:\:checkSecurity\(\)\.$#'
+ identifier: method.notFound
+ count: 1
+ path: src/Extension/CoreExtension.php
+
+ - # Avoid BC-break
+ message: '#^Constructor of class Twig\\Node\\ForNode has an unused parameter \$ifexpr\.$#'
+ identifier: constructor.unusedParameter
+ count: 1
+ path: src/Node/ForNode.php
+
+ - # 2 parameters will be required
+ message: '#^Method Twig\\Node\\IncludeNode\:\:addGetTemplate\(\) invoked with 2 parameters, 1 required\.$#'
+ identifier: arguments.count
+ count: 1
+ path: src/Node/IncludeNode.php
+
+ - # int|string will be supported in 4.x
+ message: '#^PHPDoc tag @param for parameter $name with type int|string is not subtype of native type string\.$#'
+ identifier: parameter.phpDocType
+ count: 5
+ path: src/Node/Node.php
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/phpstan.neon.dist b/.extlib/simplesamlphp/vendor/twig/twig/phpstan.neon.dist
new file mode 100644
index 000000000..6d94e4109
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/phpstan.neon.dist
@@ -0,0 +1,9 @@
+includes:
+ - phpstan-baseline.neon
+
+parameters:
+ level: 3
+ paths:
+ - src
+ excludePaths:
+ - src/Test
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/AbstractTwigCallable.php b/.extlib/simplesamlphp/vendor/twig/twig/src/AbstractTwigCallable.php
index f67184300..d85f0f861 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/AbstractTwigCallable.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/AbstractTwigCallable.php
@@ -33,10 +33,35 @@ public function __construct(string $name, $callable = null, array $options = [])
'needs_context' => false,
'needs_charset' => false,
'is_variadic' => false,
+ 'deprecation_info' => null,
'deprecated' => false,
'deprecating_package' => '',
'alternative' => null,
], $options);
+
+ if ($this->options['deprecation_info'] && !$this->options['deprecation_info'] instanceof DeprecatedCallableInfo) {
+ throw new \LogicException(\sprintf('The "deprecation_info" option must be an instance of "%s".', DeprecatedCallableInfo::class));
+ }
+
+ if ($this->options['deprecated']) {
+ if ($this->options['deprecation_info']) {
+ throw new \LogicException('When setting the "deprecation_info" option, you need to remove the obsolete deprecated options.');
+ }
+
+ trigger_deprecation('twig/twig', '3.15', 'Using the "deprecated", "deprecating_package", and "alternative" options is deprecated, pass a "deprecation_info" one instead.');
+
+ $this->options['deprecation_info'] = new DeprecatedCallableInfo(
+ $this->options['deprecating_package'],
+ $this->options['deprecated'],
+ null,
+ $this->options['alternative'],
+ );
+ }
+
+ if ($this->options['deprecation_info']) {
+ $this->options['deprecation_info']->setName($name);
+ $this->options['deprecation_info']->setType($this->getType());
+ }
}
public function __toString(): string
@@ -79,6 +104,9 @@ public function needsContext(): bool
return $this->options['needs_context'];
}
+ /**
+ * @return static
+ */
public function withDynamicArguments(string $name, string $dynamicName, array $arguments): self
{
$new = clone $this;
@@ -111,21 +139,41 @@ public function isVariadic(): bool
public function isDeprecated(): bool
{
- return (bool) $this->options['deprecated'];
+ return (bool) $this->options['deprecation_info'];
+ }
+
+ public function triggerDeprecation(?string $file = null, ?int $line = null): void
+ {
+ $this->options['deprecation_info']->triggerDeprecation($file, $line);
}
+ /**
+ * @deprecated since Twig 3.15
+ */
public function getDeprecatingPackage(): string
{
+ trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class);
+
return $this->options['deprecating_package'];
}
+ /**
+ * @deprecated since Twig 3.15
+ */
public function getDeprecatedVersion(): string
{
+ trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class);
+
return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated'];
}
+ /**
+ * @deprecated since Twig 3.15
+ */
public function getAlternative(): ?string
{
+ trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class);
+
return $this->options['alternative'];
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/ChainCache.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/ChainCache.php
index c94afdb43..1c2098f1f 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/ChainCache.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/ChainCache.php
@@ -19,7 +19,7 @@
*
* @author Quentin Devos
*/
-final class ChainCache implements CacheInterface
+final class ChainCache implements CacheInterface, RemovableCacheInterface
{
/**
* @param iterable $caches The ordered list of caches used to store and fetch cached items
@@ -69,6 +69,15 @@ public function getTimestamp(string $key): int
return 0;
}
+ public function remove(string $name, string $cls): void
+ {
+ foreach ($this->caches as $cache) {
+ if ($cache instanceof RemovableCacheInterface) {
+ $cache->remove($name, $cls);
+ }
+ }
+ }
+
/**
* @return string[]
*/
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/FilesystemCache.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/FilesystemCache.php
index 2e79fac05..5840585e3 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/FilesystemCache.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/FilesystemCache.php
@@ -16,7 +16,7 @@
*
* @author Andrew Tch
*/
-class FilesystemCache implements CacheInterface
+class FilesystemCache implements CacheInterface, RemovableCacheInterface
{
public const FORCE_BYTECODE_INVALIDATION = 1;
@@ -76,6 +76,14 @@ public function write(string $key, string $content): void
throw new \RuntimeException(\sprintf('Failed to write cache file "%s".', $key));
}
+ public function remove(string $name, string $cls): void
+ {
+ $key = $this->generateKey($name, $cls);
+ if (!@unlink($key) && file_exists($key)) {
+ throw new \RuntimeException(\sprintf('Failed to delete cache file "%s".', $key));
+ }
+ }
+
public function getTimestamp(string $key): int
{
if (!is_file($key)) {
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/NullCache.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/NullCache.php
index 8d20d59d8..1ae216928 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/NullCache.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/NullCache.php
@@ -16,7 +16,7 @@
*
* @author Fabien Potencier
*/
-final class NullCache implements CacheInterface
+final class NullCache implements CacheInterface, RemovableCacheInterface
{
public function generateKey(string $name, string $className): string
{
@@ -35,4 +35,8 @@ public function getTimestamp(string $key): int
{
return 0;
}
+
+ public function remove(string $name, string $cls): void
+ {
+ }
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/RemovableCacheInterface.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/RemovableCacheInterface.php
new file mode 100644
index 000000000..05da56913
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/RemovableCacheInterface.php
@@ -0,0 +1,20 @@
+
+ */
+interface RemovableCacheInterface
+{
+ public function remove(string $name, string $cls): void;
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Compiler.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Compiler.php
index 1a43aa7f6..3166841e3 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Compiler.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Compiler.php
@@ -74,7 +74,7 @@ public function compile(Node $node, int $indentation = 0)
$node->compile($this);
if ($this->didUseEcho) {
- trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[YieldReady].', $this->didUseEcho, \get_class($node));
+ trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[\Twig\Attribute\YieldReady].', $this->didUseEcho, \get_class($node));
}
return $this;
@@ -99,7 +99,7 @@ public function subcompile(Node $node, bool $raw = true)
$node->compile($this);
if ($this->didUseEcho) {
- trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[YieldReady].', $this->didUseEcho, \get_class($node));
+ trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[\Twig\Attribute\YieldReady].', $this->didUseEcho, \get_class($node));
}
return $this;
@@ -243,7 +243,7 @@ public function outdent(int $step = 1)
public function getVarName(): string
{
- return \sprintf('__internal_compile_%d', $this->varNameSalt++);
+ return \sprintf('_v%d', $this->varNameSalt++);
}
private function checkForEcho(string $string): void
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/DeprecatedCallableInfo.php b/.extlib/simplesamlphp/vendor/twig/twig/src/DeprecatedCallableInfo.php
new file mode 100644
index 000000000..2db9f3d28
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/DeprecatedCallableInfo.php
@@ -0,0 +1,67 @@
+
+ */
+final class DeprecatedCallableInfo
+{
+ private string $type;
+ private string $name;
+
+ public function __construct(
+ private string $package,
+ private string $version,
+ private ?string $altName = null,
+ private ?string $altPackage = null,
+ private ?string $altVersion = null,
+ ) {
+ }
+
+ public function setType(string $type): void
+ {
+ $this->type = $type;
+ }
+
+ public function setName(string $name): void
+ {
+ $this->name = $name;
+ }
+
+ public function triggerDeprecation(?string $file = null, ?int $line = null): void
+ {
+ $message = \sprintf('Twig %s "%s" is deprecated', ucfirst($this->type), $this->name);
+
+ if ($this->altName) {
+ $message .= \sprintf('; use "%s"', $this->altName);
+ if ($this->altPackage) {
+ $message .= \sprintf(' from the "%s" package', $this->altPackage);
+ }
+ if ($this->altVersion) {
+ $message .= \sprintf(' (available since version %s)', $this->altVersion);
+ }
+ $message .= ' instead';
+ }
+
+ if ($file) {
+ $message .= \sprintf(' in %s', $file);
+ if ($line) {
+ $message .= \sprintf(' at line %d', $line);
+ }
+ }
+
+ $message .= '.';
+
+ trigger_deprecation($this->package, $this->version, $message);
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Environment.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Environment.php
index b6554e8e0..bc064e445 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Environment.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Environment.php
@@ -14,6 +14,7 @@
use Twig\Cache\CacheInterface;
use Twig\Cache\FilesystemCache;
use Twig\Cache\NullCache;
+use Twig\Cache\RemovableCacheInterface;
use Twig\Error\Error;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
@@ -43,11 +44,11 @@
*/
class Environment
{
- public const VERSION = '3.14.2';
- public const VERSION_ID = 31402;
+ public const VERSION = '3.16.0';
+ public const VERSION_ID = 31600;
public const MAJOR_VERSION = 3;
- public const MINOR_VERSION = 14;
- public const RELEASE_VERSION = 2;
+ public const MINOR_VERSION = 16;
+ public const RELEASE_VERSION = 0;
public const EXTRA_VERSION = '';
private $charset;
@@ -71,6 +72,7 @@ class Environment
/** @var bool */
private $useYield;
private $defaultRuntimeLoader;
+ private array $hotCache = [];
/**
* Constructor.
@@ -233,6 +235,18 @@ public function isStrictVariables()
return $this->strictVariables;
}
+ public function removeCache(string $name): void
+ {
+ $cls = $this->getTemplateClass($name);
+ $this->hotCache[$name] = $cls.'_'.bin2hex(random_bytes(16));
+
+ if ($this->cache instanceof RemovableCacheInterface) {
+ $this->cache->remove($name, $cls);
+ } else {
+ throw new \LogicException(\sprintf('The "%s" cache class does not support removing template cache as it does not implement the "RemovableCacheInterface" interface.', \get_class($this->cache)));
+ }
+ }
+
/**
* Gets the current cache implementation.
*
@@ -287,7 +301,7 @@ public function setCache($cache)
*/
public function getTemplateClass(string $name, ?int $index = null): string
{
- $key = $this->getLoader()->getCacheKey($name).$this->optionsHash;
+ $key = ($this->hotCache[$name] ?? $this->getLoader()->getCacheKey($name)).$this->optionsHash;
return '__TwigTemplate_'.hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $key).(null === $index ? '' : '___'.$index);
}
@@ -379,8 +393,10 @@ public function loadTemplate(string $cls, string $name, ?int $index = null): Tem
if (!class_exists($cls, false)) {
$source = $this->getLoader()->getSourceContext($name);
$content = $this->compileSource($source);
- $this->cache->write($key, $content);
- $this->cache->load($key);
+ if (!isset($this->hotCache[$name])) {
+ $this->cache->write($key, $content);
+ $this->cache->load($key);
+ }
if (!class_exists($mainCls, false)) {
/* Last line of defense if either $this->bcWriteCacheFile was used,
@@ -813,8 +829,6 @@ public function addGlobal(string $name, $value)
}
/**
- * @internal
- *
* @return array
*/
public function getGlobals(): array
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/ExpressionParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/ExpressionParser.php
index dc4a6015d..2fb528518 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/ExpressionParser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/ExpressionParser.php
@@ -14,23 +14,29 @@
use Twig\Attribute\FirstClassTwigCallableReady;
use Twig\Error\SyntaxError;
+use Twig\Node\EmptyNode;
use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\ArrayExpression;
use Twig\Node\Expression\ArrowFunctionExpression;
-use Twig\Node\Expression\AssignNameExpression;
use Twig\Node\Expression\Binary\AbstractBinary;
use Twig\Node\Expression\Binary\ConcatBinary;
use Twig\Node\Expression\ConditionalExpression;
use Twig\Node\Expression\ConstantExpression;
use Twig\Node\Expression\GetAttrExpression;
-use Twig\Node\Expression\MethodCallExpression;
+use Twig\Node\Expression\MacroReferenceExpression;
use Twig\Node\Expression\NameExpression;
use Twig\Node\Expression\TestExpression;
use Twig\Node\Expression\Unary\AbstractUnary;
use Twig\Node\Expression\Unary\NegUnary;
use Twig\Node\Expression\Unary\NotUnary;
use Twig\Node\Expression\Unary\PosUnary;
+use Twig\Node\Expression\Unary\SpreadUnary;
+use Twig\Node\Expression\Variable\AssignContextVariable;
+use Twig\Node\Expression\Variable\ContextVariable;
+use Twig\Node\Expression\Variable\LocalVariable;
+use Twig\Node\Expression\Variable\TemplateVariable;
use Twig\Node\Node;
+use Twig\Node\Nodes;
/**
* Parses expressions.
@@ -47,11 +53,13 @@ class ExpressionParser
public const OPERATOR_LEFT = 1;
public const OPERATOR_RIGHT = 2;
- /** @var array}> */
+ /** @var array}> */
private $unaryOperators;
- /** @var array, associativity: self::OPERATOR_*}> */
+ /** @var array, associativity: self::OPERATOR_*}> */
private $binaryOperators;
private $readyNodes = [];
+ private array $precedenceChanges = [];
+ private bool $deprecationCheck = true;
public function __construct(
private Parser $parser,
@@ -59,11 +67,36 @@ public function __construct(
) {
$this->unaryOperators = $env->getUnaryOperators();
$this->binaryOperators = $env->getBinaryOperators();
+
+ $ops = [];
+ foreach ($this->unaryOperators as $n => $c) {
+ $ops[] = $c + ['name' => $n, 'type' => 'unary'];
+ }
+ foreach ($this->binaryOperators as $n => $c) {
+ $ops[] = $c + ['name' => $n, 'type' => 'binary'];
+ }
+ foreach ($ops as $config) {
+ if (!isset($config['precedence_change'])) {
+ continue;
+ }
+ $name = $config['type'].'_'.$config['name'];
+ $min = min($config['precedence_change']->getNewPrecedence(), $config['precedence']);
+ $max = max($config['precedence_change']->getNewPrecedence(), $config['precedence']);
+ foreach ($ops as $c) {
+ if ($c['precedence'] > $min && $c['precedence'] < $max) {
+ $this->precedenceChanges[$c['type'].'_'.$c['name']][] = $name;
+ }
+ }
+ }
}
- public function parseExpression($precedence = 0, $allowArrow = false)
+ public function parseExpression($precedence = 0)
{
- if ($allowArrow && $arrow = $this->parseArrow()) {
+ if (func_num_args() > 1) {
+ trigger_deprecation('twig/twig', '3.15', 'Passing a second argument ($allowArrow) to "%s()" is deprecated.', __METHOD__);
+ }
+
+ if ($arrow = $this->parseArrow()) {
return $arrow;
}
@@ -80,11 +113,20 @@ public function parseExpression($precedence = 0, $allowArrow = false)
} elseif (isset($op['callable'])) {
$expr = $op['callable']($this->parser, $expr);
} else {
- $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence'], true);
+ $previous = $this->setDeprecationCheck(true);
+ try {
+ $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence']);
+ } finally {
+ $this->setDeprecationCheck($previous);
+ }
$class = $op['class'];
$expr = new $class($expr, $expr1, $token->getLine());
}
+ $expr->setAttribute('operator', 'binary_'.$token->getValue());
+
+ $this->triggerPrecedenceDeprecations($expr);
+
$token = $this->parser->getCurrentToken();
}
@@ -95,6 +137,43 @@ public function parseExpression($precedence = 0, $allowArrow = false)
return $expr;
}
+ private function triggerPrecedenceDeprecations(AbstractExpression $expr): void
+ {
+ // Check that the all nodes that are between the 2 precedences have explicit parentheses
+ if (!$expr->hasAttribute('operator') || !isset($this->precedenceChanges[$expr->getAttribute('operator')])) {
+ return;
+ }
+
+ if (str_starts_with($unaryOp = $expr->getAttribute('operator'), 'unary')) {
+ if ($expr->hasExplicitParentheses()) {
+ return;
+ }
+ $target = explode('_', $unaryOp)[1];
+ $change = $this->unaryOperators[$target]['precedence_change'];
+ /** @var AbstractExpression $node */
+ $node = $expr->getNode('node');
+ foreach ($this->precedenceChanges as $operatorName => $changes) {
+ if (!in_array($unaryOp, $changes)) {
+ continue;
+ }
+ if ($node->hasAttribute('operator') && $operatorName === $node->getAttribute('operator')) {
+ trigger_deprecation($change->getPackage(), $change->getVersion(), \sprintf('Add explicit parentheses around the "%s" unary operator to avoid behavior change in the next major version as its precedence will change in "%s" at line %d.', $target, $this->parser->getStream()->getSourceContext()->getName(), $node->getTemplateLine()));
+ }
+ }
+ } else {
+ foreach ($this->precedenceChanges[$expr->getAttribute('operator')] as $operatorName) {
+ foreach ($expr as $node) {
+ /** @var AbstractExpression $node */
+ if ($node->hasAttribute('operator') && $operatorName === $node->getAttribute('operator') && !$node->hasExplicitParentheses()) {
+ $op = explode('_', $operatorName)[1];
+ $change = $this->binaryOperators[$op]['precedence_change'];
+ trigger_deprecation($change->getPackage(), $change->getVersion(), \sprintf('Add explicit parentheses around the "%s" binary operator to avoid behavior change in the next major version as its precedence will change in "%s" at line %d.', $op, $this->parser->getStream()->getSourceContext()->getName(), $node->getTemplateLine()));
+ }
+ }
+ }
+ }
+ }
+
/**
* @return ArrowFunctionExpression|null
*/
@@ -106,10 +185,10 @@ private function parseArrow()
if ($stream->look(1)->test(Token::ARROW_TYPE)) {
$line = $stream->getCurrent()->getLine();
$token = $stream->expect(Token::NAME_TYPE);
- $names = [new AssignNameExpression($token->getValue(), $token->getLine())];
+ $names = [new AssignContextVariable($token->getValue(), $token->getLine())];
$stream->expect(Token::ARROW_TYPE);
- return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line);
+ return new ArrowFunctionExpression($this->parseExpression(), new Nodes($names), $line);
}
// first, determine if we are parsing an arrow function by finding => (long form)
@@ -141,7 +220,7 @@ private function parseArrow()
$names = [];
while (true) {
$token = $stream->expect(Token::NAME_TYPE);
- $names[] = new AssignNameExpression($token->getValue(), $token->getLine());
+ $names[] = new AssignContextVariable($token->getValue(), $token->getLine());
if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) {
break;
@@ -150,7 +229,7 @@ private function parseArrow()
$stream->expect(Token::PUNCTUATION_TYPE, ')');
$stream->expect(Token::ARROW_TYPE);
- return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line);
+ return new ArrowFunctionExpression($this->parseExpression(), new Nodes($names), $line);
}
private function getPrimary(): AbstractExpression
@@ -163,10 +242,22 @@ private function getPrimary(): AbstractExpression
$expr = $this->parseExpression($operator['precedence']);
$class = $operator['class'];
- return $this->parsePostfixExpression(new $class($expr, $token->getLine()));
+ $expr = new $class($expr, $token->getLine());
+ $expr->setAttribute('operator', 'unary_'.$token->getValue());
+
+ if ($this->deprecationCheck) {
+ $this->triggerPrecedenceDeprecations($expr);
+ }
+
+ return $this->parsePostfixExpression($expr);
} elseif ($token->test(Token::PUNCTUATION_TYPE, '(')) {
$this->parser->getStream()->next();
- $expr = $this->parseExpression();
+ $previous = $this->setDeprecationCheck(false);
+ try {
+ $expr = $this->parseExpression()->setExplicitParentheses();
+ } finally {
+ $this->setDeprecationCheck($previous);
+ }
$this->parser->getStream()->expect(Token::PUNCTUATION_TYPE, ')', 'An opened parenthesis is not properly closed');
return $this->parsePostfixExpression($expr);
@@ -237,7 +328,7 @@ public function parsePrimaryExpression()
if ('(' === $this->parser->getCurrentToken()->getValue()) {
$node = $this->getFunctionNode($token->getValue(), $token->getLine());
} else {
- $node = new NameExpression($token->getValue(), $token->getLine());
+ $node = new ContextVariable($token->getValue(), $token->getLine());
}
}
break;
@@ -252,38 +343,29 @@ public function parsePrimaryExpression()
$node = $this->parseStringExpression();
break;
+ case Token::PUNCTUATION_TYPE:
+ $node = match ($token->getValue()) {
+ '[' => $this->parseSequenceExpression(),
+ '{' => $this->parseMappingExpression(),
+ default => throw new SyntaxError(\sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()),
+ };
+ break;
+
case Token::OPERATOR_TYPE:
if (preg_match(Lexer::REGEX_NAME, $token->getValue(), $matches) && $matches[0] == $token->getValue()) {
// in this context, string operators are variable names
$this->parser->getStream()->next();
- $node = new NameExpression($token->getValue(), $token->getLine());
+ $node = new ContextVariable($token->getValue(), $token->getLine());
break;
}
- if (isset($this->unaryOperators[$token->getValue()])) {
- $class = $this->unaryOperators[$token->getValue()]['class'];
- if (!\in_array($class, [NegUnary::class, PosUnary::class])) {
- throw new SyntaxError(\sprintf('Unexpected unary operator "%s".', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext());
- }
-
- $this->parser->getStream()->next();
- $expr = $this->parsePrimaryExpression();
-
- $node = new $class($expr, $token->getLine());
- break;
+ if ('=' === $token->getValue() && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) {
+ throw new SyntaxError(\sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext());
}
// no break
default:
- if ($token->test(Token::PUNCTUATION_TYPE, '[')) {
- $node = $this->parseSequenceExpression();
- } elseif ($token->test(Token::PUNCTUATION_TYPE, '{')) {
- $node = $this->parseMappingExpression();
- } elseif ($token->test(Token::OPERATOR_TYPE, '=') && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) {
- throw new SyntaxError(\sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext());
- } else {
- throw new SyntaxError(\sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext());
- }
+ throw new SyntaxError(\sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext());
}
return $this->parsePostfixExpression($node);
@@ -318,7 +400,7 @@ public function parseStringExpression()
}
/**
- * @deprecated since 3.11, use parseSequenceExpression() instead
+ * @deprecated since Twig 3.11, use parseSequenceExpression() instead
*/
public function parseArrayExpression()
{
@@ -345,8 +427,7 @@ public function parseSequenceExpression()
}
$first = false;
- if ($stream->test(Token::SPREAD_TYPE)) {
- $stream->next();
+ if ($stream->nextIf(Token::SPREAD_TYPE)) {
$expr = $this->parseExpression();
$expr->setAttribute('spread', true);
$node->addElement($expr);
@@ -360,7 +441,7 @@ public function parseSequenceExpression()
}
/**
- * @deprecated since 3.11, use parseMappingExpression() instead
+ * @deprecated since Twig 3.11, use parseMappingExpression() instead
*/
public function parseHashExpression()
{
@@ -387,8 +468,7 @@ public function parseMappingExpression()
}
$first = false;
- if ($stream->test(Token::SPREAD_TYPE)) {
- $stream->next();
+ if ($stream->nextIf(Token::SPREAD_TYPE)) {
$value = $this->parseExpression();
$value->setAttribute('spread', true);
$node->addElement($value);
@@ -406,7 +486,7 @@ public function parseMappingExpression()
// {a} is a shortcut for {a:a}
if ($stream->test(Token::PUNCTUATION_TYPE, [',', '}'])) {
- $value = new NameExpression($key->getAttribute('value'), $key->getTemplateLine());
+ $value = new ContextVariable($key->getAttribute('value'), $key->getTemplateLine());
$node->addElement($value, $key);
continue;
}
@@ -453,22 +533,14 @@ public function parsePostfixExpression($node)
public function getFunctionNode($name, $line)
{
if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) {
- $arguments = new ArrayExpression([], $line);
- foreach ($this->parseArguments() as $n) {
- $arguments->addElement($n);
- }
-
- $node = new MethodCallExpression($alias['node'], $alias['name'], $arguments, $line);
- $node->setAttribute('safe', true);
-
- return $node;
+ return new MacroReferenceExpression($alias['node']->getNode('var'), $alias['name'], $this->createArguments($line), $line);
}
- $args = $this->parseArguments(true);
+ $args = $this->parseOnlyArguments();
$function = $this->getFunction($name, $line);
if ($function->getParserCallable()) {
- $fakeNode = new Node(lineno: $line);
+ $fakeNode = new EmptyNode($line);
$fakeNode->setSourceContext($this->parser->getStream()->getSourceContext());
return ($function->getParserCallable())($this->parser, $fakeNode, $args, $line);
@@ -487,76 +559,11 @@ public function getFunctionNode($name, $line)
public function parseSubscriptExpression($node)
{
- $stream = $this->parser->getStream();
- $token = $stream->next();
- $lineno = $token->getLine();
- $arguments = new ArrayExpression([], $lineno);
- $type = Template::ANY_CALL;
- if ('.' == $token->getValue()) {
- $token = $stream->next();
- if (
- Token::NAME_TYPE == $token->getType()
- ||
- Token::NUMBER_TYPE == $token->getType()
- ||
- (Token::OPERATOR_TYPE == $token->getType() && preg_match(Lexer::REGEX_NAME, $token->getValue()))
- ) {
- $arg = new ConstantExpression($token->getValue(), $lineno);
-
- if ($stream->test(Token::PUNCTUATION_TYPE, '(')) {
- $type = Template::METHOD_CALL;
- foreach ($this->parseArguments() as $n) {
- $arguments->addElement($n);
- }
- }
- } else {
- throw new SyntaxError(\sprintf('Expected name or number, got value "%s" of type %s.', $token->getValue(), Token::typeToEnglish($token->getType())), $lineno, $stream->getSourceContext());
- }
-
- if ($node instanceof NameExpression && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) {
- $name = $arg->getAttribute('value');
-
- $node = new MethodCallExpression($node, 'macro_'.$name, $arguments, $lineno);
- $node->setAttribute('safe', true);
-
- return $node;
- }
- } else {
- $type = Template::ARRAY_CALL;
-
- // slice?
- $slice = false;
- if ($stream->test(Token::PUNCTUATION_TYPE, ':')) {
- $slice = true;
- $arg = new ConstantExpression(0, $token->getLine());
- } else {
- $arg = $this->parseExpression();
- }
-
- if ($stream->nextIf(Token::PUNCTUATION_TYPE, ':')) {
- $slice = true;
- }
-
- if ($slice) {
- if ($stream->test(Token::PUNCTUATION_TYPE, ']')) {
- $length = new ConstantExpression(null, $token->getLine());
- } else {
- $length = $this->parseExpression();
- }
-
- $filter = $this->getFilter('slice', $token->getLine());
- $arguments = new Node([$arg, $length]);
- $filter = new ($filter->getNodeClass())($node, $filter, $arguments, $token->getLine());
-
- $stream->expect(Token::PUNCTUATION_TYPE, ']');
-
- return $filter;
- }
-
- $stream->expect(Token::PUNCTUATION_TYPE, ']');
+ if ('.' === $this->parser->getStream()->next()->getValue()) {
+ return $this->parseSubscriptExpressionDot($node);
}
- return new GetAttrExpression($node, $arg, $arguments, $type, $lineno);
+ return $this->parseSubscriptExpressionArray($node);
}
public function parseFilterExpression($node)
@@ -576,9 +583,9 @@ public function parseFilterExpressionRaw($node)
$token = $this->parser->getStream()->expect(Token::NAME_TYPE);
if (!$this->parser->getStream()->test(Token::PUNCTUATION_TYPE, '(')) {
- $arguments = new Node();
+ $arguments = new EmptyNode();
} else {
- $arguments = $this->parseArguments(true, false, true);
+ $arguments = $this->parseOnlyArguments();
}
$filter = $this->getFilter($token->getValue(), $token->getLine());
@@ -607,21 +614,29 @@ public function parseFilterExpressionRaw($node)
/**
* Parses arguments.
*
- * @param bool $namedArguments Whether to allow named arguments or not
- * @param bool $definition Whether we are parsing arguments for a function (or macro) definition
- *
* @return Node
*
* @throws SyntaxError
*/
- public function parseArguments($namedArguments = false, $definition = false, $allowArrow = false)
+ public function parseArguments()
{
+ $namedArguments = false;
+ $definition = false;
+ if (func_num_args() > 1) {
+ $definition = func_get_arg(1);
+ }
+ if (func_num_args() > 0) {
+ trigger_deprecation('twig/twig', '3.15', 'Passing arguments to "%s()" is deprecated.', __METHOD__);
+ $namedArguments = func_get_arg(0);
+ }
+
$args = [];
$stream = $this->parser->getStream();
$stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis');
+ $hasSpread = false;
while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) {
- if (!empty($args)) {
+ if ($args) {
$stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma');
// if the comma above was a trailing comma, early exit the argument parse loop
@@ -632,26 +647,33 @@ public function parseArguments($namedArguments = false, $definition = false, $al
if ($definition) {
$token = $stream->expect(Token::NAME_TYPE, null, 'An argument must be a name');
- $value = new NameExpression($token->getValue(), $this->parser->getCurrentToken()->getLine());
+ $value = new ContextVariable($token->getValue(), $this->parser->getCurrentToken()->getLine());
} else {
- $value = $this->parseExpression(0, $allowArrow);
+ if ($stream->nextIf(Token::SPREAD_TYPE)) {
+ $hasSpread = true;
+ $value = new SpreadUnary($this->parseExpression(), $stream->getCurrent()->getLine());
+ } elseif ($hasSpread) {
+ throw new SyntaxError('Normal arguments must be placed before argument unpacking.', $stream->getCurrent()->getLine(), $stream->getSourceContext());
+ } else {
+ $value = $this->parseExpression();
+ }
}
$name = null;
- if ($namedArguments && (($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) || ($token = $stream->nextIf(Token::PUNCTUATION_TYPE, ':')))) {
+ if ($namedArguments && (($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) || (!$definition && $token = $stream->nextIf(Token::PUNCTUATION_TYPE, ':')))) {
if (!$value instanceof NameExpression) {
throw new SyntaxError(\sprintf('A parameter name must be a string, "%s" given.', \get_class($value)), $token->getLine(), $stream->getSourceContext());
}
$name = $value->getAttribute('name');
if ($definition) {
- $value = $this->parsePrimaryExpression();
+ $value = $this->getPrimary();
if (!$this->checkConstantExpression($value)) {
throw new SyntaxError('A default value for an argument must be a constant (a boolean, a string, a number, a sequence, or a mapping).', $token->getLine(), $stream->getSourceContext());
}
} else {
- $value = $this->parseExpression(0, $allowArrow);
+ $value = $this->parseExpression();
}
}
@@ -672,7 +694,7 @@ public function parseArguments($namedArguments = false, $definition = false, $al
}
$stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis');
- return new Node($args);
+ return new Nodes($args);
}
public function parseAssignmentExpression()
@@ -687,18 +709,14 @@ public function parseAssignmentExpression()
} else {
$stream->expect(Token::NAME_TYPE, null, 'Only variables can be assigned to');
}
- $value = $token->getValue();
- if (\in_array(strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), ['true', 'false', 'none', 'null'])) {
- throw new SyntaxError(\sprintf('You cannot assign a value to "%s".', $value), $token->getLine(), $stream->getSourceContext());
- }
- $targets[] = new AssignNameExpression($value, $token->getLine());
+ $targets[] = new AssignContextVariable($token->getValue(), $token->getLine());
if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) {
break;
}
}
- return new Node($targets);
+ return new Nodes($targets);
}
public function parseMultitargetExpression()
@@ -711,7 +729,7 @@ public function parseMultitargetExpression()
}
}
- return new Node($targets);
+ return new Nodes($targets);
}
private function parseNotTestExpression(Node $node): NotUnary
@@ -726,14 +744,13 @@ private function parseTestExpression(Node $node): TestExpression
$arguments = null;
if ($stream->test(Token::PUNCTUATION_TYPE, '(')) {
- $arguments = $this->parseArguments(true);
+ $arguments = $this->parseOnlyArguments();
} elseif ($test->hasOneMandatoryArgument()) {
- $arguments = new Node([0 => $this->parsePrimaryExpression()]);
+ $arguments = new Nodes([0 => $this->getPrimary()]);
}
if ('defined' === $test->getName() && $node instanceof NameExpression && null !== $alias = $this->parser->getImportedSymbol('function', $node->getAttribute('name'))) {
- $node = new MethodCallExpression($alias['node'], $alias['name'], new ArrayExpression([], $node->getTemplateLine()), $node->getTemplateLine());
- $node->setAttribute('safe', true);
+ $node = new MacroReferenceExpression($alias['node']->getNode('var'), $alias['name'], new ArrayExpression([], $node->getTemplateLine()), $node->getTemplateLine());
}
$ready = $test instanceof TwigTest;
@@ -765,6 +782,9 @@ private function getTest(int $line): TwigTest
}
if (!$test) {
+ if ($this->parser->shouldIgnoreUnknownTwigCallables()) {
+ return new TwigTest($name, fn () => '');
+ }
$e = new SyntaxError(\sprintf('Unknown "%s" test.', $name), $line, $stream->getSourceContext());
$e->addSuggestions($name, array_keys($this->env->getTests()));
@@ -773,15 +793,8 @@ private function getTest(int $line): TwigTest
if ($test->isDeprecated()) {
$stream = $this->parser->getStream();
- $message = \sprintf('Twig Test "%s" is deprecated', $test->getName());
-
- if ($test->getAlternative()) {
- $message .= \sprintf('. Use "%s" instead', $test->getAlternative());
- }
$src = $stream->getSourceContext();
- $message .= \sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $stream->getCurrent()->getLine());
-
- trigger_deprecation($test->getDeprecatingPackage(), $test->getDeprecatedVersion(), $message);
+ $test->triggerDeprecation($src->getPath() ?: $src->getName(), $stream->getCurrent()->getLine());
}
return $test;
@@ -790,6 +803,9 @@ private function getTest(int $line): TwigTest
private function getFunction(string $name, int $line): TwigFunction
{
if (!$function = $this->env->getFunction($name)) {
+ if ($this->parser->shouldIgnoreUnknownTwigCallables()) {
+ return new TwigFunction($name, fn () => '');
+ }
$e = new SyntaxError(\sprintf('Unknown "%s" function.', $name), $line, $this->parser->getStream()->getSourceContext());
$e->addSuggestions($name, array_keys($this->env->getFunctions()));
@@ -797,14 +813,8 @@ private function getFunction(string $name, int $line): TwigFunction
}
if ($function->isDeprecated()) {
- $message = \sprintf('Twig Function "%s" is deprecated', $function->getName());
- if ($function->getAlternative()) {
- $message .= \sprintf('. Use "%s" instead', $function->getAlternative());
- }
$src = $this->parser->getStream()->getSourceContext();
- $message .= \sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line);
-
- trigger_deprecation($function->getDeprecatingPackage(), $function->getDeprecatedVersion(), $message);
+ $function->triggerDeprecation($src->getPath() ?: $src->getName(), $line);
}
return $function;
@@ -813,6 +823,9 @@ private function getFunction(string $name, int $line): TwigFunction
private function getFilter(string $name, int $line): TwigFilter
{
if (!$filter = $this->env->getFilter($name)) {
+ if ($this->parser->shouldIgnoreUnknownTwigCallables()) {
+ return new TwigFilter($name, fn () => '');
+ }
$e = new SyntaxError(\sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getStream()->getSourceContext());
$e->addSuggestions($name, array_keys($this->env->getFilters()));
@@ -820,20 +833,15 @@ private function getFilter(string $name, int $line): TwigFilter
}
if ($filter->isDeprecated()) {
- $message = \sprintf('Twig Filter "%s" is deprecated', $filter->getName());
- if ($filter->getAlternative()) {
- $message .= \sprintf('. Use "%s" instead', $filter->getAlternative());
- }
$src = $this->parser->getStream()->getSourceContext();
- $message .= \sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line);
-
- trigger_deprecation($filter->getDeprecatingPackage(), $filter->getDeprecatedVersion(), $message);
+ $filter->triggerDeprecation($src->getPath() ?: $src->getName(), $line);
}
return $filter;
}
// checks that the node only contains "constant" elements
+ // to be removed in 4.0
private function checkConstantExpression(Node $node): bool
{
if (!($node instanceof ConstantExpression || $node instanceof ArrayExpression
@@ -850,4 +858,154 @@ private function checkConstantExpression(Node $node): bool
return true;
}
+
+ private function setDeprecationCheck(bool $deprecationCheck): bool
+ {
+ $current = $this->deprecationCheck;
+ $this->deprecationCheck = $deprecationCheck;
+
+ return $current;
+ }
+
+ private function createArguments(int $line): ArrayExpression
+ {
+ $arguments = new ArrayExpression([], $line);
+ foreach ($this->parseOnlyArguments() as $k => $n) {
+ $arguments->addElement($n, new LocalVariable($k, $line));
+ }
+
+ return $arguments;
+ }
+
+ public function parseOnlyArguments()
+ {
+ $args = [];
+ $stream = $this->parser->getStream();
+ $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis');
+ $hasSpread = false;
+ while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) {
+ if ($args) {
+ $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma');
+
+ // if the comma above was a trailing comma, early exit the argument parse loop
+ if ($stream->test(Token::PUNCTUATION_TYPE, ')')) {
+ break;
+ }
+ }
+
+ if ($stream->nextIf(Token::SPREAD_TYPE)) {
+ $hasSpread = true;
+ $value = new SpreadUnary($this->parseExpression(), $stream->getCurrent()->getLine());
+ } elseif ($hasSpread) {
+ throw new SyntaxError('Normal arguments must be placed before argument unpacking.', $stream->getCurrent()->getLine(), $stream->getSourceContext());
+ } else {
+ $value = $this->parseExpression();
+ }
+
+ $name = null;
+ if (($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) || ($token = $stream->nextIf(Token::PUNCTUATION_TYPE, ':'))) {
+ if (!$value instanceof NameExpression) {
+ throw new SyntaxError(\sprintf('A parameter name must be a string, "%s" given.', \get_class($value)), $token->getLine(), $stream->getSourceContext());
+ }
+ $name = $value->getAttribute('name');
+ $value = $this->parseExpression();
+ }
+
+ if (null === $name) {
+ $args[] = $value;
+ } else {
+ $args[$name] = $value;
+ }
+ }
+ $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis');
+
+ return new Nodes($args);
+ }
+
+ private function parseSubscriptExpressionDot(Node $node): AbstractExpression
+ {
+ $stream = $this->parser->getStream();
+ $token = $stream->getCurrent();
+ $lineno = $token->getLine();
+ $arguments = new ArrayExpression([], $lineno);
+ $type = Template::ANY_CALL;
+
+ if ($stream->nextIf(Token::PUNCTUATION_TYPE, '(')) {
+ $attribute = $this->parseExpression();
+ $stream->expect(Token::PUNCTUATION_TYPE, ')');
+ } else {
+ $token = $stream->next();
+ if (
+ Token::NAME_TYPE == $token->getType()
+ ||
+ Token::NUMBER_TYPE == $token->getType()
+ ||
+ (Token::OPERATOR_TYPE == $token->getType() && preg_match(Lexer::REGEX_NAME, $token->getValue()))
+ ) {
+ $attribute = new ConstantExpression($token->getValue(), $token->getLine());
+ } else {
+ throw new SyntaxError(\sprintf('Expected name or number, got value "%s" of type %s.', $token->getValue(), Token::typeToEnglish($token->getType())), $token->getLine(), $stream->getSourceContext());
+ }
+ }
+
+ if ($stream->test(Token::PUNCTUATION_TYPE, '(')) {
+ $type = Template::METHOD_CALL;
+ $arguments = $this->createArguments($token->getLine());
+ }
+
+ if (
+ $node instanceof NameExpression
+ &&
+ (
+ null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))
+ ||
+ '_self' === $node->getAttribute('name') && $attribute instanceof ConstantExpression
+ )
+ ) {
+ return new MacroReferenceExpression(new TemplateVariable($node->getAttribute('name'), $node->getTemplateLine()), 'macro_'.$attribute->getAttribute('value'), $arguments, $node->getTemplateLine());
+ }
+
+ return new GetAttrExpression($node, $attribute, $arguments, $type, $lineno);
+ }
+
+ private function parseSubscriptExpressionArray(Node $node): AbstractExpression
+ {
+ $stream = $this->parser->getStream();
+ $token = $stream->getCurrent();
+ $lineno = $token->getLine();
+ $arguments = new ArrayExpression([], $lineno);
+
+ // slice?
+ $slice = false;
+ if ($stream->test(Token::PUNCTUATION_TYPE, ':')) {
+ $slice = true;
+ $attribute = new ConstantExpression(0, $token->getLine());
+ } else {
+ $attribute = $this->parseExpression();
+ }
+
+ if ($stream->nextIf(Token::PUNCTUATION_TYPE, ':')) {
+ $slice = true;
+ }
+
+ if ($slice) {
+ if ($stream->test(Token::PUNCTUATION_TYPE, ']')) {
+ $length = new ConstantExpression(null, $token->getLine());
+ } else {
+ $length = $this->parseExpression();
+ }
+
+ $filter = $this->getFilter('slice', $token->getLine());
+ $arguments = new Nodes([$attribute, $length]);
+ $filter = new ($filter->getNodeClass())($node, $filter, $arguments, $token->getLine());
+
+ $stream->expect(Token::PUNCTUATION_TYPE, ']');
+
+ return $filter;
+ }
+
+ $stream->expect(Token::PUNCTUATION_TYPE, ']');
+
+ return new GetAttrExpression($node, $attribute, $arguments, Template::ARRAY_CALL, $lineno);
+ }
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/CoreExtension.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/CoreExtension.php
index e1fd3962e..429763ad1 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/CoreExtension.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/CoreExtension.php
@@ -11,6 +11,7 @@
namespace Twig\Extension;
+use Twig\DeprecatedCallableInfo;
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
@@ -46,9 +47,11 @@
use Twig\Node\Expression\Binary\SpaceshipBinary;
use Twig\Node\Expression\Binary\StartsWithBinary;
use Twig\Node\Expression\Binary\SubBinary;
+use Twig\Node\Expression\Binary\XorBinary;
use Twig\Node\Expression\BlockReferenceExpression;
use Twig\Node\Expression\Filter\DefaultFilter;
use Twig\Node\Expression\FunctionNode\EnumCasesFunction;
+use Twig\Node\Expression\FunctionNode\EnumFunction;
use Twig\Node\Expression\GetAttrExpression;
use Twig\Node\Expression\NullCoalesceExpression;
use Twig\Node\Expression\ParentExpression;
@@ -63,7 +66,7 @@
use Twig\Node\Expression\Unary\NotUnary;
use Twig\Node\Expression\Unary\PosUnary;
use Twig\Node\Node;
-use Twig\NodeVisitor\MacroAutoImportNodeVisitor;
+use Twig\OperatorPrecedenceChange;
use Twig\Parser;
use Twig\Sandbox\SecurityNotAllowedMethodError;
use Twig\Sandbox\SecurityNotAllowedPropertyError;
@@ -79,6 +82,7 @@
use Twig\TokenParser\FlushTokenParser;
use Twig\TokenParser\ForTokenParser;
use Twig\TokenParser\FromTokenParser;
+use Twig\TokenParser\GuardTokenParser;
use Twig\TokenParser\IfTokenParser;
use Twig\TokenParser\ImportTokenParser;
use Twig\TokenParser\IncludeTokenParser;
@@ -108,6 +112,8 @@ final class CoreExtension extends AbstractExtension
'WeakMap',
];
+ private const DEFAULT_TRIM_CHARS = " \t\n\r\0\x0B";
+
private $dateFormats = ['F j, Y H:i', '%d days'];
private $numberFormat = [0, '.', ','];
private $timezone = null;
@@ -205,6 +211,7 @@ public function getTokenParsers(): array
new EmbedTokenParser(),
new WithTokenParser(),
new DeprecatedTokenParser(),
+ new GuardTokenParser(),
];
}
@@ -233,7 +240,7 @@ public function getFilters(): array
new TwigFilter('striptags', [self::class, 'striptags']),
new TwigFilter('trim', [self::class, 'trim']),
new TwigFilter('nl2br', [self::class, 'nl2br'], ['pre_escape' => 'html', 'is_safe' => ['html']]),
- new TwigFilter('spaceless', [self::class, 'spaceless'], ['is_safe' => ['html'], 'deprecated' => '3.12', 'deprecating_package' => 'twig/twig']),
+ new TwigFilter('spaceless', [self::class, 'spaceless'], ['is_safe' => ['html'], 'deprecation_info' => new DeprecatedCallableInfo('twig/twig', '3.12')]),
// array helpers
new TwigFilter('join', [self::class, 'join']),
@@ -277,6 +284,7 @@ public function getFunctions(): array
new TwigFunction('include', [self::class, 'include'], ['needs_environment' => true, 'needs_context' => true, 'is_safe' => ['all']]),
new TwigFunction('source', [self::class, 'source'], ['needs_environment' => true, 'is_safe' => ['all']]),
new TwigFunction('enum_cases', [self::class, 'enumCases'], ['node_class' => EnumCasesFunction::class]),
+ new TwigFunction('enum', [self::class, 'enum'], ['node_class' => EnumFunction::class]),
];
}
@@ -300,19 +308,20 @@ public function getTests(): array
public function getNodeVisitors(): array
{
- return [new MacroAutoImportNodeVisitor()];
+ return [];
}
public function getOperators(): array
{
return [
[
- 'not' => ['precedence' => 50, 'class' => NotUnary::class],
+ 'not' => ['precedence' => 50, 'precedence_change' => new OperatorPrecedenceChange('twig/twig', '3.15', 70), 'class' => NotUnary::class],
'-' => ['precedence' => 500, 'class' => NegUnary::class],
'+' => ['precedence' => 500, 'class' => PosUnary::class],
],
[
'or' => ['precedence' => 10, 'class' => OrBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
+ 'xor' => ['precedence' => 12, 'class' => XorBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'and' => ['precedence' => 15, 'class' => AndBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'b-or' => ['precedence' => 16, 'class' => BitwiseOrBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'b-xor' => ['precedence' => 17, 'class' => BitwiseXorBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
@@ -334,7 +343,7 @@ public function getOperators(): array
'..' => ['precedence' => 25, 'class' => RangeBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'+' => ['precedence' => 30, 'class' => AddBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'-' => ['precedence' => 30, 'class' => SubBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
- '~' => ['precedence' => 40, 'class' => ConcatBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
+ '~' => ['precedence' => 40, 'precedence_change' => new OperatorPrecedenceChange('twig/twig', '3.15', 27), 'class' => ConcatBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'*' => ['precedence' => 60, 'class' => MulBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'/' => ['precedence' => 60, 'class' => DivBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'//' => ['precedence' => 60, 'class' => FloorDivBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT],
@@ -342,7 +351,7 @@ public function getOperators(): array
'is' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'is not' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT],
'**' => ['precedence' => 200, 'class' => PowerBinary::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT],
- '??' => ['precedence' => 300, 'class' => NullCoalesceExpression::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT],
+ '??' => ['precedence' => 300, 'precedence_change' => new OperatorPrecedenceChange('twig/twig', '3.15', 5), 'class' => NullCoalesceExpression::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT],
],
];
}
@@ -351,7 +360,7 @@ public function getOperators(): array
* Cycles over a sequence.
*
* @param array|\ArrayAccess $values A non-empty sequence of values
- * @param positive-int $position The position of the value to return in the cycle
+ * @param int<0, max> $position The position of the value to return in the cycle
*
* @return mixed The value at the given position in the sequence, wrapping around as needed
*
@@ -377,7 +386,7 @@ public static function cycle($values, $position): mixed
}
if (!$count = \count($values)) {
- throw new RuntimeError('The "cycle" function does not work on empty sequences.');
+ throw new RuntimeError('The "cycle" function expects a non-empty sequence.');
}
return $values[$position % $count];
@@ -447,7 +456,7 @@ public static function random(string $charset, $values = null, $max = null)
$values = self::toArray($values);
if (0 === \count($values)) {
- throw new RuntimeError('The random function cannot pick from an empty sequence/mapping.');
+ throw new RuntimeError('The "random" function cannot pick from an empty sequence or mapping.');
}
return $values[array_rand($values, 1)];
@@ -458,9 +467,9 @@ public static function random(string $charset, $values = null, $max = null)
*
* {{ post.published_at|date("m/d/Y") }}
*
- * @param \DateTimeInterface|\DateInterval|string $date A date
- * @param string|null $format The target format, null to use the default
- * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged
+ * @param \DateTimeInterface|\DateInterval|string|int|null $date A date, a timestamp or null to use the current time
+ * @param string|null $format The target format, null to use the default
+ * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged
*/
public function formatDate($date, $format = null, $timezone = null): string
{
@@ -481,8 +490,8 @@ public function formatDate($date, $format = null, $timezone = null): string
*
* {{ post.published_at|date_modify("-1day")|date("m/d/Y") }}
*
- * @param \DateTimeInterface|string $date A date
- * @param string $modifier A modifier string
+ * @param \DateTimeInterface|string|int|null $date A date, a timestamp or null to use the current time
+ * @param string $modifier A modifier string
*
* @return \DateTime|\DateTimeImmutable
*
@@ -521,8 +530,8 @@ public static function dateConverter(Environment $env, $date, $format = null, $t
* {# do something #}
* {% endif %}
*
- * @param \DateTimeInterface|string|null $date A date or null to use the current time
- * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged
+ * @param \DateTimeInterface|string|int|null $date A date, a timestamp or null to use the current time
+ * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged
*
* @return \DateTime|\DateTimeImmutable
*/
@@ -560,7 +569,7 @@ public function convertDate($date = null, $timezone = null)
}
$asString = (string) $date;
- if (ctype_digit($asString) || (!empty($asString) && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) {
+ if (ctype_digit($asString) || ('' !== $asString && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) {
$date = new \DateTime('@'.$date);
} else {
$date = new \DateTime($date, $this->getTimezone());
@@ -584,7 +593,7 @@ public function convertDate($date = null, $timezone = null)
public static function replace($str, $from): string
{
if (!is_iterable($from)) {
- throw new RuntimeError(\sprintf('The "replace" filter expects a sequence/mapping or "Traversable" as replace values, got "%s".', \is_object($from) ? \get_class($from) : \gettype($from)));
+ throw new RuntimeError(\sprintf('The "replace" filter expects a sequence or a mapping, got "%s".', get_debug_type($from)));
}
return strtr($str ?? '', self::toArray($from));
@@ -593,11 +602,11 @@ public static function replace($str, $from): string
/**
* Rounds a number.
*
- * @param int|float|string|null $value The value to round
- * @param int|float $precision The rounding precision
- * @param string $method The method to use for rounding
+ * @param int|float|string|null $value The value to round
+ * @param int|float $precision The rounding precision
+ * @param 'common'|'ceil'|'floor' $method The method to use for rounding
*
- * @return int|float The rounded number
+ * @return float The rounded number
*
* @internal
*/
@@ -610,7 +619,7 @@ public static function round($value, $precision = 0, $method = 'common')
}
if ('ceil' !== $method && 'floor' !== $method) {
- throw new RuntimeError('The round filter only supports the "common", "ceil", and "floor" methods.');
+ throw new RuntimeError('The "round" filter only supports the "common", "ceil", and "floor" methods.');
}
return $method($value * 10 ** $precision) / 10 ** $precision;
@@ -681,7 +690,7 @@ public static function merge(...$arrays): array
foreach ($arrays as $argNumber => $array) {
if (!is_iterable($array)) {
- throw new RuntimeError(\sprintf('The merge filter only works with sequences/mappings or "Traversable", got "%s" for argument %d.', \gettype($array), $argNumber + 1));
+ throw new RuntimeError(\sprintf('The "merge" filter expects a sequence or a mapping, got "%s" for argument %d.', get_debug_type($array), $argNumber + 1));
}
$result = array_merge($result, self::toArray($array));
@@ -773,9 +782,9 @@ public static function last(string $charset, $item)
* {{ [1, 2, 3]|join }}
* {# returns 123 #}
*
- * @param array $value An array
- * @param string $glue The separator
- * @param string|null $and The separator for the last pair
+ * @param iterable|array|string|float|int|bool|null $value An array
+ * @param string $glue The separator
+ * @param string|null $and The separator for the last pair
*
* @internal
*/
@@ -980,6 +989,7 @@ public static function shuffle(string $charset, $item)
* Sorts an array.
*
* @param array|\Traversable $array
+ * @param ?\Closure $arrow
*
* @internal
*/
@@ -988,11 +998,11 @@ public static function sort(Environment $env, $array, $arrow = null): array
if ($array instanceof \Traversable) {
$array = iterator_to_array($array);
} elseif (!\is_array($array)) {
- throw new RuntimeError(\sprintf('The sort filter only works with sequences/mappings or "Traversable", got "%s".', \gettype($array)));
+ throw new RuntimeError(\sprintf('The "sort" filter expects a sequence or a mapping, got "%s".', get_debug_type($array)));
}
if (null !== $arrow) {
- self::checkArrowInSandbox($env, $arrow, 'sort', 'filter');
+ self::checkArrow($env, $arrow, 'sort', 'filter');
uasort($array, $arrow);
} else {
@@ -1131,30 +1141,29 @@ public static function matches(string $regexp, ?string $str): int
/**
* Returns a trimmed string.
*
- * @param string|null $string
- * @param string|null $characterMask
- * @param string $side
+ * @param string|\Stringable|null $string
+ * @param string|null $characterMask
+ * @param string $side left, right, or both
*
- * @throws RuntimeError When an invalid trimming side is used (not a string or not 'left', 'right', or 'both')
+ * @throws RuntimeError When an invalid trimming side is used
*
* @internal
*/
- public static function trim($string, $characterMask = null, $side = 'both'): string
+ public static function trim($string, $characterMask = null, $side = 'both'): string|\Stringable
{
if (null === $characterMask) {
- $characterMask = " \t\n\r\0\x0B";
+ $characterMask = self::DEFAULT_TRIM_CHARS;
}
- switch ($side) {
- case 'both':
- return trim($string ?? '', $characterMask);
- case 'left':
- return ltrim($string ?? '', $characterMask);
- case 'right':
- return rtrim($string ?? '', $characterMask);
- default:
- throw new RuntimeError('Trimming side must be "left", "right" or "both".');
- }
+ $trimmed = match ($side) {
+ 'both' => trim($string ?? '', $characterMask),
+ 'left' => ltrim($string ?? '', $characterMask),
+ 'right' => rtrim($string ?? '', $characterMask),
+ default => throw new RuntimeError('Trimming side must be "left", "right" or "both".'),
+ };
+
+ // trimming a safe string with the default character mask always returns a safe string (independently of the context)
+ return $string instanceof Markup && self::DEFAULT_TRIM_CHARS === $characterMask ? new Markup($trimmed, $string->getCharset()) : $trimmed;
}
/**
@@ -1292,6 +1301,8 @@ public static function capitalize(string $charset, $string): string
/**
* @internal
+ *
+ * to be removed in 4.0
*/
public static function callMacro(Template $template, string $method, array $args, int $lineno, array $context, Source $source)
{
@@ -1515,6 +1526,30 @@ public static function enumCases(string $enum): array
return $enum::cases();
}
+ /**
+ * Provides the ability to access enums by their class names.
+ *
+ * @template T of \UnitEnum
+ *
+ * @param class-string $enum
+ *
+ * @return T
+ *
+ * @internal
+ */
+ public static function enum(string $enum): \UnitEnum
+ {
+ if (!enum_exists($enum)) {
+ throw new RuntimeError(sprintf('"%s" is not an enum.', $enum));
+ }
+
+ if (!$cases = $enum::cases()) {
+ throw new RuntimeError(sprintf('"%s" is an empty enum.', $enum));
+ }
+
+ return $cases[0];
+ }
+
/**
* Provides the ability to get constants from instances as well as class/global constants.
*
@@ -1544,7 +1579,7 @@ public static function constant($constant, $object = null, bool $checkDefined =
}
if ('::class' === strtolower(substr($constant, -7))) {
- throw new RuntimeError(\sprintf('You cannot use the Twig function "constant()" to access "%s". You could provide an object and call constant("class", $object) or use the class name directly as a string.', $constant));
+ throw new RuntimeError(\sprintf('You cannot use the Twig function "constant" to access "%s". You could provide an object and call constant("class", $object) or use the class name directly as a string.', $constant));
}
throw new RuntimeError(\sprintf('Constant "%s" is undefined.', $constant));
@@ -1565,7 +1600,7 @@ public static function constant($constant, $object = null, bool $checkDefined =
public static function batch($items, $size, $fill = null, $preserveKeys = true): array
{
if (!is_iterable($items)) {
- throw new RuntimeError(\sprintf('The "batch" filter expects a sequence/mapping or "Traversable", got "%s".', \is_object($items) ? \get_class($items) : \gettype($items)));
+ throw new RuntimeError(\sprintf('The "batch" filter expects a sequence or a mapping, got "%s".', get_debug_type($items)));
}
$size = (int) ceil($size);
@@ -1607,7 +1642,7 @@ public static function getAttribute(Environment $env, Source $source, $object, $
// array
if (Template::METHOD_CALL !== $type) {
- $arrayItem = \is_bool($item) || \is_float($item) ? (int) $item : $item;
+ $arrayItem = \is_bool($item) || \is_float($item) ? (int) $item : $item = (string) $item;
if ($sandboxed && $object instanceof \ArrayAccess && !\in_array($object::class, self::ARRAY_LIKE_CLASSES, true)) {
try {
@@ -1617,9 +1652,11 @@ public static function getAttribute(Environment $env, Source $source, $object, $
}
}
- if (((\is_array($object) || $object instanceof \ArrayObject) && (isset($object[$arrayItem]) || \array_key_exists($arrayItem, (array) $object)))
- || ($object instanceof \ArrayAccess && isset($object[$arrayItem]))
- ) {
+ if (match (true) {
+ \is_array($object) => \array_key_exists($arrayItem, $object),
+ $object instanceof \ArrayAccess => $object->offsetExists($arrayItem),
+ default => false,
+ }) {
if ($isDefinedTest) {
return true;
}
@@ -1641,7 +1678,7 @@ public static function getAttribute(Environment $env, Source $source, $object, $
} elseif (\is_object($object)) {
$message = \sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface.', $item, \get_class($object));
} elseif (\is_array($object)) {
- if (empty($object)) {
+ if (!$object) {
$message = \sprintf('Key "%s" does not exist as the sequence/mapping is empty.', $arrayItem);
} else {
$message = \sprintf('Key "%s" for sequence/mapping with keys "%s" does not exist.', $arrayItem, implode(', ', array_keys($object)));
@@ -1650,18 +1687,20 @@ public static function getAttribute(Environment $env, Source $source, $object, $
if (null === $object) {
$message = \sprintf('Impossible to access a key ("%s") on a null variable.', $item);
} else {
- $message = \sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, \gettype($object), $object);
+ $message = \sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, get_debug_type($object), $object);
}
} elseif (null === $object) {
$message = \sprintf('Impossible to access an attribute ("%s") on a null variable.', $item);
} else {
- $message = \sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, \gettype($object), $object);
+ $message = \sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, get_debug_type($object), $object);
}
throw new RuntimeError($message, $lineno, $source);
}
}
+ $item = (string) $item;
+
if (!\is_object($object)) {
if ($isDefinedTest) {
return false;
@@ -1676,7 +1715,7 @@ public static function getAttribute(Environment $env, Source $source, $object, $
} elseif (\is_array($object)) {
$message = \sprintf('Impossible to invoke a method ("%s") on a sequence/mapping.', $item);
} else {
- $message = \sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, \gettype($object), $object);
+ $message = \sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, get_debug_type($object), $object);
}
throw new RuntimeError($message, $lineno, $source);
@@ -1696,13 +1735,33 @@ public static function getAttribute(Environment $env, Source $source, $object, $
}
}
- if (isset($object->$item) || \array_key_exists((string) $item, (array) $object)) {
+ static $propertyCheckers = [];
+
+ if (isset($object->$item)
+ || ($propertyCheckers[$object::class][$item] ??= self::getPropertyChecker($object::class, $item))($object, $item)
+ ) {
if ($isDefinedTest) {
return true;
}
return $object->$item;
}
+
+ if ($object instanceof \DateTimeInterface && \in_array($item, ['date', 'timezone', 'timezone_type'], true)) {
+ if ($isDefinedTest) {
+ return true;
+ }
+
+ return ((array) $object)[$item];
+ }
+
+ if (\defined($object::class.'::'.$item)) {
+ if ($isDefinedTest) {
+ return true;
+ }
+
+ return \constant($object::class.'::'.$item);
+ }
}
methodCheck:
@@ -1716,7 +1775,7 @@ public static function getAttribute(Environment $env, Source $source, $object, $
if (!isset($cache[$class])) {
$methods = get_class_methods($object);
sort($methods);
- $lcMethods = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, $methods);
+ $lcMethods = array_map('strtolower', $methods);
$classCache = [];
foreach ($methods as $i => $method) {
$classCache[$method] = $method;
@@ -1755,7 +1814,7 @@ public static function getAttribute(Environment $env, Source $source, $object, $
$call = false;
if (isset($cache[$class][$item])) {
$method = $cache[$class][$item];
- } elseif (isset($cache[$class][$lcItem = strtr($item, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')])) {
+ } elseif (isset($cache[$class][$lcItem = strtolower($item)])) {
$method = $cache[$class][$lcItem];
} elseif (isset($cache[$class]['__call'])) {
$method = $item;
@@ -1831,25 +1890,29 @@ public static function getAttribute(Environment $env, Source $source, $object, $
*/
public static function column($array, $name, $index = null): array
{
+ if (!is_iterable($array)) {
+ throw new RuntimeError(\sprintf('The "column" filter expects a sequence or a mapping, got "%s".', get_debug_type($array)));
+ }
+
if ($array instanceof \Traversable) {
$array = iterator_to_array($array);
- } elseif (!\is_array($array)) {
- throw new RuntimeError(\sprintf('The column filter only works with sequences/mappings or "Traversable", got "%s" as first argument.', \gettype($array)));
}
return array_column($array, $name, $index);
}
/**
+ * @param \Closure $arrow
+ *
* @internal
*/
public static function filter(Environment $env, $array, $arrow)
{
if (!is_iterable($array)) {
- throw new RuntimeError(\sprintf('The "filter" filter expects a sequence/mapping or "Traversable", got "%s".', \is_object($array) ? \get_class($array) : \gettype($array)));
+ throw new RuntimeError(\sprintf('The "filter" filter expects a sequence/mapping or "Traversable", got "%s".', get_debug_type($array)));
}
- self::checkArrowInSandbox($env, $arrow, 'filter', 'filter');
+ self::checkArrow($env, $arrow, 'filter', 'filter');
if (\is_array($array)) {
return array_filter($array, $arrow, \ARRAY_FILTER_USE_BOTH);
@@ -1860,11 +1923,17 @@ public static function filter(Environment $env, $array, $arrow)
}
/**
+ * @param \Closure $arrow
+ *
* @internal
*/
public static function find(Environment $env, $array, $arrow)
{
- self::checkArrowInSandbox($env, $arrow, 'find', 'filter');
+ if (!is_iterable($array)) {
+ throw new RuntimeError(\sprintf('The "find" filter expects a sequence or a mapping, got "%s".', get_debug_type($array)));
+ }
+
+ self::checkArrow($env, $arrow, 'find', 'filter');
foreach ($array as $k => $v) {
if ($arrow($v, $k)) {
@@ -1876,15 +1945,17 @@ public static function find(Environment $env, $array, $arrow)
}
/**
+ * @param \Closure $arrow
+ *
* @internal
*/
public static function map(Environment $env, $array, $arrow)
{
if (!is_iterable($array)) {
- throw new RuntimeError(\sprintf('The "map" filter expects a sequence/mapping or "Traversable", got "%s".', get_debug_type($array)));
+ throw new RuntimeError(\sprintf('The "map" filter expects a sequence or a mapping, got "%s".', get_debug_type($array)));
}
- self::checkArrowInSandbox($env, $arrow, 'map', 'filter');
+ self::checkArrow($env, $arrow, 'map', 'filter');
$r = [];
foreach ($array as $k => $v) {
@@ -1895,16 +1966,18 @@ public static function map(Environment $env, $array, $arrow)
}
/**
+ * @param \Closure $arrow
+ *
* @internal
*/
public static function reduce(Environment $env, $array, $arrow, $initial = null)
{
- self::checkArrowInSandbox($env, $arrow, 'reduce', 'filter');
-
- if (!\is_array($array) && !$array instanceof \Traversable) {
- throw new RuntimeError(\sprintf('The "reduce" filter only works with sequences/mappings or "Traversable", got "%s" as first argument.', \gettype($array)));
+ if (!is_iterable($array)) {
+ throw new RuntimeError(\sprintf('The "reduce" filter expects a sequence or a mapping, got "%s".', get_debug_type($array)));
}
+ self::checkArrow($env, $arrow, 'reduce', 'filter');
+
$accumulator = $initial;
foreach ($array as $key => $value) {
$accumulator = $arrow($accumulator, $value, $key);
@@ -1914,11 +1987,17 @@ public static function reduce(Environment $env, $array, $arrow, $initial = null)
}
/**
+ * @param \Closure $arrow
+ *
* @internal
*/
public static function arraySome(Environment $env, $array, $arrow)
{
- self::checkArrowInSandbox($env, $arrow, 'has some', 'operator');
+ if (!is_iterable($array)) {
+ throw new RuntimeError(\sprintf('The "has some" test expects a sequence or a mapping, got "%s".', get_debug_type($array)));
+ }
+
+ self::checkArrow($env, $arrow, 'has some', 'operator');
foreach ($array as $k => $v) {
if ($arrow($v, $k)) {
@@ -1930,11 +2009,17 @@ public static function arraySome(Environment $env, $array, $arrow)
}
/**
+ * @param \Closure $arrow
+ *
* @internal
*/
public static function arrayEvery(Environment $env, $array, $arrow)
{
- self::checkArrowInSandbox($env, $arrow, 'has every', 'operator');
+ if (!is_iterable($array)) {
+ throw new RuntimeError(\sprintf('The "has every" test expects a sequence or a mapping, got "%s".', get_debug_type($array)));
+ }
+
+ self::checkArrow($env, $arrow, 'has every', 'operator');
foreach ($array as $k => $v) {
if (!$arrow($v, $k)) {
@@ -1948,11 +2033,17 @@ public static function arrayEvery(Environment $env, $array, $arrow)
/**
* @internal
*/
- public static function checkArrowInSandbox(Environment $env, $arrow, $thing, $type)
+ public static function checkArrow(Environment $env, $arrow, $thing, $type)
{
- if (!$arrow instanceof \Closure && $env->hasExtension(SandboxExtension::class) && $env->getExtension(SandboxExtension::class)->isSandboxed()) {
+ if ($arrow instanceof \Closure) {
+ return;
+ }
+
+ if ($env->hasExtension(SandboxExtension::class) && $env->getExtension(SandboxExtension::class)->isSandboxed()) {
throw new RuntimeError(\sprintf('The callable passed to the "%s" %s must be a Closure in sandbox mode.', $thing, $type));
}
+
+ trigger_deprecation('twig/twig', '3.15', 'Passing a callable that is not a PHP \Closure as an argument to the "%s" %s is deprecated.', $thing, $type);
}
/**
@@ -2013,6 +2104,38 @@ public static function parseAttributeFunction(Parser $parser, Node $fakeNode, $a
$fakeFunction = new TwigFunction('attribute', fn ($variable, $attribute, $arguments = null) => null);
$args = (new CallableArgumentsExtractor($fakeNode, $fakeFunction))->extractArguments($args);
+ /*
+ Deprecation to uncomment sometimes during the lifetime of the 4.x branch
+ $src = $parser->getStream()->getSourceContext();
+ $dep = new DeprecatedCallableInfo('twig/twig', '3.15', 'The "attribute" function is deprecated, use the "." notation instead.');
+ $dep->setName('attribute');
+ $dep->setType('function');
+ $dep->triggerDeprecation($src->getPath() ?: $src->getName(), $line);
+ */
+
return new GetAttrExpression($args[0], $args[1], $args[2] ?? null, Template::ANY_CALL, $line);
}
+
+ private static function getPropertyChecker(string $class, string $property): \Closure
+ {
+ static $classReflectors = [];
+
+ $class = $classReflectors[$class] ??= new \ReflectionClass($class);
+
+ if (!$class->hasProperty($property)) {
+ static $propertyExists;
+
+ return $propertyExists ??= \Closure::fromCallable('property_exists');
+ }
+
+ $property = $class->getProperty($property);
+
+ if (!$property->isPublic()) {
+ static $false;
+
+ return $false ??= static fn () => false;
+ }
+
+ return static fn ($object) => $property->isInitialized($object);
+ }
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/ExtensionInterface.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/ExtensionInterface.php
index 10a42b6b1..717ef9cec 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/ExtensionInterface.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/ExtensionInterface.php
@@ -14,6 +14,7 @@
use Twig\ExpressionParser;
use Twig\Node\Expression\AbstractExpression;
use Twig\NodeVisitor\NodeVisitorInterface;
+use Twig\OperatorPrecedenceChange;
use Twig\TokenParser\TokenParserInterface;
use Twig\TwigFilter;
use Twig\TwigFunction;
@@ -67,8 +68,8 @@ public function getFunctions();
* @return array First array of unary operators, second array of binary operators
*
* @psalm-return array{
- * array}>,
- * array, associativity: ExpressionParser::OPERATOR_*}>
+ * array}>,
+ * array, associativity: ExpressionParser::OPERATOR_*}>
* }
*/
public function getOperators();
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/ExtensionSet.php b/.extlib/simplesamlphp/vendor/twig/twig/src/ExtensionSet.php
index 28d57a41c..99fcfe56b 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/ExtensionSet.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/ExtensionSet.php
@@ -16,8 +16,6 @@
use Twig\Extension\GlobalsInterface;
use Twig\Extension\StagingExtension;
use Twig\Node\Expression\AbstractExpression;
-use Twig\Node\Expression\Binary\AbstractBinary;
-use Twig\Node\Expression\Unary\AbstractUnary;
use Twig\NodeVisitor\NodeVisitorInterface;
use Twig\TokenParser\TokenParserInterface;
@@ -50,7 +48,7 @@ final class ExtensionSet
private $unaryOperators;
/** @var array, associativity: ExpressionParser::OPERATOR_*}> */
private $binaryOperators;
- /** @var array */
+ /** @var array|null */
private $globals;
private $functionCallbacks = [];
private $filterCallbacks = [];
@@ -474,7 +472,7 @@ private function initExtension(ExtensionInterface $extension): void
// operators
if ($operators = $extension->getOperators()) {
if (!\is_array($operators)) {
- throw new \InvalidArgumentException(\sprintf('"%s::getOperators()" must return an array with operators, got "%s".', \get_class($extension), \is_object($operators) ? \get_class($operators) : \gettype($operators).(\is_resource($operators) ? '' : '#'.$operators)));
+ throw new \InvalidArgumentException(\sprintf('"%s::getOperators()" must return an array with operators, got "%s".', \get_class($extension), get_debug_type($operators).(\is_resource($operators) ? '' : '#'.$operators)));
}
if (2 !== \count($operators)) {
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/FileExtensionEscapingStrategy.php b/.extlib/simplesamlphp/vendor/twig/twig/src/FileExtensionEscapingStrategy.php
index 812071bf9..5308158d3 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/FileExtensionEscapingStrategy.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/FileExtensionEscapingStrategy.php
@@ -45,6 +45,7 @@ public static function guess(string $name)
switch ($extension) {
case 'js':
+ case 'json':
return 'js';
case 'css':
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Lexer.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Lexer.php
index 28feaa2c1..4983313cf 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Lexer.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Lexer.php
@@ -48,6 +48,7 @@ class Lexer
public const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As';
public const REGEX_DQ_STRING_DELIM = '/"/A';
public const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As';
+ public const REGEX_INLINE_COMMENT = '/#[^\n]*/A';
public const PUNCTUATION = '()[]{}?:.,|';
private const SPECIAL_CHARS = [
@@ -217,7 +218,7 @@ public function tokenize(Source $source): TokenStream
$this->pushToken(Token::EOF_TYPE);
- if (!empty($this->brackets)) {
+ if ($this->brackets) {
[$expect, $lineno] = array_pop($this->brackets);
throw new SyntaxError(\sprintf('Unclosed "%s".', $expect), $lineno, $this->source);
}
@@ -292,7 +293,7 @@ private function lexData(): void
private function lexBlock(): void
{
- if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) {
+ if (!$this->brackets && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) {
$this->pushToken(Token::BLOCK_END_TYPE);
$this->moveCursor($match[0]);
$this->popState();
@@ -303,7 +304,7 @@ private function lexBlock(): void
private function lexVar(): void
{
- if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) {
+ if (!$this->brackets && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) {
$this->pushToken(Token::VAR_END_TYPE);
$this->moveCursor($match[0]);
$this->popState();
@@ -360,7 +361,7 @@ private function lexExpression(): void
}
// closing bracket
elseif (str_contains(')]}', $this->code[$this->cursor])) {
- if (empty($this->brackets)) {
+ if (!$this->brackets) {
throw new SyntaxError(\sprintf('Unexpected "%s".', $this->code[$this->cursor]), $this->lineno, $this->source);
}
@@ -384,6 +385,10 @@ private function lexExpression(): void
$this->pushState(self::STATE_STRING);
$this->moveCursor($match[0]);
}
+ // inline comment
+ elseif (preg_match(self::REGEX_INLINE_COMMENT, $this->code, $match, 0, $this->cursor)) {
+ $this->moveCursor($match[0]);
+ }
// unlexable
else {
throw new SyntaxError(\sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source);
@@ -418,7 +423,7 @@ private function stripcslashes(string $str, string $quoteType): string
$result .= $nextChar;
} elseif ("'" === $nextChar || '"' === $nextChar) {
if ($nextChar !== $quoteType) {
- trigger_deprecation('twig/twig', '3.12', 'Character "%s" at position %d should not be escaped; the "\" character is ignored in Twig v3 but will not be in v4. Please remove the extra "\" character.', $nextChar, $i + 1);
+ trigger_deprecation('twig/twig', '3.12', 'Character "%s" should not be escaped; the "\" character is ignored in Twig 3 but will not be in Twig 4. Please remove the extra "\" character at position %d in "%s" at line %d.', $nextChar, $i + 1, $this->source->getName(), $this->lineno);
}
$result .= $nextChar;
} elseif ('#' === $nextChar && $i + 1 < $length && '{' === $str[$i + 1]) {
@@ -437,7 +442,7 @@ private function stripcslashes(string $str, string $quoteType): string
}
$result .= \chr(octdec($octal));
} else {
- trigger_deprecation('twig/twig', '3.12', 'Character "%s" at position %d should not be escaped; the "\" character is ignored in Twig v3 but will not be in v4. Please remove the extra "\" character.', $nextChar, $i + 1);
+ trigger_deprecation('twig/twig', '3.12', 'Character "%s" should not be escaped; the "\" character is ignored in Twig 3 but will not be in Twig 4. Please remove the extra "\" character at position %d in "%s" at line %d.', $nextChar, $i + 1, $this->source->getName(), $this->lineno);
$result .= $nextChar;
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Loader/FilesystemLoader.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Loader/FilesystemLoader.php
index c60964f5f..cad163ead 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Loader/FilesystemLoader.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Loader/FilesystemLoader.php
@@ -24,6 +24,9 @@ class FilesystemLoader implements LoaderInterface
/** Identifier of the main namespace. */
public const MAIN_NAMESPACE = '__main__';
+ /**
+ * @var array>
+ */
protected $paths = [];
protected $cache = [];
protected $errorCache = [];
@@ -31,7 +34,7 @@ class FilesystemLoader implements LoaderInterface
private $rootPath;
/**
- * @param string|array $paths A path or an array of paths where to look for templates
+ * @param string|string[] $paths A path or an array of paths where to look for templates
* @param string|null $rootPath The root path common to all relative paths (null for getcwd())
*/
public function __construct($paths = [], ?string $rootPath = null)
@@ -48,6 +51,8 @@ public function __construct($paths = [], ?string $rootPath = null)
/**
* Returns the paths to the templates.
+ *
+ * @return list
*/
public function getPaths(string $namespace = self::MAIN_NAMESPACE): array
{
@@ -58,6 +63,8 @@ public function getPaths(string $namespace = self::MAIN_NAMESPACE): array
* Returns the path namespaces.
*
* The main namespace is always defined.
+ *
+ * @return list
*/
public function getNamespaces(): array
{
@@ -65,7 +72,7 @@ public function getNamespaces(): array
}
/**
- * @param string|array $paths A path or an array of paths where to look for templates
+ * @param string|string[] $paths A path or an array of paths where to look for templates
*/
public function setPaths($paths, string $namespace = self::MAIN_NAMESPACE): void
{
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Markup.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Markup.php
index 4fae779ee..c7aa65bda 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Markup.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Markup.php
@@ -32,6 +32,11 @@ public function __toString()
return $this->content;
}
+ public function getCharset(): string
+ {
+ return $this->charset;
+ }
+
/**
* @return int
*/
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmbedNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmbedNode.php
index 4cd3b38f2..597f95e44 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmbedNode.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmbedNode.php
@@ -33,10 +33,10 @@ public function __construct(string $name, int $index, ?AbstractExpression $varia
$this->setAttribute('index', $index);
}
- protected function addGetTemplate(Compiler $compiler): void
+ protected function addGetTemplate(Compiler $compiler, string $template = ''): void
{
$compiler
- ->write('$this->loadTemplate(')
+ ->raw('$this->loadTemplate(')
->string($this->getAttribute('name'))
->raw(', ')
->repr($this->getTemplateName())
@@ -46,5 +46,11 @@ protected function addGetTemplate(Compiler $compiler): void
->string($this->getAttribute('index'))
->raw(')')
;
+ if ($this->getAttribute('ignore_missing')) {
+ $compiler
+ ->raw(";\n")
+ ->write(\sprintf("\$%s->getParent(\$context);\n", $template))
+ ;
+ }
}
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmptyNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmptyNode.php
new file mode 100644
index 000000000..fd4717ff4
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmptyNode.php
@@ -0,0 +1,33 @@
+
+ */
+#[YieldReady]
+final class EmptyNode extends Node
+{
+ public function __construct(int $lineno = 0)
+ {
+ parent::__construct([], [], $lineno);
+ }
+
+ public function setNode(string $name, Node $node): void
+ {
+ throw new \LogicException('EmptyNode cannot have children.');
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AbstractExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AbstractExpression.php
index 1692f5671..22d8617cd 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AbstractExpression.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AbstractExpression.php
@@ -25,4 +25,19 @@ public function isGenerator(): bool
{
return $this->hasAttribute('is_generator') && $this->getAttribute('is_generator');
}
+
+ /**
+ * @return static
+ */
+ public function setExplicitParentheses(): self
+ {
+ $this->setAttribute('with_parentheses', true);
+
+ return $this;
+ }
+
+ public function hasExplicitParentheses(): bool
+ {
+ return $this->hasAttribute('with_parentheses') && $this->getAttribute('with_parentheses');
+ }
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/ArrayExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/ArrayExpression.php
index 5f8b0f63f..9769b719e 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/ArrayExpression.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/ArrayExpression.php
@@ -12,6 +12,7 @@
namespace Twig\Node\Expression;
use Twig\Compiler;
+use Twig\Node\Expression\Unary\StringCastUnary;
class ArrayExpression extends AbstractExpression
{
@@ -97,7 +98,17 @@ public function compile(Compiler $compiler): void
$compiler->raw('...')->subcompile($pair['value']);
++$nextIndex;
} else {
- $key = $pair['key'] instanceof ConstantExpression ? $pair['key']->getAttribute('value') : null;
+ $key = null;
+ if ($pair['key'] instanceof NameExpression) {
+ $pair['key'] = new StringCastUnary($pair['key'], $pair['key']->getTemplateLine());
+ }
+ if ($pair['key'] instanceof TempNameExpression) {
+ $key = $pair['key']->getAttribute('name');
+ $pair['key'] = new ConstantExpression($key, $pair['key']->getTemplateLine());
+ }
+ if ($pair['key'] instanceof ConstantExpression) {
+ $key = $pair['key']->getAttribute('value');
+ }
if ($nextIndex !== $key) {
if (\is_int($key)) {
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php
index 7dd1bc4a3..c2cbb8e4a 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php
@@ -13,9 +13,25 @@
namespace Twig\Node\Expression;
use Twig\Compiler;
+use Twig\Error\SyntaxError;
+use Twig\Node\Expression\Variable\AssignContextVariable;
class AssignNameExpression extends NameExpression
{
+ public function __construct(string $name, int $lineno)
+ {
+ if (self::class === static::class) {
+ trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated, use "%s" instead.', self::class, AssignContextVariable::class);
+ }
+
+ // All names supported by ExpressionParser::parsePrimaryExpression() should be excluded
+ if (\in_array(strtolower($name), ['true', 'false', 'none', 'null'])) {
+ throw new SyntaxError(\sprintf('You cannot assign a value to "%s".', $name), $lineno);
+ }
+
+ parent::__construct($name, $lineno);
+ }
+
public function compile(Compiler $compiler): void
{
$compiler
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php
index c424e5cc5..ccd3be44f 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php
@@ -18,8 +18,19 @@
abstract class AbstractBinary extends AbstractExpression
{
+ /**
+ * @param AbstractExpression $left
+ * @param AbstractExpression $right
+ */
public function __construct(Node $left, Node $right, int $lineno)
{
+ if (!$left instanceof AbstractExpression) {
+ trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "left" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($left));
+ }
+ if (!$right instanceof AbstractExpression) {
+ trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "right" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($right));
+ }
+
parent::__construct(['left' => $left, 'right' => $right], [], $lineno);
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php
index 4669044e0..0a523c216 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php
@@ -12,9 +12,27 @@
namespace Twig\Node\Expression\Binary;
use Twig\Compiler;
+use Twig\Error\SyntaxError;
+use Twig\Node\Expression\ConstantExpression;
+use Twig\Node\Node;
class MatchesBinary extends AbstractBinary
{
+ public function __construct(Node $left, Node $right, int $lineno)
+ {
+ if ($right instanceof ConstantExpression) {
+ $regexp = $right->getAttribute('value');
+ set_error_handler(static fn ($t, $m) => throw new SyntaxError(\sprintf('Regexp "%s" passed to "matches" is not valid: %s.', $regexp, substr($m, 14)), $lineno));
+ try {
+ preg_match($regexp, '');
+ } finally {
+ restore_error_handler();
+ }
+ }
+
+ parent::__construct($left, $right, $lineno);
+ }
+
public function compile(Compiler $compiler): void
{
$compiler
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/XorBinary.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/XorBinary.php
new file mode 100644
index 000000000..d8ccd7853
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/XorBinary.php
@@ -0,0 +1,23 @@
+raw('xor');
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php
index acd231e15..0094c7adb 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php
@@ -22,8 +22,15 @@
*/
class BlockReferenceExpression extends AbstractExpression
{
+ /**
+ * @param AbstractExpression $name
+ */
public function __construct(Node $name, ?Node $template, int $lineno)
{
+ if (!$name instanceof AbstractExpression) {
+ trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($name));
+ }
+
$nodes = ['name' => $name];
if (null !== $template) {
$nodes['template'] = $template;
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/CallExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/CallExpression.php
index 6fc6f66e0..8e999c7eb 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/CallExpression.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/CallExpression.php
@@ -128,7 +128,7 @@ protected function compileArguments(Compiler $compiler, $isArray = false): void
}
/**
- * @deprecated since 3.12, use Twig\Util\CallableArgumentsExtractor::getArguments() instead
+ * @deprecated since Twig 3.12, use Twig\Util\CallableArgumentsExtractor::getArguments() instead
*/
protected function getArguments($callable, $arguments)
{
@@ -208,7 +208,7 @@ protected function getArguments($callable, $arguments)
} elseif ($callableParameter->isDefaultValueAvailable()) {
$optionalArguments[] = new ConstantExpression($callableParameter->getDefaultValue(), -1);
} elseif ($callableParameter->isOptional()) {
- if (empty($parameters)) {
+ if (!$parameters) {
break;
} else {
$missingArguments[] = $name;
@@ -235,7 +235,7 @@ protected function getArguments($callable, $arguments)
}
}
- if (!empty($parameters)) {
+ if ($parameters) {
$unknownParameter = null;
foreach ($parameters as $parameter) {
if ($parameter instanceof Node) {
@@ -258,7 +258,7 @@ protected function getArguments($callable, $arguments)
}
/**
- * @deprecated since 3.12
+ * @deprecated since Twig 3.12
*/
protected function normalizeName(string $name): string
{
@@ -334,7 +334,7 @@ private function getTwigCallable(): TwigCallableInterface
[
'is_variadic' => $this->hasAttribute('is_variadic') ? $this->getAttribute('is_variadic') : $current->isVariadic(),
],
- ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ?: $current->getArguments()),
+ ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ? $this->getAttribute('arguments') : $current->getArguments()),
'function' => (new TwigFunction(
$this->hasAttribute('name') ? $this->getAttribute('name') : $current->getName(),
$this->hasAttribute('callable') ? $this->getAttribute('callable') : $current->getCallable(),
@@ -344,7 +344,7 @@ private function getTwigCallable(): TwigCallableInterface
'needs_charset' => $this->hasAttribute('needs_charset') ? $this->getAttribute('needs_charset') : $current->needsCharset(),
'is_variadic' => $this->hasAttribute('is_variadic') ? $this->getAttribute('is_variadic') : $current->isVariadic(),
],
- ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ?: $current->getArguments()),
+ ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ? $this->getAttribute('arguments') : $current->getArguments()),
'filter' => (new TwigFilter(
$this->getAttribute('name'),
$this->hasAttribute('callable') ? $this->getAttribute('callable') : $current->getCallable(),
@@ -354,7 +354,7 @@ private function getTwigCallable(): TwigCallableInterface
'needs_charset' => $this->hasAttribute('needs_charset') ? $this->getAttribute('needs_charset') : $current->needsCharset(),
'is_variadic' => $this->hasAttribute('is_variadic') ? $this->getAttribute('is_variadic') : $current->isVariadic(),
],
- ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ?: $current->getArguments()),
+ ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ? $this->getAttribute('arguments') : $current->getArguments()),
});
return $this->getAttribute('twig_callable');
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php
index 75b6d18c2..a3ee66e47 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php
@@ -14,6 +14,8 @@
use Twig\Attribute\FirstClassTwigCallableReady;
use Twig\Compiler;
use Twig\Extension\CoreExtension;
+use Twig\Node\EmptyNode;
+use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\ConditionalExpression;
use Twig\Node\Expression\ConstantExpression;
use Twig\Node\Expression\FilterExpression;
@@ -33,9 +35,16 @@
*/
class DefaultFilter extends FilterExpression
{
+ /**
+ * @param AbstractExpression $node
+ */
#[FirstClassTwigCallableReady]
public function __construct(Node $node, TwigFilter|ConstantExpression $filter, Node $arguments, int $lineno)
{
+ if (!$node instanceof AbstractExpression) {
+ trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($node));
+ }
+
if ($filter instanceof TwigFilter) {
$name = $filter->getName();
$default = new FilterExpression($node, $filter, $arguments, $node->getTemplateLine());
@@ -45,7 +54,7 @@ public function __construct(Node $node, TwigFilter|ConstantExpression $filter, N
}
if ('default' === $name && ($node instanceof NameExpression || $node instanceof GetAttrExpression)) {
- $test = new DefinedTest(clone $node, new TwigTest('defined'), new Node(), $node->getTemplateLine());
+ $test = new DefinedTest(clone $node, new TwigTest('defined'), new EmptyNode(), $node->getTemplateLine());
$false = \count($arguments) ? $arguments->getNode('0') : new ConstantExpression('', $node->getTemplateLine());
$node = new ConditionalExpression($test, $default, $false, $node->getTemplateLine());
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/RawFilter.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/RawFilter.php
index e115ab194..e70501e24 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/RawFilter.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/RawFilter.php
@@ -13,6 +13,8 @@
use Twig\Attribute\FirstClassTwigCallableReady;
use Twig\Compiler;
+use Twig\Node\EmptyNode;
+use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\ConstantExpression;
use Twig\Node\Expression\FilterExpression;
use Twig\Node\Node;
@@ -23,10 +25,17 @@
*/
class RawFilter extends FilterExpression
{
+ /**
+ * @param AbstractExpression $node
+ */
#[FirstClassTwigCallableReady]
public function __construct(Node $node, TwigFilter|ConstantExpression|null $filter = null, ?Node $arguments = null, int $lineno = 0)
{
- parent::__construct($node, $filter ?: new TwigFilter('raw', null, ['is_safe' => ['all']]), $arguments ?: new Node(), $lineno ?: $node->getTemplateLine());
+ if (!$node instanceof AbstractExpression) {
+ trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($node));
+ }
+
+ parent::__construct($node, $filter ?: new TwigFilter('raw', null, ['is_safe' => ['all']]), $arguments ?: new EmptyNode(), $lineno ?: $node->getTemplateLine());
}
public function compile(Compiler $compiler): void
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FilterExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FilterExpression.php
index efc91193e..31fb90f1e 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FilterExpression.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FilterExpression.php
@@ -20,9 +20,16 @@
class FilterExpression extends CallExpression
{
+ /**
+ * @param AbstractExpression $node
+ */
#[FirstClassTwigCallableReady]
public function __construct(Node $node, TwigFilter|ConstantExpression $filter, Node $arguments, int $lineno)
{
+ if (!$node instanceof AbstractExpression) {
+ trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($node));
+ }
+
if ($filter instanceof TwigFilter) {
$name = $filter->getName();
$filterName = new ConstantExpression($name, $lineno);
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FunctionNode/EnumFunction.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FunctionNode/EnumFunction.php
new file mode 100644
index 000000000..1f8b0ecf1
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FunctionNode/EnumFunction.php
@@ -0,0 +1,45 @@
+getNode('arguments');
+ if ($arguments->hasNode('enum')) {
+ $firstArgument = $arguments->getNode('enum');
+ } elseif ($arguments->hasNode('0')) {
+ $firstArgument = $arguments->getNode('0');
+ } else {
+ $firstArgument = null;
+ }
+
+ if (!$firstArgument instanceof ConstantExpression || 1 !== \count($arguments)) {
+ parent::compile($compiler);
+
+ return;
+ }
+
+ $value = $firstArgument->getAttribute('value');
+
+ if (!\is_string($value)) {
+ throw new SyntaxError('The first argument of the "enum" function must be a string.', $this->getTemplateLine(), $this->getSourceContext());
+ }
+
+ if (!enum_exists($value)) {
+ throw new SyntaxError(\sprintf('The first argument of the "enum" function must be the name of an enum, "%s" given.', $value), $this->getTemplateLine(), $this->getSourceContext());
+ }
+
+ if (!$cases = $value::cases()) {
+ throw new SyntaxError(\sprintf('The first argument of the "enum" function must be a non-empty enum, "%s" given.', $value), $this->getTemplateLine(), $this->getSourceContext());
+ }
+
+ $compiler->raw(\sprintf('%s::%s', $value, $cases[0]->name));
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php
index 2181b0f78..e7373de11 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php
@@ -18,6 +18,10 @@
class GetAttrExpression extends AbstractExpression
{
+
+ /**
+ * @param ArrayExpression|NameExpression|null $arguments
+ */
public function __construct(AbstractExpression $node, AbstractExpression $attribute, ?AbstractExpression $arguments, string $type, int $lineno)
{
$nodes = ['node' => $node, 'attribute' => $attribute];
@@ -25,6 +29,10 @@ public function __construct(AbstractExpression $node, AbstractExpression $attrib
$nodes['arguments'] = $arguments;
}
+ if ($arguments && !$arguments instanceof ArrayExpression && !$arguments instanceof NameExpression) {
+ trigger_deprecation('twig/twig', '3.15', \sprintf('Not passing a "%s" instance as the "arguments" argument of the "%s" constructor is deprecated ("%s" given).', ArrayExpression::class, static::class, $arguments::class));
+ }
+
parent::__construct($nodes, ['type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'optimizable' => true], $lineno);
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/InlinePrint.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/InlinePrint.php
index 0a3c2e4f9..5509f7942 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/InlinePrint.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/InlinePrint.php
@@ -19,8 +19,13 @@
*/
final class InlinePrint extends AbstractExpression
{
+ /**
+ * @param AbstractExpression $node
+ */
public function __construct(Node $node, int $lineno)
{
+ trigger_deprecation('twig/twig', '3.16', \sprintf('The "%s" class is deprecated with no replacement.', static::class));
+
parent::__construct(['node' => $node], [], $lineno);
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MacroReferenceExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MacroReferenceExpression.php
new file mode 100644
index 000000000..abe99aa35
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MacroReferenceExpression.php
@@ -0,0 +1,56 @@
+
+ */
+class MacroReferenceExpression extends AbstractExpression
+{
+ public function __construct(TemplateVariable $template, string $name, AbstractExpression $arguments, int $lineno)
+ {
+ parent::__construct(['template' => $template, 'arguments' => $arguments], ['name' => $name, 'is_defined_test' => false], $lineno);
+ }
+
+ public function compile(Compiler $compiler): void
+ {
+ if ($this->getAttribute('is_defined_test')) {
+ $compiler
+ ->subcompile($this->getNode('template'))
+ ->raw('->hasMacro(')
+ ->repr($this->getAttribute('name'))
+ ->raw(', $context')
+ ->raw(')')
+ ;
+
+ return;
+ }
+
+ $compiler
+ ->subcompile($this->getNode('template'))
+ ->raw('->getTemplateForMacro(')
+ ->repr($this->getAttribute('name'))
+ ->raw(', $context, ')
+ ->repr($this->getTemplateLine())
+ ->raw(', $this->getSourceContext())')
+ ->raw(\sprintf('->%s', $this->getAttribute('name')))
+ ->raw('(...')
+ ->subcompile($this->getNode('arguments'))
+ ->raw(')')
+ ;
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php
index 01806f91d..9aede826c 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php
@@ -17,6 +17,8 @@ class MethodCallExpression extends AbstractExpression
{
public function __construct(AbstractExpression $node, string $method, ArrayExpression $arguments, int $lineno)
{
+ trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated, use "%s" instead.', __CLASS__, MacroReferenceExpression::class);
+
parent::__construct(['node' => $node, 'arguments' => $arguments], ['method' => $method, 'safe' => false, 'is_defined_test' => false], $lineno);
if ($node instanceof NameExpression) {
@@ -43,21 +45,9 @@ public function compile(Compiler $compiler): void
->repr($this->getNode('node')->getAttribute('name'))
->raw('], ')
->repr($this->getAttribute('method'))
- ->raw(', [')
- ;
- $first = true;
- /** @var ArrayExpression */
- $args = $this->getNode('arguments');
- foreach ($args->getKeyValuePairs() as $pair) {
- if (!$first) {
- $compiler->raw(', ');
- }
- $first = false;
-
- $compiler->subcompile($pair['value']);
- }
- $compiler
- ->raw('], ')
+ ->raw(', ')
+ ->subcompile($this->getNode('arguments'))
+ ->raw(', ')
->repr($this->getTemplateLine())
->raw(', $context, $this->getSourceContext())');
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NameExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NameExpression.php
index 286aa5ae2..78ae51f03 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NameExpression.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NameExpression.php
@@ -13,6 +13,7 @@
namespace Twig\Node\Expression;
use Twig\Compiler;
+use Twig\Node\Expression\Variable\ContextVariable;
class NameExpression extends AbstractExpression
{
@@ -24,6 +25,10 @@ class NameExpression extends AbstractExpression
public function __construct(string $name, int $lineno)
{
+ if (self::class === static::class) {
+ trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated, use "%s" instead.', self::class, ContextVariable::class);
+ }
+
parent::__construct([], ['name' => $name, 'is_defined_test' => false, 'ignore_strict_check' => false, 'always_defined' => false], $lineno);
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php
index 98630f7f0..1a5d90286 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php
@@ -12,6 +12,7 @@
namespace Twig\Node\Expression;
use Twig\Compiler;
+use Twig\Node\EmptyNode;
use Twig\Node\Expression\Binary\AndBinary;
use Twig\Node\Expression\Test\DefinedTest;
use Twig\Node\Expression\Test\NullTest;
@@ -21,14 +22,25 @@
class NullCoalesceExpression extends ConditionalExpression
{
+ /**
+ * @param AbstractExpression $left
+ * @param AbstractExpression $right
+ */
public function __construct(Node $left, Node $right, int $lineno)
{
- $test = new DefinedTest(clone $left, new TwigTest('defined'), new Node(), $left->getTemplateLine());
+ if (!$left instanceof AbstractExpression) {
+ trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "left" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($left));
+ }
+ if (!$right instanceof AbstractExpression) {
+ trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "right" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($right));
+ }
+
+ $test = new DefinedTest(clone $left, new TwigTest('defined'), new EmptyNode(), $left->getTemplateLine());
// for "block()", we don't need the null test as the return value is always a string
if (!$left instanceof BlockReferenceExpression) {
$test = new AndBinary(
$test,
- new NotUnary(new NullTest($left, new TwigTest('null'), new Node(), $left->getTemplateLine()), $left->getTemplateLine()),
+ new NotUnary(new NullTest($left, new TwigTest('null'), new EmptyNode(), $left->getTemplateLine()), $left->getTemplateLine()),
$left->getTemplateLine()
);
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TempNameExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TempNameExpression.php
index 004c704a5..925b0e7b3 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TempNameExpression.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TempNameExpression.php
@@ -12,20 +12,38 @@
namespace Twig\Node\Expression;
use Twig\Compiler;
+use Twig\Error\SyntaxError;
class TempNameExpression extends AbstractExpression
{
- public function __construct(string $name, int $lineno)
+ public const RESERVED_NAMES = ['varargs', 'context', 'macros', 'blocks', 'this'];
+
+ public function __construct(string|int|null $name, int $lineno)
{
+ // All names supported by ExpressionParser::parsePrimaryExpression() should be excluded
+ if ($name && \in_array(strtolower($name), ['true', 'false', 'none', 'null'])) {
+ throw new SyntaxError(\sprintf('You cannot assign a value to "%s".', $name), $lineno);
+ }
+
+ if (self::class === static::class) {
+ trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated.', self::class);
+ }
+
+ if (null !== $name && (is_int($name) || ctype_digit($name))) {
+ $name = (int) $name;
+ } elseif (in_array($name, self::RESERVED_NAMES)) {
+ $name = "\u{035C}".$name;
+ }
+
parent::__construct([], ['name' => $name], $lineno);
}
public function compile(Compiler $compiler): void
{
- $compiler
- ->raw('$_')
- ->raw($this->getAttribute('name'))
- ->raw('_')
- ;
+ if (null === $this->getAttribute('name')) {
+ $this->setAttribute('name', $compiler->getVarName());
+ }
+
+ $compiler->raw('$'.$this->getAttribute('name'));
}
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php
index 24d3ee82c..b6c3ff6f9 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php
@@ -14,11 +14,13 @@
use Twig\Attribute\FirstClassTwigCallableReady;
use Twig\Compiler;
use Twig\Error\SyntaxError;
+use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\ArrayExpression;
use Twig\Node\Expression\BlockReferenceExpression;
use Twig\Node\Expression\ConstantExpression;
use Twig\Node\Expression\FunctionExpression;
use Twig\Node\Expression\GetAttrExpression;
+use Twig\Node\Expression\MacroReferenceExpression;
use Twig\Node\Expression\MethodCallExpression;
use Twig\Node\Expression\NameExpression;
use Twig\Node\Expression\TestExpression;
@@ -37,9 +39,16 @@
*/
class DefinedTest extends TestExpression
{
+ /**
+ * @param AbstractExpression $node
+ */
#[FirstClassTwigCallableReady]
public function __construct(Node $node, TwigTest|string $name, ?Node $arguments, int $lineno)
{
+ if (!$node instanceof AbstractExpression) {
+ trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($node));
+ }
+
if ($node instanceof NameExpression) {
$node->setAttribute('is_defined_test', true);
} elseif ($node instanceof GetAttrExpression) {
@@ -47,6 +56,8 @@ public function __construct(Node $node, TwigTest|string $name, ?Node $arguments,
$this->changeIgnoreStrictCheck($node);
} elseif ($node instanceof BlockReferenceExpression) {
$node->setAttribute('is_defined_test', true);
+ } elseif ($node instanceof MacroReferenceExpression) {
+ $node->setAttribute('is_defined_test', true);
} elseif ($node instanceof FunctionExpression && 'constant' === $node->getAttribute('name')) {
$node->setAttribute('is_defined_test', true);
} elseif ($node instanceof ConstantExpression || $node instanceof ArrayExpression) {
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TestExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TestExpression.php
index 080d85aaa..3ad6ac557 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TestExpression.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TestExpression.php
@@ -20,8 +20,15 @@
class TestExpression extends CallExpression
{
#[FirstClassTwigCallableReady]
+ /**
+ * @param AbstractExpression $node
+ */
public function __construct(Node $node, string|TwigTest $test, ?Node $arguments, int $lineno)
{
+ if (!$node instanceof AbstractExpression) {
+ trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($node));
+ }
+
$nodes = ['node' => $node];
if (null !== $arguments) {
$nodes['arguments'] = $arguments;
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php
index e31e3f84b..96739e2b8 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php
@@ -18,16 +18,30 @@
abstract class AbstractUnary extends AbstractExpression
{
+ /**
+ * @param AbstractExpression $node
+ */
public function __construct(Node $node, int $lineno)
{
- parent::__construct(['node' => $node], [], $lineno);
+ if (!$node instanceof AbstractExpression) {
+ trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance argument to "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($node));
+ }
+
+ parent::__construct(['node' => $node], ['with_parentheses' => false], $lineno);
}
public function compile(Compiler $compiler): void
{
- $compiler->raw(' ');
+ if ($this->hasExplicitParentheses()) {
+ $compiler->raw('(');
+ } else {
+ $compiler->raw(' ');
+ }
$this->operator($compiler);
$compiler->subcompile($this->getNode('node'));
+ if ($this->hasExplicitParentheses()) {
+ $compiler->raw(')');
+ }
}
abstract public function operator(Compiler $compiler): Compiler;
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/SpreadUnary.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/SpreadUnary.php
new file mode 100644
index 000000000..f99072c25
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/SpreadUnary.php
@@ -0,0 +1,22 @@
+raw('...');
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/StringCastUnary.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/StringCastUnary.php
new file mode 100644
index 000000000..87ea17ca8
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/StringCastUnary.php
@@ -0,0 +1,22 @@
+raw('(string)');
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/AssignContextVariable.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/AssignContextVariable.php
new file mode 100644
index 000000000..30d810675
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/AssignContextVariable.php
@@ -0,0 +1,18 @@
+ $var], ['global' => $global], $var->getTemplateLine());
+ }
+
+ public function compile(Compiler $compiler): void
+ {
+ /** @var TemplateVariable $var */
+ $var = $this->nodes['var'];
+
+ $compiler
+ ->addDebugInfo($this)
+ ->write('$macros[')
+ ->string($var->getName($compiler))
+ ->raw('] = ')
+ ;
+
+ if ($this->getAttribute('global')) {
+ $compiler
+ ->raw('$this->macros[')
+ ->string($var->getName($compiler))
+ ->raw('] = ')
+ ;
+ }
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/ContextVariable.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/ContextVariable.php
new file mode 100644
index 000000000..cabc16a43
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/ContextVariable.php
@@ -0,0 +1,18 @@
+getAttribute('name')) {
+ $this->setAttribute('name', $compiler->getVarName());
+ }
+
+ return $this->getAttribute('name');
+ }
+
+ public function compile(Compiler $compiler): void
+ {
+ $name = $this->getName($compiler);
+
+ if ('_self' === $name) {
+ $compiler->raw('$this');
+ } else {
+ $compiler
+ ->raw('$macros[')
+ ->string($name)
+ ->raw(']')
+ ;
+ }
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ForNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ForNode.php
index 2fc014792..53a950a90 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ForNode.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ForNode.php
@@ -29,7 +29,7 @@ class ForNode extends Node
public function __construct(AssignNameExpression $keyTarget, AssignNameExpression $valueTarget, AbstractExpression $seq, ?Node $ifexpr, Node $body, ?Node $else, int $lineno)
{
- $body = new Node([$body, $this->loop = new ForLoopNode($lineno)]);
+ $body = new Nodes([$body, $this->loop = new ForLoopNode($lineno)]);
$nodes = ['key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body];
if (null !== $else) {
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ImportNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ImportNode.php
index 9a6033f21..124c41ba9 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ImportNode.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ImportNode.php
@@ -15,6 +15,7 @@
use Twig\Compiler;
use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\NameExpression;
+use Twig\Node\Expression\Variable\AssignTemplateVariable;
/**
* Represents an import node.
@@ -24,37 +25,24 @@
#[YieldReady]
class ImportNode extends Node
{
- /**
- * @param bool $global
- */
- public function __construct(AbstractExpression $expr, AbstractExpression $var, int $lineno, $global = true)
+ public function __construct(AbstractExpression $expr, AbstractExpression|AssignTemplateVariable $var, int $lineno)
{
- if (null === $global || \is_string($global)) {
- trigger_deprecation('twig/twig', '3.12', 'Passing a tag to %s() is deprecated.', __METHOD__);
- $global = \func_num_args() > 4 ? func_get_arg(4) : true;
- } elseif (!\is_bool($global)) {
- throw new \TypeError(\sprintf('Argument 4 passed to "%s()" must be a boolean, "%s" given.', __METHOD__, get_debug_type($global)));
+ if (\func_num_args() > 3) {
+ trigger_deprecation('twig/twig', '3.15', \sprintf('Passing more than 3 arguments to "%s()" is deprecated.', __METHOD__));
}
- parent::__construct(['expr' => $expr, 'var' => $var], ['global' => $global], $lineno);
+ if (!$var instanceof AssignTemplateVariable) {
+ trigger_deprecation('twig/twig', '3.15', \sprintf('Passing a "%s" instance as the second argument of "%s" is deprecated, pass a "%s" instead.', $var::class, __CLASS__, AssignTemplateVariable::class));
+
+ $var = new AssignTemplateVariable($var->getAttribute('name'), $lineno);
+ }
+
+ parent::__construct(['expr' => $expr, 'var' => $var], [], $lineno);
}
public function compile(Compiler $compiler): void
{
- $compiler
- ->addDebugInfo($this)
- ->write('$macros[')
- ->repr($this->getNode('var')->getAttribute('name'))
- ->raw('] = ')
- ;
-
- if ($this->getAttribute('global')) {
- $compiler
- ->raw('$this->macros[')
- ->repr($this->getNode('var')->getAttribute('name'))
- ->raw('] = ')
- ;
- }
+ $compiler->subcompile($this->getNode('var'));
if ($this->getNode('expr') instanceof NameExpression && '_self' === $this->getNode('expr')->getAttribute('name')) {
$compiler->raw('$this');
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/IncludeNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/IncludeNode.php
index 1c18292c5..5e0c6deb0 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/IncludeNode.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/IncludeNode.php
@@ -42,13 +42,12 @@ public function compile(Compiler $compiler): void
$template = $compiler->getVarName();
$compiler
- ->write(\sprintf("$%s = null;\n", $template))
->write("try {\n")
->indent()
->write(\sprintf('$%s = ', $template))
;
- $this->addGetTemplate($compiler);
+ $this->addGetTemplate($compiler, $template);
$compiler
->raw(";\n")
@@ -56,6 +55,7 @@ public function compile(Compiler $compiler): void
->write("} catch (LoaderError \$e) {\n")
->indent()
->write("// ignore missing template\n")
+ ->write(\sprintf("\$$template = null;\n", $template))
->outdent()
->write("}\n")
->write(\sprintf("if ($%s) {\n", $template))
@@ -78,10 +78,10 @@ public function compile(Compiler $compiler): void
}
}
- protected function addGetTemplate(Compiler $compiler)
+ protected function addGetTemplate(Compiler $compiler/* , string $template = '' */)
{
$compiler
- ->write('$this->loadTemplate(')
+ ->raw('$this->loadTemplate(')
->subcompile($this->getNode('expr'))
->raw(', ')
->repr($this->getTemplateName())
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/MacroNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/MacroNode.php
index 5a2543a9f..ab37d85a5 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/MacroNode.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/MacroNode.php
@@ -14,6 +14,8 @@
use Twig\Attribute\YieldReady;
use Twig\Compiler;
use Twig\Error\SyntaxError;
+use Twig\Node\Expression\ArrayExpression;
+use Twig\Node\Expression\Variable\LocalVariable;
/**
* Represents a macro node.
@@ -26,17 +28,28 @@ class MacroNode extends Node
public const VARARGS_NAME = 'varargs';
/**
- * @param BodyNode $body
+ * @param BodyNode $body
+ * @param ArrayExpression $arguments
*/
public function __construct(string $name, Node $body, Node $arguments, int $lineno)
{
if (!$body instanceof BodyNode) {
- trigger_deprecation('twig/twig', '3.12', \sprintf('Not passing a "%s" instance as the "body" argument of the "%s" constructor is deprecated.', BodyNode::class, static::class));
+ trigger_deprecation('twig/twig', '3.12', \sprintf('Not passing a "%s" instance as the "body" argument of the "%s" constructor is deprecated ("%s" given).', BodyNode::class, static::class, $body::class));
}
- foreach ($arguments as $argumentName => $argument) {
- if (self::VARARGS_NAME === $argumentName) {
- throw new SyntaxError(\sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments.', self::VARARGS_NAME, $name, self::VARARGS_NAME), $argument->getTemplateLine(), $argument->getSourceContext());
+ if (!$arguments instanceof ArrayExpression) {
+ trigger_deprecation('twig/twig', '3.15', \sprintf('Not passing a "%s" instance as the "arguments" argument of the "%s" constructor is deprecated ("%s" given).', ArrayExpression::class, static::class, $arguments::class));
+
+ $args = new ArrayExpression([], $arguments->getTemplateLine());
+ foreach ($arguments as $name => $default) {
+ $args->addElement($default, new LocalVariable($name, $default->getTemplateLine()));
+ }
+ $arguments = $args;
+ }
+
+ foreach ($arguments->getKeyValuePairs() as $pair) {
+ if ("\u{035C}".self::VARARGS_NAME === $pair['key']->getAttribute('name')) {
+ throw new SyntaxError(\sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments.', self::VARARGS_NAME, $name, self::VARARGS_NAME), $pair['value']->getTemplateLine(), $pair['value']->getSourceContext());
}
}
@@ -50,26 +63,22 @@ public function compile(Compiler $compiler): void
->write(\sprintf('public function macro_%s(', $this->getAttribute('name')))
;
- $count = \count($this->getNode('arguments'));
- $pos = 0;
- foreach ($this->getNode('arguments') as $name => $default) {
+ /** @var ArrayExpression $arguments */
+ $arguments = $this->getNode('arguments');
+ foreach ($arguments->getKeyValuePairs() as $pair) {
+ $name = $pair['key'];
+ $default = $pair['value'];
$compiler
- ->raw('$__'.$name.'__ = ')
+ ->subcompile($name)
+ ->raw(' = ')
->subcompile($default)
+ ->raw(', ')
;
-
- if (++$pos < $count) {
- $compiler->raw(', ');
- }
- }
-
- if ($count) {
- $compiler->raw(', ');
}
$compiler
- ->raw('...$__varargs__')
- ->raw(")\n")
+ ->raw('...$varargs')
+ ->raw("): string|Markup\n")
->write("{\n")
->indent()
->write("\$macros = \$this->macros;\n")
@@ -77,11 +86,17 @@ public function compile(Compiler $compiler): void
->indent()
;
- foreach ($this->getNode('arguments') as $name => $default) {
+ foreach ($arguments->getKeyValuePairs() as $pair) {
+ $name = $pair['key'];
+ $var = $name->getAttribute('name');
+ if (str_starts_with($var, "\u{035C}")) {
+ $var = substr($var, \strlen("\u{035C}"));
+ }
$compiler
->write('')
- ->string($name)
- ->raw(' => $__'.$name.'__')
+ ->string($var)
+ ->raw(' => ')
+ ->subcompile($name)
->raw(",\n")
;
}
@@ -92,7 +107,7 @@ public function compile(Compiler $compiler): void
->write('')
->string(self::VARARGS_NAME)
->raw(' => ')
- ->raw("\$__varargs__,\n")
+ ->raw("\$varargs,\n")
->outdent()
->write("] + \$this->env->getGlobals();\n\n")
->write("\$blocks = [];\n\n")
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ModuleNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ModuleNode.php
index d2fb216b1..97c2089fd 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ModuleNode.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ModuleNode.php
@@ -44,11 +44,11 @@ public function __construct(Node $body, ?AbstractExpression $parent, Node $block
'blocks' => $blocks,
'macros' => $macros,
'traits' => $traits,
- 'display_start' => new Node(),
- 'display_end' => new Node(),
- 'constructor_start' => new Node(),
- 'constructor_end' => new Node(),
- 'class_end' => new Node(),
+ 'display_start' => new Nodes(),
+ 'display_end' => new Nodes(),
+ 'constructor_start' => new Nodes(),
+ 'constructor_end' => new Nodes(),
+ 'class_end' => new Nodes(),
];
if (null !== $parent) {
$nodes['parent'] = $parent;
@@ -244,7 +244,11 @@ protected function compileConstructor(Compiler $compiler)
->string($key)
->raw(\sprintf(']; unset($_trait_%s_blocks[', $i))
->string($key)
- ->raw("]);\n\n")
+ ->raw("]); \$this->traitAliases[")
+ ->subcompile($value)
+ ->raw("] = ")
+ ->string($key)
+ ->raw(";\n\n")
;
}
}
@@ -410,7 +414,7 @@ protected function compileIsTraitable(Compiler $compiler)
}
if (!\count($nodes)) {
- $nodes = new Node([$nodes]);
+ $nodes = new Nodes([$nodes]);
}
foreach ($nodes as $node) {
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Node.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Node.php
index 2ccbcf610..7b4044c3f 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Node.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Node.php
@@ -20,6 +20,8 @@
* Represents a node in the AST.
*
* @author Fabien Potencier
+ *
+ * @implements \IteratorAggregate
*/
#[YieldReady]
class Node implements \Countable, \IteratorAggregate
@@ -45,9 +47,13 @@ class Node implements \Countable, \IteratorAggregate
*/
public function __construct(array $nodes = [], array $attributes = [], int $lineno = 0)
{
+ if (self::class === static::class) {
+ trigger_deprecation('twig/twig', '3.15', \sprintf('Instantiating "%s" directly is deprecated; the class will become abstract in 4.0.', self::class));
+ }
+
foreach ($nodes as $name => $node) {
if (!$node instanceof self) {
- throw new \InvalidArgumentException(\sprintf('Using "%s" for the value of node "%s" of "%s" is not supported. You must pass a \Twig\Node\Node instance.', \is_object($node) ? $node::class : (null === $node ? 'null' : \gettype($node)), $name, static::class));
+ throw new \InvalidArgumentException(\sprintf('Using "%s" for the value of node "%s" of "%s" is not supported. You must pass a \Twig\Node\Node instance.', get_debug_type($node), $name, static::class));
}
}
$this->nodes = $nodes;
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Nodes.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Nodes.php
new file mode 100644
index 000000000..bd67053ab
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Nodes.php
@@ -0,0 +1,28 @@
+
+ */
+#[YieldReady]
+final class Nodes extends Node
+{
+ public function __construct(array $nodes = [], int $lineno = 0)
+ {
+ parent::__construct($nodes, [], $lineno);
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/SetNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/SetNode.php
index 67725104e..6e0661edb 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/SetNode.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/SetNode.php
@@ -33,9 +33,16 @@ public function __construct(bool $capture, Node $names, Node $values, int $linen
$safe = false;
if ($capture) {
$safe = true;
- if ($values instanceof TextNode) {
+ // Node::class === get_class($values) should be removed in Twig 4.0
+ if (($values instanceof Nodes || Node::class === get_class($values)) && !count($values)) {
+ $values = new ConstantExpression('', $values->getTemplateLine());
+ $capture = false;
+ } elseif ($values instanceof TextNode) {
$values = new ConstantExpression($values->getAttribute('data'), $values->getTemplateLine());
$capture = false;
+ } elseif ($values instanceof PrintNode && $values->getNode('expr') instanceof ConstantExpression) {
+ $values = $values->getNode('expr');
+ $capture = false;
} else {
$values = new CaptureNode($values, $values->getTemplateLine());
}
@@ -78,11 +85,23 @@ public function compile(Compiler $compiler): void
$compiler->raw(']');
} else {
if ($this->getAttribute('safe')) {
- $compiler
- ->raw("('' === \$tmp = ")
- ->subcompile($this->getNode('values'))
- ->raw(") ? '' : new Markup(\$tmp, \$this->env->getCharset())")
- ;
+ if ($this->getNode('values') instanceof ConstantExpression) {
+ if ('' === $this->getNode('values')->getAttribute('value')) {
+ $compiler->raw('""');
+ } else {
+ $compiler
+ ->raw('new Markup(')
+ ->subcompile($this->getNode('values'))
+ ->raw(', $this->env->getCharset())')
+ ;
+ }
+ } else {
+ $compiler
+ ->raw("('' === \$tmp = ")
+ ->subcompile($this->getNode('values'))
+ ->raw(") ? '' : new Markup(\$tmp, \$this->env->getCharset())")
+ ;
+ }
} else {
$compiler->subcompile($this->getNode('values'));
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php
index 32f49ab1e..9640c541b 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php
@@ -16,14 +16,14 @@
use Twig\Node\AutoEscapeNode;
use Twig\Node\BlockNode;
use Twig\Node\BlockReferenceNode;
-use Twig\Node\DoNode;
+use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\ConditionalExpression;
use Twig\Node\Expression\ConstantExpression;
use Twig\Node\Expression\FilterExpression;
-use Twig\Node\Expression\InlinePrint;
use Twig\Node\ImportNode;
use Twig\Node\ModuleNode;
use Twig\Node\Node;
+use Twig\Node\Nodes;
use Twig\Node\PrintNode;
use Twig\NodeTraverser;
@@ -59,7 +59,7 @@ public function enterNode(Node $node, Environment $env): Node
} elseif ($node instanceof BlockNode) {
$this->statusStack[] = $this->blocks[$node->getAttribute('name')] ?? $this->needEscaping();
} elseif ($node instanceof ImportNode) {
- $this->safeVars[] = $node->getNode('var')->getAttribute('name');
+ $this->safeVars[] = $node->getNode('var')->getNode('var')->getAttribute('name');
}
return $node;
@@ -75,11 +75,13 @@ public function leaveNode(Node $node, Environment $env): ?Node
return $this->preEscapeFilterNode($node, $env);
} elseif ($node instanceof PrintNode && false !== $type = $this->needEscaping()) {
$expression = $node->getNode('expr');
- if ($expression instanceof ConditionalExpression && $this->shouldUnwrapConditional($expression, $env, $type)) {
- return new DoNode($this->unwrapConditional($expression, $env, $type), $expression->getTemplateLine());
+ if ($expression instanceof ConditionalExpression) {
+ $this->escapeConditional($expression, $env, $type);
+ } else {
+ $node->setNode('expr', $this->escapeExpression($expression, $env, $type));
}
- return $this->escapePrintNode($node, $env, $type);
+ return $node;
}
if ($node instanceof AutoEscapeNode || $node instanceof BlockNode) {
@@ -91,55 +93,28 @@ public function leaveNode(Node $node, Environment $env): ?Node
return $node;
}
- private function shouldUnwrapConditional(ConditionalExpression $expression, Environment $env, string $type): bool
- {
- $expr2Safe = $this->isSafeFor($type, $expression->getNode('expr2'), $env);
- $expr3Safe = $this->isSafeFor($type, $expression->getNode('expr3'), $env);
-
- return $expr2Safe !== $expr3Safe;
- }
-
- private function unwrapConditional(ConditionalExpression $expression, Environment $env, string $type): ConditionalExpression
+ private function escapeConditional(ConditionalExpression $expression, Environment $env, string $type): void
{
- // convert "echo a ? b : c" to "a ? echo b : echo c" recursively
+ /** @var AbstractExpression $expr2 */
$expr2 = $expression->getNode('expr2');
- if ($expr2 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr2, $env, $type)) {
- $expr2 = $this->unwrapConditional($expr2, $env, $type);
+ if ($expr2 instanceof ConditionalExpression) {
+ $this->escapeConditional($expr2, $env, $type);
} else {
- $expr2 = $this->escapeInlinePrintNode(new InlinePrint($expr2, $expr2->getTemplateLine()), $env, $type);
+ $expression->setNode('expr2', $this->escapeExpression($expr2, $env, $type));
}
+
+ /** @var AbstractExpression $expr3 */
$expr3 = $expression->getNode('expr3');
- if ($expr3 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr3, $env, $type)) {
- $expr3 = $this->unwrapConditional($expr3, $env, $type);
+ if ($expr3 instanceof ConditionalExpression) {
+ $this->escapeConditional($expr3, $env, $type);
} else {
- $expr3 = $this->escapeInlinePrintNode(new InlinePrint($expr3, $expr3->getTemplateLine()), $env, $type);
+ $expression->setNode('expr3', $this->escapeExpression($expr3, $env, $type));
}
-
- return new ConditionalExpression($expression->getNode('expr1'), $expr2, $expr3, $expression->getTemplateLine());
}
- private function escapeInlinePrintNode(InlinePrint $node, Environment $env, string $type): Node
+ private function escapeExpression(AbstractExpression $expression, Environment $env, string $type): AbstractExpression
{
- $expression = $node->getNode('node');
-
- if ($this->isSafeFor($type, $expression, $env)) {
- return $node;
- }
-
- return new InlinePrint($this->getEscaperFilter($env, $type, $expression), $node->getTemplateLine());
- }
-
- private function escapePrintNode(PrintNode $node, Environment $env, string $type): Node
- {
- $expression = $node->getNode('expr');
-
- if ($this->isSafeFor($type, $expression, $env)) {
- return $node;
- }
-
- $class = \get_class($node);
-
- return new $class($this->getEscaperFilter($env, $type, $expression), $node->getTemplateLine());
+ return $this->isSafeFor($type, $expression, $env) ? $expression : $this->getEscaperFilter($env, $type, $expression);
}
private function preEscapeFilterNode(FilterExpression $filter, Environment $env): FilterExpression
@@ -156,6 +131,7 @@ private function preEscapeFilterNode(FilterExpression $filter, Environment $env)
return $filter;
}
+ /** @var AbstractExpression $node */
$node = $filter->getNode('node');
if ($this->isSafeFor($type, $node, $env)) {
return $filter;
@@ -166,11 +142,11 @@ private function preEscapeFilterNode(FilterExpression $filter, Environment $env)
return $filter;
}
- private function isSafeFor(string $type, Node $expression, Environment $env): bool
+ private function isSafeFor(string $type, AbstractExpression $expression, Environment $env): bool
{
$safe = $this->safeAnalysis->getSafe($expression);
- if (null === $safe) {
+ if (!$safe) {
if (null === $this->traverser) {
$this->traverser = new NodeTraverser($env, [$this->safeAnalysis]);
}
@@ -193,11 +169,11 @@ private function needEscaping()
return $this->defaultStrategy ?: false;
}
- private function getEscaperFilter(Environment $env, string $type, Node $node): FilterExpression
+ private function getEscaperFilter(Environment $env, string $type, AbstractExpression $node): FilterExpression
{
$line = $node->getTemplateLine();
$filter = $env->getFilter('escape');
- $args = new Node([new ConstantExpression($type, $line), new ConstantExpression(null, $line), new ConstantExpression(true, $line)]);
+ $args = new Nodes([new ConstantExpression($type, $line), new ConstantExpression(null, $line), new ConstantExpression(true, $line)]);
return new FilterExpression($node, $filter, $args, $line);
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php
deleted file mode 100644
index 01d5a997f..000000000
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php
+++ /dev/null
@@ -1,74 +0,0 @@
-
- *
- * @internal
- */
-final class MacroAutoImportNodeVisitor implements NodeVisitorInterface
-{
- private $inAModule = false;
- private $hasMacroCalls = false;
-
- public function enterNode(Node $node, Environment $env): Node
- {
- if ($node instanceof ModuleNode) {
- $this->inAModule = true;
- $this->hasMacroCalls = false;
- }
-
- return $node;
- }
-
- public function leaveNode(Node $node, Environment $env): Node
- {
- if ($node instanceof ModuleNode) {
- $this->inAModule = false;
- if ($this->hasMacroCalls) {
- $node->getNode('constructor_end')->setNode('_auto_macro_import', new ImportNode(new NameExpression('_self', 0), new AssignNameExpression('_self', 0), 0, true));
- }
- } elseif ($this->inAModule) {
- if (
- $node instanceof GetAttrExpression
- && $node->getNode('node') instanceof NameExpression
- && '_self' === $node->getNode('node')->getAttribute('name')
- && $node->getNode('attribute') instanceof ConstantExpression
- ) {
- $this->hasMacroCalls = true;
-
- $name = $node->getNode('attribute')->getAttribute('value');
- $node = new MethodCallExpression($node->getNode('node'), 'macro_'.$name, $node->getNode('arguments'), $node->getTemplateLine());
- $node->setAttribute('safe', true);
- }
- }
-
- return $node;
- }
-
- public function getPriority(): int
- {
- // we must be ran before auto-escaping
- return -10;
- }
-}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php
index 07672164e..9eda8c8e1 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php
@@ -18,6 +18,7 @@
use Twig\Node\Expression\FilterExpression;
use Twig\Node\Expression\FunctionExpression;
use Twig\Node\Expression\GetAttrExpression;
+use Twig\Node\Expression\MacroReferenceExpression;
use Twig\Node\Expression\MethodCallExpression;
use Twig\Node\Expression\NameExpression;
use Twig\Node\Expression\ParentExpression;
@@ -36,11 +37,14 @@ public function setSafeVars(array $safeVars): void
$this->safeVars = $safeVars;
}
+ /**
+ * @return array
+ */
public function getSafe(Node $node)
{
$hash = spl_object_hash($node);
if (!isset($this->data[$hash])) {
- return;
+ return [];
}
foreach ($this->data[$hash] as $bucket) {
@@ -54,6 +58,8 @@ public function getSafe(Node $node)
return $bucket['value'];
}
+
+ return [];
}
private function setSafe(Node $node, array $safe): void
@@ -106,11 +112,14 @@ public function leaveNode(Node $node, Environment $env): ?Node
if ($filter) {
$safe = $filter->getSafe($node->getNode('arguments'));
if (null === $safe) {
+ trigger_deprecation('twig/twig', '3.16', 'The "%s::getSafe()" method should not return "null" anymore, return "[]" instead.', $filter::class);
+ $safe = [];
+ }
+
+ if (!$safe) {
$safe = $this->intersectSafe($this->getSafe($node->getNode('node')), $filter->getPreservesSafety());
}
$this->setSafe($node, $safe);
- } else {
- $this->setSafe($node, []);
}
} elseif ($node instanceof FunctionExpression) {
// function expression is safe when the function is safe
@@ -122,33 +131,29 @@ public function leaveNode(Node $node, Environment $env): ?Node
}
if ($function) {
- $this->setSafe($node, $function->getSafe($node->getNode('arguments')));
- } else {
- $this->setSafe($node, []);
- }
- } elseif ($node instanceof MethodCallExpression) {
- if ($node->getAttribute('safe')) {
- $this->setSafe($node, ['all']);
- } else {
- $this->setSafe($node, []);
+ $safe = $function->getSafe($node->getNode('arguments'));
+ if (null === $safe) {
+ trigger_deprecation('twig/twig', '3.16', 'The "%s::getSafe()" method should not return "null" anymore, return "[]" instead.', $function::class);
+ $safe = [];
+ }
+ $this->setSafe($node, $safe);
}
+ } elseif ($node instanceof MethodCallExpression || $node instanceof MacroReferenceExpression) {
+ // all macro calls are safe
+ $this->setSafe($node, ['all']);
} elseif ($node instanceof GetAttrExpression && $node->getNode('node') instanceof NameExpression) {
$name = $node->getNode('node')->getAttribute('name');
if (\in_array($name, $this->safeVars)) {
$this->setSafe($node, ['all']);
- } else {
- $this->setSafe($node, []);
}
- } else {
- $this->setSafe($node, []);
}
return $node;
}
- private function intersectSafe(?array $a = null, ?array $b = null): array
+ private function intersectSafe(array $a, array $b): array
{
- if (null === $a || null === $b) {
+ if (!$a || !$b) {
return [];
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php
index 8c15db0d6..74b686f6e 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php
@@ -25,6 +25,7 @@
use Twig\Node\Expression\Unary\SpreadUnary;
use Twig\Node\ModuleNode;
use Twig\Node\Node;
+use Twig\Node\Nodes;
use Twig\Node\PrintNode;
use Twig\Node\SetNode;
@@ -107,8 +108,8 @@ public function leaveNode(Node $node, Environment $env): ?Node
if ($node instanceof ModuleNode) {
$this->inAModule = false;
- $node->setNode('constructor_end', new Node([new CheckSecurityCallNode(), $node->getNode('constructor_end')]));
- $node->setNode('class_end', new Node([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')]));
+ $node->setNode('constructor_end', new Nodes([new CheckSecurityCallNode(), $node->getNode('constructor_end')]));
+ $node->setNode('class_end', new Nodes([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')]));
} elseif ($this->inAModule) {
if ($node instanceof PrintNode || $node instanceof SetNode) {
$this->needsToStringWrap = false;
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/YieldNotReadyNodeVisitor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/YieldNotReadyNodeVisitor.php
index 4b190b414..3c9786275 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/YieldNotReadyNodeVisitor.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/YieldNotReadyNodeVisitor.php
@@ -38,10 +38,10 @@ public function enterNode(Node $node, Environment $env): Node
if (!$this->yieldReadyNodes[$class] = (bool) (new \ReflectionClass($class))->getAttributes(YieldReady::class)) {
if ($this->useYield) {
- throw new \LogicException(\sprintf('You cannot enable the "use_yield" option of Twig as node "%s" is not marked as ready for it; please make it ready and then flag it with the #[YieldReady] attribute.', $class));
+ throw new \LogicException(\sprintf('You cannot enable the "use_yield" option of Twig as node "%s" is not marked as ready for it; please make it ready and then flag it with the #[\Twig\Attribute\YieldReady] attribute.', $class));
}
- trigger_deprecation('twig/twig', '3.9', 'Twig node "%s" is not marked as ready for using "yield" instead of "echo"; please make it ready and then flag it with the #[YieldReady] attribute.', $class);
+ trigger_deprecation('twig/twig', '3.9', 'Twig node "%s" is not marked as ready for using "yield" instead of "echo"; please make it ready and then flag it with the #[\Twig\Attribute\YieldReady] attribute.', $class);
}
return $node;
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/OperatorPrecedenceChange.php b/.extlib/simplesamlphp/vendor/twig/twig/src/OperatorPrecedenceChange.php
new file mode 100644
index 000000000..1d9edefd1
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/OperatorPrecedenceChange.php
@@ -0,0 +1,42 @@
+
+ */
+class OperatorPrecedenceChange
+{
+ public function __construct(
+ private string $package,
+ private string $version,
+ private int $newPrecedence,
+ ) {
+ }
+
+ public function getPackage(): string
+ {
+ return $this->package;
+ }
+
+ public function getVersion(): string
+ {
+ return $this->version;
+ }
+
+ public function getNewPrecedence(): int
+ {
+ return $this->newPrecedence;
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Parser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Parser.php
index 40370bb1b..7bf51b73c 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Parser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Parser.php
@@ -16,12 +16,16 @@
use Twig\Node\BlockNode;
use Twig\Node\BlockReferenceNode;
use Twig\Node\BodyNode;
+use Twig\Node\EmptyNode;
use Twig\Node\Expression\AbstractExpression;
+use Twig\Node\Expression\Variable\AssignTemplateVariable;
+use Twig\Node\Expression\Variable\TemplateVariable;
use Twig\Node\MacroNode;
use Twig\Node\ModuleNode;
use Twig\Node\Node;
use Twig\Node\NodeCaptureInterface;
use Twig\Node\NodeOutputInterface;
+use Twig\Node\Nodes;
use Twig\Node\PrintNode;
use Twig\Node\TextNode;
use Twig\TokenParser\TokenParserInterface;
@@ -44,14 +48,22 @@ class Parser
private $traits;
private $embeddedTemplates = [];
private $varNameSalt = 0;
+ private $ignoreUnknownTwigCallables = false;
public function __construct(
private Environment $env,
) {
}
+ public function getEnvironment(): Environment
+ {
+ return $this->env;
+ }
+
public function getVarName(): string
{
+ trigger_deprecation('twig/twig', '3.15', 'The "%s()" method is deprecated.', __METHOD__);
+
return \sprintf('__internal_parse_%d', $this->varNameSalt++);
}
@@ -83,7 +95,7 @@ public function parse(TokenStream $stream, $test = null, bool $dropNeedle = fals
$body = $this->subparse($test, $dropNeedle);
if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) {
- $body = new Node();
+ $body = new EmptyNode();
}
} catch (SyntaxError $e) {
if (!$e->getSourceContext()) {
@@ -97,7 +109,7 @@ public function parse(TokenStream $stream, $test = null, bool $dropNeedle = fals
throw $e;
}
- $node = new ModuleNode(new BodyNode([$body]), $this->parent, new Node($this->blocks), new Node($this->macros), new Node($this->traits), $this->embeddedTemplates, $stream->getSourceContext());
+ $node = new ModuleNode(new BodyNode([$body]), $this->parent, new Nodes($this->blocks), new Nodes($this->macros), new Nodes($this->traits), $this->embeddedTemplates, $stream->getSourceContext());
$traverser = new NodeTraverser($this->env, $this->visitors);
@@ -114,6 +126,22 @@ public function parse(TokenStream $stream, $test = null, bool $dropNeedle = fals
return $node;
}
+ public function shouldIgnoreUnknownTwigCallables(): bool
+ {
+ return $this->ignoreUnknownTwigCallables;
+ }
+
+ public function subparseIgnoreUnknownTwigCallables($test, bool $dropNeedle = false): void
+ {
+ $previous = $this->ignoreUnknownTwigCallables;
+ $this->ignoreUnknownTwigCallables = true;
+ try {
+ $this->subparse($test, $dropNeedle);
+ } finally {
+ $this->ignoreUnknownTwigCallables = $previous;
+ }
+ }
+
public function subparse($test, bool $dropNeedle = false): Node
{
$lineno = $this->getCurrentToken()->getLine();
@@ -149,7 +177,7 @@ public function subparse($test, bool $dropNeedle = false): Node
return $rv[0];
}
- return new Node($rv, [], $lineno);
+ return new Nodes($rv, $lineno);
}
if (!$subparser = $this->env->getTokenParser($token->getValue())) {
@@ -189,7 +217,7 @@ public function subparse($test, bool $dropNeedle = false): Node
return $rv[0];
}
- return new Node($rv, [], $lineno);
+ return new Nodes($rv, $lineno);
}
public function getBlockStack(): array
@@ -268,9 +296,15 @@ public function embedTemplate(ModuleNode $template)
$this->embeddedTemplates[] = $template;
}
- public function addImportedSymbol(string $type, string $alias, ?string $name = null, ?AbstractExpression $node = null): void
+ public function addImportedSymbol(string $type, string $alias, ?string $name = null, AbstractExpression|AssignTemplateVariable|null $internalRef = null): void
{
- $this->importedSymbols[0][$type][$alias] = ['name' => $name, 'node' => $node];
+ if ($internalRef && !$internalRef instanceof AssignTemplateVariable) {
+ trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance as an internal reference is deprecated ("%s" given).', __METHOD__, AssignTemplateVariable::class, $internalRef::class);
+
+ $internalRef = new AssignTemplateVariable(new TemplateVariable($internalRef->getAttribute('name'), $internalRef->getTemplateLine()), $internalRef->getAttribute('global'));
+ }
+
+ $this->importedSymbols[0][$type][$alias] = ['name' => $name, 'node' => $internalRef];
}
public function getImportedSymbol(string $type, string $alias)
@@ -371,7 +405,8 @@ private function filterBodyNodes(Node $node, bool $nested = false): ?Node
// here, $nested means "being at the root level of a child template"
// we need to discard the wrapping "Node" for the "body" node
- $nested = $nested || Node::class !== \get_class($node);
+ // Node::class !== \get_class($node) should be removed in Twig 4.0
+ $nested = $nested || (Node::class !== \get_class($node) && !$node instanceof Nodes);
foreach ($node as $k => $n) {
if (null !== $n && null === $this->filterBodyNodes($n, $nested)) {
$node->removeNode($k);
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php
index 1458bc5fc..4c5c2005d 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php
@@ -17,6 +17,7 @@
use Twig\Node\MacroNode;
use Twig\Node\ModuleNode;
use Twig\Node\Node;
+use Twig\Node\Nodes;
use Twig\NodeVisitor\NodeVisitorInterface;
use Twig\Profiler\Node\EnterProfileNode;
use Twig\Profiler\Node\LeaveProfileNode;
@@ -43,8 +44,8 @@ public function enterNode(Node $node, Environment $env): Node
public function leaveNode(Node $node, Environment $env): ?Node
{
if ($node instanceof ModuleNode) {
- $node->setNode('display_start', new Node([new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $this->varName), $node->getNode('display_start')]));
- $node->setNode('display_end', new Node([new LeaveProfileNode($this->varName), $node->getNode('display_end')]));
+ $node->setNode('display_start', new Nodes([new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $this->varName), $node->getNode('display_start')]));
+ $node->setNode('display_end', new Nodes([new LeaveProfileNode($this->varName), $node->getNode('display_end')]));
} elseif ($node instanceof BlockNode) {
$node->setNode('body', new BodyNode([
new EnterProfileNode($this->extensionName, Profile::BLOCK, $node->getAttribute('name'), $this->varName),
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/Profile.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/Profile.php
index 2928e1646..a3c6ee02e 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/Profile.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/Profile.php
@@ -99,6 +99,22 @@ public function getDuration(): float
return isset($this->ends['wt']) && isset($this->starts['wt']) ? $this->ends['wt'] - $this->starts['wt'] : 0;
}
+ /**
+ * Returns the start time in microseconds.
+ */
+ public function getStartTime(): float
+ {
+ return $this->starts['wt'] ?? 0.0;
+ }
+
+ /**
+ * Returns the end time in microseconds.
+ */
+ public function getEndTime(): float
+ {
+ return $this->ends['wt'] ?? 0.0;
+ }
+
/**
* Returns the memory usage in bytes.
*/
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Resources/core.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Resources/core.php
index 6e2fcfb07..bc0b27104 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Resources/core.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Resources/core.php
@@ -537,5 +537,5 @@ function twig_check_arrow_in_sandbox(Environment $env, $arrow, $thing, $type)
{
trigger_deprecation('twig/twig', '3.9', 'Using the internal "%s" function is deprecated.', __FUNCTION__);
- return CoreExtension::checkArrowInSandbox($env, $arrow, $thing, $type);
+ CoreExtension::checkArrow($env, $arrow, $thing, $type);
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Runtime/EscaperRuntime.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Runtime/EscaperRuntime.php
index a3ce17146..ce41e0a8b 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Runtime/EscaperRuntime.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Runtime/EscaperRuntime.php
@@ -52,6 +52,9 @@ public function getEscapers()
return $this->escapers;
}
+ /**
+ * @param array, string[]> $safeClasses
+ */
public function setSafeClasses(array $safeClasses = [])
{
$this->safeClasses = [];
@@ -61,6 +64,10 @@ public function setSafeClasses(array $safeClasses = [])
}
}
+ /**
+ * @param class-string<\Stringable> $class
+ * @param string[] $strategies
+ */
public function addSafeClass(string $class, array $strategies)
{
$class = ltrim($class, '\\');
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Sandbox/SecurityPolicy.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Sandbox/SecurityPolicy.php
index 988e37216..b0d054260 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Sandbox/SecurityPolicy.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Sandbox/SecurityPolicy.php
@@ -50,7 +50,7 @@ public function setAllowedMethods(array $methods): void
{
$this->allowedMethods = [];
foreach ($methods as $class => $m) {
- $this->allowedMethods[$class] = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, \is_array($m) ? $m : [$m]);
+ $this->allowedMethods[$class] = array_map('strtolower', \is_array($m) ? $m : [$m]);
}
}
@@ -98,7 +98,7 @@ public function checkMethodAllowed($obj, $method): void
}
$allowed = false;
- $method = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
+ $method = strtolower($method);
foreach ($this->allowedMethods as $class => $methods) {
if ($obj instanceof $class && \in_array($method, $methods)) {
$allowed = true;
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Template.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Template.php
index 7b3ce8161..26f5b5d81 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Template.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Template.php
@@ -13,7 +13,6 @@
namespace Twig;
use Twig\Error\Error;
-use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
/**
@@ -37,6 +36,7 @@ abstract class Template
protected $parents = [];
protected $blocks = [];
protected $traits = [];
+ protected $traitAliases = [];
protected $extensions = [];
protected $sandbox;
@@ -80,23 +80,16 @@ public function getParent(array $context): self|TemplateWrapper|false
return $this->parent;
}
- try {
- if (!$parent = $this->doGetParent($context)) {
- return false;
- }
-
- if ($parent instanceof self || $parent instanceof TemplateWrapper) {
- return $this->parents[$parent->getSourceContext()->getName()] = $parent;
- }
+ if (!$parent = $this->doGetParent($context)) {
+ return false;
+ }
- if (!isset($this->parents[$parent])) {
- $this->parents[$parent] = $this->loadTemplate($parent);
- }
- } catch (LoaderError $e) {
- $e->setSourceContext(null);
- $e->guess();
+ if ($parent instanceof self || $parent instanceof TemplateWrapper) {
+ return $this->parents[$parent->getSourceContext()->getName()] = $parent;
+ }
- throw $e;
+ if (!isset($this->parents[$parent])) {
+ $this->parents[$parent] = $this->loadTemplate($parent);
}
return $this->parents[$parent];
@@ -325,6 +318,7 @@ protected function loadTemplate($template, $templateName = null, $line = null, $
/**
* @internal
+ * @return $this
*/
public function unwrap(): self
{
@@ -477,7 +471,7 @@ public function yieldBlock($name, array $context, array $blocks = [], $useBlocks
public function yieldParentBlock($name, array $context, array $blocks = []): iterable
{
if (isset($this->traits[$name])) {
- yield from $this->traits[$name][0]->yieldBlock($name, $context, $blocks, false);
+ yield from $this->traits[$name][0]->yieldBlock($this->traitAliases[$name] ?? $name, $context, $blocks, false);
} elseif ($parent = $this->getParent($context)) {
yield from $parent->unwrap()->yieldBlock($name, $context, $blocks, false);
} else {
@@ -485,6 +479,35 @@ public function yieldParentBlock($name, array $context, array $blocks = []): ite
}
}
+ protected function hasMacro(string $name, array $context): bool
+ {
+ if (method_exists($this, $name)) {
+ return true;
+ }
+
+ if (!$parent = $this->getParent($context)) {
+ return false;
+ }
+
+ return $parent->hasMacro($name, $context);
+ }
+
+ protected function getTemplateForMacro(string $name, array $context, int $line, Source $source): Template
+ {
+ if (method_exists($this, $name)) {
+ return $this;
+ }
+
+ $parent = $this;
+ while ($parent = $parent->getParent($context)) {
+ if (method_exists($parent, $name)) {
+ return $parent;
+ }
+ }
+
+ throw new RuntimeError(\sprintf('Macro "%s" is not defined in template "%s".', substr($name, \strlen('macro_')), $this->getTemplateName()), $line, $source);
+ }
+
/**
* Auto-generated method to display the template with the given context.
*
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Test/IntegrationTestCase.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Test/IntegrationTestCase.php
index 8690a809e..8c9d41f2a 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Test/IntegrationTestCase.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Test/IntegrationTestCase.php
@@ -146,10 +146,10 @@ public function getTests($name, $legacyTests = false)
throw new \InvalidArgumentException(\sprintf('Test "%s" is not valid.', str_replace($fixturesDir.'/', '', $file)));
}
- $tests[] = [str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs, $deprecation];
+ $tests[str_replace($fixturesDir.'/', '', $file)] = [str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs, $deprecation];
}
- if ($legacyTests && empty($tests)) {
+ if ($legacyTests && !$tests) {
// add a dummy test to avoid a PHPUnit message
return [['not', '-', '', [], '', []]];
}
@@ -245,7 +245,7 @@ protected function doIntegrationTest($file, $message, $condition, $templates, $e
$output = trim($template->render(eval($match[1].';')), "\n ");
} catch (\Exception $e) {
if (false !== $exception) {
- $this->assertSame(trim($exception), trim(\sprintf('%s: %s', \get_class($e), $e->getMessage())));
+ $this->assertStringMatchesFormat(trim($exception), trim(\sprintf('%s: %s', \get_class($e), $e->getMessage())));
return;
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php
index 0a6c1afb5..0c9507482 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php
@@ -11,8 +11,9 @@
namespace Twig\TokenParser;
-use Twig\Node\Expression\TempNameExpression;
+use Twig\Node\Expression\Variable\LocalVariable;
use Twig\Node\Node;
+use Twig\Node\Nodes;
use Twig\Node\PrintNode;
use Twig\Node\SetNode;
use Twig\Token;
@@ -31,21 +32,17 @@ final class ApplyTokenParser extends AbstractTokenParser
public function parse(Token $token): Node
{
$lineno = $token->getLine();
- $name = $this->parser->getVarName();
-
- $ref = new TempNameExpression($name, $lineno);
- $ref->setAttribute('always_defined', true);
-
+ $ref = new LocalVariable(null, $lineno);
$filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref);
$this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
$body = $this->parser->subparse([$this, 'decideApplyEnd'], true);
$this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
- return new Node([
+ return new Nodes([
new SetNode(true, $ref, $body, $lineno),
new PrintNode($filter, $lineno),
- ], [], $lineno);
+ ], $lineno);
}
public function decideApplyEnd(Token $token): bool
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/BlockTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/BlockTokenParser.php
index 81d675db0..3561b99cd 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/BlockTokenParser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/BlockTokenParser.php
@@ -15,7 +15,9 @@
use Twig\Error\SyntaxError;
use Twig\Node\BlockNode;
use Twig\Node\BlockReferenceNode;
+use Twig\Node\EmptyNode;
use Twig\Node\Node;
+use Twig\Node\Nodes;
use Twig\Node\PrintNode;
use Twig\Token;
@@ -36,7 +38,7 @@ public function parse(Token $token): Node
$lineno = $token->getLine();
$stream = $this->parser->getStream();
$name = $stream->expect(Token::NAME_TYPE)->getValue();
- $this->parser->setBlock($name, $block = new BlockNode($name, new Node([]), $lineno));
+ $this->parser->setBlock($name, $block = new BlockNode($name, new EmptyNode(), $lineno));
$this->parser->pushLocalScope();
$this->parser->pushBlockStack($name);
@@ -50,7 +52,7 @@ public function parse(Token $token): Node
}
}
} else {
- $body = new Node([
+ $body = new Nodes([
new PrintNode($this->parser->getExpressionParser()->parseExpression(), $lineno),
]);
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php
index 86ddfdfba..a93afe8cd 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php
@@ -13,6 +13,7 @@
namespace Twig\TokenParser;
use Twig\Error\SyntaxError;
+use Twig\Node\EmptyNode;
use Twig\Node\Node;
use Twig\Token;
@@ -39,7 +40,7 @@ public function parse(Token $token): Node
$stream->expect(Token::BLOCK_END_TYPE);
- return new Node([], [], $token->getLine());
+ return new EmptyNode($token->getLine());
}
public function getTag(): string
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ForTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ForTokenParser.php
index cf655f842..c0a0e3c29 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ForTokenParser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ForTokenParser.php
@@ -12,7 +12,7 @@
namespace Twig\TokenParser;
-use Twig\Node\Expression\AssignNameExpression;
+use Twig\Node\Expression\Variable\AssignContextVariable;
use Twig\Node\ForNode;
use Twig\Node\Node;
use Twig\Token;
@@ -50,13 +50,13 @@ public function parse(Token $token): Node
if (\count($targets) > 1) {
$keyTarget = $targets->getNode('0');
- $keyTarget = new AssignNameExpression($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine());
+ $keyTarget = new AssignContextVariable($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine());
$valueTarget = $targets->getNode('1');
} else {
- $keyTarget = new AssignNameExpression('_key', $lineno);
+ $keyTarget = new AssignContextVariable('_key', $lineno);
$valueTarget = $targets->getNode('0');
}
- $valueTarget = new AssignNameExpression($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine());
+ $valueTarget = new AssignContextVariable($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine());
return new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, $lineno);
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/FromTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/FromTokenParser.php
index 2ccff5fbe..3bb4201a3 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/FromTokenParser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/FromTokenParser.php
@@ -11,7 +11,9 @@
namespace Twig\TokenParser;
-use Twig\Node\Expression\AssignNameExpression;
+use Twig\Node\Expression\Variable\AssignContextVariable;
+use Twig\Node\Expression\Variable\AssignTemplateVariable;
+use Twig\Node\Expression\Variable\TemplateVariable;
use Twig\Node\ImportNode;
use Twig\Node\Node;
use Twig\Token;
@@ -35,9 +37,10 @@ public function parse(Token $token): Node
while (true) {
$name = $stream->expect(Token::NAME_TYPE)->getValue();
- $alias = $name;
if ($stream->nextIf('as')) {
- $alias = $stream->expect(Token::NAME_TYPE)->getValue();
+ $alias = new AssignContextVariable($stream->expect(Token::NAME_TYPE)->getValue(), $token->getLine());
+ } else {
+ $alias = new AssignContextVariable($name, $token->getLine());
}
$targets[$name] = $alias;
@@ -49,11 +52,11 @@ public function parse(Token $token): Node
$stream->expect(Token::BLOCK_END_TYPE);
- $var = new AssignNameExpression($this->parser->getVarName(), $token->getLine());
- $node = new ImportNode($macro, $var, $token->getLine(), $this->parser->isMainScope());
+ $internalRef = new AssignTemplateVariable(new TemplateVariable(null, $token->getLine()), $this->parser->isMainScope());
+ $node = new ImportNode($macro, $internalRef, $token->getLine());
foreach ($targets as $name => $alias) {
- $this->parser->addImportedSymbol('function', $alias, 'macro_'.$name, $var);
+ $this->parser->addImportedSymbol('function', $alias->getAttribute('name'), 'macro_'.$name, $internalRef);
}
return $node;
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/GuardTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/GuardTokenParser.php
new file mode 100644
index 000000000..17b221d4c
--- /dev/null
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/GuardTokenParser.php
@@ -0,0 +1,69 @@
+parser->getStream();
+ $typeToken = $stream->expect(Token::NAME_TYPE);
+ if (!in_array($typeToken->getValue(), ['function', 'filter', 'test'])) {
+ throw new SyntaxError(\sprintf('Supported guard types are function, filter and test, "%s" given.', $typeToken->getValue()), $typeToken->getLine(), $stream->getSourceContext());
+ }
+ $method = 'get'.$typeToken->getValue();
+
+ $nameToken = $stream->expect(Token::NAME_TYPE);
+
+ $exists = null !== $this->parser->getEnvironment()->$method($nameToken->getValue());
+
+ $stream->expect(Token::BLOCK_END_TYPE);
+ if ($exists) {
+ $body = $this->parser->subparse([$this, 'decideGuardFork']);
+ } else {
+ $body = new EmptyNode();
+ $this->parser->subparseIgnoreUnknownTwigCallables([$this, 'decideGuardFork']);
+ }
+ $else = new EmptyNode();
+ if ('else' === $stream->next()->getValue()) {
+ $stream->expect(Token::BLOCK_END_TYPE);
+ $else = $this->parser->subparse([$this, 'decideGuardEnd'], true);
+ }
+ $stream->expect(Token::BLOCK_END_TYPE);
+
+ return new Nodes([$exists ? $body : $else]);
+ }
+
+ public function decideGuardFork(Token $token): bool
+ {
+ return $token->test(['else', 'endguard']);
+ }
+
+ public function decideGuardEnd(Token $token): bool
+ {
+ return $token->test(['endguard']);
+ }
+
+ public function getTag(): string
+ {
+ return 'guard';
+ }
+}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/IfTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/IfTokenParser.php
index 4ea6f3df9..6b9010563 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/IfTokenParser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/IfTokenParser.php
@@ -15,6 +15,7 @@
use Twig\Error\SyntaxError;
use Twig\Node\IfNode;
use Twig\Node\Node;
+use Twig\Node\Nodes;
use Twig\Token;
/**
@@ -69,7 +70,7 @@ public function parse(Token $token): Node
$stream->expect(Token::BLOCK_END_TYPE);
- return new IfNode(new Node($tests), $else, $lineno);
+ return new IfNode(new Nodes($tests), $else, $lineno);
}
public function decideIfFork(Token $token): bool
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ImportTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ImportTokenParser.php
index f20f35ab3..5b3a5f2b8 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ImportTokenParser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ImportTokenParser.php
@@ -11,7 +11,8 @@
namespace Twig\TokenParser;
-use Twig\Node\Expression\AssignNameExpression;
+use Twig\Node\Expression\Variable\AssignTemplateVariable;
+use Twig\Node\Expression\Variable\TemplateVariable;
use Twig\Node\ImportNode;
use Twig\Node\Node;
use Twig\Token;
@@ -29,12 +30,12 @@ public function parse(Token $token): Node
{
$macro = $this->parser->getExpressionParser()->parseExpression();
$this->parser->getStream()->expect(Token::NAME_TYPE, 'as');
- $var = new AssignNameExpression($this->parser->getStream()->expect(Token::NAME_TYPE)->getValue(), $token->getLine());
+ $name = $this->parser->getStream()->expect(Token::NAME_TYPE)->getValue();
+ $var = new AssignTemplateVariable(new TemplateVariable($name, $token->getLine()), $this->parser->isMainScope());
$this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
+ $this->parser->addImportedSymbol('template', $name);
- $this->parser->addImportedSymbol('template', $var->getAttribute('name'));
-
- return new ImportNode($macro, $var, $token->getLine(), $this->parser->isMainScope());
+ return new ImportNode($macro, $var, $token->getLine());
}
public function getTag(): string
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/MacroTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/MacroTokenParser.php
index c7762075c..7d47821b2 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/MacroTokenParser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/MacroTokenParser.php
@@ -13,6 +13,12 @@
use Twig\Error\SyntaxError;
use Twig\Node\BodyNode;
+use Twig\Node\EmptyNode;
+use Twig\Node\Expression\ArrayExpression;
+use Twig\Node\Expression\ConstantExpression;
+use Twig\Node\Expression\Unary\NegUnary;
+use Twig\Node\Expression\Unary\PosUnary;
+use Twig\Node\Expression\Variable\LocalVariable;
use Twig\Node\MacroNode;
use Twig\Node\Node;
use Twig\Token;
@@ -33,8 +39,7 @@ public function parse(Token $token): Node
$lineno = $token->getLine();
$stream = $this->parser->getStream();
$name = $stream->expect(Token::NAME_TYPE)->getValue();
-
- $arguments = $this->parser->getExpressionParser()->parseArguments(true, true);
+ $arguments = $this->parseDefinition();
$stream->expect(Token::BLOCK_END_TYPE);
$this->parser->pushLocalScope();
@@ -51,7 +56,7 @@ public function parse(Token $token): Node
$this->parser->setMacro($name, new MacroNode($name, new BodyNode([$body]), $arguments, $lineno));
- return new Node([], [], $lineno);
+ return new EmptyNode($lineno);
}
public function decideBlockEnd(Token $token): bool
@@ -63,4 +68,56 @@ public function getTag(): string
{
return 'macro';
}
+
+ private function parseDefinition(): ArrayExpression
+ {
+ $arguments = new ArrayExpression([], $this->parser->getCurrentToken()->getLine());
+ $stream = $this->parser->getStream();
+ $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis');
+ while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) {
+ if (count($arguments)) {
+ $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma');
+
+ // if the comma above was a trailing comma, early exit the argument parse loop
+ if ($stream->test(Token::PUNCTUATION_TYPE, ')')) {
+ break;
+ }
+ }
+
+ $token = $stream->expect(Token::NAME_TYPE, null, 'An argument must be a name');
+ $name = new LocalVariable($token->getValue(), $this->parser->getCurrentToken()->getLine());
+ if ($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) {
+ $default = $this->parser->getExpressionParser()->parseExpression();
+ } else {
+ $default = new ConstantExpression(null, $this->parser->getCurrentToken()->getLine());
+ $default->setAttribute('is_implicit', true);
+ }
+
+ if (!$this->checkConstantExpression($default)) {
+ throw new SyntaxError('A default value for an argument must be a constant (a boolean, a string, a number, a sequence, or a mapping).', $token->getLine(), $stream->getSourceContext());
+ }
+ $arguments->addElement($default, $name);
+ }
+ $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis');
+
+ return $arguments;
+ }
+
+ // checks that the node only contains "constant" elements
+ private function checkConstantExpression(Node $node): bool
+ {
+ if (!($node instanceof ConstantExpression || $node instanceof ArrayExpression
+ || $node instanceof NegUnary || $node instanceof PosUnary
+ )) {
+ return false;
+ }
+
+ foreach ($node as $n) {
+ if (!$this->checkConstantExpression($n)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
}
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php
index 70869fbc5..a7260ac46 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php
@@ -34,6 +34,8 @@ final class SandboxTokenParser extends AbstractTokenParser
public function parse(Token $token): Node
{
$stream = $this->parser->getStream();
+ trigger_deprecation('twig/twig', '3.15', \sprintf('The "sandbox" tag is deprecated in "%s" at line %d.', $stream->getSourceContext()->getName(), $token->getLine()));
+
$stream->expect(Token::BLOCK_END_TYPE);
$body = $this->parser->subparse([$this, 'decideBlockEnd'], true);
$stream->expect(Token::BLOCK_END_TYPE);
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/TypesTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/TypesTokenParser.php
index 2e0850e7e..b97eb3b2e 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/TypesTokenParser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/TypesTokenParser.php
@@ -20,7 +20,7 @@
/**
* Declare variable types.
*
- * {% types {foo: 'int', bar?: 'string'} %}
+ * {% types {foo: 'number', bar?: 'string'} %}
*
* @author Jeroen Versteeg
*
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/UseTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/UseTokenParser.php
index 1b96b4047..ebd95aa31 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/UseTokenParser.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/UseTokenParser.php
@@ -12,8 +12,10 @@
namespace Twig\TokenParser;
use Twig\Error\SyntaxError;
+use Twig\Node\EmptyNode;
use Twig\Node\Expression\ConstantExpression;
use Twig\Node\Node;
+use Twig\Node\Nodes;
use Twig\Token;
/**
@@ -61,9 +63,9 @@ public function parse(Token $token): Node
$stream->expect(Token::BLOCK_END_TYPE);
- $this->parser->addTrait(new Node(['template' => $template, 'targets' => new Node($targets)]));
+ $this->parser->addTrait(new Nodes(['template' => $template, 'targets' => new Nodes($targets)]));
- return new Node([], [], $token->getLine());
+ return new EmptyNode($token->getLine());
}
public function getTag(): string
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenStream.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenStream.php
index c91701bfe..35aa9714f 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenStream.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenStream.php
@@ -27,7 +27,11 @@ public function __construct(
private array $tokens,
private ?Source $source = null,
) {
- $this->source = $source ?: new Source('', '');
+ if (null === $this->source) {
+ trigger_deprecation('twig/twig', '3.16', \sprintf('Not passing a "%s" object to "%s" constructor is deprecated.', Source::class, __CLASS__));
+
+ $this->source = new Source('', '');
+ }
}
public function __toString()
@@ -117,11 +121,6 @@ public function getCurrent(): Token
return $this->tokens[$this->current];
}
- /**
- * Gets the source associated with this stream.
- *
- * @internal
- */
public function getSourceContext(): Source
{
return $this->source;
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TwigFilter.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TwigFilter.php
index 70b1f8f3f..dece51843 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/TwigFilter.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TwigFilter.php
@@ -54,12 +54,12 @@ public function getSafe(Node $filterArgs): ?array
return $this->options['is_safe_callback']($filterArgs);
}
- return null;
+ return [];
}
- public function getPreservesSafety(): ?array
+ public function getPreservesSafety(): array
{
- return $this->options['preserves_safety'];
+ return $this->options['preserves_safety'] ?? [];
}
public function getPreEscape(): ?string
diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Util/CallableArgumentsExtractor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Util/CallableArgumentsExtractor.php
index 8811ca9c8..d8625169d 100644
--- a/.extlib/simplesamlphp/vendor/twig/twig/src/Util/CallableArgumentsExtractor.php
+++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Util/CallableArgumentsExtractor.php
@@ -40,22 +40,25 @@ public function __construct(
public function extractArguments(Node $arguments): array
{
$extractedArguments = [];
+ $extractedArgumentNameMap = [];
$named = false;
foreach ($arguments as $name => $node) {
if (!\is_int($name)) {
$named = true;
- $name = $this->normalizeName($name);
} elseif ($named) {
throw new SyntaxError(\sprintf('Positional arguments cannot be used after named arguments for %s "%s".', $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext());
}
- $extractedArguments[$name] = $node;
+ $extractedArguments[$normalizedName = $this->normalizeName($name)] = $node;
+ $extractedArgumentNameMap[$normalizedName] = $name;
}
if (!$named && !$this->twigCallable->isVariadic()) {
$min = $this->twigCallable->getMinimalNumberOfRequiredArguments();
if (\count($extractedArguments) < $this->rc->getReflector()->getNumberOfRequiredParameters() - $min) {
- throw new SyntaxError(\sprintf('Value for argument "%s" is required for %s "%s".', $this->rc->getReflector()->getParameters()[$min + \count($extractedArguments)]->getName(), $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext());
+ $argName = $this->toSnakeCase($this->rc->getReflector()->getParameters()[$min + \count($extractedArguments)]->getName());
+
+ throw new SyntaxError(\sprintf('Value for argument "%s" is required for %s "%s".', $argName, $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext());
}
return $extractedArguments;
@@ -71,37 +74,38 @@ public function extractArguments(Node $arguments): array
[$callableParameters, $isPhpVariadic] = $this->getCallableParameters();
$arguments = [];
- $names = [];
+ $callableParameterNames = [];
$missingArguments = [];
$optionalArguments = [];
$pos = 0;
foreach ($callableParameters as $callableParameter) {
- $name = $this->normalizeName($callableParameter->name);
+ $callableParameterName = $callableParameter->name;
if (\PHP_VERSION_ID >= 80000 && 'range' === $callable) {
- if ('start' === $name) {
- $name = 'low';
- } elseif ('end' === $name) {
- $name = 'high';
+ if ('start' === $callableParameterName) {
+ $callableParameterName = 'low';
+ } elseif ('end' === $callableParameterName) {
+ $callableParameterName = 'high';
}
}
- $names[] = $name;
+ $callableParameterNames[] = $callableParameterName;
+ $normalizedCallableParameterName = $this->normalizeName($callableParameterName);
- if (\array_key_exists($name, $extractedArguments)) {
+ if (\array_key_exists($normalizedCallableParameterName, $extractedArguments)) {
if (\array_key_exists($pos, $extractedArguments)) {
- throw new SyntaxError(\sprintf('Argument "%s" is defined twice for %s "%s".', $name, $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext());
+ throw new SyntaxError(\sprintf('Argument "%s" is defined twice for %s "%s".', $callableParameterName, $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext());
}
if (\count($missingArguments)) {
throw new SyntaxError(\sprintf(
'Argument "%s" could not be assigned for %s "%s(%s)" because it is mapped to an internal PHP function which cannot determine default value for optional argument%s "%s".',
- $name, $this->twigCallable->getType(), $this->twigCallable->getName(), implode(', ', $names), \count($missingArguments) > 1 ? 's' : '', implode('", "', $missingArguments)
+ $callableParameterName, $this->twigCallable->getType(), $this->twigCallable->getName(), implode(', ', array_map([$this, 'toSnakeCase'], $callableParameterNames)), \count($missingArguments) > 1 ? 's' : '', implode('", "', $missingArguments)
), $this->node->getTemplateLine(), $this->node->getSourceContext());
}
$arguments = array_merge($arguments, $optionalArguments);
- $arguments[] = $extractedArguments[$name];
- unset($extractedArguments[$name]);
+ $arguments[] = $extractedArguments[$normalizedCallableParameterName];
+ unset($extractedArguments[$normalizedCallableParameterName]);
$optionalArguments = [];
} elseif (\array_key_exists($pos, $extractedArguments)) {
$arguments = array_merge($arguments, $optionalArguments);
@@ -116,9 +120,9 @@ public function extractArguments(Node $arguments): array
break;
}
- $missingArguments[] = $name;
+ $missingArguments[] = $callableParameterName;
} else {
- throw new SyntaxError(\sprintf('Value for argument "%s" is required for %s "%s".', $name, $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext());
+ throw new SyntaxError(\sprintf('Value for argument "%s" is required for %s "%s".', $this->toSnakeCase($callableParameterName), $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext());
}
}
@@ -128,7 +132,13 @@ public function extractArguments(Node $arguments): array
if (\is_int($key)) {
$arbitraryArguments->addElement($value);
} else {
- $arbitraryArguments->addElement($value, new ConstantExpression($key, $this->node->getTemplateLine()));
+ $originalKey = $extractedArgumentNameMap[$key];
+ if ($originalKey !== $this->toSnakeCase($originalKey)) {
+ trigger_deprecation('twig/twig', '3.15', \sprintf('Using "snake_case" for variadic arguments is required for a smooth upgrade with Twig 4.0; rename "%s" to "%s" in "%s" at line %d.', $originalKey, $this->toSnakeCase($originalKey), $this->node->getSourceContext()->getName(), $this->node->getTemplateLine()));
+ }
+ $arbitraryArguments->addElement($value, new ConstantExpression($this->toSnakeCase($originalKey), $this->node->getTemplateLine()));
+ // I Twig 4.0, don't convert the key:
+ // $arbitraryArguments->addElement($value, new ConstantExpression($originalKey, $this->node->getTemplateLine()));
}
unset($extractedArguments[$key]);
}
@@ -151,7 +161,7 @@ public function extractArguments(Node $arguments): array
throw new SyntaxError(
\sprintf(
'Unknown argument%s "%s" for %s "%s(%s)".',
- \count($extractedArguments) > 1 ? 's' : '', implode('", "', array_keys($extractedArguments)), $this->twigCallable->getType(), $this->twigCallable->getName(), implode(', ', $names)
+ \count($extractedArguments) > 1 ? 's' : '', implode('", "', array_keys($extractedArguments)), $this->twigCallable->getType(), $this->twigCallable->getName(), implode(', ', array_map([$this, 'toSnakeCase'], $callableParameterNames))
),
$unknownArgument ? $unknownArgument->getTemplateLine() : $this->node->getTemplateLine(),
$unknownArgument ? $unknownArgument->getSourceContext() : $this->node->getSourceContext()
@@ -163,7 +173,12 @@ public function extractArguments(Node $arguments): array
private function normalizeName(string $name): string
{
- return strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], ['\\1_\\2', '\\1_\\2'], $name));
+ return strtolower(str_replace('_', '', $name));
+ }
+
+ private function toSnakeCase(string $name): string
+ {
+ return strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z0-9])([A-Z])/'], '\1_\2', $name));
}
private function getCallableParameters(): array
diff --git a/README.md b/README.md
index 1a7a091dd..4ac6b489b 100644
--- a/README.md
+++ b/README.md
@@ -68,7 +68,7 @@ Features not yet implemented:
| Moodle version | Branch | PHP | SimpleSAMLphp |
| ----------------- | ------------------ |-----------|---------------|
-| Moodle 4.4+ | `MOODLE_404_STABLE`| 8.1+ | v2.3.3 |
+| Moodle 4.4+ | `MOODLE_404_STABLE`| 8.1+ | v2.3.5 |
| Moodle 3.9 to 4.3 | `MOODLE_39_STABLE` | 7.4+ | v2.0.5 |
| Totara 13+ | `TOTARA_13_STABLE` | 7.4+ | v2.0.5 |
| Totara 12 | `TOTARA_12_STABLE` | 7.1 - 7.2 | v1.19.1 |