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 |