Repository: PrefectHQ/ui Branch: master Commit: 991683a4b050 Files: 1132 Total size: 4.3 MB Directory structure: gitextract_a0dbiq0z/ ├── .browserslistrc ├── .dockerignore ├── .eslintignore ├── .eslintrc.js ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug---.md │ │ └── general---.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── codeql-config.yml │ └── workflows/ │ └── codeql-analysis.yml ├── .gitignore ├── .nvmrc ├── .prettierignore ├── .prettierrc.js ├── .salesforce_env_development ├── .salesforce_env_production ├── .stylelintignore ├── Changelog.md ├── Dockerfile ├── LICENSE ├── README.md ├── babel.config.js ├── changelog-template.hbs ├── export.sh ├── file-downloader.js ├── intercept.sh ├── jest.config.js ├── netlify.toml ├── nginx.conf ├── package.json ├── postcss.config.js ├── public/ │ ├── _redirects │ ├── browserconfig.xml │ ├── fonts/ │ │ ├── font-awesome/ │ │ │ ├── LICENSE.txt │ │ │ ├── README.md │ │ │ ├── css/ │ │ │ │ ├── all.css │ │ │ │ ├── brands.css │ │ │ │ ├── duotone.css │ │ │ │ ├── fontawesome.css │ │ │ │ ├── regular.css │ │ │ │ ├── solid.css │ │ │ │ └── svg-with-js.css │ │ │ ├── current-ui.yaml │ │ │ ├── js/ │ │ │ │ ├── all.js │ │ │ │ ├── brands.js │ │ │ │ ├── duotone.js │ │ │ │ ├── fontawesome.js │ │ │ │ ├── regular.js │ │ │ │ └── solid.js │ │ │ ├── js-packages/ │ │ │ │ └── @fortawesome/ │ │ │ │ ├── fontawesome-common-types/ │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ ├── README.md │ │ │ │ │ ├── attribution.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── package.json │ │ │ │ ├── fontawesome-pro/ │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ ├── attribution.js │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── all.css │ │ │ │ │ │ ├── brands.css │ │ │ │ │ │ ├── duotone.css │ │ │ │ │ │ ├── fontawesome.css │ │ │ │ │ │ ├── regular.css │ │ │ │ │ │ ├── solid.css │ │ │ │ │ │ └── svg-with-js.css │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── all.js │ │ │ │ │ │ ├── brands.js │ │ │ │ │ │ ├── duotone.js │ │ │ │ │ │ ├── fontawesome.js │ │ │ │ │ │ ├── regular.js │ │ │ │ │ │ └── solid.js │ │ │ │ │ ├── less/ │ │ │ │ │ │ ├── _animated.less │ │ │ │ │ │ ├── _bordered-pulled.less │ │ │ │ │ │ ├── _core.less │ │ │ │ │ │ ├── _fixed-width.less │ │ │ │ │ │ ├── _icons.less │ │ │ │ │ │ ├── _larger.less │ │ │ │ │ │ ├── _list.less │ │ │ │ │ │ ├── _mixins.less │ │ │ │ │ │ ├── _rotated-flipped.less │ │ │ │ │ │ ├── _screen-reader.less │ │ │ │ │ │ ├── _stacked.less │ │ │ │ │ │ ├── _variables.less │ │ │ │ │ │ ├── brands.less │ │ │ │ │ │ ├── duotone.less │ │ │ │ │ │ ├── fontawesome.less │ │ │ │ │ │ ├── regular.less │ │ │ │ │ │ └── solid.less │ │ │ │ │ ├── metadata/ │ │ │ │ │ │ ├── categories.yml │ │ │ │ │ │ ├── icons.yml │ │ │ │ │ │ └── sponsors.yml │ │ │ │ │ ├── package.json │ │ │ │ │ └── scss/ │ │ │ │ │ ├── _animated.scss │ │ │ │ │ ├── _bordered-pulled.scss │ │ │ │ │ ├── _core.scss │ │ │ │ │ ├── _fixed-width.scss │ │ │ │ │ ├── _icons.scss │ │ │ │ │ ├── _larger.scss │ │ │ │ │ ├── _list.scss │ │ │ │ │ ├── _mixins.scss │ │ │ │ │ ├── _rotated-flipped.scss │ │ │ │ │ ├── _screen-reader.scss │ │ │ │ │ ├── _stacked.scss │ │ │ │ │ ├── _variables.scss │ │ │ │ │ ├── brands.scss │ │ │ │ │ ├── duotone.scss │ │ │ │ │ ├── fontawesome.scss │ │ │ │ │ ├── regular.scss │ │ │ │ │ └── solid.scss │ │ │ │ ├── fontawesome-svg-core/ │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ ├── README.md │ │ │ │ │ ├── attribution.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── index.es.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── styles.css │ │ │ │ ├── pro-brands-svg-icons/ │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ ├── attribution.js │ │ │ │ │ ├── faAws.d.ts │ │ │ │ │ ├── faAws.js │ │ │ │ │ ├── faCcAmazonPay.d.ts │ │ │ │ │ ├── faCcAmazonPay.js │ │ │ │ │ ├── faCcAmex.d.ts │ │ │ │ │ ├── faCcAmex.js │ │ │ │ │ ├── faCcApplePay.d.ts │ │ │ │ │ ├── faCcApplePay.js │ │ │ │ │ ├── faCcDinersClub.d.ts │ │ │ │ │ ├── faCcDinersClub.js │ │ │ │ │ ├── faCcDiscover.d.ts │ │ │ │ │ ├── faCcDiscover.js │ │ │ │ │ ├── faCcJcb.d.ts │ │ │ │ │ ├── faCcJcb.js │ │ │ │ │ ├── faCcMastercard.d.ts │ │ │ │ │ ├── faCcMastercard.js │ │ │ │ │ ├── faCcPaypal.d.ts │ │ │ │ │ ├── faCcPaypal.js │ │ │ │ │ ├── faCcStripe.d.ts │ │ │ │ │ ├── faCcStripe.js │ │ │ │ │ ├── faCcVisa.d.ts │ │ │ │ │ ├── faCcVisa.js │ │ │ │ │ ├── faDiscourse.d.ts │ │ │ │ │ ├── faDiscourse.js │ │ │ │ │ ├── faDocker.d.ts │ │ │ │ │ ├── faDocker.js │ │ │ │ │ ├── faGithub.d.ts │ │ │ │ │ ├── faGithub.js │ │ │ │ │ ├── faInstagram.d.ts │ │ │ │ │ ├── faInstagram.js │ │ │ │ │ ├── faMicrosoft.d.ts │ │ │ │ │ ├── faMicrosoft.js │ │ │ │ │ ├── faRev.d.ts │ │ │ │ │ ├── faRev.js │ │ │ │ │ ├── faSlack.d.ts │ │ │ │ │ ├── faSlack.js │ │ │ │ │ ├── faTwitter.d.ts │ │ │ │ │ ├── faTwitter.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── index.es.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── pro-duotone-svg-icons/ │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ ├── README.md │ │ │ │ │ ├── attribution.js │ │ │ │ │ ├── faAbacus.d.ts │ │ │ │ │ ├── faAbacus.js │ │ │ │ │ ├── faAlignSlash.d.ts │ │ │ │ │ ├── faAlignSlash.js │ │ │ │ │ ├── faAtomAlt.d.ts │ │ │ │ │ ├── faAtomAlt.js │ │ │ │ │ ├── faBadgeCheck.d.ts │ │ │ │ │ ├── faBadgeCheck.js │ │ │ │ │ ├── faBell.d.ts │ │ │ │ │ ├── faBell.js │ │ │ │ │ ├── faBooks.d.ts │ │ │ │ │ ├── faBooks.js │ │ │ │ │ ├── faBracketsCurly.d.ts │ │ │ │ │ ├── faBracketsCurly.js │ │ │ │ │ ├── faChartNetwork.d.ts │ │ │ │ │ ├── faChartNetwork.js │ │ │ │ │ ├── faChartScatter.d.ts │ │ │ │ │ ├── faChartScatter.js │ │ │ │ │ ├── faCheck.d.ts │ │ │ │ │ ├── faCheck.js │ │ │ │ │ ├── faCircle.d.ts │ │ │ │ │ ├── faCircle.js │ │ │ │ │ ├── faClouds.d.ts │ │ │ │ │ ├── faClouds.js │ │ │ │ │ ├── faCogs.d.ts │ │ │ │ │ ├── faCogs.js │ │ │ │ │ ├── faCommentDots.d.ts │ │ │ │ │ ├── faCommentDots.js │ │ │ │ │ ├── faConciergeBell.d.ts │ │ │ │ │ ├── faConciergeBell.js │ │ │ │ │ ├── faDotCircle.d.ts │ │ │ │ │ ├── faDotCircle.js │ │ │ │ │ ├── faEnvelope.d.ts │ │ │ │ │ ├── faEnvelope.js │ │ │ │ │ ├── faExchangeAlt.d.ts │ │ │ │ │ ├── faExchangeAlt.js │ │ │ │ │ ├── faFileAlt.d.ts │ │ │ │ │ ├── faFileAlt.js │ │ │ │ │ ├── faFileCode.d.ts │ │ │ │ │ ├── faFileCode.js │ │ │ │ │ ├── faGlobe.d.ts │ │ │ │ │ ├── faGlobe.js │ │ │ │ │ ├── faGlobeAfrica.d.ts │ │ │ │ │ ├── faGlobeAfrica.js │ │ │ │ │ ├── faGlobeAmericas.d.ts │ │ │ │ │ ├── faGlobeAmericas.js │ │ │ │ │ ├── faGlobeAsia.d.ts │ │ │ │ │ ├── faGlobeAsia.js │ │ │ │ │ ├── faGlobeEurope.d.ts │ │ │ │ │ ├── faGlobeEurope.js │ │ │ │ │ ├── faGraduationCap.d.ts │ │ │ │ │ ├── faGraduationCap.js │ │ │ │ │ ├── faHistory.d.ts │ │ │ │ │ ├── faHistory.js │ │ │ │ │ ├── faKey.d.ts │ │ │ │ │ ├── faKey.js │ │ │ │ │ ├── faKeySkeleton.d.ts │ │ │ │ │ ├── faKeySkeleton.js │ │ │ │ │ ├── faLaptop.d.ts │ │ │ │ │ ├── faLaptop.js │ │ │ │ │ ├── faLaptopCode.d.ts │ │ │ │ │ ├── faLaptopCode.js │ │ │ │ │ ├── faLaptopHouse.d.ts │ │ │ │ │ ├── faLaptopHouse.js │ │ │ │ │ ├── faLifeRing.d.ts │ │ │ │ │ ├── faLifeRing.js │ │ │ │ │ ├── faLightbulb.d.ts │ │ │ │ │ ├── faLightbulb.js │ │ │ │ │ ├── faListAlt.d.ts │ │ │ │ │ ├── faListAlt.js │ │ │ │ │ ├── faListUl.d.ts │ │ │ │ │ ├── faListUl.js │ │ │ │ │ ├── faLockAlt.d.ts │ │ │ │ │ ├── faLockAlt.js │ │ │ │ │ ├── faMapMarkerAlt.d.ts │ │ │ │ │ ├── faMapMarkerAlt.js │ │ │ │ │ ├── faMoonStars.d.ts │ │ │ │ │ ├── faMoonStars.js │ │ │ │ │ ├── faNetworkWired.d.ts │ │ │ │ │ ├── faNetworkWired.js │ │ │ │ │ ├── faPlanetRinged.d.ts │ │ │ │ │ ├── faPlanetRinged.js │ │ │ │ │ ├── faQuestionCircle.d.ts │ │ │ │ │ ├── faQuestionCircle.js │ │ │ │ │ ├── faQuoteLeft.d.ts │ │ │ │ │ ├── faQuoteLeft.js │ │ │ │ │ ├── faRandom.d.ts │ │ │ │ │ ├── faRandom.js │ │ │ │ │ ├── faRocket.d.ts │ │ │ │ │ ├── faRocket.js │ │ │ │ │ ├── faSearch.d.ts │ │ │ │ │ ├── faSearch.js │ │ │ │ │ ├── faServer.d.ts │ │ │ │ │ ├── faServer.js │ │ │ │ │ ├── faSignOut.d.ts │ │ │ │ │ ├── faSignOut.js │ │ │ │ │ ├── faSirenOn.d.ts │ │ │ │ │ ├── faSirenOn.js │ │ │ │ │ ├── faSmile.d.ts │ │ │ │ │ ├── faSmile.js │ │ │ │ │ ├── faSnowman.d.ts │ │ │ │ │ ├── faSnowman.js │ │ │ │ │ ├── faSun.d.ts │ │ │ │ │ ├── faSun.js │ │ │ │ │ ├── faTasks.d.ts │ │ │ │ │ ├── faTasks.js │ │ │ │ │ ├── faUniversity.d.ts │ │ │ │ │ ├── faUniversity.js │ │ │ │ │ ├── faUser.d.ts │ │ │ │ │ ├── faUser.js │ │ │ │ │ ├── faUserHardHat.d.ts │ │ │ │ │ ├── faUserHardHat.js │ │ │ │ │ ├── faUserShield.d.ts │ │ │ │ │ ├── faUserShield.js │ │ │ │ │ ├── faUsers.d.ts │ │ │ │ │ ├── faUsers.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── index.es.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── pro-regular-svg-icons/ │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ ├── README.md │ │ │ │ │ ├── attribution.js │ │ │ │ │ ├── faCheckCircle.d.ts │ │ │ │ │ ├── faCheckCircle.js │ │ │ │ │ ├── faDesktop.d.ts │ │ │ │ │ ├── faDesktop.js │ │ │ │ │ ├── faEye.d.ts │ │ │ │ │ ├── faEye.js │ │ │ │ │ ├── faFileCode.d.ts │ │ │ │ │ ├── faFileCode.js │ │ │ │ │ ├── faInfo.d.ts │ │ │ │ │ ├── faInfo.js │ │ │ │ │ ├── faInfoCircle.d.ts │ │ │ │ │ ├── faInfoCircle.js │ │ │ │ │ ├── faPlus.d.ts │ │ │ │ │ ├── faPlus.js │ │ │ │ │ ├── faQuestionCircle.d.ts │ │ │ │ │ ├── faQuestionCircle.js │ │ │ │ │ ├── faRocket.d.ts │ │ │ │ │ ├── faRocket.js │ │ │ │ │ ├── faSave.d.ts │ │ │ │ │ ├── faSave.js │ │ │ │ │ ├── faSlash.d.ts │ │ │ │ │ ├── faSlash.js │ │ │ │ │ ├── faTimes.d.ts │ │ │ │ │ ├── faTimes.js │ │ │ │ │ ├── faUndo.d.ts │ │ │ │ │ ├── faUndo.js │ │ │ │ │ ├── faUndoAlt.d.ts │ │ │ │ │ ├── faUndoAlt.js │ │ │ │ │ ├── faUser.d.ts │ │ │ │ │ ├── faUser.js │ │ │ │ │ ├── faUserFriends.d.ts │ │ │ │ │ ├── faUserFriends.js │ │ │ │ │ ├── faUsers.d.ts │ │ │ │ │ ├── faUsers.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── index.es.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ └── pro-solid-svg-icons/ │ │ │ │ ├── LICENSE.txt │ │ │ │ ├── README.md │ │ │ │ ├── attribution.js │ │ │ │ ├── faAlarmExclamation.d.ts │ │ │ │ ├── faAlarmExclamation.js │ │ │ │ ├── faAlignLeft.d.ts │ │ │ │ ├── faAlignLeft.js │ │ │ │ ├── faBookDead.d.ts │ │ │ │ ├── faBookDead.js │ │ │ │ ├── faCheck.d.ts │ │ │ │ ├── faCheck.js │ │ │ │ ├── faCircle.d.ts │ │ │ │ ├── faCircle.js │ │ │ │ ├── faCloud.d.ts │ │ │ │ ├── faCloud.js │ │ │ │ ├── faCreditCard.d.ts │ │ │ │ ├── faCreditCard.js │ │ │ │ ├── faDesktop.d.ts │ │ │ │ ├── faDesktop.js │ │ │ │ ├── faEnvelope.d.ts │ │ │ │ ├── faEnvelope.js │ │ │ │ ├── faEye.d.ts │ │ │ │ ├── faEye.js │ │ │ │ ├── faFingerprint.d.ts │ │ │ │ ├── faFingerprint.js │ │ │ │ ├── faHistory.d.ts │ │ │ │ ├── faHistory.js │ │ │ │ ├── faHome.d.ts │ │ │ │ ├── faHome.js │ │ │ │ ├── faPlus.d.ts │ │ │ │ ├── faPlus.js │ │ │ │ ├── faRobot.d.ts │ │ │ │ ├── faRobot.js │ │ │ │ ├── faRocket.d.ts │ │ │ │ ├── faRocket.js │ │ │ │ ├── faSave.d.ts │ │ │ │ ├── faSave.js │ │ │ │ ├── faSlash.d.ts │ │ │ │ ├── faSlash.js │ │ │ │ ├── faSpinnerThird.d.ts │ │ │ │ ├── faSpinnerThird.js │ │ │ │ ├── faSquareFull.d.ts │ │ │ │ ├── faSquareFull.js │ │ │ │ ├── faTimes.d.ts │ │ │ │ ├── faTimes.js │ │ │ │ ├── faTimesCircle.d.ts │ │ │ │ ├── faTimesCircle.js │ │ │ │ ├── faUndo.d.ts │ │ │ │ ├── faUndo.js │ │ │ │ ├── faUndoAlt.d.ts │ │ │ │ ├── faUndoAlt.js │ │ │ │ ├── faUser.d.ts │ │ │ │ ├── faUser.js │ │ │ │ ├── faUsers.d.ts │ │ │ │ ├── faUsers.js │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.es.js │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── less/ │ │ │ │ ├── _animated.less │ │ │ │ ├── _bordered-pulled.less │ │ │ │ ├── _core.less │ │ │ │ ├── _fixed-width.less │ │ │ │ ├── _icons.less │ │ │ │ ├── _larger.less │ │ │ │ ├── _list.less │ │ │ │ ├── _mixins.less │ │ │ │ ├── _rotated-flipped.less │ │ │ │ ├── _screen-reader.less │ │ │ │ ├── _stacked.less │ │ │ │ ├── _variables.less │ │ │ │ ├── brands.less │ │ │ │ ├── duotone.less │ │ │ │ ├── fontawesome.less │ │ │ │ ├── regular.less │ │ │ │ └── solid.less │ │ │ ├── metadata/ │ │ │ │ ├── categories.yml │ │ │ │ ├── icons.json │ │ │ │ ├── icons.yml │ │ │ │ └── sponsors.yml │ │ │ ├── otfs/ │ │ │ │ ├── Font Awesome 5 Brands-Regular-400.otf │ │ │ │ ├── Font Awesome 5 Duotone-Solid-900.otf │ │ │ │ ├── Font Awesome 5 Pro-Regular-400.otf │ │ │ │ ├── Font Awesome 5 Pro-Solid-900.otf │ │ │ │ └── README.md │ │ │ └── scss/ │ │ │ ├── _animated.scss │ │ │ ├── _bordered-pulled.scss │ │ │ ├── _core.scss │ │ │ ├── _fixed-width.scss │ │ │ ├── _icons.scss │ │ │ ├── _larger.scss │ │ │ ├── _list.scss │ │ │ ├── _mixins.scss │ │ │ ├── _rotated-flipped.scss │ │ │ ├── _screen-reader.scss │ │ │ ├── _stacked.scss │ │ │ ├── _variables.scss │ │ │ ├── brands.scss │ │ │ ├── duotone.scss │ │ │ ├── fontawesome.scss │ │ │ ├── regular.scss │ │ │ └── solid.scss │ │ └── fonts.css │ ├── index.html │ ├── settings.json │ └── site.webmanifest ├── requirements.txt ├── runtime.txt ├── src/ │ ├── App.vue │ ├── __mocks__/ │ │ └── apollo.js │ ├── apollo.js │ ├── app.js │ ├── assets/ │ │ ├── demo-flow/ │ │ │ └── demo-flow.json │ │ └── fonts/ │ │ └── prefect-icons/ │ │ ├── style.scss │ │ └── variables.scss │ ├── auth/ │ │ ├── authentication.js │ │ ├── authorization.js │ │ └── index.js │ ├── components/ │ │ ├── AcceptConfirmInputRow.vue │ │ ├── Alert.vue │ │ ├── Artifacts/ │ │ │ ├── Artifact-NodeTree.vue │ │ │ ├── Artifact.vue │ │ │ └── Artifacts.vue │ │ ├── BreadCrumbs.vue │ │ ├── CancelButton.vue │ │ ├── Card-Title.vue │ │ ├── ChartCard/ │ │ │ ├── ChartCard.vue │ │ │ ├── ChartCardHeader-Ring.vue │ │ │ └── ChartCardHeader-Simple.vue │ │ ├── CloudHookForm.vue │ │ ├── ConcurrencyInfo.vue │ │ ├── ConfirmDialog.vue │ │ ├── CustomInputs/ │ │ │ ├── BaseCodeTextarea.vue │ │ │ ├── BaseDictInput.vue │ │ │ ├── CheckboxDictInput.vue │ │ │ ├── CodeInput.vue │ │ │ ├── DictInput.vue │ │ │ ├── DictInput2.vue │ │ │ ├── Highlight.vue │ │ │ ├── JsonInput.vue │ │ │ ├── JsonInput2.vue │ │ │ ├── KeyValueInput.vue │ │ │ ├── KeyValueTypeInputs/ │ │ │ │ ├── ArrayInput.vue │ │ │ │ ├── BooleanInput.vue │ │ │ │ ├── DateInput.vue │ │ │ │ ├── JsonParsingInput.vue │ │ │ │ ├── NullInput.vue │ │ │ │ ├── NumberInput.vue │ │ │ │ ├── ObjectInput.vue │ │ │ │ ├── StringInput.vue │ │ │ │ └── index.js │ │ │ ├── ListInput.vue │ │ │ ├── MultiLineInput.vue │ │ │ ├── ResettableWrapper.vue │ │ │ ├── YamlInput.vue │ │ │ ├── YamlInput2.vue │ │ │ └── readonlyProps.js │ │ ├── DateTime.vue │ │ ├── DeleteFlowButton.vue │ │ ├── DurationSpan.vue │ │ ├── EditableTextField.vue │ │ ├── EmphasizedIcon.vue │ │ ├── EndOfLifeBanner.vue │ │ ├── ExternalLink.vue │ │ ├── Feedback.vue │ │ ├── Footer.vue │ │ ├── FullPagination.vue │ │ ├── Functional/ │ │ │ ├── CronClock.vue │ │ │ ├── IntervalClock.vue │ │ │ ├── Transition-Height.js │ │ │ └── TruncatedSpan.vue │ │ ├── GetCloud.vue │ │ ├── GlobalSearchBar/ │ │ │ ├── GlobalSearch.vue │ │ │ ├── GlobalSearchIcon.vue │ │ │ ├── GlobalSearchResult.vue │ │ │ └── MResult.vue │ │ ├── HavingTrouble.vue │ │ ├── HeartbeatTimeline.vue │ │ ├── Icons/ │ │ │ ├── Hashicorp.vue │ │ │ ├── Nomad.vue │ │ │ ├── PagerDuty.vue │ │ │ ├── Prefect.vue │ │ │ ├── mr.vue │ │ │ ├── newPagerDuty.vue │ │ │ └── twilio.vue │ │ ├── KeyValueTable.vue │ │ ├── Label.vue │ │ ├── LabelEdit.vue │ │ ├── LabelWarning.vue │ │ ├── LastTenRuns.vue │ │ ├── License/ │ │ │ ├── ChangePlanDialog.vue │ │ │ └── UpgradeAlert.vue │ │ ├── LogsCard/ │ │ │ ├── DownloadMenu.vue │ │ │ ├── FilterMenu.vue │ │ │ ├── LogRow.vue │ │ │ └── LogsCard.vue │ │ ├── MenuTooltip.vue │ │ ├── Nav/ │ │ │ ├── ApplicationNav.vue │ │ │ ├── ChatLauncher.vue │ │ │ ├── ConnectionMenu.vue │ │ │ ├── CurrentTime.vue │ │ │ ├── HelpMenu.vue │ │ │ ├── Links.vue │ │ │ ├── MenuLink.vue │ │ │ ├── NotificationMenu.vue │ │ │ ├── TeamMenu.vue │ │ │ ├── TeamSideNav.vue │ │ │ ├── TeamSideNavButton.vue │ │ │ ├── TeamSwitcher.vue │ │ │ └── UserMenu.vue │ │ ├── NavTabBar.vue │ │ ├── Parameters.vue │ │ ├── ParametersForm.vue │ │ ├── PaymentCard.vue │ │ ├── PlanCard.vue │ │ ├── Plans/ │ │ │ ├── CardDetails.vue │ │ │ ├── Enterprise.vue │ │ │ ├── PlanSelectionForm.vue │ │ │ ├── Standard.vue │ │ │ └── Starter.vue │ │ ├── PrefectSchedule.vue │ │ ├── ResumeButton.vue │ │ ├── RunConfig/ │ │ │ ├── ArgumentHeading.vue │ │ │ ├── ArgumentInput.vue │ │ │ ├── ArgumentReference.vue │ │ │ ├── DateTimeSelector.vue │ │ │ ├── DockerRunForm.vue │ │ │ ├── EcsRunForm.vue │ │ │ ├── KubernetesRunForm.vue │ │ │ ├── LocalRunForm.vue │ │ │ ├── RunConfig.vue │ │ │ ├── RunConfigTypeButton.vue │ │ │ ├── RunConfigTypeSelect.vue │ │ │ ├── UniversalRunForm.vue │ │ │ ├── adjectives.js │ │ │ └── animals.js │ │ ├── RunStateTooltip.vue │ │ ├── ScheduleToggle.vue │ │ ├── Schematics/ │ │ │ ├── Legend.vue │ │ │ ├── Preview-Dynamic.vue │ │ │ ├── Preview-SearchResult.vue │ │ │ ├── Preview-Static.vue │ │ │ ├── Preview-Tile.vue │ │ │ ├── Schematic-Flow.vue │ │ │ ├── Schematic-Node.vue │ │ │ └── Tooltip.vue │ │ ├── SetStateDialog.vue │ │ ├── Snackbars/ │ │ │ └── Snackbars.vue │ │ ├── SupportBanner.vue │ │ ├── SystemActions/ │ │ │ ├── CancelAll.vue │ │ │ ├── ClearLate.vue │ │ │ └── WorkQueue.vue │ │ ├── TaskRunMenu.vue │ │ ├── TaskRunTooltip.vue │ │ ├── TeamListItem.vue │ │ ├── TimelineTooltip.vue │ │ ├── Tree/ │ │ │ └── Tree.vue │ │ ├── TutorialBanner.vue │ │ ├── UpgradeBadge.vue │ │ ├── Visualizations/ │ │ │ ├── BarChart.vue │ │ │ ├── RingChart.vue │ │ │ ├── StackedLineChart.vue │ │ │ ├── Timeline/ │ │ │ │ └── Bar.js │ │ │ └── Timeline.vue │ │ └── WorkQueueBanner.vue │ ├── directives/ │ │ └── disable-read-only.js │ ├── filters/ │ │ ├── duration.js │ │ ├── filterOnePercent.js │ │ ├── round.js │ │ └── shorten.js │ ├── graphql/ │ │ ├── Account/ │ │ │ ├── invitations.gql │ │ │ └── license-users.gql │ │ ├── Agent/ │ │ │ ├── FlowRuns.gql │ │ │ ├── agent-hooks.gql │ │ │ ├── agents.js │ │ │ ├── delete-agent.gql │ │ │ ├── in-progress-flow-runs.gql │ │ │ ├── recent-runs.gql │ │ │ ├── table-flow-runs-count.gql │ │ │ ├── table-flow-runs.gql │ │ │ └── timeline-flow-runs.gql │ │ ├── Artifacts/ │ │ │ ├── task-run-artifacts-aggregate.gql │ │ │ ├── task-run-artifacts.gql │ │ │ └── task-run-ids.gql │ │ ├── Automations/ │ │ │ ├── actions.gql │ │ │ ├── agent-config-by-pk.gql │ │ │ ├── agent-config.gql │ │ │ ├── delete-agent-config.gql │ │ │ ├── flow-config-by-pk.gql │ │ │ ├── flow-only-hooks.gql │ │ │ ├── flows.gql │ │ │ └── hooks.gql │ │ ├── Calendar/ │ │ │ ├── calendar-day-flow-runs.gql │ │ │ ├── calendar-day-ongoing-flow-runs.gql │ │ │ ├── calendar-day-running-flow-runs.gql │ │ │ ├── calendar-day-scheduled-flow-runs.gql │ │ │ ├── calendar-flow-groups.gql │ │ │ ├── calendar-flow-runs.gql │ │ │ ├── calendar-flows.gql │ │ │ ├── calendar-ongoing-flow-runs.gql │ │ │ ├── calendar-running-flow-runs.gql │ │ │ └── calendar-scheduled-flow-runs.gql │ │ ├── Dashboard/ │ │ │ ├── committed-usage.gql │ │ │ ├── failures-count.gql │ │ │ ├── failures-drawer.gql │ │ │ ├── flow-count.gql │ │ │ ├── flow-failures.gql │ │ │ ├── flow-run-drawer.gql │ │ │ ├── flow-runs-count.gql │ │ │ ├── flow-runs.gql │ │ │ ├── flows.js │ │ │ ├── heartbeat.gql │ │ │ ├── in-progress-flow-runs.gql │ │ │ ├── invoice.gql │ │ │ ├── last-flow-runs.gql │ │ │ ├── project-name.gql │ │ │ ├── project.gql │ │ │ ├── projects.gql │ │ │ ├── task-failures.gql │ │ │ ├── timeline-flow-runs.gql │ │ │ ├── timeline-flow.gql │ │ │ ├── timeline-scheduled-flow-runs.gql │ │ │ ├── upcoming-flow-runs-count.gql │ │ │ ├── upcoming-flow-runs.gql │ │ │ └── usage.gql │ │ ├── FirstRunWorkflow/ │ │ │ ├── flow-run.gql │ │ │ └── project-names.gql │ │ ├── Flow/ │ │ │ ├── cloud-hooks.gql │ │ │ ├── errors.gql │ │ │ ├── flow-by-pk.gql │ │ │ ├── flow-drawer.gql │ │ │ ├── flow-run-by-pk.gql │ │ │ ├── flow-runs.gql │ │ │ ├── flow-versions-count.gql │ │ │ ├── flow-versions-runs.gql │ │ │ ├── flow-versions.js │ │ │ ├── flow.js │ │ │ ├── heartbeat.gql │ │ │ ├── last-flow-run.gql │ │ │ ├── past-flow-runs.gql │ │ │ ├── project-names.gql │ │ │ ├── table-flow-runs-count.gql │ │ │ ├── table-flow-runs.gql │ │ │ ├── table-tasks-count.gql │ │ │ ├── table-tasks.gql │ │ │ ├── timeline-flow-runs.gql │ │ │ ├── upcoming-flow-runs.gql │ │ │ └── version-group.gql │ │ ├── FlowLabelLimit/ │ │ │ ├── delete-flow-concurrency-limit.gql │ │ │ ├── flow-label-limit.gql │ │ │ └── update-flow-concurrency-limit.gql │ │ ├── FlowLabelUsage/ │ │ │ └── flow-label-usage.gql │ │ ├── FlowRun/ │ │ │ ├── cancel-flow-run.gql │ │ │ ├── failed-task-runs.gql │ │ │ ├── flow-run.js │ │ │ ├── gantt-task-runs.gql │ │ │ ├── heartbeat.gql │ │ │ ├── states-aggregate.gql │ │ │ ├── states.gql │ │ │ ├── table-task-runs-count.gql │ │ │ ├── table-task-runs.gql │ │ │ ├── task-run-drawer.gql │ │ │ ├── task-run-ids.gql │ │ │ ├── task-runs-aggregate.gql │ │ │ ├── task-runs.gql │ │ │ ├── timeline-chart-task-runs.gql │ │ │ └── timeline-chart-tasks.gql │ │ ├── FlowRunLogs/ │ │ │ └── flow-run-metadata.gql │ │ ├── GlobalSearch/ │ │ │ ├── search-by-id.gql │ │ │ └── search-by-name.gql │ │ ├── Integrations/ │ │ │ └── PagerDutyActions.gql │ │ ├── KV/ │ │ │ ├── delete-key-value.gql │ │ │ ├── get-key-value.gql │ │ │ └── set-key-value.gql │ │ ├── License/ │ │ │ ├── create-self-serve-license.gql │ │ │ ├── create-usage-based-license.gql │ │ │ ├── license.gql │ │ │ ├── update-customer.gql │ │ │ ├── update-self-serve-cloud-license.gql │ │ │ └── update-stripe-customer.gql │ │ ├── Logs/ │ │ │ ├── flow-run-logs-scoping.gql │ │ │ ├── flow-run-logs.gql │ │ │ ├── retrieve-archived-logs.gql │ │ │ ├── task-run-logs-scoping.gql │ │ │ └── task-run-logs.gql │ │ ├── MappedTasks/ │ │ │ └── mapped-children.gql │ │ ├── Middleware/ │ │ │ ├── flow-group.gql │ │ │ └── flow.gql │ │ ├── Mutations/ │ │ │ ├── add-config-to-flow.gql │ │ │ ├── cancel-flow-run.gql │ │ │ ├── create-action.gql │ │ │ ├── create-agent-config.gql │ │ │ ├── create-agent-sla-failed-hook.gql │ │ │ ├── create-cloud-hook.gql │ │ │ ├── create-custom-role.gql │ │ │ ├── create-flow-run-state-changed-hook.gql │ │ │ ├── create-flow-run.gql │ │ │ ├── create-flow-sla-failed-hook.gql │ │ │ ├── create-flow-sla.gql │ │ │ ├── create-project.gql │ │ │ ├── create-runner-token.gql │ │ │ ├── create-tenant.gql │ │ │ ├── create-tutorial-flow-run.gql │ │ │ ├── delete-cloud-hook.gql │ │ │ ├── delete-flow-group-schedule.gql │ │ │ ├── delete-flow-run.gql │ │ │ ├── delete-hook.gql │ │ │ ├── delete_action.gql │ │ │ ├── delete_custom-role.gql │ │ │ ├── deploy-flow.gql │ │ │ ├── disable-flow-heartbeat.gql │ │ │ ├── disable-flow-lazarus-process.gql │ │ │ ├── disable-flow-version-lock.gql │ │ │ ├── enable-flow-heartbeat.gql │ │ │ ├── enable-flow-lazarus-process.gql │ │ │ ├── enable-flow-version-lock.gql │ │ │ ├── mark-as-read.gql │ │ │ ├── pause-tenant-work-queue.gql │ │ │ ├── resume-tenant-work-queue.gql │ │ │ ├── set-cloud-hook-active.gql │ │ │ ├── set-cloud-hook-inactive.gql │ │ │ ├── set-default-params.gql │ │ │ ├── set-flow-description.gql │ │ │ ├── set-flow-group-schedule.gql │ │ │ ├── set-flow-run-labels.gql │ │ │ ├── set-flow-run-name.gql │ │ │ ├── set-labels.gql │ │ │ ├── set-schedule-active.gql │ │ │ ├── set-schedule-inactive.gql │ │ │ ├── set-task-run-name.gql │ │ │ ├── test-cloud-hook.gql │ │ │ ├── update-custom-role.gql │ │ │ ├── update-flow-project.gql │ │ │ └── update-tenant-settings.gql │ │ ├── Nav/ │ │ │ ├── flow-runs.gql │ │ │ ├── flow.gql │ │ │ ├── flows.gql │ │ │ ├── projects.gql │ │ │ ├── task.gql │ │ │ └── tasks.gql │ │ ├── Notifications/ │ │ │ ├── all-notifications.gql │ │ │ ├── membership-invitation.gql │ │ │ ├── notifications-count-unread.gql │ │ │ ├── notifications-count.gql │ │ │ ├── notifications.js │ │ │ └── teams.gql │ │ ├── Playground/ │ │ │ └── schema.gql │ │ ├── Project/ │ │ │ ├── flow-ids.gql │ │ │ ├── flows-aggregate.gql │ │ │ ├── flows.gql │ │ │ └── project.gql │ │ ├── Projects/ │ │ │ ├── projects-aggregate.gql │ │ │ └── projects.gql │ │ ├── Schematics/ │ │ │ ├── flow-list.gql │ │ │ ├── flow-run.gql │ │ │ ├── flow.gql │ │ │ ├── task-run.gql │ │ │ └── task.gql │ │ ├── Secrets/ │ │ │ ├── delete-secret.gql │ │ │ └── set-secret.gql │ │ ├── Task/ │ │ │ ├── activity.gql │ │ │ ├── heartbeat.gql │ │ │ ├── last-task-run.gql │ │ │ ├── table-task-runs-count.gql │ │ │ ├── table-task-runs.gql │ │ │ ├── task-drawer.gql │ │ │ ├── task-runs-count.gql │ │ │ ├── task-runs-drawer-count.gql │ │ │ ├── task-runs-drawer.gql │ │ │ ├── task-runs.gql │ │ │ └── task.gql │ │ ├── TaskRun/ │ │ │ ├── activity.gql │ │ │ ├── dependencies.gql │ │ │ ├── heartbeat.gql │ │ │ ├── set-flow-run-states.gql │ │ │ ├── set-task-run-states.gql │ │ │ ├── table-mapped-task-runs-count.gql │ │ │ ├── table-mapped-task-runs.gql │ │ │ ├── task-run-states-count.gql │ │ │ ├── task-run-states.gql │ │ │ ├── task-run.gql │ │ │ └── utility_downstream_tasks.gql │ │ ├── TaskTagLimit/ │ │ │ ├── delete-task-concurrency-limit.gql │ │ │ ├── task-tag-limit.gql │ │ │ └── update-task-concurrency-limit.gql │ │ ├── TaskTagUsage/ │ │ │ └── task-tag-usage.gql │ │ ├── TeamSettings/ │ │ │ ├── actions.gql │ │ │ ├── cloud-hooks.gql │ │ │ ├── data-to-clear.js │ │ │ ├── delete-action.gql │ │ │ ├── delete-project.gql │ │ │ ├── flow-version-groups.js │ │ │ ├── flows.gql │ │ │ ├── membership-invitation-roles.gql │ │ │ ├── membership-roles.gql │ │ │ ├── memberships.gql │ │ │ ├── modify-project.gql │ │ │ ├── permissions.gql │ │ │ ├── project.gql │ │ │ ├── projects.gql │ │ │ ├── roles.gql │ │ │ ├── test-action.gql │ │ │ └── usage.gql │ │ ├── Tenant/ │ │ │ ├── accept-membership-invitation.gql │ │ │ ├── create-enterprise-tenant.gql │ │ │ ├── create-membership-invitation.gql │ │ │ ├── delete-enterprise-tenant.gql │ │ │ ├── delete-membership-invitation.gql │ │ │ ├── delete-membership.gql │ │ │ ├── delete-tenant.gql │ │ │ ├── membership-invitation.gql │ │ │ ├── membership.gql │ │ │ ├── pending-invitations-by-email.gql │ │ │ ├── pending-invitations.gql │ │ │ ├── set-membership-role.gql │ │ │ ├── tenant-by-pk.gql │ │ │ ├── tenant-by-slug.gql │ │ │ ├── tenant-id-by-membership-id.gql │ │ │ ├── tenant-secret-names.gql │ │ │ ├── tenant-token.gql │ │ │ ├── tenant-users.gql │ │ │ ├── tenants.js │ │ │ └── update-tenant.gql │ │ ├── Tokens/ │ │ │ ├── api-keys.gql │ │ │ ├── api-tokens.gql │ │ │ ├── create-api-key.gql │ │ │ ├── create-api-token.gql │ │ │ ├── delete-api-key.gql │ │ │ ├── delete-token.gql │ │ │ └── user-tokens.gql │ │ ├── Update/ │ │ │ └── write-run-logs.gql │ │ ├── User/ │ │ │ ├── create-service-account.gql │ │ │ ├── delete-service-account.gql │ │ │ ├── update-user-details.gql │ │ │ ├── update-user-settings.gql │ │ │ └── user.gql │ │ ├── api.gql │ │ ├── concurrent-runs.gql │ │ ├── hello.gql │ │ ├── log-in.gql │ │ ├── log-out.gql │ │ ├── refresh-token.gql │ │ └── support/ │ │ └── send-feedback.gql │ ├── layouts/ │ │ ├── AgentLayout.vue │ │ ├── DashboardLargeActivityLayout.vue │ │ ├── DashboardLargeChartLayout.vue │ │ ├── DashboardLayout.vue │ │ ├── FullPageLayout.vue │ │ ├── ManagementLayout.vue │ │ ├── NotificationsLayout.vue │ │ ├── SubPageNav.vue │ │ ├── TileLayout-Alternate.vue │ │ ├── TileLayout-Full.vue │ │ ├── TileLayout.vue │ │ └── TutorialLayout.vue │ ├── main.js │ ├── middleware/ │ │ ├── flowNavGuard.js │ │ └── prefectAuth.js │ ├── mixins/ │ │ ├── authMixin.js │ │ ├── cancelLateRunsMixin.js │ │ ├── changeStateMixin.js │ │ ├── cloudHookMixin.js │ │ ├── eventsMixin.js │ │ ├── flowRunHistoryMixin.js │ │ ├── formatTimeMixin.js │ │ ├── heartbeatMixin.js │ │ ├── membershipInvitationMixin.js │ │ ├── parametersMixin.js │ │ ├── paymentMixin.js │ │ ├── polling/ │ │ │ ├── pollsAgentsMixin.js │ │ │ ├── pollsFlowsMixin.js │ │ │ ├── pollsProjectsMixin.js │ │ │ └── pollsTenantsMixin.js │ │ ├── runFlowNow.js │ │ └── teamProfileMixin.js │ ├── pages/ │ │ ├── AccessDenied.vue │ │ ├── Admin/ │ │ │ ├── Account/ │ │ │ │ ├── Account.vue │ │ │ │ ├── Billing.vue │ │ │ │ ├── ClearDataDialog.vue │ │ │ │ ├── License.vue │ │ │ │ ├── Profile.vue │ │ │ │ ├── Usage/ │ │ │ │ │ ├── CurrentUsers.vue │ │ │ │ │ ├── Usage.vue │ │ │ │ │ ├── UsageCycle.vue │ │ │ │ │ ├── UsageTimeline.vue │ │ │ │ │ └── UsageToday.vue │ │ │ │ └── Users.vue │ │ │ ├── Admin.vue │ │ │ └── Teams/ │ │ │ ├── InviteUsers.vue │ │ │ ├── NewTeam.vue │ │ │ ├── TeamForm.vue │ │ │ ├── Teams.vue │ │ │ └── TeamsOverview.vue │ │ ├── Agents/ │ │ │ ├── AgentFlowRunHistory.vue │ │ │ ├── AgentFlowRunTable-Tile.vue │ │ │ ├── AgentPage.vue │ │ │ ├── AgentTile.vue │ │ │ ├── Agents.vue │ │ │ └── SubmittableRuns.vue │ │ ├── Auth/ │ │ │ ├── Auth.vue │ │ │ ├── ForgotPassword.vue │ │ │ ├── Logout.vue │ │ │ ├── SignIn.vue │ │ │ └── SignUp.vue │ │ ├── Calendar/ │ │ │ ├── Calendar-Day.vue │ │ │ ├── Calendar-FlowFilter.vue │ │ │ ├── Calendar-View.vue │ │ │ ├── FlowName.vue │ │ │ └── RunMenu.vue │ │ ├── Dashboard/ │ │ │ ├── Agents-Tile.vue │ │ │ ├── ApiHealthCheck-Tile.vue │ │ │ ├── Automations/ │ │ │ │ ├── AddAction.vue │ │ │ │ ├── AddAutomationCard.vue │ │ │ │ ├── AutomationCard.vue │ │ │ │ ├── Automations.vue │ │ │ │ ├── CreateAgentConfigForm.vue │ │ │ │ └── DeleteAgentConfig.vue │ │ │ ├── Dashboard.vue │ │ │ ├── FailedFlows-Tile.vue │ │ │ ├── FailedTasks-Tile.vue │ │ │ ├── FlowRunHeartbeat-Tile.vue │ │ │ ├── FlowRunHistory-Tile.vue │ │ │ ├── FlowTable-Tile.vue │ │ │ ├── InProgress-Tile.vue │ │ │ ├── NewProject-Dialog.vue │ │ │ ├── Notifications-Tile.vue │ │ │ ├── Project-Selector.vue │ │ │ ├── Summary-Tile.vue │ │ │ ├── Task-Item.vue │ │ │ ├── UpcomingRuns-Tile.vue │ │ │ └── UsageTiles/ │ │ │ ├── CommittedUsage-Tile.vue │ │ │ ├── CycleUsage-Tile.vue │ │ │ └── UpgradeUsage-Tile.vue │ │ ├── Flow/ │ │ │ ├── Actions.vue │ │ │ ├── Automations-Tile.vue │ │ │ ├── Describe.vue │ │ │ ├── Details-Tile.vue │ │ │ ├── Errors-Tile.vue │ │ │ ├── Flow.vue │ │ │ ├── FlowRunHeartbeat-Tile.vue │ │ │ ├── FlowRunHistory-Tile.vue │ │ │ ├── FlowRunTable-Tile.vue │ │ │ ├── Run.vue │ │ │ ├── Schematic-Tile.vue │ │ │ ├── Settings/ │ │ │ │ ├── ClockForm.vue │ │ │ │ ├── ClockForms/ │ │ │ │ │ ├── Cron.vue │ │ │ │ │ ├── Interval.vue │ │ │ │ │ └── Simple.vue │ │ │ │ ├── CloudHooks.vue │ │ │ │ ├── DefaultParameters.vue │ │ │ │ ├── General.vue │ │ │ │ ├── ScheduleParameters.vue │ │ │ │ └── Schedules.vue │ │ │ ├── Settings.vue │ │ │ ├── Summary-Tile.vue │ │ │ ├── TasksTable-Tile.vue │ │ │ ├── UpcomingRuns-Tile.vue │ │ │ └── Versions-Tile.vue │ │ ├── FlowRun/ │ │ │ ├── Actions.vue │ │ │ ├── Details-Tile.vue │ │ │ ├── FlowRun.vue │ │ │ ├── Restart-Dialog.vue │ │ │ ├── Schematic-Tile.vue │ │ │ ├── TaskRunHeartbeat-Tile.vue │ │ │ ├── TaskRunTable-Tile.vue │ │ │ └── Timeline-Tile.vue │ │ ├── GettingStarted/ │ │ │ ├── ConnectAgent-Section.vue │ │ │ ├── CreateTenant-Section.vue │ │ │ ├── GettingStarted.vue │ │ │ └── StartPrefectServer-Section.vue │ │ ├── Integrations/ │ │ │ └── PagerDuty.vue │ │ ├── InteractiveAPI/ │ │ │ └── InteractiveAPI.vue │ │ ├── NotFoundPage.vue │ │ ├── Notifications/ │ │ │ ├── NotificationGroup.vue │ │ │ ├── NotificationTypes/ │ │ │ │ ├── Approval-Notification.vue │ │ │ │ ├── FlowRun-Notification.vue │ │ │ │ ├── Membership-Notification.vue │ │ │ │ ├── Message-Notification.vue │ │ │ │ └── WhatsNew-Notification.vue │ │ │ ├── Notifications.vue │ │ │ └── utils.js │ │ ├── Onboard/ │ │ │ ├── AcceptInvitationPage.vue │ │ │ ├── NameTeam.vue │ │ │ ├── Onboard-Page.vue │ │ │ ├── Resources.vue │ │ │ └── Welcome.vue │ │ ├── Plans.vue │ │ ├── Schematics/ │ │ │ ├── Schematics.vue │ │ │ └── View.vue │ │ ├── Support.vue │ │ ├── Task/ │ │ │ ├── Dependencies-Tile.vue │ │ │ ├── Details-Tile.vue │ │ │ ├── Task.vue │ │ │ ├── TaskRunHeartbeat-Tile.vue │ │ │ └── TaskRunTable-Tile.vue │ │ ├── TaskRun/ │ │ │ ├── Actions.vue │ │ │ ├── Dependencies-Tile.vue │ │ │ ├── Details-Tile.vue │ │ │ ├── MappedTaskRuns-Tile.vue │ │ │ ├── Restart-Dialog.vue │ │ │ ├── TaskRun.vue │ │ │ └── TaskRunHeartbeat-Tile.vue │ │ ├── TeamSettings/ │ │ │ ├── Actions.vue │ │ │ ├── CloudHooks.vue │ │ │ ├── CreateRoleTable.vue │ │ │ ├── FlowConcurrency.vue │ │ │ ├── FlowGroups.vue │ │ │ ├── KV.vue │ │ │ ├── Members/ │ │ │ │ ├── Invitations-Table.vue │ │ │ │ └── Members-Table.vue │ │ │ ├── Members.vue │ │ │ ├── PlanComparison.vue │ │ │ ├── Projects.vue │ │ │ ├── Roles.vue │ │ │ ├── Secrets.vue │ │ │ ├── Service-Accounts-Table.vue │ │ │ ├── Service-Accounts.vue │ │ │ ├── TaskConcurrency.vue │ │ │ ├── TeamSettings.vue │ │ │ └── Tokens.vue │ │ ├── TeamSwitched.vue │ │ ├── Tutorials/ │ │ │ ├── FlowRun/ │ │ │ │ ├── CreatePersonalAccessTokenStep.vue │ │ │ │ ├── CreateProjectStep.vue │ │ │ │ ├── DeployFlowStep.vue │ │ │ │ ├── FlowRunTutorial.vue │ │ │ │ ├── RunAFlowStep.vue │ │ │ │ └── RunLocalAgentStep.vue │ │ │ ├── Markdown/ │ │ │ │ └── Universal-Deploy.md │ │ │ └── Tutorials.vue │ │ └── UserSettings/ │ │ ├── APIKeys.vue │ │ ├── Profile.vue │ │ ├── Teams.vue │ │ ├── Tokens.vue │ │ └── UserSettings.vue │ ├── plugins/ │ │ ├── logrocket.js │ │ ├── okta.js │ │ └── vuetify.js │ ├── router.js │ ├── store/ │ │ ├── agent/ │ │ │ └── index.js │ │ ├── alert/ │ │ │ └── index.js │ │ ├── api/ │ │ │ └── index.js │ │ ├── auth/ │ │ │ └── index.js │ │ ├── data/ │ │ │ └── index.js │ │ ├── index.js │ │ ├── license/ │ │ │ └── index.js │ │ ├── polling/ │ │ │ └── index.js │ │ ├── refresh/ │ │ │ └── index.js │ │ ├── sideNav/ │ │ │ └── index.js │ │ ├── tenant/ │ │ │ └── index.js │ │ └── user/ │ │ └── index.js │ ├── styles/ │ │ ├── atelier-sulphurpool-light.scss │ │ ├── global.scss │ │ ├── json-input-style.scss │ │ ├── md-style.scss │ │ ├── playground.scss │ │ ├── slash.scss │ │ └── yaml-input-style.scss │ ├── utils/ │ │ ├── Tree.js │ │ ├── array.js │ │ ├── automations.js │ │ ├── cloudHooks.js │ │ ├── cron.js │ │ ├── curveMetro.js │ │ ├── dateTime.js │ │ ├── error.js │ │ ├── features.js │ │ ├── html.js │ │ ├── json.js │ │ ├── markdownParser.js │ │ ├── moment.js │ │ ├── ordinal.js │ │ ├── plans.js │ │ ├── regEx.js │ │ ├── roles.js │ │ ├── states.js │ │ ├── string.js │ │ ├── types.js │ │ └── yaml.js │ ├── vue-apollo.js │ └── workers/ │ ├── auth.worker.js │ ├── cache.worker.js │ ├── schematic.js │ ├── timeline.js │ └── util/ │ └── worker-interface.js ├── start_server.sh ├── stylelint.config.js ├── tests/ │ ├── .eslintrc.js │ ├── __mocks__/ │ │ ├── @auth0/ │ │ │ ├── auth0-js.js │ │ │ └── auth0-spa-js.js │ │ └── @okta/ │ │ └── okta-auth-js.js │ ├── jestSetup.js │ └── unit/ │ ├── auth/ │ │ ├── authentication-construction.spec.js │ │ ├── authentication.spec.js │ │ ├── authorization.spec.js │ │ └── index.spec.js │ ├── main.spec.js │ ├── middleware/ │ │ └── flowNavGuard.spec.js │ └── store/ │ ├── agent.spec.js │ ├── alert.spec.js │ ├── api.spec.js │ ├── auth.spec.js │ ├── data.spec.js │ ├── license.spec.js │ ├── mockTokens.js │ ├── refresh.spec.js │ ├── sidenav.spec.js │ ├── tenant.spec.js │ └── user.spec.js └── vue.config.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .browserslistrc ================================================ > 1% last 2 versions not ie <= 10 ================================================ FILE: .dockerignore ================================================ **/node_modules **/dist ================================================ FILE: .eslintignore ================================================ tests/__coverage__ src/graphql node_modules src/workers/auth.worker.js ================================================ FILE: .eslintrc.js ================================================ module.exports = { root: true, env: { node: true }, extends: [ 'plugin:vue/essential', 'plugin:vue/recommended', '@vue/prettier', 'eslint:recommended' ], plugins: ['vuetify'], rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'prettier/prettier': [ 'warn', { singleQuote: true, semi: false, trailingComma: 'none', printWidth: 80, htmlWhitespaceSensitivity: 'strict' } ], quotes: ['warn', 'single', { avoidEscape: true }], semi: ['warn', 'never'], 'vuetify/grid-unknown-attributes': 'error', 'vuetify/no-deprecated-classes': 'error', 'vue/valid-v-slot': 'off' }, parserOptions: { parser: 'babel-eslint' } } ================================================ FILE: .github/CODEOWNERS ================================================ # Lines starting with '#' are comments. # Each line is a file pattern followed by one or more owners. # These owners will be the default owners for everything in the repo. * @znicholasbrown @zhen0 *.gql @cicdw @jlowin # Order is important. The last matching pattern has the most precedence. # So if a pull request only touches javascript files, only these owners # will be requested to review. # *.js @octocat @github/js # You can also use email addresses if you prefer. # docs/* docs@example.com ================================================ FILE: .github/ISSUE_TEMPLATE/bug---.md ================================================ --- name: "Bug \U0001F41B" about: Report an issue/bug with existing functionality. title: '1.0 BUG: ' labels: bug assignees: '' --- ***If your bug is related to Cloud 2.0 or Prefect 2.0, please submit your issue in the [Prefect Repo](https://github.com/PrefectHQ/prefect)*** **Bug Description** **Steps To Reproduce** 1. **Browsers Tested:** * [ ] Chrome * [ ] Firefox * [ ] Safari * [ ] Edge * [ ] IE ---------- **Notes** ================================================ FILE: .github/ISSUE_TEMPLATE/general---.md ================================================ --- name: "General \U0001F680" about: Create a ticket for a general feature. title: '' labels: enhancement assignees: '' --- **Why** **What** * [ ] **Notes** ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ ## Description ## Linked Issues ## Tests and performance - [ ] Changes to any .js files are covered by existing tests or this PR adds new tests (if not please explain why below) - [ ] No new packages are added or package size and performance considerations are discussed below - [ ] PR Title fits our [changelog format](https://github.com/PrefectHQ/ui#readme) ## Releases/Changelog cuts only - [ ] Completed the [QA Checklist](https://www.notion.so/prefect/Cloud-UI-QA-Checklist-038a5a5d40a249d78232917ad1b923b9) in staging ================================================ FILE: .github/codeql-config.yml ================================================ paths-ignore: - tests/**/test_*.py ================================================ FILE: .github/workflows/codeql-analysis.yml ================================================ # For most projects, this workflow file will not need changing; you simply need # to commit it to your repository. # # You may wish to alter this file to override the set of languages analyzed, # or to provide custom queries or build logic. # # ******** NOTE ******** # We have attempted to detect the languages in your repository. Please check # the `language` matrix defined below to confirm you have the correct set of # supported CodeQL languages. # name: "CodeQL" on: push: branches: [ dev, master ] jobs: analyze: name: Analyze runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write strategy: fail-fast: false matrix: language: [ 'javascript' ] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] # Learn more: # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed steps: - name: Checkout repository uses: actions/checkout@v2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v1 with: languages: ${{ matrix.language }} config-file: ./.github/codeql-config.yml queries: security-and-quality # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. # Prefix the list here with "+" to use these queries and those in the config file. # queries: ./path/to/local/query, your-org/your-repo/queries@main # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines # and modify them (or add more) to build your code if your project # uses a compiled language #- run: | # make bootstrap # make release - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v1 ================================================ FILE: .gitignore ================================================ .DS_Store node_modules /dist tests/__coverage__ .firebase # Generated from integration tests tests/e2e/videos tests/e2e/screenshots # local env files .env.local .env.*.local # Log files npm-debug.log* yarn-debug.log* yarn-error.log* # Editor directories and files .idea .vscode *.suo *.ntvs* *.njsproj *.sln *.sw* # python .mypy_cache __pycache__/ *.py[cod] *$py.class # external font/JS files downloaded during build src/styles/graphiql.css public/fonts/*.ttf public/fonts/*.otf public/fonts/*.js ================================================ FILE: .nvmrc ================================================ v14.17.3 ================================================ FILE: .prettierignore ================================================ ================================================ FILE: .prettierrc.js ================================================ const eslintrc = require('./.eslintrc') module.exports = eslintrc.rules['prettier/prettier'][1] ================================================ FILE: .salesforce_env_development ================================================ VUE_APP_SF_SFCID=00D7h0000009q6r VUE_APP_SF_TEAM=Chat_Service_Team VUE_APP_SF_URL1=https://prefect--partial.sandbox.my.salesforce.com VUE_APP_SF_URL2=https://prefect--partial.sandbox.my.site.com/partners VUE_APP_SF_BASE_LIVE_AGENT_CONTENT_URL=https://c.la3-c1cs-ia5.salesforceliveagent.com/content VUE_APP_SF_DEPLOYMENT_ID=5722E0000000dd5 VUE_APP_SF_BUTTON_ID=5732E0000000eF1 VUE_APP_SF_BASE_LIVE_AGENT_URL=https://d.la3-c1cs-ia5.salesforceliveagent.com/chat VUE_APP_SF_URL3=https://prefect--partial.sandbox.my.salesforce.com/embeddedservice/5.0/esw.min.js ================================================ FILE: .salesforce_env_production ================================================ VUE_APP_SF_SFCID=00D2E000000o3Ut VUE_APP_SF_TEAM=Chat_Service_Team VUE_APP_SF_URL1=https://prefect.my.salesforce.com VUE_APP_SF_URL2=https://prefect.force.com/partners VUE_APP_SF_BASE_LIVE_AGENT_CONTENT_URL=https://c.la1-c2-ia2.salesforceliveagent.com/content VUE_APP_SF_DEPLOYMENT_ID=5722E0000000dd5 VUE_APP_SF_BUTTON_ID=5732E0000000eF1 VUE_APP_SF_BASE_LIVE_AGENT_URL=https://d.la1-c2-ia2.salesforceliveagent.com/chat VUE_APP_SF_URL3=https://prefect.my.salesforce.com/embeddedservice/5.0/esw.min.js ================================================ FILE: .stylelintignore ================================================ src/styles/playground.scss src/styles/scss src/styles/graphiql.css public/fonts.css src/workers ================================================ FILE: Changelog.md ================================================ # Changelog #### [2022-12-15](https://github.com/PrefectHQ/ui/compare/2022-10-03...2022-12-15) - BugFix: Remove skipped state from the change state mixin [`#1352`](https://github.com/PrefectHQ/ui/pull/1352) - Enhancement: Switch default to user from admin [`#1355`](https://github.com/PrefectHQ/ui/pull/1355) - Bump decode-uri-component from 0.2.0 to 0.2.2 [`#1351`](https://github.com/PrefectHQ/ui/pull/1351) - Bump qs from 6.5.2 to 6.5.3 [`#1353`](https://github.com/PrefectHQ/ui/pull/1353) - Bump express from 4.17.1 to 4.18.2 [`#1354`](https://github.com/PrefectHQ/ui/pull/1354) - Bump minimatch from 3.0.4 to 3.0.8 [`#1348`](https://github.com/PrefectHQ/ui/pull/1348) - Enhancement: Add explicit call to log out API route [`#1344`](https://github.com/PrefectHQ/ui/pull/1344) #### [2022-10-03](https://github.com/PrefectHQ/ui/compare/2022-09-14...2022-10-03) - Chore: Update Build image to use Circle2.0 image [`#1342`](https://github.com/PrefectHQ/ui/pull/1342) - Feature: adapts chatbot to match new SFDC changes [`#1338`](https://github.com/PrefectHQ/ui/pull/1338) - BugFix: Make z into Z [`#1336`](https://github.com/PrefectHQ/ui/pull/1336) - Chore: Remove font awesome conflict detection [`#1333`](https://github.com/PrefectHQ/ui/pull/1333) - Changelog for 2022-09-14 release [`#1332`](https://github.com/PrefectHQ/ui/pull/1332) #### [2022-09-14](https://github.com/PrefectHQ/ui/compare/2022-06-02...2022-09-14) - Security: Update vue cli related packages [`#1328`](https://github.com/PrefectHQ/ui/pull/1328) - BugFix: Add version to graphiql css and re-update fully to node-fetch 2.6.7 [`#1327`](https://github.com/PrefectHQ/ui/pull/1327) - BugFix: Upgrade from Python 3.7 to 3.8 [`#1331`](https://github.com/PrefectHQ/ui/pull/1331) - Security: Force EJS update [`#1315`](https://github.com/PrefectHQ/ui/pull/1315) - Bump terser from 4.8.0 to 4.8.1 [`#1308`](https://github.com/PrefectHQ/ui/pull/1308) - Security: Remove Font Awesome Conflict Detection [`#1314`](https://github.com/PrefectHQ/ui/pull/1314) - Bump shell-quote from 1.7.2 to 1.7.3 [`#1292`](https://github.com/PrefectHQ/ui/pull/1292) - Bump parse-url from 6.0.0 to 6.0.2 [`#1294`](https://github.com/PrefectHQ/ui/pull/1294) - Bump eventsource from 1.1.0 to 1.1.1 [`#1288`](https://github.com/PrefectHQ/ui/pull/1288) - Bump dset from 3.1.1 to 3.1.2 [`#1284`](https://github.com/PrefectHQ/ui/pull/1284) - Bump async from 2.6.3 to 2.6.4 [`#1274`](https://github.com/PrefectHQ/ui/pull/1274) - Bugfix: Service account roles [`#1313`](https://github.com/PrefectHQ/ui/pull/1313) #### [2022-06-02](https://github.com/PrefectHQ/ui/compare/2022-05-17...2022-06-02) - Cut changelog ahead of 2022-06-02 release [`#1289`](https://github.com/PrefectHQ/ui/pull/1289) - Bugfix: Chat launcher icon added nav bar, previous launch button hidden [`#1287`](https://github.com/PrefectHQ/ui/pull/1287) - Bugfix: replaces env variables and CSP URLs related to Salesforce partial environment [`#1286`](https://github.com/PrefectHQ/ui/pull/1286) #### [2022-05-17](https://github.com/PrefectHQ/ui/compare/2022-04-21...2022-05-17) - 2022-05-17 [`#1283`](https://github.com/PrefectHQ/ui/pull/1283) - Enable sf chat plugin in Cloud production environments [`#1282`](https://github.com/PrefectHQ/ui/pull/1282) - Bugfix: adds new Salesforce URL to script-src Content Security Policy [`#1281`](https://github.com/PrefectHQ/ui/pull/1281) #### [2022-04-21](https://github.com/PrefectHQ/ui/compare/2022-02-17...2022-04-21) - Cut changelog ahead of 2022-04-21 release [`#1270`](https://github.com/PrefectHQ/ui/pull/1270) - Improve access-denied checks [`#1266`](https://github.com/PrefectHQ/ui/pull/1266) - Disable salesforce plugin in production environments [`#1267`](https://github.com/PrefectHQ/ui/pull/1267) - copies salesforce related URLS to script-src policy [`#1259`](https://github.com/PrefectHQ/ui/pull/1259) - add override [`#1258`](https://github.com/PrefectHQ/ui/pull/1258) - remove conflict detection [`#1257`](https://github.com/PrefectHQ/ui/pull/1257) - Audit fix [`#1256`](https://github.com/PrefectHQ/ui/pull/1256) - Bump minimist from 1.2.5 to 1.2.6 [`#1255`](https://github.com/PrefectHQ/ui/pull/1255) - Bump trim-newlines from 3.0.0 to 3.0.1 [`#1254`](https://github.com/PrefectHQ/ui/pull/1254) - Feature: Adds Salesforce Chat Bot [`#1250`](https://github.com/PrefectHQ/ui/pull/1250) - Bump url-parse from 1.5.7 to 1.5.10 [`#1246`](https://github.com/PrefectHQ/ui/pull/1246) - Cut changelog ahead of 2022-02-24 release [`#1245`](https://github.com/PrefectHQ/ui/pull/1245) - Bump url-parse from 1.5.1 to 1.5.7 [`#1240`](https://github.com/PrefectHQ/ui/pull/1240) - BugFix: Add error handling to the delete-service-account mutation [`#1243`](https://github.com/PrefectHQ/ui/pull/1243) - Feature: Expose discourse links [`#1244`](https://github.com/PrefectHQ/ui/pull/1244) - Changelog: Cut changelog ahead of 2022-02-17 release [`#1237`](https://github.com/PrefectHQ/ui/pull/1237) #### [2022-02-17](https://github.com/PrefectHQ/ui/compare/2022-02-04...2022-02-17) #### [2022-02-04](https://github.com/PrefectHQ/ui/compare/2022-01-14...2022-02-04) - Cut changelog ahead of 2022-02-24 release [`#1245`](https://github.com/PrefectHQ/ui/pull/1245) - Bump url-parse from 1.5.1 to 1.5.7 [`#1240`](https://github.com/PrefectHQ/ui/pull/1240) - BugFix: Add error handling to the delete-service-account mutation [`#1243`](https://github.com/PrefectHQ/ui/pull/1243) - Feature: Expose discourse links [`#1244`](https://github.com/PrefectHQ/ui/pull/1244) - Changelog: Cut changelog ahead of 2022-02-17 release [`#1237`](https://github.com/PrefectHQ/ui/pull/1237) - BugFix: Update placeholder text on task search [`#1234`](https://github.com/PrefectHQ/ui/pull/1234) - BugFix: Fix Skip on SetStateDialog [`#1235`](https://github.com/PrefectHQ/ui/pull/1235) - Feature: Enable deletion of agent configs in automations [`#1153`](https://github.com/PrefectHQ/ui/pull/1153) - BugFix: Update link to legal page on website [`#1219`](https://github.com/PrefectHQ/ui/pull/1219) - BugFix: Improve loading logic for automation tab on Flow Page [`#1223`](https://github.com/PrefectHQ/ui/pull/1223) - Admin: Remove new and beta badges [`#1230`](https://github.com/PrefectHQ/ui/pull/1230) - BugFix: Remove v-intersect as it was causing odd behavior [`#1224`](https://github.com/PrefectHQ/ui/pull/1224) - BugFix: Do not call unsubscribe agents if it is not a function [`#1225`](https://github.com/PrefectHQ/ui/pull/1225) - Bump follow-redirects from 1.14.7 to 1.14.8 [`#1228`](https://github.com/PrefectHQ/ui/pull/1228) - Bump node-sass from 5.0.0 to 7.0.0 [`#1226`](https://github.com/PrefectHQ/ui/pull/1226) - BugFix: Flow Concurrency and Task Concurrency browser refresh [`#1220`](https://github.com/PrefectHQ/ui/pull/1220) - Update: Change the wording on the teams page to redirect users based on their license [`#1210`](https://github.com/PrefectHQ/ui/pull/1210) - BugFix: Web hook URL validation [`#1212`](https://github.com/PrefectHQ/ui/pull/1212) - Bump follow-redirects from 1.14.0 to 1.14.7 [`#1211`](https://github.com/PrefectHQ/ui/pull/1211) - Bump nanoid from 3.1.23 to 3.2.0 [`#1214`](https://github.com/PrefectHQ/ui/pull/1214) - Bump markdown-it from 12.2.0 to 12.3.2 [`#1203`](https://github.com/PrefectHQ/ui/pull/1203) - Feature: Allow dates in the past to be used as parameter values when using date picker [`#1213`](https://github.com/PrefectHQ/ui/pull/1213) - BugFix: Remove "user content" from each heading in the tutorial menu [`#1209`](https://github.com/PrefectHQ/ui/pull/1209) - BugFix: Schematic node view issues [`#1204`](https://github.com/PrefectHQ/ui/pull/1204) - Changelog: Cut changelog ahead of 2022-01-14 release [`#1207`](https://github.com/PrefectHQ/ui/pull/1207) #### [2022-01-14](https://github.com/PrefectHQ/ui/compare/2021-12-22...2022-01-14) - BugFix: Enable editing in readme [`#1202`](https://github.com/PrefectHQ/ui/pull/1202) - BugFix: Remove confusing reference to RBAC on plans page [`#1192`](https://github.com/PrefectHQ/ui/pull/1192) - BugFix: Hide calendar schedule banner on Server [`#1200`](https://github.com/PrefectHQ/ui/pull/1200) - BugFix: Update Flow/Task Concurrency header values [`#1201`](https://github.com/PrefectHQ/ui/pull/1201) - Feature: Add create_flow_run system action to automations [`#1152`](https://github.com/PrefectHQ/ui/pull/1152) - BugFix: Disable add service account and invite buttons until roles are loaded [`#1195`](https://github.com/PrefectHQ/ui/pull/1195) - BugFix: Remove automations tab from flow page on Server [`#1199`](https://github.com/PrefectHQ/ui/pull/1199) - Bugfix: Add loading state to the cloud hooks table [`#1197`](https://github.com/PrefectHQ/ui/pull/1197) - Bugfix: Go to Project button on dashboard [`#1155`](https://github.com/PrefectHQ/ui/pull/1155) - Admin: Update PR template [`#1157`](https://github.com/PrefectHQ/ui/pull/1157) - BugFix: Improve error handling on restart button and refetch state after restart [`#1181`](https://github.com/PrefectHQ/ui/pull/1181) - BugFix: Ensure label warning updates [`#1188`](https://github.com/PrefectHQ/ui/pull/1188) - Admin: Add input sanitizer as default for log rocket [`#1186`](https://github.com/PrefectHQ/ui/pull/1186) - BugFix: Add once to intersect on lastTenRuns [`#1187`](https://github.com/PrefectHQ/ui/pull/1187) - Admin: adopting auto-changelog [`#1171`](https://github.com/PrefectHQ/ui/pull/1171) #### [2021-12-22](https://github.com/PrefectHQ/ui/compare/2021-12-15...2021-12-22) - Changelog: Cut changelog ahead of 2021-12-22 release [`#1184`](https://github.com/PrefectHQ/ui/pull/1184) - Bugfix: Add log rocket prop [`#1183`](https://github.com/PrefectHQ/ui/pull/1183) - BugFix: removed unused onIntersect methods [`#1166`](https://github.com/PrefectHQ/ui/pull/1166) - added http-security-headers to apollo graphql network traffic [`#1173`](https://github.com/PrefectHQ/ui/pull/1173) - BugFix: Replacing link to docs in task run concurrency page [`#1176`](https://github.com/PrefectHQ/ui/pull/1176) - Cut Changelog ahead of 2021-12-15 release [`#1175`](https://github.com/PrefectHQ/ui/pull/1175) #### [2021-12-15](https://github.com/PrefectHQ/ui/compare/2021-12-14a...2021-12-15) - BugFix: added missing icon for help getting-started [`#1164`](https://github.com/PrefectHQ/ui/pull/1164) - Bugfix: Check tenant is in route params tenant before calling setCurrentTenant [`#1174`](https://github.com/PrefectHQ/ui/pull/1174) - Bugfix: Send to sales for more users [`#1172`](https://github.com/PrefectHQ/ui/pull/1172) #### [2021-12-14a](https://github.com/PrefectHQ/ui/compare/2021-12-14...2021-12-14a) - Changelog: Cut hotifx changelog [`#1165`](https://github.com/PrefectHQ/ui/pull/1165) - HOTFIX: Remove intersection observers from Members, Invitations-Table, Members-Table components [`#1162`](https://github.com/PrefectHQ/ui/pull/1162) - HOTFIX: Remove intersection observer on notifications group component [`#1163`](https://github.com/PrefectHQ/ui/pull/1163) - rolling back watcher change [`#1158`](https://github.com/PrefectHQ/ui/pull/1158) #### [2021-12-14](https://github.com/PrefectHQ/ui/compare/2021-11-09...2021-12-14) - Changelog: Cut changelog ahead of 14-12-2021 release [`#1156`](https://github.com/PrefectHQ/ui/pull/1156) - Feature: Show project name in the run history flow run pop up box [`#1139`](https://github.com/PrefectHQ/ui/pull/1139) - Performance: More careful polling of graphql data [`#1125`](https://github.com/PrefectHQ/ui/pull/1125) - Dependabot: Bump tmpl from 1.0.4 to 1.0.5 [`#1055`](https://github.com/PrefectHQ/ui/pull/1055) - Feature: Elevate labels in the details tile [`#1151`](https://github.com/PrefectHQ/ui/pull/1151) - Dependabot: Bump object-path from 0.11.5 to 0.11.8 [`#1054`](https://github.com/PrefectHQ/ui/pull/1054) - Bump axios from 0.21.1 to 0.21.4 [`#1052`](https://github.com/PrefectHQ/ui/pull/1052) - resolved high priority codeQL alerts [`#1150`](https://github.com/PrefectHQ/ui/pull/1150) - Bugfix: Check for skipped state in task run table to fix endless duration [`#1134`](https://github.com/PrefectHQ/ui/pull/1134) - code review changes for 1120 [`#1148`](https://github.com/PrefectHQ/ui/pull/1148) - Performance: Add virtual-scroll to dashboard tiles and improve duration calculations [`#1120`](https://github.com/PrefectHQ/ui/pull/1120) - Performance: Removed watchers and/or increased watchers specificity [`#1143`](https://github.com/PrefectHQ/ui/pull/1143) - Feature: Add loading state to RestartDialog [`#1144`](https://github.com/PrefectHQ/ui/pull/1144) - Bugfix: Do not add 'allFlows' if a user has only one flow [`#1129`](https://github.com/PrefectHQ/ui/pull/1129) - Update free usage task runs count to 20,000 [`#1145`](https://github.com/PrefectHQ/ui/pull/1145) - Bugfix: Update artifact docs link in the 'beta' badge popover [`#1127`](https://github.com/PrefectHQ/ui/pull/1127) - Bugfix: Improve agent sorting [`#1137`](https://github.com/PrefectHQ/ui/pull/1137) - Bugfix: Set min-width in titlebars to account for shorter names [`#1136`](https://github.com/PrefectHQ/ui/pull/1136) - Performance: Update inputs in flow settings - parameters [`#1103`](https://github.com/PrefectHQ/ui/pull/1103) - 1095/schedules [`#1104`](https://github.com/PrefectHQ/ui/pull/1104) - 1095/team settings [`#1101`](https://github.com/PrefectHQ/ui/pull/1101) - Admin: Add Evan to code owners [`#1135`](https://github.com/PrefectHQ/ui/pull/1135) - Bugfix: Font-awesome-subsetting [`#1132`](https://github.com/PrefectHQ/ui/pull/1132) - 1095/automations [`#1102`](https://github.com/PrefectHQ/ui/pull/1102) - Bugfix: Checks for slashes in Cron regex to set interval schedule via Cron [`#1123`](https://github.com/PrefectHQ/ui/pull/1123) - Bugfix: Fix broken link to the account page [`#1131`](https://github.com/PrefectHQ/ui/pull/1131) - Feature: Adjust column width in v-data-table to account for longer names [`#1121`](https://github.com/PrefectHQ/ui/pull/1121) - fixed incorrect syntax for flex-align [`#1128`](https://github.com/PrefectHQ/ui/pull/1128) - Bugfix: removed avoidable watchers when side-nav is not open [`#1124`](https://github.com/PrefectHQ/ui/pull/1124) - Bugfix: Performance - Remove global event listeners from App.vue [`#1119`](https://github.com/PrefectHQ/ui/pull/1119) - Feature: Expand space in the title bars to account for longer names [`#1098`](https://github.com/PrefectHQ/ui/pull/1098) - Feature: Enhancements to run page run-config inputs with new dict, json, yaml inputs [`#1095`](https://github.com/PrefectHQ/ui/pull/1095) - Bugfix: Artifacts docs link correction [`#1126`](https://github.com/PrefectHQ/ui/pull/1126) - Bugfix: Allow users to search for flows by both flow id and flow group id [`#1089`](https://github.com/PrefectHQ/ui/pull/1089) #### [2021-11-09](https://github.com/PrefectHQ/ui/compare/2021-11-01...2021-11-09) - Cut changelog ahead of 2021-11-09 release [`#1122`](https://github.com/PrefectHQ/ui/pull/1122) - Bump graphiql from 1.4.1 to 1.4.7 [`#1117`](https://github.com/PrefectHQ/ui/pull/1117) - Bump remark-html from 13.0.1 to 13.0.2 [`#1041`](https://github.com/PrefectHQ/ui/pull/1041) - performance: improved logic for displaying current time in user-menu [`#1099`](https://github.com/PrefectHQ/ui/pull/1099) - tree shaking moment dependency [`#1109`](https://github.com/PrefectHQ/ui/pull/1109) - tree shaking lodash dependency [`#1107`](https://github.com/PrefectHQ/ui/pull/1107) - tree shaking highlightjs dependency [`#1108`](https://github.com/PrefectHQ/ui/pull/1108) - when creating/editing schedule, make action button available across tabs [`#1096`](https://github.com/PrefectHQ/ui/pull/1096) #### [2021-11-01](https://github.com/PrefectHQ/ui/compare/2021-10-06...2021-11-01) - cut changelog ahead of 11/01/2021 release [`#1106`](https://github.com/PrefectHQ/ui/pull/1106) - fix ordering of submitted and running [`#1105`](https://github.com/PrefectHQ/ui/pull/1105) - Update plan definitions to reflect (soon to be) reality [`#1100`](https://github.com/PrefectHQ/ui/pull/1100) - User settings/teams - removeUser mutation error handling [`#1094`](https://github.com/PrefectHQ/ui/pull/1094) - Dont expose token to logrocket [`#1091`](https://github.com/PrefectHQ/ui/pull/1091) - Create codeql-config.yml [`#1037`](https://github.com/PrefectHQ/ui/pull/1037) - Fix tags in slack orb in CircleCI config [`#1053`](https://github.com/PrefectHQ/ui/pull/1053) - Warning that users will be locked out if not part of a team [`#1078`](https://github.com/PrefectHQ/ui/pull/1078) - Disable start run button for late flow runs [`#1087`](https://github.com/PrefectHQ/ui/pull/1087) - Filter by scheduled runs in the runs tab [`#1079`](https://github.com/PrefectHQ/ui/pull/1079) - When editing a schedule, update the action button to "Save" [`#1083`](https://github.com/PrefectHQ/ui/pull/1083) - Fixed-tile-v-tabs [`#1081`](https://github.com/PrefectHQ/ui/pull/1081) - Pd update [`#1073`](https://github.com/PrefectHQ/ui/pull/1073) - Update the command on the connect an agent intro section [`#1076`](https://github.com/PrefectHQ/ui/pull/1076) #### [2021-10-06](https://github.com/PrefectHQ/ui/compare/2021-10-05...2021-10-06) - Add UniversalRun to possible run config options on flow details apge [`#1074`](https://github.com/PrefectHQ/ui/pull/1074) #### [2021-10-05](https://github.com/PrefectHQ/ui/compare/2021-09-20...2021-10-05) - update tabs on tiles [`#1064`](https://github.com/PrefectHQ/ui/pull/1064) - Remove requirement to add an API Secret for Pager Duty [`#1065`](https://github.com/PrefectHQ/ui/pull/1065) - member invitation bug - invite a user on the free tier the first time the modal appears [`#1062`](https://github.com/PrefectHQ/ui/pull/1062) - added nvmrc for project that sets node version to 14-17-3 [`#1058`](https://github.com/PrefectHQ/ui/pull/1058) #### [2021-09-20](https://github.com/PrefectHQ/ui/compare/2021-09-07...2021-09-20) - pagerduty integration [`#1038`](https://github.com/PrefectHQ/ui/pull/1038) - add run config tab in flow run details [`#1047`](https://github.com/PrefectHQ/ui/pull/1047) - update tutorial [`#1042`](https://github.com/PrefectHQ/ui/pull/1042) - fix text color in flow details tile [`#1044`](https://github.com/PrefectHQ/ui/pull/1044) #### [2021-09-07](https://github.com/PrefectHQ/ui/compare/2021-08-18...2021-09-07) - Cut changelog ahead of 2021-09-07 release [`#1039`](https://github.com/PrefectHQ/ui/pull/1039) - Add a copy method to task run result locations [`#1033`](https://github.com/PrefectHQ/ui/pull/1033) - Artifact title overlap fix [`#1032`](https://github.com/PrefectHQ/ui/pull/1032) - fix webhook url language and remove ref to secret [`#1036`](https://github.com/PrefectHQ/ui/pull/1036) - Update the dict component to ignore null k/v pairs [`#1029`](https://github.com/PrefectHQ/ui/pull/1029) - Increase default number of flows shown in the flow table [`#1027`](https://github.com/PrefectHQ/ui/pull/1027) - Remove global max width [`#1026`](https://github.com/PrefectHQ/ui/pull/1026) - Remove parent query [`#1025`](https://github.com/PrefectHQ/ui/pull/1025) - Skipped state duration and end time fix [`#1030`](https://github.com/PrefectHQ/ui/pull/1030) - Route to task run page on timeline click [`#1024`](https://github.com/PrefectHQ/ui/pull/1024) - Clean up remaining FA_TOKEN refs [`#1020`](https://github.com/PrefectHQ/ui/pull/1020) - Fix role reset [`#1019`](https://github.com/PrefectHQ/ui/pull/1019) - Remove references to certain task attributes [`#1011`](https://github.com/PrefectHQ/ui/pull/1011) - Remove reliance on private FA npm server [`#1013`](https://github.com/PrefectHQ/ui/pull/1013) #### [2021-08-18](https://github.com/PrefectHQ/ui/compare/2021-08-17...2021-08-18) - Cut changelog ahead of 2021-08-18 release [`#1007`](https://github.com/PrefectHQ/ui/pull/1007) - Check authorization token expiration on initial login flow [`#1006`](https://github.com/PrefectHQ/ui/pull/1006) - Cut changelog ahead of 2021-08-17 release [`#1003`](https://github.com/PrefectHQ/ui/pull/1003) #### [2021-08-17](https://github.com/PrefectHQ/ui/compare/2021-08-05...2021-08-17) - Expose retry for archived runs [`#1002`](https://github.com/PrefectHQ/ui/pull/1002) - Service account roles [`#1001`](https://github.com/PrefectHQ/ui/pull/1001) - Add host config to the docker run config [`#988`](https://github.com/PrefectHQ/ui/pull/988) - Upgrade CircleCI/slack orb, rename variables [`#991`](https://github.com/PrefectHQ/ui/pull/991) - Auto-populate flow group schedules when editing [`#989`](https://github.com/PrefectHQ/ui/pull/989) - Separate primary and secondary Apollo client links [`#987`](https://github.com/PrefectHQ/ui/pull/987) - Update browser visibility handler to use new login logic [`#986`](https://github.com/PrefectHQ/ui/pull/986) - Add secret name and value routes to limit and offset exceptions [`#955`](https://github.com/PrefectHQ/ui/pull/955) #### [2021-08-05](https://github.com/PrefectHQ/ui/compare/2021-08-02...2021-08-05) - Cut changelog ahead of 2021-08-05 release [`#985`](https://github.com/PrefectHQ/ui/pull/985) - Update the data store retrieval patterns to handle more than 1000 flows [`#984`](https://github.com/PrefectHQ/ui/pull/984) - Fall back to in-memory token exchange if worker exchange fails or takes too long [`#982`](https://github.com/PrefectHQ/ui/pull/982) - Fix worker error handling [`#981`](https://github.com/PrefectHQ/ui/pull/981) - Move logrocket to first executed code [`#980`](https://github.com/PrefectHQ/ui/pull/980) #### [2021-08-02](https://github.com/PrefectHQ/ui/compare/2021-07-29...2021-08-02) - Fix start server settings [`#974`](https://github.com/PrefectHQ/ui/pull/974) #### [2021-07-29](https://github.com/PrefectHQ/ui/compare/2021-07-22...2021-07-29) - Cut changelog ahead of 2021-07-29 release [`#970`](https://github.com/PrefectHQ/ui/pull/970) - Allow hash characters in cron form validation [`#966`](https://github.com/PrefectHQ/ui/pull/966) - Add Automations tile to Flow page [`#941`](https://github.com/PrefectHQ/ui/pull/941) - Fix Bash syntax error in start_server.sh [`#964`](https://github.com/PrefectHQ/ui/pull/964) #### [2021-07-22](https://github.com/PrefectHQ/ui/compare/2021-07-21...2021-07-22) - Cut changelog ahead of 2021-07-22 release [`#961`](https://github.com/PrefectHQ/ui/pull/961) - Safari hotfix [`#960`](https://github.com/PrefectHQ/ui/pull/960) #### [2021-07-21](https://github.com/PrefectHQ/ui/compare/2021-07-13...2021-07-21) - Cut changelog ahead of 2021-07-21 release [`#959`](https://github.com/PrefectHQ/ui/pull/959) - Auth exceptions [`#957`](https://github.com/PrefectHQ/ui/pull/957) - remove jq [`#958`](https://github.com/PrefectHQ/ui/pull/958) - Setup nginx to run on rootless mode [`#946`](https://github.com/PrefectHQ/ui/pull/946) - add sort to healthy agents to prevent jumping [`#947`](https://github.com/PrefectHQ/ui/pull/947) #### [2021-07-13](https://github.com/PrefectHQ/ui/compare/2021-06-24...2021-07-13) - Cut changelog ahead of 2021-07-13 release [`#943`](https://github.com/PrefectHQ/ui/pull/943) - Parameters and context view legibility fix [`#939`](https://github.com/PrefectHQ/ui/pull/939) - Move logrocket initialization to its own plugin [`#940`](https://github.com/PrefectHQ/ui/pull/940) - Account page server fix [`#938`](https://github.com/PrefectHQ/ui/pull/938) - Improve type handling when passing parameters to create flow run mutation [`#936`](https://github.com/PrefectHQ/ui/pull/936) - Fix seconds on automation edit [`#937`](https://github.com/PrefectHQ/ui/pull/937) - Schedule timezone [`#922`](https://github.com/PrefectHQ/ui/pull/922) - Dark roles [`#925`](https://github.com/PrefectHQ/ui/pull/925) - Fix missing indentation in doc code snippet [`#932`](https://github.com/PrefectHQ/ui/pull/932) - Create codeql-analysis.yml [`#919`](https://github.com/PrefectHQ/ui/pull/919) - Add current tenant name to account header if no account_name is found [`#923`](https://github.com/PrefectHQ/ui/pull/923) - Cut changelog ahead of 2021-06-24 release [`#921`](https://github.com/PrefectHQ/ui/pull/921) #### [2021-06-24](https://github.com/PrefectHQ/ui/compare/2021-06-23a...2021-06-24) - More permissions [`#920`](https://github.com/PrefectHQ/ui/pull/920) - Use role id instead of name in members page invite mutation [`#918`](https://github.com/PrefectHQ/ui/pull/918) #### [2021-06-23a](https://github.com/PrefectHQ/ui/compare/2021-06-23...2021-06-23a) - Cut changelog ahead of 2021-06-23a release [`#917`](https://github.com/PrefectHQ/ui/pull/917) - schedule toggle [`#916`](https://github.com/PrefectHQ/ui/pull/916) #### [2021-06-23](https://github.com/PrefectHQ/ui/compare/2021-06-17...2021-06-23) - Cut changelog ahead of 2021-06-23 release [`#915`](https://github.com/PrefectHQ/ui/pull/915) - Small fixes [`#914`](https://github.com/PrefectHQ/ui/pull/914) - Improved account management [`#909`](https://github.com/PrefectHQ/ui/pull/909) - other permission updates [`#910`](https://github.com/PrefectHQ/ui/pull/910) - Depressed prop on upgrade badge [`#913`](https://github.com/PrefectHQ/ui/pull/913) - members and service account permissions and formatting [`#908`](https://github.com/PrefectHQ/ui/pull/908) - Add a check on all permissions that bypasses the license for Server [`#912`](https://github.com/PrefectHQ/ui/pull/912) - Roles [`#881`](https://github.com/PrefectHQ/ui/pull/881) - remove outdated migration date [`#902`](https://github.com/PrefectHQ/ui/pull/902) - Improve Agents on Server [`#901`](https://github.com/PrefectHQ/ui/pull/901) #### [2021-06-17](https://github.com/PrefectHQ/ui/compare/2021-06-02...2021-06-17) - Cut changelog ahead of 2021-06-17 release [`#900`](https://github.com/PrefectHQ/ui/pull/900) - remove setAgents from app.vue [`#898`](https://github.com/PrefectHQ/ui/pull/898) - Adds the netlify script to the csp [`#897`](https://github.com/PrefectHQ/ui/pull/897) - Improve expired auth and id token handling [`#896`](https://github.com/PrefectHQ/ui/pull/896) - Add agents [`#852`](https://github.com/PrefectHQ/ui/pull/852) - Add options to the survey on the name team page [`#895`](https://github.com/PrefectHQ/ui/pull/895) - Templating Task Name [`#863`](https://github.com/PrefectHQ/ui/pull/863) - Update interactive api allow list [`#891`](https://github.com/PrefectHQ/ui/pull/891) - Map index [`#890`](https://github.com/PrefectHQ/ui/pull/890) - KV Copy [`#887`](https://github.com/PrefectHQ/ui/pull/887) #### [2021-06-02](https://github.com/PrefectHQ/ui/compare/2021-06-01...2021-06-02) - Cut changelog ahead of 2021-06-02 release [`#880`](https://github.com/PrefectHQ/ui/pull/880) - KV Store Formatting inserts spacing into some values [`#879`](https://github.com/PrefectHQ/ui/pull/879) - KV Store [`#804`](https://github.com/PrefectHQ/ui/pull/804) #### [2021-06-01](https://github.com/PrefectHQ/ui/compare/2021-05-25...2021-06-01) - Cut changelog ahead of 2021-06-01 release [`#875`](https://github.com/PrefectHQ/ui/pull/875) - Fix routing from invitation [`#862`](https://github.com/PrefectHQ/ui/pull/862) - Automations update [`#818`](https://github.com/PrefectHQ/ui/pull/818) #### [2021-05-25](https://github.com/PrefectHQ/ui/compare/2021-05-24...2021-05-25) - Cut changelog ahead of 2021-05-25 release [`#859`](https://github.com/PrefectHQ/ui/pull/859) - Remove fetchpolicy on tenant settings mutation [`#858`](https://github.com/PrefectHQ/ui/pull/858) #### [2021-05-24](https://github.com/PrefectHQ/ui/compare/2021-05-17...2021-05-24) - Cut changelog ahead of 2021-05-24 release [`#857`](https://github.com/PrefectHQ/ui/pull/857) - Improve usability of the quick run button [`#846`](https://github.com/PrefectHQ/ui/pull/846) - Allow configurable base url and relative public assets path [`#849`](https://github.com/PrefectHQ/ui/pull/849) - Fix broken api store core version ref [`#847`](https://github.com/PrefectHQ/ui/pull/847) - Remove options button for server [`#848`](https://github.com/PrefectHQ/ui/pull/848) - Fix issue with overlapping sidebar/application nav on small screens [`#850`](https://github.com/PrefectHQ/ui/pull/850) - Remove Server/Cloud switcher [`#844`](https://github.com/PrefectHQ/ui/pull/844) - Run page improvements/fixes [`#839`](https://github.com/PrefectHQ/ui/pull/839) - stop disable next for pager duty config [`#835`](https://github.com/PrefectHQ/ui/pull/835) - Add 3 new tenant-wide actions [`#825`](https://github.com/PrefectHQ/ui/pull/825) - Separate auth from the primary application [`#811`](https://github.com/PrefectHQ/ui/pull/811) #### [2021-05-17](https://github.com/PrefectHQ/ui/compare/2021-05-14...2021-05-17) - Cut changelog ahead of 2021-05-17 release [`#842`](https://github.com/PrefectHQ/ui/pull/842) - allowed users error [`#841`](https://github.com/PrefectHQ/ui/pull/841) - Stop json param value flicker [`#837`](https://github.com/PrefectHQ/ui/pull/837) #### [2021-05-14](https://github.com/PrefectHQ/ui/compare/2021-05-05...2021-05-14) - Cut changelog ahead of 2021-05-14 release [`#833`](https://github.com/PrefectHQ/ui/pull/833) - Fix issue setting default tenant in server and bypassing auth [`#828`](https://github.com/PrefectHQ/ui/pull/828) - Created by field service accounts [`#808`](https://github.com/PrefectHQ/ui/pull/808) - Show Maintenance Mode Warning [`#815`](https://github.com/PrefectHQ/ui/pull/815) - Members page doesn't load properly [`#824`](https://github.com/PrefectHQ/ui/pull/824) - licensing and permissions [`#763`](https://github.com/PrefectHQ/ui/pull/763) - Add Tooltip to flow run task table [`#814`](https://github.com/PrefectHQ/ui/pull/814) - Clarify Task Run usage tile [`#816`](https://github.com/PrefectHQ/ui/pull/816) - Switch token to key on getting started [`#820`](https://github.com/PrefectHQ/ui/pull/820) #### [2021-05-05](https://github.com/PrefectHQ/ui/compare/2021-05-04...2021-05-05) - Cut changelog ahead of 2021-05-05 release [`#812`](https://github.com/PrefectHQ/ui/pull/812) - don't disable context and environment key field [`#810`](https://github.com/PrefectHQ/ui/pull/810) - allow editing in json editor for checked params [`#787`](https://github.com/PrefectHQ/ui/pull/787) #### [2021-05-04](https://github.com/PrefectHQ/ui/compare/2021-04-23...2021-05-04) - Cut changelog ahead of 2021-05-04 release [`#809`](https://github.com/PrefectHQ/ui/pull/809) - update tutorials [`#806`](https://github.com/PrefectHQ/ui/pull/806) - Add logging level to run config [`#769`](https://github.com/PrefectHQ/ui/pull/769) - Gracefully handle null default tenants [`#802`](https://github.com/PrefectHQ/ui/pull/802) - add animation hint for new automation card [`#784`](https://github.com/PrefectHQ/ui/pull/784) - take usage tile off dashboard and add to account page [`#782`](https://github.com/PrefectHQ/ui/pull/782) #### [2021-04-23](https://github.com/PrefectHQ/ui/compare/2021-04-22...2021-04-23) - More auth [`#791`](https://github.com/PrefectHQ/ui/pull/791) #### [2021-04-22](https://github.com/PrefectHQ/ui/compare/2021-04-21...2021-04-22) - Fix issues with Server loading in the latest release. [`#788`](https://github.com/PrefectHQ/ui/pull/788) - add loading indicator for initial load [`#789`](https://github.com/PrefectHQ/ui/pull/789) #### [2021-04-21](https://github.com/PrefectHQ/ui/compare/2021-04-15...2021-04-21) - Cut changelog ahead of 2021-04-21 release [`#785`](https://github.com/PrefectHQ/ui/pull/785) - Fix auth loop [`#783`](https://github.com/PrefectHQ/ui/pull/783) - Fix some issues with checking auth when returning to the application [`#774`](https://github.com/PrefectHQ/ui/pull/774) #### [2021-04-15](https://github.com/PrefectHQ/ui/compare/2021-04-09a...2021-04-15) - Cut changelog ahead of 2021-04-15 release [`#779`](https://github.com/PrefectHQ/ui/pull/779) - default parameters [`#773`](https://github.com/PrefectHQ/ui/pull/773) - update deploy tutorial for API keys [`#770`](https://github.com/PrefectHQ/ui/pull/770) - update user menu to mention keys instead of tokens [`#778`](https://github.com/PrefectHQ/ui/pull/778) - don't stringify strings [`#777`](https://github.com/PrefectHQ/ui/pull/777) - add breadcrumb to flow version, change flow name breadcrumb to overview [`#759`](https://github.com/PrefectHQ/ui/pull/759) - don't save backend in localstorage [`#772`](https://github.com/PrefectHQ/ui/pull/772) - Remove precommit hook [`#771`](https://github.com/PrefectHQ/ui/pull/771) - kinda hacky fix for weird rounding bug [`#768`](https://github.com/PrefectHQ/ui/pull/768) - make error message easier to read [`#767`](https://github.com/PrefectHQ/ui/pull/767) - Add loading state to sign out button [`#766`](https://github.com/PrefectHQ/ui/pull/766) #### [2021-04-09a](https://github.com/PrefectHQ/ui/compare/2021-04-09...2021-04-09a) - Cut changelog ahead of 2021-04-09a release [`#760`](https://github.com/PrefectHQ/ui/pull/760) - Add MS teams action [`#751`](https://github.com/PrefectHQ/ui/pull/751) #### [2021-04-09](https://github.com/PrefectHQ/ui/compare/2021-04-07...2021-04-09) - Cut changelog ahead of 2021-04-09 release [`#756`](https://github.com/PrefectHQ/ui/pull/756) - Improve onboarding license creation [`#754`](https://github.com/PrefectHQ/ui/pull/754) - include tenant when creating personal API keys [`#753`](https://github.com/PrefectHQ/ui/pull/753) - Display flow version in flow run [`#736`](https://github.com/PrefectHQ/ui/pull/736) #### [2021-04-07](https://github.com/PrefectHQ/ui/compare/2021-04-06a...2021-04-07) - Cut changelog ahead of 2021-04-07 release [`#750`](https://github.com/PrefectHQ/ui/pull/750) - Update all slack invite links to redirect to the prefect.io slack link [`#747`](https://github.com/PrefectHQ/ui/pull/747) - fix legibility issues with /plans page in dark mode [`#748`](https://github.com/PrefectHQ/ui/pull/748) - check if flow version is archived for restart button state [`#714`](https://github.com/PrefectHQ/ui/pull/714) - Make "current" label more legible [`#737`](https://github.com/PrefectHQ/ui/pull/737) #### [2021-04-06a](https://github.com/PrefectHQ/ui/compare/2021-04-06...2021-04-06a) - Cut changelog ahead of 2021-04-06a release [`#744`](https://github.com/PrefectHQ/ui/pull/744) - Check rbac feature on permissions blob instead of plan names [`#743`](https://github.com/PrefectHQ/ui/pull/743) #### [2021-04-06](https://github.com/PrefectHQ/ui/compare/2021-04-05...2021-04-06) - Cut changelog ahead of 2021-04-06 release [`#742`](https://github.com/PrefectHQ/ui/pull/742) - Committed runs on license instead of tenant patch [`#741`](https://github.com/PrefectHQ/ui/pull/741) - Rbac patch [`#740`](https://github.com/PrefectHQ/ui/pull/740) #### [2021-04-05](https://github.com/PrefectHQ/ui/compare/2021-03-25...2021-04-05) - Cut changelog ahead of 2021-04-05 release [`#739`](https://github.com/PrefectHQ/ui/pull/739) - Fix gutters on pages using the tile layout [`#738`](https://github.com/PrefectHQ/ui/pull/738) - Add an agent config creation step to the automations agent SLA form [`#708`](https://github.com/PrefectHQ/ui/pull/708) - Add scheduling error message to toast [`#725`](https://github.com/PrefectHQ/ui/pull/725) - Usage timeline bugfixes [`#722`](https://github.com/PrefectHQ/ui/pull/722) - Add the proper permissions to role-based invitations [`#719`](https://github.com/PrefectHQ/ui/pull/719) - Add the proper permissions to flow and task concurrency pages [`#720`](https://github.com/PrefectHQ/ui/pull/720) - Small fixes to onboarding [`#721`](https://github.com/PrefectHQ/ui/pull/721) - Usage displays/updates [`#692`](https://github.com/PrefectHQ/ui/pull/692) - bugfix to show helpful error message on failed service account creation [`#716`](https://github.com/PrefectHQ/ui/pull/716) - Log URL [`#712`](https://github.com/PrefectHQ/ui/pull/712) - Disable the automations tab [`#711`](https://github.com/PrefectHQ/ui/pull/711) - Fix tenant switching in Safari [`#710`](https://github.com/PrefectHQ/ui/pull/710) - Add remaining states to the state filter [`#706`](https://github.com/PrefectHQ/ui/pull/706) - Package updates 2021-03-29 [`#707`](https://github.com/PrefectHQ/ui/pull/707) - Hooks (AKA Automations) [`#695`](https://github.com/PrefectHQ/ui/pull/695) - Token redesign [`#678`](https://github.com/PrefectHQ/ui/pull/678) - Make the duration header not sortable [`#699`](https://github.com/PrefectHQ/ui/pull/699) - fix artifact colors to be dark mode friendly [`#693`](https://github.com/PrefectHQ/ui/pull/693) - add loading state to quick run button [`#696`](https://github.com/PrefectHQ/ui/pull/696) - Add generic message notification type [`#674`](https://github.com/PrefectHQ/ui/pull/674) #### [2021-03-25](https://github.com/PrefectHQ/ui/compare/2021-03-16...2021-03-25) - Cut changelog ahead of 2021-03-25 release [`#694`](https://github.com/PrefectHQ/ui/pull/694) - Schedule default parameters [`#683`](https://github.com/PrefectHQ/ui/pull/683) - Improve authorization expiration handling [`#690`](https://github.com/PrefectHQ/ui/pull/690) - delete entire flow group with new mutation [`#689`](https://github.com/PrefectHQ/ui/pull/689) - More flow run page improvements [`#688`](https://github.com/PrefectHQ/ui/pull/688) - Update readme with sections on testing, docker, and local development [`#691`](https://github.com/PrefectHQ/ui/pull/691) - Flow run page and general performance improvements [`#679`](https://github.com/PrefectHQ/ui/pull/679) - Named routes [`#662`](https://github.com/PrefectHQ/ui/pull/662) - Randomize survey [`#677`](https://github.com/PrefectHQ/ui/pull/677) - Missing state in state filter [`#675`](https://github.com/PrefectHQ/ui/pull/675) #### [2021-03-16](https://github.com/PrefectHQ/ui/compare/2021-03-15a...2021-03-16) - Cut changelog ahead of 2021-03-16 release [`#676`](https://github.com/PrefectHQ/ui/pull/676) - License creation/slug error [`#672`](https://github.com/PrefectHQ/ui/pull/672) - Update links to new page [`#673`](https://github.com/PrefectHQ/ui/pull/673) - remove popover [`#665`](https://github.com/PrefectHQ/ui/pull/665) #### [2021-03-15a](https://github.com/PrefectHQ/ui/compare/2021-03-15...2021-03-15a) - Cut changelog ahead of 2021-03-15a release [`#671`](https://github.com/PrefectHQ/ui/pull/671) - Remove references to the detail blob from the task run table tile [`#670`](https://github.com/PrefectHQ/ui/pull/670) #### [2021-03-15](https://github.com/PrefectHQ/ui/compare/2021-03-09...2021-03-15) - Cut changelog ahead of 2021-03-15 release [`#668`](https://github.com/PrefectHQ/ui/pull/668) - Dark mode!! [`#656`](https://github.com/PrefectHQ/ui/pull/656) - Flow group created by [`#657`](https://github.com/PrefectHQ/ui/pull/657) - Fix a couple bugs from color consolidation [`#652`](https://github.com/PrefectHQ/ui/pull/652) - Flow run state filter [`#645`](https://github.com/PrefectHQ/ui/pull/645) - Cancel late [`#653`](https://github.com/PrefectHQ/ui/pull/653) - Mapped case task runs [`#650`](https://github.com/PrefectHQ/ui/pull/650) #### [2021-03-09](https://github.com/PrefectHQ/ui/compare/2021-03-02...2021-03-09) - Cut changelog ahead of 2021-03-09 release [`#651`](https://github.com/PrefectHQ/ui/pull/651) - clean up agents with NaN secondsSinceLastQuery [`#646`](https://github.com/PrefectHQ/ui/pull/646) - Color cleanup: change hard-coded colors into variables throughout app [`#640`](https://github.com/PrefectHQ/ui/pull/640) - State table [`#633`](https://github.com/PrefectHQ/ui/pull/633) #### [2021-03-02](https://github.com/PrefectHQ/ui/compare/2021-02-23...2021-03-02) - Cut changelog ahead of 2021-03-02 release [`#638`](https://github.com/PrefectHQ/ui/pull/638) - Redirect links [`#631`](https://github.com/PrefectHQ/ui/pull/631) - Interactive api header [`#628`](https://github.com/PrefectHQ/ui/pull/628) - Fix agent controls z-index [`#617`](https://github.com/PrefectHQ/ui/pull/617) #### [2021-02-23](https://github.com/PrefectHQ/ui/compare/2021-02-12...2021-02-23) - Cut changelog ahead of 2021-02-23 release [`#627`](https://github.com/PrefectHQ/ui/pull/627) - make content a sibling of background so it'll scroll [`#616`](https://github.com/PrefectHQ/ui/pull/616) - Tenant and user headers [`#621`](https://github.com/PrefectHQ/ui/pull/621) - "How did you hear about us" dropdown [`#615`](https://github.com/PrefectHQ/ui/pull/615) - add double check for flow id to avoid race condition between flow nav… [`#590`](https://github.com/PrefectHQ/ui/pull/590) - Clean up bug [`#591`](https://github.com/PrefectHQ/ui/pull/591) #### [2021-02-12](https://github.com/PrefectHQ/ui/compare/2021-02-11...2021-02-12) - VU Hotfix [`#611`](https://github.com/PrefectHQ/ui/pull/611) - HOTFIX: Runconfig [`#610`](https://github.com/PrefectHQ/ui/pull/610) #### [2021-02-11](https://github.com/PrefectHQ/ui/compare/2021-02-03...2021-02-11) - Cut changelog ahead of 2021-02-11 release [`#607`](https://github.com/PrefectHQ/ui/pull/607) - Runconfig pre release [`#606`](https://github.com/PrefectHQ/ui/pull/606) - unbreak netlify [`#605`](https://github.com/PrefectHQ/ui/pull/605) - lets get docker working [`#601`](https://github.com/PrefectHQ/ui/pull/601) - Run configs and run tab update [`#585`](https://github.com/PrefectHQ/ui/pull/585) - Add Flow Descriptions [`#563`](https://github.com/PrefectHQ/ui/pull/563) - dockerrrrrr [`#598`](https://github.com/PrefectHQ/ui/pull/598) - need to get creds into docker to build prod [`#597`](https://github.com/PrefectHQ/ui/pull/597) - Airgapping the UI [`#595`](https://github.com/PrefectHQ/ui/pull/595) - Show label warning on Server [`#593`](https://github.com/PrefectHQ/ui/pull/593) - don't show tutorial banner on server [`#592`](https://github.com/PrefectHQ/ui/pull/592) #### [2021-02-03](https://github.com/PrefectHQ/ui/compare/2021-01-28...2021-02-03) - Cut changelog ahead of 2021-02-03 release [`#589`](https://github.com/PrefectHQ/ui/pull/589) - Users [`#587`](https://github.com/PrefectHQ/ui/pull/587) - Update .env file with new auth variables [`#583`](https://github.com/PrefectHQ/ui/pull/583) - Use role_detail instead of role [`#577`](https://github.com/PrefectHQ/ui/pull/577) #### [2021-01-28](https://github.com/PrefectHQ/ui/compare/2021-01-25...2021-01-28) - Cut changelog ahead of 2021-01-28 release [`#580`](https://github.com/PrefectHQ/ui/pull/580) - Improve auth errors [`#576`](https://github.com/PrefectHQ/ui/pull/576) - Schedule TZ Details Tile [`#570`](https://github.com/PrefectHQ/ui/pull/570) - Refresh token improvements [`#574`](https://github.com/PrefectHQ/ui/pull/574) - Dev => Master [`#556`](https://github.com/PrefectHQ/ui/pull/556) #### [2021-01-25](https://github.com/PrefectHQ/ui/compare/2021-01-19...2021-01-25) - Wrap link artifacts in router links to allow relative navigation [`#559`](https://github.com/PrefectHQ/ui/pull/559) - Flow Group schedule timezones [`#532`](https://github.com/PrefectHQ/ui/pull/532) - 404 TLC [`#562`](https://github.com/PrefectHQ/ui/pull/562) - make sure we're on the correct tab when mounting page [`#561`](https://github.com/PrefectHQ/ui/pull/561) #### [2021-01-19](https://github.com/PrefectHQ/ui/compare/2021-01-07...2021-01-19) - Cut changelog ahead of 2021-01-19 release [`#560`](https://github.com/PrefectHQ/ui/pull/560) - Add new date method to prevent over-querying [`#558`](https://github.com/PrefectHQ/ui/pull/558) - don't show 'none' in details tile if flowgroup has a schedule [`#553`](https://github.com/PrefectHQ/ui/pull/553) - Update deploy jobs to distinguish between dev and staging [`#538`](https://github.com/PrefectHQ/ui/pull/538) #### [2021-01-07](https://github.com/PrefectHQ/ui/compare/2021-01-05...2021-01-07) - Cut changelog ahead of 2021-01-07 release [`#537`](https://github.com/PrefectHQ/ui/pull/537) - Iapi hotfix [`#533`](https://github.com/PrefectHQ/ui/pull/533) - Navbar slug fix [`#534`](https://github.com/PrefectHQ/ui/pull/534) - tutorial banner [`#516`](https://github.com/PrefectHQ/ui/pull/516) - add support for url-encoded queries [`#529`](https://github.com/PrefectHQ/ui/pull/529) #### [2021-01-05](https://github.com/PrefectHQ/ui/compare/2020-12-18...2021-01-05) - Cut changelog ahead of 2021-01-05 release [`#531`](https://github.com/PrefectHQ/ui/pull/531) - Touchups [`#530`](https://github.com/PrefectHQ/ui/pull/530) - simplify and improve calendar backend and tenant switch [`#524`](https://github.com/PrefectHQ/ui/pull/524) - Navigation update (top level flow visibility remix) [`#520`](https://github.com/PrefectHQ/ui/pull/520) - add beforeDestroy hook to fix blank page on reload [`#526`](https://github.com/PrefectHQ/ui/pull/526) - Add truncate/tooltip to notification tile [`#527`](https://github.com/PrefectHQ/ui/pull/527) - Simpler query [`#518`](https://github.com/PrefectHQ/ui/pull/518) - interactive API: graphiql [`#509`](https://github.com/PrefectHQ/ui/pull/509) - Calendar view [`#433`](https://github.com/PrefectHQ/ui/pull/433) #### [2020-12-18](https://github.com/PrefectHQ/ui/compare/2020-12-14...2020-12-18) - Cut changelog ahead of 2020-12-18 release [`#517`](https://github.com/PrefectHQ/ui/pull/517) - Remove decrossing from schematic calculations [`#515`](https://github.com/PrefectHQ/ui/pull/515) - Enable artifacts [`#512`](https://github.com/PrefectHQ/ui/pull/512) - Flow Run (& Task Run & Task) 404 [`#511`](https://github.com/PrefectHQ/ui/pull/511) - Assorted visual bugs [`#507`](https://github.com/PrefectHQ/ui/pull/507) #### [2020-12-14](https://github.com/PrefectHQ/ui/compare/2020-12-07...2020-12-14) - Cut changelog ahead of 2020-12-14 release [`#506`](https://github.com/PrefectHQ/ui/pull/506) - Stylesheet/CSS audit [`#495`](https://github.com/PrefectHQ/ui/pull/495) - Artifact link [`#498`](https://github.com/PrefectHQ/ui/pull/498) - Add task run name to global search [`#485`](https://github.com/PrefectHQ/ui/pull/485) #### [2020-12-07](https://github.com/PrefectHQ/ui/compare/2020-11-30...2020-12-07) - Update Changelog.md [`#493`](https://github.com/PrefectHQ/ui/pull/493) - Fix z-index on artifacts link [`#491`](https://github.com/PrefectHQ/ui/pull/491) - Flow run artifacts [`#484`](https://github.com/PrefectHQ/ui/pull/484) - Tokens [`#488`](https://github.com/PrefectHQ/ui/pull/488) - Update Universal Deploy tutorial [`#482`](https://github.com/PrefectHQ/ui/pull/482) - Set State Modal [`#465`](https://github.com/PrefectHQ/ui/pull/465) - remove tutorial and update link in help text [`#480`](https://github.com/PrefectHQ/ui/pull/480) - Footer [`#451`](https://github.com/PrefectHQ/ui/pull/451) - add fixed height to subnav row to fix jumping bug [`#476`](https://github.com/PrefectHQ/ui/pull/476) - Table Rows [`#475`](https://github.com/PrefectHQ/ui/pull/475) #### [2020-11-30](https://github.com/PrefectHQ/ui/compare/2020-11-13...2020-11-30) - Cut changelog [`#474`](https://github.com/PrefectHQ/ui/pull/474) - [RELEASE-BLOCKING] - Fix positioning of agent controls [`#470`](https://github.com/PrefectHQ/ui/pull/470) - Team slug wording [`#471`](https://github.com/PrefectHQ/ui/pull/471) - Fix schematic node finished task run durations [`#468`](https://github.com/PrefectHQ/ui/pull/468) - Sub page nav [`#441`](https://github.com/PrefectHQ/ui/pull/441) - tutorials [`#434`](https://github.com/PrefectHQ/ui/pull/434) - Task run restart bugfix [`#452`](https://github.com/PrefectHQ/ui/pull/452) - Display the core version in the sidebar [`#431`](https://github.com/PrefectHQ/ui/pull/431) - Editable task run names [`#449`](https://github.com/PrefectHQ/ui/pull/449) - Editable flow run names [`#448`](https://github.com/PrefectHQ/ui/pull/448) - Truncated flow name [`#440`](https://github.com/PrefectHQ/ui/pull/440) #### [2020-11-13](https://github.com/PrefectHQ/ui/compare/2020-11-12...2020-11-13) - Update Changelog.md [`#436`](https://github.com/PrefectHQ/ui/pull/436) - Artifacts description [`#435`](https://github.com/PrefectHQ/ui/pull/435) #### [2020-11-12](https://github.com/PrefectHQ/ui/compare/2020-11-11...2020-11-12) - Update Changelog.md [`#432`](https://github.com/PrefectHQ/ui/pull/432) - Timeline [`#278`](https://github.com/PrefectHQ/ui/pull/278) - npm update [`#428`](https://github.com/PrefectHQ/ui/pull/428) #### [2020-11-11](https://github.com/PrefectHQ/ui/compare/2020-11-10...2020-11-11) - Update Changelog.md [`#429`](https://github.com/PrefectHQ/ui/pull/429) - Create a "Your Teams" page in the User prefs [`#403`](https://github.com/PrefectHQ/ui/pull/403) - md parser [`#390`](https://github.com/PrefectHQ/ui/pull/390) - Allow querying agents from IAPI and bulk clearing agents [`#425`](https://github.com/PrefectHQ/ui/pull/425) - fetch task runs for mark as dialog [`#411`](https://github.com/PrefectHQ/ui/pull/411) - Accept invitation [`#417`](https://github.com/PrefectHQ/ui/pull/417) #### [2020-11-10](https://github.com/PrefectHQ/ui/compare/2020-10-29a...2020-11-10) - Update Changelog.md [`#416`](https://github.com/PrefectHQ/ui/pull/416) - Fix issue with notifications tile actions not being aligned to bottom [`#410`](https://github.com/PrefectHQ/ui/pull/410) - Parameters tab [`#401`](https://github.com/PrefectHQ/ui/pull/401) - Add more info to flow Run Config details section [`#400`](https://github.com/PrefectHQ/ui/pull/400) - Adjust state filter [`#402`](https://github.com/PrefectHQ/ui/pull/402) - Multiple email Cloud Hooks [`#372`](https://github.com/PrefectHQ/ui/pull/372) - Make agents and upcoming tiles refresh when switch backend [`#395`](https://github.com/PrefectHQ/ui/pull/395) - Refetch task run states after flow run finishes [`#398`](https://github.com/PrefectHQ/ui/pull/398) - Add icon for resource manager tasks [`#396`](https://github.com/PrefectHQ/ui/pull/396) - Scrollbar bug [`#399`](https://github.com/PrefectHQ/ui/pull/399) #### [2020-10-29a](https://github.com/PrefectHQ/ui/compare/2020-10-29...2020-10-29a) - Update Changelog.md [`#391`](https://github.com/PrefectHQ/ui/pull/391) - Run state tab indicators [`#389`](https://github.com/PrefectHQ/ui/pull/389) - Secrets popover [`#377`](https://github.com/PrefectHQ/ui/pull/377) - update no agents warning [`#382`](https://github.com/PrefectHQ/ui/pull/382) - add json and string type choices for secrets and validate json [`#370`](https://github.com/PrefectHQ/ui/pull/370) #### [2020-10-29](https://github.com/PrefectHQ/ui/compare/2020-10-23...2020-10-29) - Update Changelog.md [`#388`](https://github.com/PrefectHQ/ui/pull/388) - Fix authentication check for agents [`#387`](https://github.com/PrefectHQ/ui/pull/387) - Add more information to the name your tenant screen [`#368`](https://github.com/PrefectHQ/ui/pull/368) - Late count indicator [`#373`](https://github.com/PrefectHQ/ui/pull/373) #### [2020-10-23](https://github.com/PrefectHQ/ui/compare/2020-10-21...2020-10-23) - Update Changelog.md [`#375`](https://github.com/PrefectHQ/ui/pull/375) - Mapped children [`#364`](https://github.com/PrefectHQ/ui/pull/364) - Add page titles to major pages (dashboard, project, flow, runs) [`#367`](https://github.com/PrefectHQ/ui/pull/367) - Accept invitations [`#359`](https://github.com/PrefectHQ/ui/pull/359) - Cloud Hook Prefix [`#363`](https://github.com/PrefectHQ/ui/pull/363) - Remove flow join from the flow run history query [`#365`](https://github.com/PrefectHQ/ui/pull/365) #### [2020-10-21](https://github.com/PrefectHQ/ui/compare/2020-10-13...2020-10-21) - update changelog [`#362`](https://github.com/PrefectHQ/ui/pull/362) - Update the API connection menu to include helpful links for Server users [`#355`](https://github.com/PrefectHQ/ui/pull/355) - Server connection state bugfix [`#360`](https://github.com/PrefectHQ/ui/pull/360) - Whitescreen bugfix [`#354`](https://github.com/PrefectHQ/ui/pull/354) - "what's new" notifications marked as read [`#344`](https://github.com/PrefectHQ/ui/pull/344) - Styling [`#330`](https://github.com/PrefectHQ/ui/pull/330) #### [2020-10-13](https://github.com/PrefectHQ/ui/compare/2020-10-09...2020-10-13) - Update Changelog.md [`#326`](https://github.com/PrefectHQ/ui/pull/326) - impose height in last ten runs div to keep row consistency [`#323`](https://github.com/PrefectHQ/ui/pull/323) - Loading hooks bug [`#321`](https://github.com/PrefectHQ/ui/pull/321) - BUGFIX: Prevent dashboard flickering on load, missing team slug [`#313`](https://github.com/PrefectHQ/ui/pull/313) - October package updates [`#317`](https://github.com/PrefectHQ/ui/pull/317) - Support labels in `flow.run_config` in label warning [`#312`](https://github.com/PrefectHQ/ui/pull/312) - authnavguard speed [`#303`](https://github.com/PrefectHQ/ui/pull/303) - Take labels from `flow.run_config` if present [`#309`](https://github.com/PrefectHQ/ui/pull/309) #### [2020-10-09](https://github.com/PrefectHQ/ui/compare/2020-10-05...2020-10-09) - Update Changelog.md [`#310`](https://github.com/PrefectHQ/ui/pull/310) - Invalid state hotfix [`#308`](https://github.com/PrefectHQ/ui/pull/308) - Add `Run Config` section to flow details [`#307`](https://github.com/PrefectHQ/ui/pull/307) - BUGFIX: Fix version display in flow page version dropdown [`#305`](https://github.com/PrefectHQ/ui/pull/305) - use membership id instead of route query for invitation id [`#306`](https://github.com/PrefectHQ/ui/pull/306) - Fix race condition with onboard/welcome flow [`#304`](https://github.com/PrefectHQ/ui/pull/304) - Flow run labels [`#300`](https://github.com/PrefectHQ/ui/pull/300) - add handler for task runs that don't have names [`#299`](https://github.com/PrefectHQ/ui/pull/299) - Display task run names on flow run page and task run page [`#302`](https://github.com/PrefectHQ/ui/pull/302) - Apollo url speed racer [`#295`](https://github.com/PrefectHQ/ui/pull/295) - Restart [`#285`](https://github.com/PrefectHQ/ui/pull/285) - Auth nav unit tests [`#266`](https://github.com/PrefectHQ/ui/pull/266) - Pluralization bug [`#298`](https://github.com/PrefectHQ/ui/pull/298) - Refactor circleCI to inlude a slack notification for prod approvals [`#294`](https://github.com/PrefectHQ/ui/pull/294) #### [2020-10-05](https://github.com/PrefectHQ/ui/compare/2020-10-01...2020-10-05) - Update Changelog.md [`#291`](https://github.com/PrefectHQ/ui/pull/291) - Expose agent persistence for server users [`#249`](https://github.com/PrefectHQ/ui/pull/249) - update url regex [`#277`](https://github.com/PrefectHQ/ui/pull/277) - Remove "A nonexistant user" from flow and flow run details for server instances [`#269`](https://github.com/PrefectHQ/ui/pull/269) #### [2020-10-01](https://github.com/PrefectHQ/ui/compare/2020-09-29...2020-10-01) - Cut changelog [`#279`](https://github.com/PrefectHQ/ui/pull/279) - To the dashboard [`#275`](https://github.com/PrefectHQ/ui/pull/275) - Invitations [`#274`](https://github.com/PrefectHQ/ui/pull/274) - Allow label editing on older versions of core and disable empty entries [`#273`](https://github.com/PrefectHQ/ui/pull/273) - Properly redirect to home when server instance has no tenants [`#270`](https://github.com/PrefectHQ/ui/pull/270) - Update UI connection info on home view [`#271`](https://github.com/PrefectHQ/ui/pull/271) #### [2020-09-29](https://github.com/PrefectHQ/ui/compare/2020-09-28a...2020-09-29) - Update Changelog.md [`#268`](https://github.com/PrefectHQ/ui/pull/268) - Task run table duration fix [`#267`](https://github.com/PrefectHQ/ui/pull/267) - add flow nav guard test [`#248`](https://github.com/PrefectHQ/ui/pull/248) - add isCloud to label warning until agent updates are made in core for… [`#264`](https://github.com/PrefectHQ/ui/pull/264) #### [2020-09-28a](https://github.com/PrefectHQ/ui/compare/2020-09-28...2020-09-28a) - Cut changelog [`#262`](https://github.com/PrefectHQ/ui/pull/262) - remove links to Cloud tutorials in server [`#255`](https://github.com/PrefectHQ/ui/pull/255) - BUGFIX: User invitations with unlimited accounts [`#260`](https://github.com/PrefectHQ/ui/pull/260) - User store tests [`#245`](https://github.com/PrefectHQ/ui/pull/245) #### [2020-09-28](https://github.com/PrefectHQ/ui/compare/2020-09-24...2020-09-28) - Cut changelog ahead of 2020-09-28 release [`#259`](https://github.com/PrefectHQ/ui/pull/259) - Show user notifications on the notifications tile [`#258`](https://github.com/PrefectHQ/ui/pull/258) #### [2020-09-24](https://github.com/PrefectHQ/ui/compare/2020-09-23...2020-09-24) - Cut changelog [`#254`](https://github.com/PrefectHQ/ui/pull/254) - Fix delete_agent mutation agentId type [`#253`](https://github.com/PrefectHQ/ui/pull/253) - Log times [`#247`](https://github.com/PrefectHQ/ui/pull/247) #### [2020-09-23](https://github.com/PrefectHQ/ui/compare/2020-09-17...2020-09-23) - Cut changelog [`#246`](https://github.com/PrefectHQ/ui/pull/246) - Apollo endpoint usability update [`#241`](https://github.com/PrefectHQ/ui/pull/241) - Show version group [`#236`](https://github.com/PrefectHQ/ui/pull/236) - Agent tab store [`#238`](https://github.com/PrefectHQ/ui/pull/238) - Labels with agent store [`#217`](https://github.com/PrefectHQ/ui/pull/217) - Use cache reset method instead of the manual store reset [`#237`](https://github.com/PrefectHQ/ui/pull/237) #### [2020-09-17](https://github.com/PrefectHQ/ui/compare/2020-09-15...2020-09-17) - BUGFIX: task concurrency query [`#235`](https://github.com/PrefectHQ/ui/pull/235) - Performance work (part...3?) [`#232`](https://github.com/PrefectHQ/ui/pull/232) - Cut changelog [`#233`](https://github.com/PrefectHQ/ui/pull/233) - BUGFIX: Flow concurrency usage [`#231`](https://github.com/PrefectHQ/ui/pull/231) - Unit tests store tenant [`#195`](https://github.com/PrefectHQ/ui/pull/195) - Clear late runs [`#227`](https://github.com/PrefectHQ/ui/pull/227) #### [2020-09-15](https://github.com/PrefectHQ/ui/compare/2020-09-08...2020-09-15) - Changelog cut ahead of 2020-09-15 release [`#228`](https://github.com/PrefectHQ/ui/pull/228) - Provide a way to modify the default server url. [`#219`](https://github.com/PrefectHQ/ui/pull/219) - Barchart bugfix VU [`#216`](https://github.com/PrefectHQ/ui/pull/216) - Notifications tile [`#220`](https://github.com/PrefectHQ/ui/pull/220) - Remove task runs from the upcoming runs query [`#218`](https://github.com/PrefectHQ/ui/pull/218) - Performance work part 2 [`#212`](https://github.com/PrefectHQ/ui/pull/212) #### [2020-09-08](https://github.com/PrefectHQ/ui/compare/2020-09-01...2020-09-08) - Cut changelog [`#209`](https://github.com/PrefectHQ/ui/pull/209) - Performance work [`#201`](https://github.com/PrefectHQ/ui/pull/201) - Show the token name on the agent card instead of the token id [`#200`](https://github.com/PrefectHQ/ui/pull/200) - Add flow concurrency page [`#199`](https://github.com/PrefectHQ/ui/pull/199) - Filtering scheduled flows from the heartbeattimeline [`#188`](https://github.com/PrefectHQ/ui/pull/188) - auth0 Vuex store unit tests [`#162`](https://github.com/PrefectHQ/ui/pull/162) - Some more GraphQL cleanup [`#193`](https://github.com/PrefectHQ/ui/pull/193) - improve approve button [`#192`](https://github.com/PrefectHQ/ui/pull/192) - Membership management tweaks [`#190`](https://github.com/PrefectHQ/ui/pull/190) #### [2020-09-01](https://github.com/PrefectHQ/ui/compare/2020-08-31a...2020-09-01) - Cut changelog [`#189`](https://github.com/PrefectHQ/ui/pull/189) - Fix mapped children restart from failure bug [`#187`](https://github.com/PrefectHQ/ui/pull/187) - Make some of the flow run restart dialog code clearer [`#186`](https://github.com/PrefectHQ/ui/pull/186) - Unit tests store api [`#127`](https://github.com/PrefectHQ/ui/pull/127) - Rename Mark As -> Set State everywhere [`#183`](https://github.com/PrefectHQ/ui/pull/183) - Add link to task run page from gantt chart [`#185`](https://github.com/PrefectHQ/ui/pull/185) - Unit tests store license [`#164`](https://github.com/PrefectHQ/ui/pull/164) - Order params [`#176`](https://github.com/PrefectHQ/ui/pull/176) #### [2020-08-31a](https://github.com/PrefectHQ/ui/compare/2020-08-31...2020-08-31a) - Cut changelog [`#181`](https://github.com/PrefectHQ/ui/pull/181) - August package updates [`#180`](https://github.com/PrefectHQ/ui/pull/180) - Display # of mapped children (when available) [`#179`](https://github.com/PrefectHQ/ui/pull/179) #### [2020-08-31](https://github.com/PrefectHQ/ui/compare/2020-08-28...2020-08-31) - Cut changelog [`#178`](https://github.com/PrefectHQ/ui/pull/178) - Scrollbars update [`#177`](https://github.com/PrefectHQ/ui/pull/177) - remove requirement that api token name is more than 2 characters [`#174`](https://github.com/PrefectHQ/ui/pull/174) #### [2020-08-28](https://github.com/PrefectHQ/ui/compare/2020-08-27...2020-08-28) - BUGFIX: Flow page details tile [`#171`](https://github.com/PrefectHQ/ui/pull/171) - Cut changelog [`#170`](https://github.com/PrefectHQ/ui/pull/170) - Durations [`#169`](https://github.com/PrefectHQ/ui/pull/169) - Unit tests store refresh [`#165`](https://github.com/PrefectHQ/ui/pull/165) - State manipulation improvements [`#163`](https://github.com/PrefectHQ/ui/pull/163) - Fix membership invitation toasts [`#166`](https://github.com/PrefectHQ/ui/pull/166) #### [2020-08-27](https://github.com/PrefectHQ/ui/compare/2020-08-26...2020-08-27) - Cut changelog [`#161`](https://github.com/PrefectHQ/ui/pull/161) - Don't show maintenance mode on load (unless it's true) [`#159`](https://github.com/PrefectHQ/ui/pull/159) - Remove run count [`#158`](https://github.com/PrefectHQ/ui/pull/158) #### [2020-08-26](https://github.com/PrefectHQ/ui/compare/2020-08-25...2020-08-26) - Cut changelog [`#156`](https://github.com/PrefectHQ/ui/pull/156) - Maintenance mode [`#155`](https://github.com/PrefectHQ/ui/pull/155) #### [2020-08-25](https://github.com/PrefectHQ/ui/compare/2020-08-24...2020-08-25) - Cut changelog ahead of release [`#143`](https://github.com/PrefectHQ/ui/pull/143) - Add Flow ID to the Flow Details tile [`#142`](https://github.com/PrefectHQ/ui/pull/142) - Include stripe [`#140`](https://github.com/PrefectHQ/ui/pull/140) #### [2020-08-24](https://github.com/PrefectHQ/ui/compare/2020-08-22...2020-08-24) - Cut changelog ahead of release [`#138`](https://github.com/PrefectHQ/ui/pull/138) - Add cancelling state [`#137`](https://github.com/PrefectHQ/ui/pull/137) #### [2020-08-22](https://github.com/PrefectHQ/ui/compare/2020-08-20...2020-08-22) - Logs refresh [`#128`](https://github.com/PrefectHQ/ui/pull/128) - Alert and agent store/vuex unit tests [`#124`](https://github.com/PrefectHQ/ui/pull/124) #### [2020-08-20](https://github.com/PrefectHQ/ui/compare/2020-08-19...2020-08-20) - Cut changelog ahead of release [`#125`](https://github.com/PrefectHQ/ui/pull/125) - Tenant switch [`#123`](https://github.com/PrefectHQ/ui/pull/123) #### [2020-08-19](https://github.com/PrefectHQ/ui/compare/2020-08-18...2020-08-19) - Fix inputs on task concurrency limiting mutation [`#122`](https://github.com/PrefectHQ/ui/pull/122) ### 2020-08-18 - Cut changelog [`#121`](https://github.com/PrefectHQ/ui/pull/121) - Update CircleCI to deploy prod artifacts on tag [`#120`](https://github.com/PrefectHQ/ui/pull/120) - Hopefully fix permissions for the deployment buckets [`#119`](https://github.com/PrefectHQ/ui/pull/119) - Update build script to export current timestamp [`#118`](https://github.com/PrefectHQ/ui/pull/118) - Add auto-deploy to staging job [`#117`](https://github.com/PrefectHQ/ui/pull/117) - Labels [`#106`](https://github.com/PrefectHQ/ui/pull/106) - Various Updates [`#116`](https://github.com/PrefectHQ/ui/pull/116) - Add Cloud alert [`#108`](https://github.com/PrefectHQ/ui/pull/108) - Update tenant CLI command in CreateTenant section [`#105`](https://github.com/PrefectHQ/ui/pull/105) - Update the schedule toggle component to use an optimistic response [`#104`](https://github.com/PrefectHQ/ui/pull/104) - Add Created On column to Flow Table [`#103`](https://github.com/PrefectHQ/ui/pull/103) - fix variable casing on restart button and name restart mutation [`#98`](https://github.com/PrefectHQ/ui/pull/98) - Flow run tutorial fix [`#96`](https://github.com/PrefectHQ/ui/pull/96) - Remove toasted [`#95`](https://github.com/PrefectHQ/ui/pull/95) - Flow Run Cancellation [`#92`](https://github.com/PrefectHQ/ui/pull/92) - Fix issue with task failures tile having wrong color [`#89`](https://github.com/PrefectHQ/ui/pull/89) - Fix admin settings references and Cloud Hooks form [`#86`](https://github.com/PrefectHQ/ui/pull/86) - Fix issue with updating tenant settings [`#84`](https://github.com/PrefectHQ/ui/pull/84) - Use template for versions query, add id to query to prevent invariant violations in the apollo cache [`#83`](https://github.com/PrefectHQ/ui/pull/83) - Add a netlify config [`#82`](https://github.com/PrefectHQ/ui/pull/82) - Update wording in the license section of the README [`#81`](https://github.com/PrefectHQ/ui/pull/81) - Schematics update [`#77`](https://github.com/PrefectHQ/ui/pull/77) - Extend late window by a little [`#76`](https://github.com/PrefectHQ/ui/pull/76) - Team settings fixes [`#75`](https://github.com/PrefectHQ/ui/pull/75) - Team fixes [`#72`](https://github.com/PrefectHQ/ui/pull/72) - Tag images with master instead of alpha [`#73`](https://github.com/PrefectHQ/ui/pull/73) - Delete fix [`#74`](https://github.com/PrefectHQ/ui/pull/74) - User profile fix [`#71`](https://github.com/PrefectHQ/ui/pull/71) - README.md [`#51`](https://github.com/PrefectHQ/ui/pull/51) - Universal deploy bugfix [`#70`](https://github.com/PrefectHQ/ui/pull/70) - Flow run tutorial bugfix [`#69`](https://github.com/PrefectHQ/ui/pull/69) - Typography fix [`#68`](https://github.com/PrefectHQ/ui/pull/68) - In Progress tile [`#67`](https://github.com/PrefectHQ/ui/pull/67) - Errors tile change [`#66`](https://github.com/PrefectHQ/ui/pull/66) - Heights and spacing [`#65`](https://github.com/PrefectHQ/ui/pull/65) - Use and display state timestamp on the failed flow tile [`#64`](https://github.com/PrefectHQ/ui/pull/64) - Gantt chart [`#59`](https://github.com/PrefectHQ/ui/pull/59) - Fix spacing on tenant creation section [`#62`](https://github.com/PrefectHQ/ui/pull/62) - Update frame-ancestors csp [`#61`](https://github.com/PrefectHQ/ui/pull/61) - Update padding and height [`#60`](https://github.com/PrefectHQ/ui/pull/60) - Updates, fixes, and performance improvements [`#58`](https://github.com/PrefectHQ/ui/pull/58) - Add redirects file to public folder to handle netlify redirects [`#46`](https://github.com/PrefectHQ/ui/pull/46) - Sidebar removal [`#42`](https://github.com/PrefectHQ/ui/pull/42) - dont install node in the deploy step [`#57`](https://github.com/PrefectHQ/ui/pull/57) - npm run build [`#55`](https://github.com/PrefectHQ/ui/pull/55) - upgrade node [`#56`](https://github.com/PrefectHQ/ui/pull/56) - deploy from master not dev [`#54`](https://github.com/PrefectHQ/ui/pull/54) - deploy to dev [`#48`](https://github.com/PrefectHQ/ui/pull/48) - Disable committing vscode editor settings to the repo [`#53`](https://github.com/PrefectHQ/ui/pull/53) - Speed up failures tile [`#44`](https://github.com/PrefectHQ/ui/pull/44) - Speed up task failures tile [`#45`](https://github.com/PrefectHQ/ui/pull/45) - Fix ordering for last 10 runs (and possible speedup?) [`#50`](https://github.com/PrefectHQ/ui/pull/50) - Speed up last task run query [`#49`](https://github.com/PrefectHQ/ui/pull/49) - Remove LogRocket from Server deployments [`#43`](https://github.com/PrefectHQ/ui/pull/43) - Add Docker related things [`#41`](https://github.com/PrefectHQ/ui/pull/41) - 9 tenant screen [`#30`](https://github.com/PrefectHQ/ui/pull/30) - Create LICENSE [`#39`](https://github.com/PrefectHQ/ui/pull/39) - Remove hasura aggregates from flow failure tile [`#29`](https://github.com/PrefectHQ/ui/pull/29) - Remove pnpm, update package-lock, fix eslintrc [`#28`](https://github.com/PrefectHQ/ui/pull/28) - Remove cypress from dependencies [`#27`](https://github.com/PrefectHQ/ui/pull/27) - Skip and then restart polling for global queries [`#20`](https://github.com/PrefectHQ/ui/pull/20) - Task error improvement [`#23`](https://github.com/PrefectHQ/ui/pull/23) - Default params [`#24`](https://github.com/PrefectHQ/ui/pull/24) - Adds concurrency info component [`#21`](https://github.com/PrefectHQ/ui/pull/21) - fix update membership mutation [`#25`](https://github.com/PrefectHQ/ui/pull/25) - Error message tile size [`#13`](https://github.com/PrefectHQ/ui/pull/13) - Add environment variables for stripe, auth0, and logrocket [`#16`](https://github.com/PrefectHQ/ui/pull/16) - Don't join to task table when querying for last task run [`#17`](https://github.com/PrefectHQ/ui/pull/17) - Don't join to flow table when querying for last flow run [`#18`](https://github.com/PrefectHQ/ui/pull/18) - Update 2 (to be merged after Update) [`#8`](https://github.com/PrefectHQ/ui/pull/8) - Failed Task Tile [`#6`](https://github.com/PrefectHQ/ui/pull/6) - Update [`#7`](https://github.com/PrefectHQ/ui/pull/7) - Allow switching between backends [`#5`](https://github.com/PrefectHQ/ui/pull/5) - 2 [`#4`](https://github.com/PrefectHQ/ui/pull/4) - 1 [`#3`](https://github.com/PrefectHQ/ui/pull/3) - Dev [`#2`](https://github.com/PrefectHQ/ui/pull/2) - Hello world! [`#1`](https://github.com/PrefectHQ/ui/pull/1) ================================================ FILE: Dockerfile ================================================ # syntax = docker/dockerfile:1.0-experimental FROM node:14.7.0 as ui # Set version args from CMD input ARG PREFECT_VERSION=development ENV PREFECT_VERSION=$PREFECT_VERSION # Write the arg into the .env file RUN echo "VUE_APP_PREFECT_VERSION=${PREFECT_VERSION}" >> .env # Move application files to the app directory COPY ./ /app COPY ./LICENSE LICENSE # Switch to the app directory WORKDIR /app # Install dependencies RUN npm ci # Build static files RUN npm run build FROM nginx:stable # Copy the previously built static files to the nginx container COPY --from=ui /app/dist /var/www # Replace the default nginx config # with the one we've defined here COPY ./nginx.conf /etc/nginx/conf.d/default.conf # Copy and allow all users to execute both the script to start the server # and the script that intercepts termination requests COPY ./start_server.sh /start_server.sh RUN chmod a+x /start_server.sh COPY ./intercept.sh /intercept.sh RUN chmod a+x /intercept.sh # Allow write access to www to ensure we can set the configuration file. # This is to enable rootless mode ARG UID=101 ARG GID=101 RUN sed -i 's,listen 80;,listen 8080;,' /etc/nginx/conf.d/default.conf \ && sed -i '/user nginx;/d' /etc/nginx/nginx.conf \ && sed -i 's,/var/run/nginx.pid,/tmp/nginx.pid,' /etc/nginx/nginx.conf \ && sed -i "/^http {/a \ proxy_temp_path /tmp/proxy_temp;\n client_body_temp_path /tmp/client_temp;\n fastcgi_temp_path /tmp/fastcgi_temp;\n uwsgi_temp_path /tmp/uwsgi_temp;\n scgi_temp_path /tmp/scgi_temp;\n" /etc/nginx/nginx.conf RUN chown -R $UID:0 /var/cache/nginx \ && chmod -R g+w /var/cache/nginx \ && chown -R $UID:0 /etc/nginx \ && chmod -R g+w /etc/nginx \ && chown -R $UID:0 /var/www \ && chmod -R g+w /var/www USER $UID STOPSIGNAL SIGINT CMD ["/intercept.sh"] ================================================ FILE: LICENSE ================================================ Prefect Community License Version 1.0 A copy of this license may be found at https://www.prefect.io/legal/prefect-community-license The Prefect Community License (this “Agreement”) sets forth the terms on which Prefect Technologies, Inc. (“Prefect”) makes available Prefect source code through one or more files each within a directory or containing a header stating the contents are subject to Prefect copyright (the “Software”). BY INSTALLING, DOWNLOADING, ACCESSING, USING OR DISTRIBUTING ANY OF THE SOFTWARE, YOU AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO SUCH TERMS AND CONDITIONS, YOU MUST NOT USE THE SOFTWARE. IF YOU ARE RECEIVING THE SOFTWARE ON BEHALF OF A LEGAL ENTITY, YOU REPRESENT AND WARRANT THAT YOU HAVE THE ACTUAL AUTHORITY TO AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT ON BEHALF OF SUCH ENTITY. “Licensee” as used herein means you, an individual, or the entity on behalf of whom you are receiving the Software. 1. LICENSE GRANT AND LIMITATIONS A. License. Provided that Licensee remains in compliance with the terms and conditions that are set forth in this Agreement, Prefect grants you the following limited, revocable, non-exclusive, non-transferrable, non-sublicensable, worldwide license during the term of this Agreement to (a) only use the Software internally; (b) prepare modifications and derivative works of the Software; (c) distribute the Software (including without limitation in source code or object code form); and (d) reproduce copies of the Software (the “License”). B. Limitations on License Grant. In consideration of the rights granted herein by this Agreement, Licensee’s distribution of the Software is subject to the following conditions: i. Licensee is not granted the right to, and Licensee shall not, exercise the License for an Excluded Purpose. For purposes of this Agreement, “Excluded Purpose” includes, but is not limited to, using the Software, or any derivative works thereof, to make available any software-as-a-service, platform-as-a-service, infrastructure-as-a-service or other similar service that competes with Prefect products or services. ii. Licensee must cause any Software modified by Licensee to carry prominent notices stating that Licensee modified the Software; and iii. On any copy of the Software distributed by the Licensee, Licensee shall reproduce and not remove or alter all Prefect or third-party copyright or other notices contained in the Software, and Licensee must provide the following notice with any copy: “This software is made available by Prefect Technologies, Inc., under the terms of the Prefect Community License Agreement located at https://www.prefect.io/legal/prefect-community-license . BY INSTALLING, DOWNLOADING, ACCESSING, USING OR DISTRIBUTING ANY OF THE SOFTWARE, YOU AGREE TO THE TERMS OF SUCH LICENSE AGREEMENT.” C. Modifications. Licensee may add its own copyright notices to modifications made by Licensee and may provide additional or different license terms and conditions for use, reproduction, or distribution of Licensee’s modifications. While redistributing the Software or modifications thereof, Licensee may choose to offer, for a fee or free of charge, support, warranty, indemnity, or other obligations. Licensee, and not Prefect, will be solely responsible for any such obligations. D. No Sublicense. The License does not include any right to sublicense the Software. Each recipient to which Licensee provides the Software, however, may exercise the License so long as such recipient agrees to the terms and conditions of this Agreement. 2. TERM AND TERMINATION A. Term. This Agreement will continue unless and until earlier terminated as set forth herein. B. Termination. If Licensee breaches any of the conditions or obligations set forth under this Agreement, this Agreement shall automatically terminate, and the License rights granted therein shall be automatically and permanently revoked. 3. INTELLECTUAL PROPERTY As between the parties, Prefect retains all right, title, and interest in the Software, and all intellectual property rights contained therein, regardless of whether such intellectual property rights are registered or unregistered. Prefect hereby similarly reserves all rights in its trademarks and service marks, and all goodwill developed therefrom shall inure to the benefit of Prefect; no licenses therein are granted by way of this Agreement. Prefect hereby reserves all rights not expressly granted to Licensee by way of this Agreement. 4. DISCLAIMER OF WARRANTIES EXCEPT AS SPECIFICALLY PROVIDED FOR HEREIN, THE SOFTWARE AND ANY MATERIALS ARE PROVIDED “AS IS”. PREFECT AND ANY THIRD-PARTY PROVIDERS SPECIFICALLY DISCLAIM, WITHOUT LIMITATION, ALL WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT OR THOSE WARRANTIES ARISING FROM A COURSE OF PERFORMANCE, A COURSE OF DEALING OR TRADE USAGE. EXCEPT AS EXPRESSLY PROVIDED HEREIN, PREFECT MAKES NO REPRESENTATION OR WARRANTY (I) AS TO THE SOFTWARE; (II) AS TO THE RESULTS TO BE ATTAINED BY LICENSEE OR ANY THIRD PARTY FROM THE SOFTWARE; (III) AS TO THE LIFE OF ANY URL USED BY THE SOFTWARE; OR (IV) THAT ALL USES THAT CAN BE MADE OF THE SOFTWARE COMPLY WITH APPLICABLE LAW; RATHER, IT IS LICENSEE’S RESPONSIBILITY TO CONFORM ITS USE OF THE SOFTWARE WITH THE LAW. LICENSEE ACKNOWLEDGES THAT CERTAIN SOFTWARE AND EQUIPMENT USED BY IT MAY NOT BE CAPABLE OF SUPPORTING CERTAIN FEATURES OF THE SOFTWARE. EACH PARTY HERETO HEREBY ACKNOWLEDGES THAT IT HAS NOT RELIED UPON ANY REPRESENTATIONS OR WARRANTIES MADE BY THE OTHER EXCEPT AS SPECIFICALLY SET FORTH IN THIS AGREEMENT. 5. LIMITATIONS ON LIABILITY EXCEPT FOR A BREACH OF SECTION 6 AND REGARDLESS OF THE FORM OF ACTION, IN NO EVENT WILL EITHER PARTY (OR ITS OFFICERS, DIRECTORS, EMPLOYEES, MEMBERS, MANAGERS OR AGENTS) BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, PUNITIVE, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST PROFITS, LOST DATA, BUSINESS INTERRUPTION, LOSS OF REPUTATION OR COSTS OF SUBSTITUTE SERVICES) THAT THE OTHER PARTY MAY INCUR OR EXPERIENCE ARISING OUT OF OR RELATING TO THE SOFTWARE, THIS AGREEMENT OR ITS TERMINATION, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. FURTHER, PREFECT SHALL NOT BE LIABLE (AND ITS OFFICERS, DIRECTORS, MEMBERS, MANAGERS, EMPLOYEES AND AGENTS, AND AFFILIATES THEREOF) TO LICENSEE FOR DAMAGES FOR ANY CAUSE WHATSOEVER NOTWITHSTANDING THE FORM OF SUCH CLAIMS (INCLUDING NEGLIGENCE). 6. MISCELLANEOUS A. Governing law and venue. This Agreement shall be governed by and construed in accordance with the laws of the State of Delaware applicable to contracts to be performed entirely within Delaware. Any action or proceeding to enforce or arising out of this Agreement shall be commenced in the state and federal courts located in Delaware. The parties hereto consent to the exclusive jurisdiction of such courts, agree that venue will be proper in such courts and waive any objections based upon forum non conveniens. The choice of forum set forth in this Section 7 will not be deemed to preclude the enforcement of any judgment obtained in such forum or the taking of any action under this Agreement to enforce such judgment in any other jurisdiction. B. Export Control Restrictions. Licensee warrants that its use of the Software shall comply with all export control laws of the United States and Licensee agrees to indemnify, defend and hold Prefect harmless from any liability, claim, loss or expense suffered or incurred by Prefect as a result of a breach of this warranty. C. Assignment. This Agreement shall be binding upon Licensee’s successors and permitted assigns; neither this Agreement nor any right or obligation arising under it may be assigned, licensed, sublicensed, sold, mortgaged, pledged or otherwise disposed of (collectively, a “disposition”) by Licensee without the prior written consent of Prefect, and any attempted disposition shall be null and void. Prefect may freely assign its rights under this Agreement to any third party. D. Entire Agreement; Modifications; No Waiver. This Agreement constitutes the entire Agreement of the parties with respect to the subject matter hereof, supersedes any and all existing agreements relating to the subject matter hereof, and may not be modified or amended except by a written instrument signed by both parties. No failure or delay in exercising any right, power or remedy under the Agreement shall operate as a waiver thereof, nor shall any single or partial exercise of any right under this Agreement preclude any other or further exercise thereof or the exercise of any other right. E. Severability. If any provision of this Agreement shall be held to be illegal, invalid or unenforceable, such illegality, invalidity or unenforceability shall apply only to such provision and shall not in any manner affect or render illegal, invalid or unenforceable any other provision of this Agreement, and this Agreement shall be reformed, construed and enforced to the fullest extent as if any such illegal, invalid or unenforceable provision were not contained herein. F. Survival. The obligations under Sections 3 and 6.B, as well as any other provision that by its nature is intended to survive, shall survive the termination or expiration of this Agreement. ================================================ FILE: README.md ================================================

Prefect Logo

Netlify Build Status Slack members status badge

Powered By Prefect

# Prefect UI Note: This repo is for Prefect UI development. To run the Prefect UI as part of [Prefect Server](https://github.com/PrefectHQ/server/), install [Prefect](https://github.com/prefecthq/prefect) and run `prefect server start`. ### Installation Prefect UI requires [Node.js](https://nodejs.org/) v14 and [npm](https://www.npmjs.com/) v6 to run. You'll also need an API token from a professional Font Awesome account to build the project locally; this token should be placed in a git-ignored `.env` file (e.g. `.env.development.local`) as it's referenced by `.npmrc` for accessing the private FA npm registry. Before starting the development server, you'll need to install project dependencies: ```sh $ git clone https://github.com/PrefectHQ/ui.git $ cd ui $ npm install ``` Then, you can start the Prefect UI development server: ```sh $ npm run serve ``` The Prefect UI should be available at [http://localhost:8080](http://localhost:8080); changes to the code in the `src/` directory will result in a hot reload of the application. For more information on hot-reloading or the development server, take a look at the [Webpack](https://webpack.js.org/) and [Vue CLI](https://cli.vuejs.org/) documentation. ### Testing Prefect UI contains various unit tests for things like the Vuex store and Vue Router middleware; running theses tests locally requires [Jest](https://jestjs.io/). We recommend using a node package executor like [npx](https://www.npmjs.com/package/npx) for this dependency. Running all unit tests: ``` $ npx jest ``` Running specific tests: ``` $ npx jest auth # This will run tests found in middleware/authNavGuard.spec.js, store/auth.spec.js, and store/auth0.spec.js ``` ### Development We welcome contributions! Prefect UI is built on [Vue.js](https://vuejs.org/), a modern front-end JavaScript framework. We generally depend on Google's Material Design guidelines, drawing on and extending the [Vuetify](https://vuetifyjs.com/en/) component library. #### Building for production For production builds: ```sh $ npm run build ``` Compiled and minified code and assets are placed in the `dist/` folder; `dist/index.html` is the built application's entrypoint. ### The Prefect UI Docker image This repo comes with a Dockerfile for building a UI image; it's generally not recommended to build this yourself but to instead use one of the versioned images found in the [PrefectHQ Dockerhub registry](https://hub.docker.com/r/prefecthq/ui). #### Serving the built application The Prefect UI requires a functional Prefect API to operate. For details on starting Prefect Server, visit the [docs](https://docs.prefect.io/api/latest/#ui-and-server). #### Submitting a PR PR Titles should include a prefix that sets out the purpose of the PR. Most PRs will begin with the prefix Bugfix or Feature. The title should describe the work and purpose of the PR clearly and succinctly and should be appropriate and safe for the Prefect community. ###### Example Feature: Add create flow run method to automations ## License Prefect UI is lovingly made by the team at [Prefect](https://www.prefect.io) and licensed under the [Prefect Community License](https://www.prefect.io/legal/prefect-community-license/). For information on how you can use, extend, and depend on Prefect UI to automate your data, take a look at our [license](https://github.com/PrefectHQ/ui/blob/master/LICENSE) or [contact us](https://www.prefect.io/pricing#contact). ================================================ FILE: babel.config.js ================================================ module.exports = { presets: [['@vue/app', { useBuiltIns: 'entry' }]], plugins: [ '@babel/plugin-proposal-nullish-coalescing-operator', '@babel/plugin-proposal-optional-chaining' ] } ================================================ FILE: changelog-template.hbs ================================================ # Changelog {{#each releases}} {{#if href}} ###{{#unless major}}#{{/unless}} [{{title}}]({{href}}) {{else}} ### {{title}} {{/if}} {{#if summary}} {{summary}} {{/if}} {{#each merges}} - {{#if commit.breaking}}**Breaking change:** {{/if}}{{message}}{{#if href}} [`#{{id}}`]({{href}}){{/if}} {{/each}} {{#each fixes}} - {{#if commit.breaking}}**Breaking change:** {{/if}}{{commit.subject}}{{#each fixes}}{{#if href}} [`#{{id}}`]({{href}}){{/if}}{{/each}} {{/each}} {{#each commits}} - {{#if breaking}}**Breaking change:** {{/if}}{{subject}}{{#if href}} [`{{shorthash}}`]({{href}}){{/if}} {{/each}} {{/each}} ================================================ FILE: export.sh ================================================ #!/bin/sh touch .env echo "" >> .env cat ".salesforce_env_${VUE_APP_ENVIRONMENT}" | while read line; do echo $line >> .env done ================================================ FILE: file-downloader.js ================================================ const { https } = require('follow-redirects') const fs = require('fs') const downloads = [ { filePath: './src/styles/graphiql.css', url: 'https://unpkg.com/graphiql@1.4.7/graphiql.min.css' }, { filePath: './public/fonts/material-icons.ttf', url: 'https://fonts.gstatic.com/s/materialicons/v76/flUhRq6tzZclQEJ-Vdg-IuiaDsNZ.ttf' }, { filePath: './public/fonts/material-icons-outlined.otf', url: 'https://fonts.gstatic.com/s/materialiconsoutlined/v44/gok-H7zzDkdnRel8-DQ6KAXJ69wP1tGnf4ZGhUcd.otf' }, { filePath: './public/fonts/roboto-100.ttf', url: 'https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgWxP.ttf' }, { filePath: './public/fonts/roboto-300.ttf', url: 'https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5vAw.ttf' }, { filePath: './public/fonts/roboto-400.ttf', url: 'https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Me5Q.ttf' }, { filePath: './public/fonts/roboto-500.ttf', url: 'https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9vAw.ttf' }, { filePath: './public/fonts/roboto-700.ttf', url: 'https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlvAw.ttf' } ] downloads.forEach(loc => { const file = fs.createWriteStream(loc.filePath) https.get(loc.url, loc.options, function(res) { res.pipe(file) file.on('finish', function() { file.close() }) }) }) ================================================ FILE: intercept.sh ================================================ #!/usr/bin/env bash function _intercept { kill -TERM $child exit 0 } trap _intercept SIGTERM trap _intercept SIGINT trap _intercept SIGQUIT trap _intercept EXIT /start_server.sh & tail -f /dev/null & child=$! wait "$child" ================================================ FILE: jest.config.js ================================================ // Temporary workaround re: https://github.com/vuejs/vue-cli/issues/1879 process.env.VUE_CLI_BABEL_TARGET_NODE = true process.env.VUE_CLI_BABEL_TRANSPILE_MODULES = true process.env.VUE_APP_GRAPHQL_HTTP = 'http://test.io' module.exports = { automock: false, timers: 'fake', collectCoverageFrom: [ 'src/**/*.{js,vue}', '!**/node_modules/**', '!**/dist/**', '!src/main.js', '!src/router.js' ], coverageDirectory: 'tests/__coverage__', moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], transform: { '^.+\\.vue$': 'vue-jest', '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub', '^.+\\.jsx?$': 'babel-jest' }, moduleNameMapper: { '\\.(css|scss|less)$': '/__mocks__/styleMock.js', '^@/(.*)$': '/src/$1' }, transformIgnorePatterns: ['/node_modules/'], roots: ['src', 'tests'], setupFiles: ['jest-localstorage-mock', 'jest-fetch-mock', 'jest-canvas-mock'], setupFilesAfterEnv: ['/tests/jestSetup.js'], snapshotSerializers: ['jest-serializer-vue'], testMatch: [ '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' ], testURL: 'http://localhost/' } ================================================ FILE: netlify.toml ================================================ [[redirects]] from = "/*" to = "/index.html" status = 200 [[headers]] # Define which paths this specific [[headers]] block will cover. for = "/*" [headers.values] # X-Content-Type-Options controls whether browsers attempt to detect # the content type, rather than relyihng on the Content-Type header. # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options X-Content-Type-Options = "nosniff" # Strict-Transport-Security to require HTTPS connections in supported # browsers. These settings are required to be eligible for inclusion # in the HSTS Preload list; see: https://hstspreload.org/ Strict-Transport-Security = """\ max-age=31536000; \ includeSubDomains; \ preload \ """ # Content-Security-Policy to prevent XSS attacks. Content-Security-Policy = """ \ default-src \ * \ ; \ script-src \ 'self' \ 'unsafe-eval' \ 'unsafe-inline' \ https://aleysian-prefect.cs29.force.com \ https://c.la1-c1cs-ph2.salesforceliveagent.com \ https://c.la1-c2-ia2.salesforceliveagent.com \ https://cdn.lr-ingest.io \ https://d.la1-c1cs-ph2.salesforceliveagent.com \ https://d.la1-c2-ia2.salesforceliveagent.com \ https://d.la1-c2-ph2.salesforceliveagent.com \ https://d.la2-c1-ia5.salesforceliveagent.com \ https://d.la3-c1cs-ia2.salesforceliveagent.com https://d.la3-c1cs-ia5.salesforceliveagent.com \ https://js.stripe.com \ https://partial-prefect.cs1.force.com \ https://prefect--aleysian.my.salesforce.com \ https://prefect--partial.my.salesforce.com \ https://prefect--partial.sandbox.my.salesforce.com \ https://prefect--partial.sandbox.my.site.com \ https://prefect.force.com \ https://prefect.my.salesforce-site.com \ https://prefect.my.salesforce.com \ https://prefect.my.site.com \ https://service.force.com \ https://static.lightning.force.com \ ; \ script-src-elem \ 'self' \ 'unsafe-eval' \ 'unsafe-inline' \ https://aleysian-prefect.cs29.force.com \ https://c.la1-c1cs-ph2.salesforceliveagent.com \ https://c.la1-c2-ia2.salesforceliveagent.com \ https://cdn.lr-ingest.io \ https://d.la1-c1cs-ph2.salesforceliveagent.com \ https://d.la1-c2-ia2.salesforceliveagent.com \ https://d.la1-c2-ph2.salesforceliveagent.com \ https://d.la2-c1-ia5.salesforceliveagent.com \ https://d.la3-c1cs-ia2.salesforceliveagent.com https://d.la3-c1cs-ia5.salesforceliveagent.com \ https://js.stripe.com \ https://partial-prefect.cs1.force.com \ https://prefect--aleysian.my.salesforce.com \ https://prefect--partial.my.salesforce.com \ https://prefect--partial.sandbox.my.salesforce.com \ https://prefect--partial.sandbox.my.site.com \ https://prefect.force.com \ https://prefect.my.salesforce-site.com \ https://prefect.my.salesforce.com \ https://prefect.my.site.com \ https://service.force.com \ https://static.lightning.force.com \ ; \ img-src \ * \ data: \ ; \ style-src \ 'self' \ 'unsafe-inline' \ https://aleysian-prefect.cs29.force.com \ https://c.la1-c1cs-ph2.salesforceliveagent.com \ https://c.la1-c2-ia2.salesforceliveagent.com \ https://cdn.lr-ingest.io \ https://d.la1-c1cs-ph2.salesforceliveagent.com \ https://d.la1-c2-ia2.salesforceliveagent.com \ https://d.la1-c2-ph2.salesforceliveagent.com \ https://d.la2-c1-ia5.salesforceliveagent.com \ https://d.la3-c1cs-ia2.salesforceliveagent.com https://d.la3-c1cs-ia5.salesforceliveagent.com \ https://js.stripe.com \ https://partial-prefect.cs1.force.com \ https://prefect--aleysian.my.salesforce.com \ https://prefect--partial.my.salesforce.com \ https://prefect--partial.sandbox.my.salesforce.com \ https://prefect--partial.sandbox.my.site.com \ https://prefect.force.com \ https://prefect.my.salesforce-site.com \ https://prefect.my.salesforce.com \ https://prefect.my.site.com \ https://service.force.com \ https://static.lightning.force.com \ ; \ style-src-elem \ 'self' \ 'unsafe-inline' \ https://aleysian-prefect.cs29.force.com \ https://c.la1-c1cs-ph2.salesforceliveagent.com \ https://c.la1-c2-ia2.salesforceliveagent.com \ https://cdn.lr-ingest.io \ https://d.la1-c1cs-ph2.salesforceliveagent.com \ https://d.la1-c2-ia2.salesforceliveagent.com \ https://d.la1-c2-ph2.salesforceliveagent.com \ https://d.la2-c1-ia5.salesforceliveagent.com \ https://d.la3-c1cs-ia2.salesforceliveagent.com https://d.la3-c1cs-ia5.salesforceliveagent.com \ https://js.stripe.com \ https://partial-prefect.cs1.force.com \ https://prefect--aleysian.my.salesforce.com \ https://prefect--partial.my.salesforce.com \ https://prefect--partial.sandbox.my.salesforce.com \ https://prefect--partial.sandbox.my.site.com \ https://prefect.force.com \ https://prefect.my.salesforce-site.com \ https://prefect.my.salesforce.com \ https://prefect.my.site.com \ https://service.force.com \ https://static.lightning.force.com \ ; \ font-src \ data: \ 'self' \ ; \ frame-ancestors \ 'self' \ ; \ frame-src \ 'self' \ https://*.okta.com \ https://*.prefect.io \ https://js.stripe.com \ https://prefect--partial.my.salesforce.com \ https://prefect--partial.sandbox.my.salesforce.com \ https://prefect.auth0.com \ https://prefect.my.salesforce.com \ https://service.force.com \ ; \ child-src \ data: \ blob: \ ; \ worker-src \ 'self' \ data: \ blob: \ ; \ """ # Referrer-Policy controls the Referer header in requests. # # same-origin allows analytics tools to understand user journeys. Referrer-Policy = "same-origin" # X-Permitted-Cross-Domain-Policies controls whether this site can be # embedded into Flash applications or PDF documents. X-Permitted-Cross-Domain-Policies = "none" # Permissions-Policy controls the features that the site can request. # # https://developer.chrome.com/en/docs/privacy-sandbox/permissions-policy/ # https://github.com/w3c/webappsec-permissions-policy/blob/main/features.md # # payment # https://js.stripe.com - supports PaymentRequest Permissions-Policy = """\ accelerometer=(), \ ambient-light-sensor=(), \ autoplay=(), \ battery=(), \ camera=(), \ cross-origin-isolated=(), \ display-capture=(), \ document-domain=(), \ encrypted-media=(), \ execution-while-not-rendered=(), \ execution-while-out-of-viewport=(), \ fullscreen=(), \ geolocation=(), \ gyroscope=(), \ hid=(), \ idle-detection=(), \ magnetometer=(), \ microphone=(), \ midi=(), \ navigation-override=(), \ payment=(self "https://js.stripe.com"), \ picture-in-picture=(), \ publickey-credentials-get=(), \ screen-wake-lock=(), \ serial=(), \ sync-xhr=(), \ usb=(), \ web-share=(), \ xr-spatial-tracking=() \ """ ================================================ FILE: nginx.conf ================================================ server { # We'll want to make this dynamic at some point listen 8080; root /var/www; index index.html; location / { try_files $uri /index.html; } } ================================================ FILE: package.json ================================================ { "name": "prefect-ui", "version": "0.12.4", "private": true, "scripts": { "serve": "node file-downloader.js && export VUE_APP_RELEASE_TIMESTAMP=$(date -u +'%Y-%m-%dT%H:%M:%SZ') && vue-cli-service serve --port 8080", "build": "node file-downloader.js && export VUE_APP_RELEASE_TIMESTAMP=$(date -u +'%Y-%m-%dT%H:%M:%SZ') && vue-cli-service build", "lint": "vue-cli-service lint", "lint:ci": "vue-cli-service lint --no-fix", "preinstall": "npx npm-force-resolutions", "test:e2e": "vue-cli-service test:e2e", "test:integration": "vue-cli-service test:e2e --headless --mode development", "test:snapshots": "vue-cli-service test:unit -u", "test:unit": "vue-cli-service test:unit", "test:coverage": "vue-cli-service test:unit --coverage", "changelog": "auto-changelog --commit-limit 0 --template changelog-template.hbs --tag-pattern [0-9]{4}-[0-9]{2}-[0-9]{2}" }, "dependencies": { "@auth0/auth0-spa-js": "^1.14.0", "@okta/okta-auth-js": "^5.2.2", "apollo-link-batch-http": "^1.2.14", "caniuse-lite": "^1.0.30001390", "codemirror": "^5.60.0", "cronstrue": "^1.110.0", "d3": "^6.6.2", "d3-dag": "0.3.5", "d3-regression": "^1.3.8", "d3-zoom": "^2.0.0", "graphiql": "^1.4.7", "graphql": "^15.5.0", "highlight.js": "^10.7.2", "js-beautify": "^1.13.5", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", "logrocket": "^1.0.14", "logrocket-vuex": "0.0.3", "moment": "^2.29.1", "moment-duration-format": ">=2.3.2", "moment-timezone": "^0.5.37", "nth-check": "2.0.1", "react": "^17.0.2", "react-dom": "^17.0.2", "remark": "^13.0.0", "remark-autolink-headings": "^6.0.1", "remark-breaks": "^2.0.2", "remark-gfm": "^1.0.0", "remark-html": "^13.0.2", "remark-slug": "^6.0.0", "velocity-animate": ">=1.5.2", "vue": "^2.6.12", "vue-apollo": "^3.0.7", "vue-codemirror": ">=4.0.6", "vue-meta": "^2.4.0", "vue-router": "^3.5.1", "vue-router-multiguard": ">=1.0.3", "vue-scrollto": "^2.20.0", "vuetify": "^2.4.8", "vuex": "^3.6.2", "yaml": "2.0.0-5" }, "devDependencies": { "@babel/core": "^7.13.14", "@babel/plugin-proposal-optional-chaining": "^7.13.12", "@babel/plugin-transform-runtime": "^7.13.10", "@babel/runtime": "^7.13.10", "@vue/cli-plugin-babel": "4.5.14", "@vue/cli-plugin-eslint": "4.5.14", "@vue/cli-plugin-unit-jest": "4.5.14", "@vue/cli-service": "4.5.14", "@vue/eslint-config-prettier": ">=6.0.0", "@vue/test-utils": "^1.1.3", "auto-changelog": "^2.3.0", "autoprefixer": "^9.8.6", "babel-eslint": ">=10.0.3", "babel-jest": "^26.6.3", "babel-polyfill": "^6.26.0", "eslint": "^7.23.0", "eslint-plugin-prettier": "^3.3.1", "eslint-plugin-vue": "^7.8.0", "eslint-plugin-vuetify": "^1.0.0-beta.8", "graphql-tag": ">=2.10.2", "html-loader": "^1.3.2", "ignore-loader": ">=0.1.2", "jest-canvas-mock": "^2.3.1", "jest-fetch-mock": ">=3.0.1", "jest-localstorage-mock": "^2.4.8", "node-sass": "^7.0.0", "postcss-scss": "^3.0.5", "sass": "^1.32.8", "sass-loader": "^10.1.1", "sinon": "^9.2.4", "start-server-and-test": "^1.12.1", "style-loader": "^2.0.0", "stylelint": "^13.12.0", "stylelint-a11y": ">=1.2.1", "stylelint-config-recommended": "^4.0.0", "stylelint-config-sass-guidelines": "^7.1.0", "stylelint-order": ">=4.1.0", "stylelint-scss": "^3.19.0", "vue-cli-plugin-apollo": "^0.22.2", "vue-cli-plugin-vuetify": "^2.3.1", "vue-cli-plugin-webpack-bundle-analyzer": "^2.0.0", "vue-template-compiler": "^2.6.12", "vuetify-loader": "^1.7.2", "worker-plugin": "^5.0.0", "workerize-loader": ">=1.2.1" }, "peerDependencies": { "postcss": "^8.0.0" }, "resolutions": { "node-fetch": "2.6.7", "ejs": "3.1.7" } } ================================================ FILE: postcss.config.js ================================================ module.exports = { parser: 'postcss-scss', syntax: 'postcss-scss', plugins: { autoprefixer: {} } } ================================================ FILE: public/_redirects ================================================ /* /index.html 200 ================================================ FILE: public/browserconfig.xml ================================================ #2d89ef ================================================ FILE: public/fonts/font-awesome/LICENSE.txt ================================================ Font Awesome Pro License ------------------------ Font Awesome Pro is commercial software that requires a paid license. Full Font Awesome Pro license: https://fontawesome.com/license. # Commercial License The Font Awesome Pro commercial license allows you to pay for FA Pro once, own it, and use it just about everywhere you'd like. # Attribution Attribution is not required by the Font Awesome Pro commercial license. # Brand Icons All brand icons are trademarks of their respective owners. The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa. **Please do not use brand logos for any purpose except to represent the company, product, or service to which they refer.** ================================================ FILE: public/fonts/font-awesome/README.md ================================================ # Font Awesome 5.15.4 Thanks for downloading Font Awesome! We're so excited you're here. Our documentation is available online. Just head here: https://fontawesome.com ================================================ FILE: public/fonts/font-awesome/css/all.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ .fa, .fas, .far, .fal, .fad, .fab { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; font-style: normal; font-variant: normal; text-rendering: auto; line-height: 1; } .fa-lg { font-size: 1.33333em; line-height: 0.75em; vertical-align: -.0667em; } .fa-xs { font-size: .75em; } .fa-sm { font-size: .875em; } .fa-1x { font-size: 1em; } .fa-2x { font-size: 2em; } .fa-3x { font-size: 3em; } .fa-4x { font-size: 4em; } .fa-5x { font-size: 5em; } .fa-6x { font-size: 6em; } .fa-7x { font-size: 7em; } .fa-8x { font-size: 8em; } .fa-9x { font-size: 9em; } .fa-10x { font-size: 10em; } .fa-fw { text-align: center; width: 1.25em; } .fa-ul { list-style-type: none; margin-left: 2.5em; padding-left: 0; } .fa-ul > li { position: relative; } .fa-li { left: -2em; position: absolute; text-align: center; width: 2em; line-height: inherit; } .fa-border { border: solid 0.08em #eee; border-radius: .1em; padding: .2em .25em .15em; } .fa-pull-left { float: left; } .fa-pull-right { float: right; } .fa.fa-pull-left, .fas.fa-pull-left, .far.fa-pull-left, .fal.fa-pull-left, .fab.fa-pull-left { margin-right: .3em; } .fa.fa-pull-right, .fas.fa-pull-right, .far.fa-pull-right, .fal.fa-pull-right, .fab.fa-pull-right { margin-left: .3em; } .fa-spin { -webkit-animation: fa-spin 2s infinite linear; animation: fa-spin 2s infinite linear; } .fa-pulse { -webkit-animation: fa-spin 1s infinite steps(8); animation: fa-spin 1s infinite steps(8); } @-webkit-keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } .fa-rotate-90 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); transform: rotate(90deg); } .fa-rotate-180 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); transform: rotate(180deg); } .fa-rotate-270 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); transform: rotate(270deg); } .fa-flip-horizontal { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); transform: scale(-1, 1); } .fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); transform: scale(1, -1); } .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(-1, -1); transform: scale(-1, -1); } :root .fa-rotate-90, :root .fa-rotate-180, :root .fa-rotate-270, :root .fa-flip-horizontal, :root .fa-flip-vertical, :root .fa-flip-both { -webkit-filter: none; filter: none; } .fa-stack { display: inline-block; height: 2em; line-height: 2em; position: relative; vertical-align: middle; width: 2.5em; } .fa-stack-1x, .fa-stack-2x { left: 0; position: absolute; text-align: center; width: 100%; } .fa-stack-1x { line-height: inherit; } .fa-stack-2x { font-size: 2em; } .fa-inverse { color: #fff; } /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ .fa-abacus:before { content: "\f640"; } .fa-alarm-exclamation:before { content: "\f843"; } .fa-align-left:before { content: "\f036"; } .fa-align-slash:before { content: "\f846"; } .fa-atom-alt:before { content: "\f5d3"; } .fa-aws:before { content: "\f375"; } .fa-badge-check:before { content: "\f336"; } .fa-bell:before { content: "\f0f3"; } .fa-book-dead:before { content: "\f6b7"; } .fa-books:before { content: "\f5db"; } .fa-brackets-curly:before { content: "\f7ea"; } .fa-cc-amazon-pay:before { content: "\f42d"; } .fa-cc-amex:before { content: "\f1f3"; } .fa-cc-apple-pay:before { content: "\f416"; } .fa-cc-diners-club:before { content: "\f24c"; } .fa-cc-discover:before { content: "\f1f2"; } .fa-cc-jcb:before { content: "\f24b"; } .fa-cc-mastercard:before { content: "\f1f1"; } .fa-cc-paypal:before { content: "\f1f4"; } .fa-cc-stripe:before { content: "\f1f5"; } .fa-cc-visa:before { content: "\f1f0"; } .fa-chart-network:before { content: "\f78a"; } .fa-chart-scatter:before { content: "\f7ee"; } .fa-check:before { content: "\f00c"; } .fa-check-circle:before { content: "\f058"; } .fa-circle:before { content: "\f111"; } .fa-cloud:before { content: "\f0c2"; } .fa-clouds:before { content: "\f744"; } .fa-cogs:before { content: "\f085"; } .fa-comment-dots:before { content: "\f4ad"; } .fa-concierge-bell:before { content: "\f562"; } .fa-credit-card:before { content: "\f09d"; } .fa-desktop:before { content: "\f108"; } .fa-discourse:before { content: "\f393"; } .fa-docker:before { content: "\f395"; } .fa-dot-circle:before { content: "\f192"; } .fa-envelope:before { content: "\f0e0"; } .fa-exchange-alt:before { content: "\f362"; } .fa-eye:before { content: "\f06e"; } .fa-file-alt:before { content: "\f15c"; } .fa-file-code:before { content: "\f1c9"; } .fa-fingerprint:before { content: "\f577"; } .fa-github:before { content: "\f09b"; } .fa-globe:before { content: "\f0ac"; } .fa-globe-africa:before { content: "\f57c"; } .fa-globe-americas:before { content: "\f57d"; } .fa-globe-asia:before { content: "\f57e"; } .fa-globe-europe:before { content: "\f7a2"; } .fa-graduation-cap:before { content: "\f19d"; } .fa-history:before { content: "\f1da"; } .fa-home:before { content: "\f015"; } .fa-info:before { content: "\f129"; } .fa-info-circle:before { content: "\f05a"; } .fa-instagram:before { content: "\f16d"; } .fa-key:before { content: "\f084"; } .fa-key-skeleton:before { content: "\f6f3"; } .fa-laptop:before { content: "\f109"; } .fa-laptop-code:before { content: "\f5fc"; } .fa-laptop-house:before { content: "\e066"; } .fa-life-ring:before { content: "\f1cd"; } .fa-lightbulb:before { content: "\f0eb"; } .fa-list-alt:before { content: "\f022"; } .fa-list-ul:before { content: "\f0ca"; } .fa-lock-alt:before { content: "\f30d"; } .fa-map-marker-alt:before { content: "\f3c5"; } .fa-microsoft:before { content: "\f3ca"; } .fa-moon-stars:before { content: "\f755"; } .fa-network-wired:before { content: "\f6ff"; } .fa-planet-ringed:before { content: "\e020"; } .fa-plus:before { content: "\f067"; } .fa-question-circle:before { content: "\f059"; } .fa-quote-left:before { content: "\f10d"; } .fa-random:before { content: "\f074"; } .fa-rev:before { content: "\f5b2"; } .fa-robot:before { content: "\f544"; } .fa-rocket:before { content: "\f135"; } .fa-save:before { content: "\f0c7"; } .fa-search:before { content: "\f002"; } .fa-server:before { content: "\f233"; } .fa-sign-out:before { content: "\f08b"; } .fa-siren-on:before { content: "\e02e"; } .fa-slack:before { content: "\f198"; } .fa-slash:before { content: "\f715"; } .fa-smile:before { content: "\f118"; } .fa-snowman:before { content: "\f7d0"; } .fa-spinner-third:before { content: "\f3f4"; } .fa-square-full:before { content: "\f45c"; } .fa-sun:before { content: "\f185"; } .fa-tasks:before { content: "\f0ae"; } .fa-times:before { content: "\f00d"; } .fa-times-circle:before { content: "\f057"; } .fa-twitter:before { content: "\f099"; } .fa-undo:before { content: "\f0e2"; } .fa-undo-alt:before { content: "\f2ea"; } .fa-university:before { content: "\f19c"; } .fa-user:before { content: "\f007"; } .fa-user-friends:before { content: "\f500"; } .fa-user-hard-hat:before { content: "\f82c"; } .fa-user-shield:before { content: "\f505"; } .fa-users:before { content: "\f0c0"; } .sr-only { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .sr-only-focusable:active, .sr-only-focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } @font-face { font-family: 'Font Awesome 5 Brands'; font-style: normal; font-weight: 400; font-display: block; src: url("../webfonts/fa-brands-400.eot"); src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } .fab { font-family: 'Font Awesome 5 Brands'; font-weight: 400; } @font-face { font-family: 'Font Awesome 5 Duotone'; font-style: normal; font-weight: 900; font-display: block; src: url("../webfonts/fa-duotone-900.eot"); src: url("../webfonts/fa-duotone-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-duotone-900.woff2") format("woff2"), url("../webfonts/fa-duotone-900.woff") format("woff"), url("../webfonts/fa-duotone-900.ttf") format("truetype"), url("../webfonts/fa-duotone-900.svg#fontawesome") format("svg"); } .fad { position: relative; font-family: 'Font Awesome 5 Duotone'; font-weight: 900; } .fad:before { position: absolute; color: var(--fa-primary-color, inherit); opacity: 1; opacity: var(--fa-primary-opacity, 1); } .fad:after { color: var(--fa-secondary-color, inherit); opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .fa-swap-opacity .fad:before, .fad.fa-swap-opacity:before { opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .fa-swap-opacity .fad:after, .fad.fa-swap-opacity:after { opacity: 1; opacity: var(--fa-primary-opacity, 1); } .fad.fa-inverse { color: #fff; } .fad.fa-stack-1x, .fad.fa-stack-2x { position: absolute; } .fad.fa-stack-1x:before, .fad.fa-stack-2x:before, .fad.fa-fw:before { left: 50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); } .fad.fa-abacus:after { content: "\10f640"; } .fad.fa-align-slash:after { content: "\10f846"; } .fad.fa-atom-alt:after { content: "\10f5d3"; } .fad.fa-badge-check:after { content: "\10f336"; } .fad.fa-bell:after { content: "\10f0f3"; } .fad.fa-books:after { content: "\10f5db"; } .fad.fa-brackets-curly:after { content: "\10f7ea"; } .fad.fa-chart-network:after { content: "\10f78a"; } .fad.fa-chart-scatter:after { content: "\10f7ee"; } .fad.fa-check:after { content: "\10f00c"; } .fad.fa-circle:after { content: "\10f111"; } .fad.fa-clouds:after { content: "\10f744"; } .fad.fa-cogs:after { content: "\10f085"; } .fad.fa-comment-dots:after { content: "\10f4ad"; } .fad.fa-concierge-bell:after { content: "\10f562"; } .fad.fa-dot-circle:after { content: "\10f192"; } .fad.fa-envelope:after { content: "\10f0e0"; } .fad.fa-exchange-alt:after { content: "\10f362"; } .fad.fa-file-alt:after { content: "\10f15c"; } .fad.fa-file-code:after { content: "\10f1c9"; } .fad.fa-globe:after { content: "\10f0ac"; } .fad.fa-globe-africa:after { content: "\10f57c"; } .fad.fa-globe-americas:after { content: "\10f57d"; } .fad.fa-globe-asia:after { content: "\10f57e"; } .fad.fa-globe-europe:after { content: "\10f7a2"; } .fad.fa-graduation-cap:after { content: "\10f19d"; } .fad.fa-history:after { content: "\10f1da"; } .fad.fa-key:after { content: "\10f084"; } .fad.fa-key-skeleton:after { content: "\10f6f3"; } .fad.fa-laptop:after { content: "\10f109"; } .fad.fa-laptop-code:after { content: "\10f5fc"; } .fad.fa-laptop-house:after { content: "\10e066"; } .fad.fa-life-ring:after { content: "\10f1cd"; } .fad.fa-lightbulb:after { content: "\10f0eb"; } .fad.fa-list-alt:after { content: "\10f022"; } .fad.fa-list-ul:after { content: "\10f0ca"; } .fad.fa-lock-alt:after { content: "\10f30d"; } .fad.fa-map-marker-alt:after { content: "\10f3c5"; } .fad.fa-moon-stars:after { content: "\10f755"; } .fad.fa-network-wired:after { content: "\10f6ff"; } .fad.fa-planet-ringed:after { content: "\10e020"; } .fad.fa-question-circle:after { content: "\10f059"; } .fad.fa-quote-left:after { content: "\10f10d"; } .fad.fa-random:after { content: "\10f074"; } .fad.fa-rocket:after { content: "\10f135"; } .fad.fa-search:after { content: "\10f002"; } .fad.fa-server:after { content: "\10f233"; } .fad.fa-sign-out:after { content: "\10f08b"; } .fad.fa-siren-on:after { content: "\10e02e"; } .fad.fa-smile:after { content: "\10f118"; } .fad.fa-snowman:after { content: "\10f7d0"; } .fad.fa-sun:after { content: "\10f185"; } .fad.fa-tasks:after { content: "\10f0ae"; } .fad.fa-university:after { content: "\10f19c"; } .fad.fa-user:after { content: "\10f007"; } .fad.fa-user-hard-hat:after { content: "\10f82c"; } .fad.fa-user-shield:after { content: "\10f505"; } .fad.fa-users:after { content: "\10f0c0"; } @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 400; font-display: block; src: url("../webfonts/fa-regular-400.eot"); src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } .far { font-family: 'Font Awesome 5 Pro'; font-weight: 400; } @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 900; font-display: block; src: url("../webfonts/fa-solid-900.eot"); src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } .fa, .fas { font-family: 'Font Awesome 5 Pro'; font-weight: 900; } ================================================ FILE: public/fonts/font-awesome/css/brands.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ @font-face { font-family: 'Font Awesome 5 Brands'; font-style: normal; font-weight: 400; font-display: block; src: url("../webfonts/fa-brands-400.eot"); src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } .fab { font-family: 'Font Awesome 5 Brands'; font-weight: 400; } ================================================ FILE: public/fonts/font-awesome/css/duotone.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ @font-face { font-family: 'Font Awesome 5 Duotone'; font-style: normal; font-weight: 900; font-display: block; src: url("../webfonts/fa-duotone-900.eot"); src: url("../webfonts/fa-duotone-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-duotone-900.woff2") format("woff2"), url("../webfonts/fa-duotone-900.woff") format("woff"), url("../webfonts/fa-duotone-900.ttf") format("truetype"), url("../webfonts/fa-duotone-900.svg#fontawesome") format("svg"); } .fad { position: relative; font-family: 'Font Awesome 5 Duotone'; font-weight: 900; } .fad:before { position: absolute; color: var(--fa-primary-color, inherit); opacity: 1; opacity: var(--fa-primary-opacity, 1); } .fad:after { color: var(--fa-secondary-color, inherit); opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .fa-swap-opacity .fad:before, .fad.fa-swap-opacity:before { opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .fa-swap-opacity .fad:after, .fad.fa-swap-opacity:after { opacity: 1; opacity: var(--fa-primary-opacity, 1); } .fad.fa-inverse { color: #fff; } .fad.fa-stack-1x, .fad.fa-stack-2x { position: absolute; } .fad.fa-stack-1x:before, .fad.fa-stack-2x:before, .fad.fa-fw:before { left: 50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); } .fad.fa-abacus:after { content: "\10f640"; } .fad.fa-align-slash:after { content: "\10f846"; } .fad.fa-atom-alt:after { content: "\10f5d3"; } .fad.fa-badge-check:after { content: "\10f336"; } .fad.fa-bell:after { content: "\10f0f3"; } .fad.fa-books:after { content: "\10f5db"; } .fad.fa-brackets-curly:after { content: "\10f7ea"; } .fad.fa-chart-network:after { content: "\10f78a"; } .fad.fa-chart-scatter:after { content: "\10f7ee"; } .fad.fa-check:after { content: "\10f00c"; } .fad.fa-circle:after { content: "\10f111"; } .fad.fa-clouds:after { content: "\10f744"; } .fad.fa-cogs:after { content: "\10f085"; } .fad.fa-comment-dots:after { content: "\10f4ad"; } .fad.fa-concierge-bell:after { content: "\10f562"; } .fad.fa-dot-circle:after { content: "\10f192"; } .fad.fa-envelope:after { content: "\10f0e0"; } .fad.fa-exchange-alt:after { content: "\10f362"; } .fad.fa-file-alt:after { content: "\10f15c"; } .fad.fa-file-code:after { content: "\10f1c9"; } .fad.fa-globe:after { content: "\10f0ac"; } .fad.fa-globe-africa:after { content: "\10f57c"; } .fad.fa-globe-americas:after { content: "\10f57d"; } .fad.fa-globe-asia:after { content: "\10f57e"; } .fad.fa-globe-europe:after { content: "\10f7a2"; } .fad.fa-graduation-cap:after { content: "\10f19d"; } .fad.fa-history:after { content: "\10f1da"; } .fad.fa-key:after { content: "\10f084"; } .fad.fa-key-skeleton:after { content: "\10f6f3"; } .fad.fa-laptop:after { content: "\10f109"; } .fad.fa-laptop-code:after { content: "\10f5fc"; } .fad.fa-laptop-house:after { content: "\10e066"; } .fad.fa-life-ring:after { content: "\10f1cd"; } .fad.fa-lightbulb:after { content: "\10f0eb"; } .fad.fa-list-alt:after { content: "\10f022"; } .fad.fa-list-ul:after { content: "\10f0ca"; } .fad.fa-lock-alt:after { content: "\10f30d"; } .fad.fa-map-marker-alt:after { content: "\10f3c5"; } .fad.fa-moon-stars:after { content: "\10f755"; } .fad.fa-network-wired:after { content: "\10f6ff"; } .fad.fa-planet-ringed:after { content: "\10e020"; } .fad.fa-question-circle:after { content: "\10f059"; } .fad.fa-quote-left:after { content: "\10f10d"; } .fad.fa-random:after { content: "\10f074"; } .fad.fa-rocket:after { content: "\10f135"; } .fad.fa-search:after { content: "\10f002"; } .fad.fa-server:after { content: "\10f233"; } .fad.fa-sign-out:after { content: "\10f08b"; } .fad.fa-siren-on:after { content: "\10e02e"; } .fad.fa-smile:after { content: "\10f118"; } .fad.fa-snowman:after { content: "\10f7d0"; } .fad.fa-sun:after { content: "\10f185"; } .fad.fa-tasks:after { content: "\10f0ae"; } .fad.fa-university:after { content: "\10f19c"; } .fad.fa-user:after { content: "\10f007"; } .fad.fa-user-hard-hat:after { content: "\10f82c"; } .fad.fa-user-shield:after { content: "\10f505"; } .fad.fa-users:after { content: "\10f0c0"; } ================================================ FILE: public/fonts/font-awesome/css/fontawesome.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ .fa, .fas, .far, .fal, .fad, .fab { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; font-style: normal; font-variant: normal; text-rendering: auto; line-height: 1; } .fa-lg { font-size: 1.33333em; line-height: 0.75em; vertical-align: -.0667em; } .fa-xs { font-size: .75em; } .fa-sm { font-size: .875em; } .fa-1x { font-size: 1em; } .fa-2x { font-size: 2em; } .fa-3x { font-size: 3em; } .fa-4x { font-size: 4em; } .fa-5x { font-size: 5em; } .fa-6x { font-size: 6em; } .fa-7x { font-size: 7em; } .fa-8x { font-size: 8em; } .fa-9x { font-size: 9em; } .fa-10x { font-size: 10em; } .fa-fw { text-align: center; width: 1.25em; } .fa-ul { list-style-type: none; margin-left: 2.5em; padding-left: 0; } .fa-ul > li { position: relative; } .fa-li { left: -2em; position: absolute; text-align: center; width: 2em; line-height: inherit; } .fa-border { border: solid 0.08em #eee; border-radius: .1em; padding: .2em .25em .15em; } .fa-pull-left { float: left; } .fa-pull-right { float: right; } .fa.fa-pull-left, .fas.fa-pull-left, .far.fa-pull-left, .fal.fa-pull-left, .fab.fa-pull-left { margin-right: .3em; } .fa.fa-pull-right, .fas.fa-pull-right, .far.fa-pull-right, .fal.fa-pull-right, .fab.fa-pull-right { margin-left: .3em; } .fa-spin { -webkit-animation: fa-spin 2s infinite linear; animation: fa-spin 2s infinite linear; } .fa-pulse { -webkit-animation: fa-spin 1s infinite steps(8); animation: fa-spin 1s infinite steps(8); } @-webkit-keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } .fa-rotate-90 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); transform: rotate(90deg); } .fa-rotate-180 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); transform: rotate(180deg); } .fa-rotate-270 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); transform: rotate(270deg); } .fa-flip-horizontal { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); transform: scale(-1, 1); } .fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); transform: scale(1, -1); } .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(-1, -1); transform: scale(-1, -1); } :root .fa-rotate-90, :root .fa-rotate-180, :root .fa-rotate-270, :root .fa-flip-horizontal, :root .fa-flip-vertical, :root .fa-flip-both { -webkit-filter: none; filter: none; } .fa-stack { display: inline-block; height: 2em; line-height: 2em; position: relative; vertical-align: middle; width: 2.5em; } .fa-stack-1x, .fa-stack-2x { left: 0; position: absolute; text-align: center; width: 100%; } .fa-stack-1x { line-height: inherit; } .fa-stack-2x { font-size: 2em; } .fa-inverse { color: #fff; } /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ .fa-abacus:before { content: "\f640"; } .fa-alarm-exclamation:before { content: "\f843"; } .fa-align-left:before { content: "\f036"; } .fa-align-slash:before { content: "\f846"; } .fa-atom-alt:before { content: "\f5d3"; } .fa-aws:before { content: "\f375"; } .fa-badge-check:before { content: "\f336"; } .fa-bell:before { content: "\f0f3"; } .fa-book-dead:before { content: "\f6b7"; } .fa-books:before { content: "\f5db"; } .fa-brackets-curly:before { content: "\f7ea"; } .fa-cc-amazon-pay:before { content: "\f42d"; } .fa-cc-amex:before { content: "\f1f3"; } .fa-cc-apple-pay:before { content: "\f416"; } .fa-cc-diners-club:before { content: "\f24c"; } .fa-cc-discover:before { content: "\f1f2"; } .fa-cc-jcb:before { content: "\f24b"; } .fa-cc-mastercard:before { content: "\f1f1"; } .fa-cc-paypal:before { content: "\f1f4"; } .fa-cc-stripe:before { content: "\f1f5"; } .fa-cc-visa:before { content: "\f1f0"; } .fa-chart-network:before { content: "\f78a"; } .fa-chart-scatter:before { content: "\f7ee"; } .fa-check:before { content: "\f00c"; } .fa-check-circle:before { content: "\f058"; } .fa-circle:before { content: "\f111"; } .fa-cloud:before { content: "\f0c2"; } .fa-clouds:before { content: "\f744"; } .fa-cogs:before { content: "\f085"; } .fa-comment-dots:before { content: "\f4ad"; } .fa-concierge-bell:before { content: "\f562"; } .fa-credit-card:before { content: "\f09d"; } .fa-desktop:before { content: "\f108"; } .fa-discourse:before { content: "\f393"; } .fa-docker:before { content: "\f395"; } .fa-dot-circle:before { content: "\f192"; } .fa-envelope:before { content: "\f0e0"; } .fa-exchange-alt:before { content: "\f362"; } .fa-eye:before { content: "\f06e"; } .fa-file-alt:before { content: "\f15c"; } .fa-file-code:before { content: "\f1c9"; } .fa-fingerprint:before { content: "\f577"; } .fa-github:before { content: "\f09b"; } .fa-globe:before { content: "\f0ac"; } .fa-globe-africa:before { content: "\f57c"; } .fa-globe-americas:before { content: "\f57d"; } .fa-globe-asia:before { content: "\f57e"; } .fa-globe-europe:before { content: "\f7a2"; } .fa-graduation-cap:before { content: "\f19d"; } .fa-history:before { content: "\f1da"; } .fa-home:before { content: "\f015"; } .fa-info:before { content: "\f129"; } .fa-info-circle:before { content: "\f05a"; } .fa-instagram:before { content: "\f16d"; } .fa-key:before { content: "\f084"; } .fa-key-skeleton:before { content: "\f6f3"; } .fa-laptop:before { content: "\f109"; } .fa-laptop-code:before { content: "\f5fc"; } .fa-laptop-house:before { content: "\e066"; } .fa-life-ring:before { content: "\f1cd"; } .fa-lightbulb:before { content: "\f0eb"; } .fa-list-alt:before { content: "\f022"; } .fa-list-ul:before { content: "\f0ca"; } .fa-lock-alt:before { content: "\f30d"; } .fa-map-marker-alt:before { content: "\f3c5"; } .fa-microsoft:before { content: "\f3ca"; } .fa-moon-stars:before { content: "\f755"; } .fa-network-wired:before { content: "\f6ff"; } .fa-planet-ringed:before { content: "\e020"; } .fa-plus:before { content: "\f067"; } .fa-question-circle:before { content: "\f059"; } .fa-quote-left:before { content: "\f10d"; } .fa-random:before { content: "\f074"; } .fa-rev:before { content: "\f5b2"; } .fa-robot:before { content: "\f544"; } .fa-rocket:before { content: "\f135"; } .fa-save:before { content: "\f0c7"; } .fa-search:before { content: "\f002"; } .fa-server:before { content: "\f233"; } .fa-sign-out:before { content: "\f08b"; } .fa-siren-on:before { content: "\e02e"; } .fa-slack:before { content: "\f198"; } .fa-slash:before { content: "\f715"; } .fa-smile:before { content: "\f118"; } .fa-snowman:before { content: "\f7d0"; } .fa-spinner-third:before { content: "\f3f4"; } .fa-square-full:before { content: "\f45c"; } .fa-sun:before { content: "\f185"; } .fa-tasks:before { content: "\f0ae"; } .fa-times:before { content: "\f00d"; } .fa-times-circle:before { content: "\f057"; } .fa-twitter:before { content: "\f099"; } .fa-undo:before { content: "\f0e2"; } .fa-undo-alt:before { content: "\f2ea"; } .fa-university:before { content: "\f19c"; } .fa-user:before { content: "\f007"; } .fa-user-friends:before { content: "\f500"; } .fa-user-hard-hat:before { content: "\f82c"; } .fa-user-shield:before { content: "\f505"; } .fa-users:before { content: "\f0c0"; } .sr-only { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .sr-only-focusable:active, .sr-only-focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } ================================================ FILE: public/fonts/font-awesome/css/regular.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 400; font-display: block; src: url("../webfonts/fa-regular-400.eot"); src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } .far { font-family: 'Font Awesome 5 Pro'; font-weight: 400; } ================================================ FILE: public/fonts/font-awesome/css/solid.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 900; font-display: block; src: url("../webfonts/fa-solid-900.eot"); src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } .fa, .fas { font-family: 'Font Awesome 5 Pro'; font-weight: 900; } ================================================ FILE: public/fonts/font-awesome/css/svg-with-js.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ svg:not(:root).svg-inline--fa { overflow: visible; } .svg-inline--fa { display: inline-block; font-size: inherit; height: 1em; overflow: visible; vertical-align: -.125em; } .svg-inline--fa.fa-lg { vertical-align: -.225em; } .svg-inline--fa.fa-w-1 { width: 0.0625em; } .svg-inline--fa.fa-w-2 { width: 0.125em; } .svg-inline--fa.fa-w-3 { width: 0.1875em; } .svg-inline--fa.fa-w-4 { width: 0.25em; } .svg-inline--fa.fa-w-5 { width: 0.3125em; } .svg-inline--fa.fa-w-6 { width: 0.375em; } .svg-inline--fa.fa-w-7 { width: 0.4375em; } .svg-inline--fa.fa-w-8 { width: 0.5em; } .svg-inline--fa.fa-w-9 { width: 0.5625em; } .svg-inline--fa.fa-w-10 { width: 0.625em; } .svg-inline--fa.fa-w-11 { width: 0.6875em; } .svg-inline--fa.fa-w-12 { width: 0.75em; } .svg-inline--fa.fa-w-13 { width: 0.8125em; } .svg-inline--fa.fa-w-14 { width: 0.875em; } .svg-inline--fa.fa-w-15 { width: 0.9375em; } .svg-inline--fa.fa-w-16 { width: 1em; } .svg-inline--fa.fa-w-17 { width: 1.0625em; } .svg-inline--fa.fa-w-18 { width: 1.125em; } .svg-inline--fa.fa-w-19 { width: 1.1875em; } .svg-inline--fa.fa-w-20 { width: 1.25em; } .svg-inline--fa.fa-pull-left { margin-right: .3em; width: auto; } .svg-inline--fa.fa-pull-right { margin-left: .3em; width: auto; } .svg-inline--fa.fa-border { height: 1.5em; } .svg-inline--fa.fa-li { width: 2em; } .svg-inline--fa.fa-fw { width: 1.25em; } .fa-layers svg.svg-inline--fa { bottom: 0; left: 0; margin: auto; position: absolute; right: 0; top: 0; } .fa-layers { display: inline-block; height: 1em; position: relative; text-align: center; vertical-align: -.125em; width: 1em; } .fa-layers svg.svg-inline--fa { -webkit-transform-origin: center center; transform-origin: center center; } .fa-layers-text, .fa-layers-counter { display: inline-block; position: absolute; text-align: center; } .fa-layers-text { left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); -webkit-transform-origin: center center; transform-origin: center center; } .fa-layers-counter { background-color: #ff253a; border-radius: 1em; -webkit-box-sizing: border-box; box-sizing: border-box; color: #fff; height: 1.5em; line-height: 1; max-width: 5em; min-width: 1.5em; overflow: hidden; padding: .25em; right: 0; text-overflow: ellipsis; top: 0; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: top right; transform-origin: top right; } .fa-layers-bottom-right { bottom: 0; right: 0; top: auto; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: bottom right; transform-origin: bottom right; } .fa-layers-bottom-left { bottom: 0; left: 0; right: auto; top: auto; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: bottom left; transform-origin: bottom left; } .fa-layers-top-right { right: 0; top: 0; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: top right; transform-origin: top right; } .fa-layers-top-left { left: 0; right: auto; top: 0; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: top left; transform-origin: top left; } .fa-lg { font-size: 1.33333em; line-height: 0.75em; vertical-align: -.0667em; } .fa-xs { font-size: .75em; } .fa-sm { font-size: .875em; } .fa-1x { font-size: 1em; } .fa-2x { font-size: 2em; } .fa-3x { font-size: 3em; } .fa-4x { font-size: 4em; } .fa-5x { font-size: 5em; } .fa-6x { font-size: 6em; } .fa-7x { font-size: 7em; } .fa-8x { font-size: 8em; } .fa-9x { font-size: 9em; } .fa-10x { font-size: 10em; } .fa-fw { text-align: center; width: 1.25em; } .fa-ul { list-style-type: none; margin-left: 2.5em; padding-left: 0; } .fa-ul > li { position: relative; } .fa-li { left: -2em; position: absolute; text-align: center; width: 2em; line-height: inherit; } .fa-border { border: solid 0.08em #eee; border-radius: .1em; padding: .2em .25em .15em; } .fa-pull-left { float: left; } .fa-pull-right { float: right; } .fa.fa-pull-left, .fas.fa-pull-left, .far.fa-pull-left, .fal.fa-pull-left, .fab.fa-pull-left { margin-right: .3em; } .fa.fa-pull-right, .fas.fa-pull-right, .far.fa-pull-right, .fal.fa-pull-right, .fab.fa-pull-right { margin-left: .3em; } .fa-spin { -webkit-animation: fa-spin 2s infinite linear; animation: fa-spin 2s infinite linear; } .fa-pulse { -webkit-animation: fa-spin 1s infinite steps(8); animation: fa-spin 1s infinite steps(8); } @-webkit-keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } .fa-rotate-90 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); transform: rotate(90deg); } .fa-rotate-180 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); transform: rotate(180deg); } .fa-rotate-270 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); transform: rotate(270deg); } .fa-flip-horizontal { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); transform: scale(-1, 1); } .fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); transform: scale(1, -1); } .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(-1, -1); transform: scale(-1, -1); } :root .fa-rotate-90, :root .fa-rotate-180, :root .fa-rotate-270, :root .fa-flip-horizontal, :root .fa-flip-vertical, :root .fa-flip-both { -webkit-filter: none; filter: none; } .fa-stack { display: inline-block; height: 2em; position: relative; width: 2.5em; } .fa-stack-1x, .fa-stack-2x { bottom: 0; left: 0; margin: auto; position: absolute; right: 0; top: 0; } .svg-inline--fa.fa-stack-1x { height: 1em; width: 1.25em; } .svg-inline--fa.fa-stack-2x { height: 2em; width: 2.5em; } .fa-inverse { color: #fff; } .sr-only { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .sr-only-focusable:active, .sr-only-focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } .svg-inline--fa .fa-primary { fill: var(--fa-primary-color, currentColor); opacity: 1; opacity: var(--fa-primary-opacity, 1); } .svg-inline--fa .fa-secondary { fill: var(--fa-secondary-color, currentColor); opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .svg-inline--fa.fa-swap-opacity .fa-primary { opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .svg-inline--fa.fa-swap-opacity .fa-secondary { opacity: 1; opacity: var(--fa-primary-opacity, 1); } .svg-inline--fa mask .fa-primary, .svg-inline--fa mask .fa-secondary { fill: black; } .fad.fa-inverse { color: #fff; } ================================================ FILE: public/fonts/font-awesome/current-ui.yaml ================================================ projectName: current-ui version: 5.15.4 icons: - github: - brands - slack: - brands - twitter: - brands - instagram: - brands - times: - solid - regular - times-circle: - solid - plus: - regular - solid - undo-alt: - regular - solid - info: - regular - user: - solid - duotone - regular - history: - solid - duotone - check-circle: - regular - cloud: - solid - list-ul: - duotone - fingerprint: - solid - file-code: - duotone - regular - search: - duotone - credit-card: - solid - server: - duotone - question-circle: - duotone - regular - laptop: - duotone - file-alt: - duotone - books: - duotone - graduation-cap: - duotone - life-ring: - duotone - circle: - duotone - solid - bell: - duotone - exchange-alt: - duotone - clouds: - duotone - random: - duotone - users: - duotone - solid - regular - key: - duotone - key-skeleton: - duotone - brackets-curly: - duotone - user-hard-hat: - duotone - abacus: - duotone - envelope: - solid - duotone - cogs: - duotone - sun: - duotone - moon-stars: - duotone - sign-out: - duotone - smile: - duotone - map-marker-alt: - duotone - cc-amazon-pay: - brands - cc-amex: - brands - cc-apple-pay: - brands - cc-diners-club: - brands - cc-discover: - brands - cc-visa: - brands - cc-stripe: - brands - cc-paypal: - brands - cc-mastercard: - brands - cc-jcb: - brands - university: - duotone - lightbulb: - duotone - tasks: - duotone - check: - duotone - solid - user-shield: - duotone - siren-on: - duotone - globe-africa: - duotone - globe-asia: - duotone - globe-americas: - duotone - globe-europe: - duotone - planet-ringed: - duotone - snowman: - duotone - globe: - duotone - laptop-house: - duotone - docker: - brands - aws: - brands - align-slash: - duotone - alarm-exclamation: - solid - slash: - solid - regular - list-alt: - duotone - spinner-third: - solid - atom-alt: - duotone - network-wired: - duotone - chart-scatter: - duotone - chart-network: - duotone - lock-alt: - duotone - rocket: - duotone - solid - regular - home: - solid - quote-left: - duotone - desktop: - solid - regular - save: - solid - regular - eye: - solid - regular - undo: - solid - regular - book-dead: - solid - rev: - brands - robot: - solid - align-left: - solid - user-friends: - regular - microsoft: - brands - info-circle: - regular - square-full: - solid - concierge-bell: - duotone - badge-check: - duotone - dot-circle: - duotone - laptop-code: - duotone - discourse: - brands - comment-dots: - duotone ================================================ FILE: public/fonts/font-awesome/js/all.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "aws": [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"], "cc-amazon-pay": [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"], "cc-amex": [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"], "cc-apple-pay": [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"], "cc-diners-club": [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"], "cc-discover": [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"], "cc-jcb": [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"], "cc-mastercard": [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"], "cc-paypal": [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"], "cc-stripe": [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"], "cc-visa": [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"], "discourse": [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"], "docker": [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"], "github": [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"], "instagram": [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"], "microsoft": [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"], "rev": [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"], "slack": [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"], "twitter": [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"] }; bunker(function () { defineIcons('fab', icons); }); }()); (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "abacus": [576, 512, [], "f640", ["M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"]], "align-slash": [640, 512, [], "f846", ["M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"]], "atom-alt": [448, 512, [], "f5d3", ["M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"]], "badge-check": [512, 512, [], "f336", ["M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"]], "bell": [448, 512, [], "f0f3", ["M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z"]], "books": [576, 512, [], "f5db", ["M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"]], "brackets-curly": [576, 512, [], "f7ea", ["M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]], "chart-network": [640, 512, [], "f78a", ["M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]], "chart-scatter": [512, 512, [], "f7ee", ["M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]], "check": [512, 512, [], "f00c", ["M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"]], "circle": [512, 512, [], "f111", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"]], "clouds": [640, 512, [], "f744", ["M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"]], "cogs": [640, 512, [], "f085", ["M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"]], "comment-dots": [512, 512, [], "f4ad", ["M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]], "concierge-bell": [512, 512, [], "f562", ["M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"]], "dot-circle": [512, 512, [], "f192", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"]], "envelope": [512, 512, [], "f0e0", ["M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"]], "exchange-alt": [512, 512, [], "f362", ["M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"]], "file-alt": [384, 512, [], "f15c", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"]], "file-code": [384, 512, [], "f1c9", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"]], "globe": [496, 512, [], "f0ac", ["M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"]], "globe-africa": [496, 512, [], "f57c", ["M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"]], "globe-americas": [496, 512, [], "f57d", ["M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"]], "globe-asia": [496, 512, [], "f57e", ["M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"]], "globe-europe": [496, 512, [], "f7a2", ["M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"]], "graduation-cap": [640, 512, [], "f19d", ["M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"]], "history": [512, 512, [], "f1da", ["M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"]], "key": [512, 512, [], "f084", ["M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]], "key-skeleton": [512, 512, [], "f6f3", ["M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"]], "laptop": [640, 512, [], "f109", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]], "laptop-code": [640, 512, [], "f5fc", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"]], "laptop-house": [640, 512, [], "e066", ["M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]], "life-ring": [512, 512, [], "f1cd", ["M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"]], "lightbulb": [352, 512, [], "f0eb", ["M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"]], "list-alt": [512, 512, [], "f022", ["M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"]], "list-ul": [512, 512, [], "f0ca", ["M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"]], "lock-alt": [448, 512, [], "f30d", ["M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"]], "map-marker-alt": [384, 512, [], "f3c5", ["M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]], "moon-stars": [512, 512, [], "f755", ["M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"]], "network-wired": [640, 512, [], "f6ff", ["M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"]], "planet-ringed": [512, 512, [], "e020", ["M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"]], "question-circle": [512, 512, [], "f059", ["M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"]], "quote-left": [512, 512, [], "f10d", ["M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"]], "random": [512, 512, [], "f074", ["M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"]], "rocket": [512, 512, [], "f135", ["M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"]], "search": [512, 512, [], "f002", ["M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"]], "server": [512, 512, [], "f233", ["M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"]], "sign-out": [512, 512, [], "f08b", ["M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"]], "siren-on": [640, 512, [], "e02e", ["M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"]], "smile": [496, 512, [], "f118", ["M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"]], "snowman": [512, 512, [], "f7d0", ["M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"]], "sun": [512, 512, [], "f185", ["M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"]], "tasks": [512, 512, [], "f0ae", ["M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"]], "university": [512, 512, [], "f19c", ["M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"]], "user": [448, 512, [], "f007", ["M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"]], "user-hard-hat": [448, 512, [], "f82c", ["M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"]], "user-shield": [640, 512, [], "f505", ["M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"]], "users": [640, 512, [], "f0c0", ["M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"]] }; bunker(function () { defineIcons('fad', icons); }); }()); (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "check-circle": [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"], "desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"], "eye": [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"], "file-code": [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"], "info": [256, 512, [], "f129", "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"], "info-circle": [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"], "plus": [384, 512, [], "f067", "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"], "question-circle": [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"], "rocket": [512, 512, [], "f135", "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"], "save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"], "slash": [640, 512, [], "f715", "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"], "times": [320, 512, [], "f00d", "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"], "undo": [512, 512, [], "f0e2", "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"], "undo-alt": [512, 512, [], "f2ea", "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"], "user": [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"], "user-friends": [640, 512, [], "f500", "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"], "users": [640, 512, [], "f0c0", "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"] }; bunker(function () { defineIcons('far', icons); }); }()); (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "alarm-exclamation": [512, 512, [], "f843", "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"], "align-left": [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"], "book-dead": [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"], "check": [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"], "circle": [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"], "cloud": [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"], "credit-card": [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"], "desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"], "envelope": [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"], "eye": [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"], "fingerprint": [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"], "history": [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"], "home": [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"], "plus": [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"], "robot": [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"], "rocket": [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"], "save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"], "slash": [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"], "spinner-third": [512, 512, [], "f3f4", "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"], "square-full": [512, 512, [], "f45c", "M512 512H0V0h512v512z"], "times": [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"], "times-circle": [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"], "undo": [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"], "undo-alt": [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"], "user": [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"], "users": [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"] }; bunker(function () { defineIcons('fas', icons); }); }()); (function () { 'use strict'; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var noop = function noop() {}; var _WINDOW = {}; var _DOCUMENT = {}; var _MUTATION_OBSERVER = null; var _PERFORMANCE = { mark: noop, measure: noop }; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver; if (typeof performance !== 'undefined') _PERFORMANCE = performance; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var MUTATION_OBSERVER = _MUTATION_OBSERVER; var PERFORMANCE = _PERFORMANCE; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var UNITS_IN_GRID = 16; var DEFAULT_FAMILY_PREFIX = 'fa'; var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa'; var DATA_FA_I2SVG = 'data-fa-i2svg'; var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element'; var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending'; var DATA_PREFIX = 'data-prefix'; var DATA_ICON = 'data-icon'; var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg'; var MUTATION_APPROACH_ASYNC = 'async'; var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT']; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); var PREFIX_TO_STYLE = { 'fas': 'solid', 'far': 'regular', 'fal': 'light', 'fad': 'duotone', 'fab': 'brands', 'fak': 'kit', 'fa': 'solid' }; var STYLE_TO_PREFIX = { 'solid': 'fas', 'regular': 'far', 'light': 'fal', 'duotone': 'fad', 'brands': 'fab', 'kit': 'fak' }; var LAYERS_TEXT_CLASSNAME = 'fa-layers-text'; var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements? var FONT_WEIGHT_TO_PREFIX = { '900': 'fas', '400': 'far', 'normal': 'far', '300': 'fal' }; var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask']; var DUOTONE_CLASSES = { GROUP: 'group', SWAP_OPACITY: 'swap-opacity', PRIMARY: 'primary', SECONDARY: 'secondary' }; var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) { return "".concat(n, "x"); })).concat(oneToTwenty.map(function (n) { return "w-".concat(n); })); var initial = WINDOW.FontAwesomeConfig || {}; function getAttrConfig(attr) { var element = DOCUMENT.querySelector('script[' + attr + ']'); if (element) { return element.getAttribute(attr); } } function coerce(val) { // Getting an empty string will occur if the attribute is set on the HTML tag but without a value // We'll assume that this is an indication that it should be toggled to true // For example if (val === '') return true; if (val === 'false') return false; if (val === 'true') return true; return val; } if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') { var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']]; attrs.forEach(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), attr = _ref2[0], key = _ref2[1]; var val = coerce(getAttrConfig(attr)); if (val !== undefined && val !== null) { initial[key] = val; } }); } var _default = { familyPrefix: DEFAULT_FAMILY_PREFIX, replacementClass: DEFAULT_REPLACEMENT_CLASS, autoReplaceSvg: true, autoAddCss: true, autoA11y: true, searchPseudoElements: false, observeMutations: true, mutateApproach: 'async', keepOriginalSource: true, measurePerformance: false, showMissingIcons: true }; var _config = _objectSpread2(_objectSpread2({}, _default), initial); if (!_config.autoReplaceSvg) _config.observeMutations = false; var config = _objectSpread2({}, _config); WINDOW.FontAwesomeConfig = config; var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; var functions = []; var listener = function listener() { DOCUMENT.removeEventListener('DOMContentLoaded', listener); loaded = 1; functions.map(function (fn) { return fn(); }); }; var loaded = false; if (IS_DOM) { loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState); if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener); } function domready (fn) { if (!IS_DOM) return; loaded ? setTimeout(fn, 0) : functions.push(fn); } var PENDING = 'pending'; var SETTLED = 'settled'; var FULFILLED = 'fulfilled'; var REJECTED = 'rejected'; var NOOP = function NOOP() {}; var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function'; var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate; var asyncQueue = []; var asyncTimer; function asyncFlush() { // run promise callbacks for (var i = 0; i < asyncQueue.length; i++) { asyncQueue[i][0](asyncQueue[i][1]); } // reset async asyncQueue asyncQueue = []; asyncTimer = false; } function asyncCall(callback, arg) { asyncQueue.push([callback, arg]); if (!asyncTimer) { asyncTimer = true; asyncSetTimer(asyncFlush, 0); } } function invokeResolver(resolver, promise) { function resolvePromise(value) { resolve(promise, value); } function rejectPromise(reason) { reject(promise, reason); } try { resolver(resolvePromise, rejectPromise); } catch (e) { rejectPromise(e); } } function invokeCallback(subscriber) { var owner = subscriber.owner; var settled = owner._state; var value = owner._data; var callback = subscriber[settled]; var promise = subscriber.then; if (typeof callback === 'function') { settled = FULFILLED; try { value = callback(value); } catch (e) { reject(promise, e); } } if (!handleThenable(promise, value)) { if (settled === FULFILLED) { resolve(promise, value); } if (settled === REJECTED) { reject(promise, value); } } } function handleThenable(promise, value) { var resolved; try { if (promise === value) { throw new TypeError('A promises callback cannot return that same promise.'); } if (value && (typeof value === 'function' || _typeof(value) === 'object')) { // then should be retrieved only once var then = value.then; if (typeof then === 'function') { then.call(value, function (val) { if (!resolved) { resolved = true; if (value === val) { fulfill(promise, val); } else { resolve(promise, val); } } }, function (reason) { if (!resolved) { resolved = true; reject(promise, reason); } }); return true; } } } catch (e) { if (!resolved) { reject(promise, e); } return true; } return false; } function resolve(promise, value) { if (promise === value || !handleThenable(promise, value)) { fulfill(promise, value); } } function fulfill(promise, value) { if (promise._state === PENDING) { promise._state = SETTLED; promise._data = value; asyncCall(publishFulfillment, promise); } } function reject(promise, reason) { if (promise._state === PENDING) { promise._state = SETTLED; promise._data = reason; asyncCall(publishRejection, promise); } } function publish(promise) { promise._then = promise._then.forEach(invokeCallback); } function publishFulfillment(promise) { promise._state = FULFILLED; publish(promise); } function publishRejection(promise) { promise._state = REJECTED; publish(promise); if (!promise._handled && isNode) { global.process.emit('unhandledRejection', promise._data, promise); } } function notifyRejectionHandled(promise) { global.process.emit('rejectionHandled', promise); } /** * @class */ function P(resolver) { if (typeof resolver !== 'function') { throw new TypeError('Promise resolver ' + resolver + ' is not a function'); } if (this instanceof P === false) { throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.'); } this._then = []; invokeResolver(resolver, this); } P.prototype = { constructor: P, _state: PENDING, _then: null, _data: undefined, _handled: false, then: function then(onFulfillment, onRejection) { var subscriber = { owner: this, then: new this.constructor(NOOP), fulfilled: onFulfillment, rejected: onRejection }; if ((onRejection || onFulfillment) && !this._handled) { this._handled = true; if (this._state === REJECTED && isNode) { asyncCall(notifyRejectionHandled, this); } } if (this._state === FULFILLED || this._state === REJECTED) { // already resolved, call callback async asyncCall(invokeCallback, subscriber); } else { // subscribe this._then.push(subscriber); } return subscriber.then; }, catch: function _catch(onRejection) { return this.then(null, onRejection); } }; P.all = function (promises) { if (!Array.isArray(promises)) { throw new TypeError('You must pass an array to Promise.all().'); } return new P(function (resolve, reject) { var results = []; var remaining = 0; function resolver(index) { remaining++; return function (value) { results[index] = value; if (! --remaining) { resolve(results); } }; } for (var i = 0, promise; i < promises.length; i++) { promise = promises[i]; if (promise && typeof promise.then === 'function') { promise.then(resolver(i), reject); } else { results[i] = promise; } } if (!remaining) { resolve(results); } }); }; P.race = function (promises) { if (!Array.isArray(promises)) { throw new TypeError('You must pass an array to Promise.race().'); } return new P(function (resolve, reject) { for (var i = 0, promise; i < promises.length; i++) { promise = promises[i]; if (promise && typeof promise.then === 'function') { promise.then(resolve, reject); } else { resolve(promise); } } }); }; P.resolve = function (value) { if (value && _typeof(value) === 'object' && value.constructor === P) { return value; } return new P(function (resolve) { resolve(value); }); }; P.reject = function (reason) { return new P(function (resolve, reject) { reject(reason); }); }; var picked = typeof Promise === 'function' ? Promise : P; var d = UNITS_IN_GRID; var meaninglessTransform = { size: 16, x: 0, y: 0, rotate: 0, flipX: false, flipY: false }; function isReserved(name) { return ~RESERVED_CLASSES.indexOf(name); } function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function insertCss(css) { if (!css || !IS_DOM) { return; } var style = DOCUMENT.createElement('style'); style.setAttribute('type', 'text/css'); style.innerHTML = css; var headChildren = DOCUMENT.head.childNodes; var beforeChild = null; for (var i = headChildren.length - 1; i > -1; i--) { var child = headChildren[i]; var tagName = (child.tagName || '').toUpperCase(); if (['STYLE', 'LINK'].indexOf(tagName) > -1) { beforeChild = child; } } DOCUMENT.head.insertBefore(style, beforeChild); return css; } var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; function nextUniqueId() { var size = 12; var id = ''; while (size-- > 0) { id += idPool[Math.random() * 62 | 0]; } return id; } function toArray(obj) { var array = []; for (var i = (obj || []).length >>> 0; i--;) { array[i] = obj[i]; } return array; } function classArray(node) { if (node.classList) { return toArray(node.classList); } else { return (node.getAttribute('class') || '').split(' ').filter(function (i) { return i; }); } } function getIconName(familyPrefix, cls) { var parts = cls.split('-'); var prefix = parts[0]; var iconName = parts.slice(1).join('-'); if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) { return iconName; } else { return null; } } function htmlEscape(str) { return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>'); } function joinAttributes(attributes) { return Object.keys(attributes || {}).reduce(function (acc, attributeName) { return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" "); }, '').trim(); } function joinStyles(styles) { return Object.keys(styles || {}).reduce(function (acc, styleName) { return acc + "".concat(styleName, ": ").concat(styles[styleName], ";"); }, ''); } function transformIsMeaningful(transform) { return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY; } function transformForSvg(_ref) { var transform = _ref.transform, containerWidth = _ref.containerWidth, iconWidth = _ref.iconWidth; var outer = { transform: "translate(".concat(containerWidth / 2, " 256)") }; var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") "); var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") "); var innerRotate = "rotate(".concat(transform.rotate, " 0 0)"); var inner = { transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate) }; var path = { transform: "translate(".concat(iconWidth / 2 * -1, " -256)") }; return { outer: outer, inner: inner, path: path }; } function transformForCss(_ref2) { var transform = _ref2.transform, _ref2$width = _ref2.width, width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width, _ref2$height = _ref2.height, height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height, _ref2$startCentered = _ref2.startCentered, startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered; var val = ''; if (startCentered && IS_IE) { val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) "); } else if (startCentered) { val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) "); } else { val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) "); } val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") "); val += "rotate(".concat(transform.rotate, "deg) "); return val; } var ALL_SPACE = { x: 0, y: 0, width: '100%', height: '100%' }; function fillBlack(abstract) { var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; if (abstract.attributes && (abstract.attributes.fill || force)) { abstract.attributes.fill = 'black'; } return abstract; } function deGroup(abstract) { if (abstract.tag === 'g') { return abstract.children; } else { return [abstract]; } } function makeIconMasking (_ref) { var children = _ref.children, attributes = _ref.attributes, main = _ref.main, mask = _ref.mask, explicitMaskId = _ref.maskId, transform = _ref.transform; var mainWidth = main.width, mainPath = main.icon; var maskWidth = mask.width, maskPath = mask.icon; var trans = transformForSvg({ transform: transform, containerWidth: maskWidth, iconWidth: mainWidth }); var maskRect = { tag: 'rect', attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { fill: 'white' }) }; var maskInnerGroupChildrenMixin = mainPath.children ? { children: mainPath.children.map(fillBlack) } : {}; var maskInnerGroup = { tag: 'g', attributes: _objectSpread2({}, trans.inner), children: [fillBlack(_objectSpread2({ tag: mainPath.tag, attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path) }, maskInnerGroupChildrenMixin))] }; var maskOuterGroup = { tag: 'g', attributes: _objectSpread2({}, trans.outer), children: [maskInnerGroup] }; var maskId = "mask-".concat(explicitMaskId || nextUniqueId()); var clipId = "clip-".concat(explicitMaskId || nextUniqueId()); var maskTag = { tag: 'mask', attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { id: maskId, maskUnits: 'userSpaceOnUse', maskContentUnits: 'userSpaceOnUse' }), children: [maskRect, maskOuterGroup] }; var defs = { tag: 'defs', children: [{ tag: 'clipPath', attributes: { id: clipId }, children: deGroup(maskPath) }, maskTag] }; children.push(defs, { tag: 'rect', attributes: _objectSpread2({ fill: 'currentColor', 'clip-path': "url(#".concat(clipId, ")"), mask: "url(#".concat(maskId, ")") }, ALL_SPACE) }); return { children: children, attributes: attributes }; } function makeIconStandard (_ref) { var children = _ref.children, attributes = _ref.attributes, main = _ref.main, transform = _ref.transform, styles = _ref.styles; var styleString = joinStyles(styles); if (styleString.length > 0) { attributes['style'] = styleString; } if (transformIsMeaningful(transform)) { var trans = transformForSvg({ transform: transform, containerWidth: main.width, iconWidth: main.width }); children.push({ tag: 'g', attributes: _objectSpread2({}, trans.outer), children: [{ tag: 'g', attributes: _objectSpread2({}, trans.inner), children: [{ tag: main.icon.tag, children: main.icon.children, attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), trans.path) }] }] }); } else { children.push(main.icon); } return { children: children, attributes: attributes }; } function asIcon (_ref) { var children = _ref.children, main = _ref.main, mask = _ref.mask, attributes = _ref.attributes, styles = _ref.styles, transform = _ref.transform; if (transformIsMeaningful(transform) && main.found && !mask.found) { var width = main.width, height = main.height; var offset = { x: width / height / 2, y: 0.5 }; attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, { 'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em") })); } return [{ tag: 'svg', attributes: attributes, children: children }]; } function asSymbol (_ref) { var prefix = _ref.prefix, iconName = _ref.iconName, children = _ref.children, attributes = _ref.attributes, symbol = _ref.symbol; var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol; return [{ tag: 'svg', attributes: { style: 'display: none;' }, children: [{ tag: 'symbol', attributes: _objectSpread2(_objectSpread2({}, attributes), {}, { id: id }), children: children }] }]; } function makeInlineSvgAbstract(params) { var _params$icons = params.icons, main = _params$icons.main, mask = _params$icons.mask, prefix = params.prefix, iconName = params.iconName, transform = params.transform, symbol = params.symbol, title = params.title, maskId = params.maskId, titleId = params.titleId, extra = params.extra, _params$watchable = params.watchable, watchable = _params$watchable === void 0 ? false : _params$watchable; var _ref = mask.found ? mask : main, width = _ref.width, height = _ref.height; var isUploadedIcon = prefix === 'fak'; var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16)); var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) { return extra.classes.indexOf(c) === -1; }).filter(function (c) { return c !== '' || !!c; }).concat(extra.classes).join(' '); var content = { children: [], attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, { 'data-prefix': prefix, 'data-icon': iconName, 'class': attrClass, 'role': extra.attributes.role || 'img', 'xmlns': 'http://www.w3.org/2000/svg', 'viewBox': "0 0 ".concat(width, " ").concat(height) }) }; var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? { width: "".concat(width / height * 16 * 0.0625, "em") } : {}; if (watchable) { content.attributes[DATA_FA_I2SVG] = ''; } if (title) content.children.push({ tag: 'title', attributes: { id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId()) }, children: [title] }); var args = _objectSpread2(_objectSpread2({}, content), {}, { prefix: prefix, iconName: iconName, main: main, mask: mask, maskId: maskId, transform: transform, symbol: symbol, styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles) }); var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args), children = _ref2.children, attributes = _ref2.attributes; args.children = children; args.attributes = attributes; if (symbol) { return asSymbol(args); } else { return asIcon(args); } } function makeLayersTextAbstract(params) { var content = params.content, width = params.width, height = params.height, transform = params.transform, title = params.title, extra = params.extra, _params$watchable2 = params.watchable, watchable = _params$watchable2 === void 0 ? false : _params$watchable2; var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { 'title': title } : {}), {}, { 'class': extra.classes.join(' ') }); if (watchable) { attributes[DATA_FA_I2SVG] = ''; } var styles = _objectSpread2({}, extra.styles); if (transformIsMeaningful(transform)) { styles['transform'] = transformForCss({ transform: transform, startCentered: true, width: width, height: height }); styles['-webkit-transform'] = styles['transform']; } var styleString = joinStyles(styles); if (styleString.length > 0) { attributes['style'] = styleString; } var val = []; val.push({ tag: 'span', attributes: attributes, children: [content] }); if (title) { val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] }); } return val; } function makeLayersCounterAbstract(params) { var content = params.content, title = params.title, extra = params.extra; var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { 'title': title } : {}), {}, { 'class': extra.classes.join(' ') }); var styleString = joinStyles(extra.styles); if (styleString.length > 0) { attributes['style'] = styleString; } var val = []; val.push({ tag: 'span', attributes: attributes, children: [content] }); if (title) { val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] }); } return val; } var noop$1 = function noop() {}; var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { mark: noop$1, measure: noop$1 }; var preamble = "FA \"5.15.4\""; var begin = function begin(name) { p.mark("".concat(preamble, " ").concat(name, " begins")); return function () { return end(name); }; }; var end = function end(name) { p.mark("".concat(preamble, " ").concat(name, " ends")); p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends")); }; var perf = { begin: begin, end: end }; /** * Internal helper to bind a function known to have 4 arguments * to a given context. */ var bindInternal4 = function bindInternal4(func, thisContext) { return function (a, b, c, d) { return func.call(thisContext, a, b, c, d); }; }; /** * # Reduce * * A fast object `.reduce()` implementation. * * @param {Object} subject The object to reduce over. * @param {Function} fn The reducer function. * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0]. * @param {Object} thisContext The context for the reducer. * @return {mixed} The final result. */ var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) { var keys = Object.keys(subject), length = keys.length, iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn, i, key, result; if (initialValue === undefined) { i = 1; result = subject[keys[0]]; } else { i = 0; result = initialValue; } for (; i < length; i++) { key = keys[i]; result = iterator(result, subject[key], key, subject); } return result; }; function toHex(unicode) { var result = ''; for (var i = 0; i < unicode.length; i++) { var hex = unicode.charCodeAt(i).toString(16); result += ('000' + hex).slice(-4); } return result; } function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var styles = namespace.styles, shims = namespace.shims; var _byUnicode = {}; var _byLigature = {}; var _byOldName = {}; var build = function build() { var lookup = function lookup(reducer) { return reduce(styles, function (o, style, prefix) { o[prefix] = reduce(style, reducer, {}); return o; }, {}); }; _byUnicode = lookup(function (acc, icon, iconName) { if (icon[3]) { acc[icon[3]] = iconName; } return acc; }); _byLigature = lookup(function (acc, icon, iconName) { var ligatures = icon[2]; acc[iconName] = iconName; ligatures.forEach(function (ligature) { acc[ligature] = iconName; }); return acc; }); var hasRegular = ('far' in styles); _byOldName = reduce(shims, function (acc, shim) { var oldName = shim[0]; var prefix = shim[1]; var iconName = shim[2]; if (prefix === 'far' && !hasRegular) { prefix = 'fas'; } acc[oldName] = { prefix: prefix, iconName: iconName }; return acc; }, {}); }; build(); function byUnicode(prefix, unicode) { return (_byUnicode[prefix] || {})[unicode]; } function byLigature(prefix, ligature) { return (_byLigature[prefix] || {})[ligature]; } function byOldName(name) { return _byOldName[name] || { prefix: null, iconName: null }; } var styles$1 = namespace.styles; var emptyCanonicalIcon = function emptyCanonicalIcon() { return { prefix: null, iconName: null, rest: [] }; }; function getCanonicalIcon(values) { return values.reduce(function (acc, cls) { var iconName = getIconName(config.familyPrefix, cls); if (styles$1[cls]) { acc.prefix = cls; } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) { acc.prefix = cls; } else if (iconName) { var shim = acc.prefix === 'fa' ? byOldName(iconName) : {}; acc.iconName = shim.iconName || iconName; acc.prefix = shim.prefix || acc.prefix; } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) { acc.rest.push(cls); } return acc; }, emptyCanonicalIcon()); } function iconFromMapping(mapping, prefix, iconName) { if (mapping && mapping[prefix] && mapping[prefix][iconName]) { return { prefix: prefix, iconName: iconName, icon: mapping[prefix][iconName] }; } } function toHtml(abstractNodes) { var tag = abstractNodes.tag, _abstractNodes$attrib = abstractNodes.attributes, attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib, _abstractNodes$childr = abstractNodes.children, children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr; if (typeof abstractNodes === 'string') { return htmlEscape(abstractNodes); } else { return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), ""); } } var noop$2 = function noop() {}; function isWatched(node) { var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null; return typeof i2svg === 'string'; } function getMutator() { if (config.autoReplaceSvg === true) { return mutators.replace; } var mutator = mutators[config.autoReplaceSvg]; return mutator || mutators.replace; } var mutators = { replace: function replace(mutation) { var node = mutation[0]; var abstract = mutation[1]; var newOuterHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); if (node.parentNode && node.outerHTML) { node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "") : ''); } else if (node.parentNode) { var newNode = document.createElement('span'); node.parentNode.replaceChild(newNode, node); newNode.outerHTML = newOuterHTML; } }, nest: function nest(mutation) { var node = mutation[0]; var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it. // Short-circuit to the standard replacement if (~classArray(node).indexOf(config.replacementClass)) { return mutators.replace(mutation); } var forSvg = new RegExp("".concat(config.familyPrefix, "-.*")); delete abstract[0].attributes.style; delete abstract[0].attributes.id; var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) { if (cls === config.replacementClass || cls.match(forSvg)) { acc.toSvg.push(cls); } else { acc.toNode.push(cls); } return acc; }, { toNode: [], toSvg: [] }); abstract[0].attributes.class = splitClasses.toSvg.join(' '); var newInnerHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); node.setAttribute('class', splitClasses.toNode.join(' ')); node.setAttribute(DATA_FA_I2SVG, ''); node.innerHTML = newInnerHTML; } }; function performOperationSync(op) { op(); } function perform(mutations, callback) { var callbackFunction = typeof callback === 'function' ? callback : noop$2; if (mutations.length === 0) { callbackFunction(); } else { var frame = performOperationSync; if (config.mutateApproach === MUTATION_APPROACH_ASYNC) { frame = WINDOW.requestAnimationFrame || performOperationSync; } frame(function () { var mutator = getMutator(); var mark = perf.begin('mutate'); mutations.map(mutator); mark(); callbackFunction(); }); } } var disabled = false; function disableObservation() { disabled = true; } function enableObservation() { disabled = false; } var mo = null; function observe(options) { if (!MUTATION_OBSERVER) { return; } if (!config.observeMutations) { return; } var treeCallback = options.treeCallback, nodeCallback = options.nodeCallback, pseudoElementsCallback = options.pseudoElementsCallback, _options$observeMutat = options.observeMutationsRoot, observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat; mo = new MUTATION_OBSERVER(function (objects) { if (disabled) return; toArray(objects).forEach(function (mutationRecord) { if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) { if (config.searchPseudoElements) { pseudoElementsCallback(mutationRecord.target); } treeCallback(mutationRecord.target); } if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) { pseudoElementsCallback(mutationRecord.target.parentNode); } if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) { if (mutationRecord.attributeName === 'class') { var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)), prefix = _getCanonicalIcon.prefix, iconName = _getCanonicalIcon.iconName; if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix); if (iconName) mutationRecord.target.setAttribute('data-icon', iconName); } else { nodeCallback(mutationRecord.target); } } }); }); if (!IS_DOM) return; mo.observe(observeMutationsRoot, { childList: true, attributes: true, characterData: true, subtree: true }); } function disconnect() { if (!mo) return; mo.disconnect(); } function styleParser (node) { var style = node.getAttribute('style'); var val = []; if (style) { val = style.split(';').reduce(function (acc, style) { var styles = style.split(':'); var prop = styles[0]; var value = styles.slice(1); if (prop && value.length > 0) { acc[prop] = value.join(':').trim(); } return acc; }, {}); } return val; } function classParser (node) { var existingPrefix = node.getAttribute('data-prefix'); var existingIconName = node.getAttribute('data-icon'); var innerText = node.innerText !== undefined ? node.innerText.trim() : ''; var val = getCanonicalIcon(classArray(node)); if (existingPrefix && existingIconName) { val.prefix = existingPrefix; val.iconName = existingIconName; } if (val.prefix && innerText.length > 1) { val.iconName = byLigature(val.prefix, node.innerText); } else if (val.prefix && innerText.length === 1) { val.iconName = byUnicode(val.prefix, toHex(node.innerText)); } return val; } var parseTransformString = function parseTransformString(transformString) { var transform = { size: 16, x: 0, y: 0, flipX: false, flipY: false, rotate: 0 }; if (!transformString) { return transform; } else { return transformString.toLowerCase().split(' ').reduce(function (acc, n) { var parts = n.toLowerCase().split('-'); var first = parts[0]; var rest = parts.slice(1).join('-'); if (first && rest === 'h') { acc.flipX = true; return acc; } if (first && rest === 'v') { acc.flipY = true; return acc; } rest = parseFloat(rest); if (isNaN(rest)) { return acc; } switch (first) { case 'grow': acc.size = acc.size + rest; break; case 'shrink': acc.size = acc.size - rest; break; case 'left': acc.x = acc.x - rest; break; case 'right': acc.x = acc.x + rest; break; case 'up': acc.y = acc.y - rest; break; case 'down': acc.y = acc.y + rest; break; case 'rotate': acc.rotate = acc.rotate + rest; break; } return acc; }, transform); } }; function transformParser (node) { return parseTransformString(node.getAttribute('data-fa-transform')); } function symbolParser (node) { var symbol = node.getAttribute('data-fa-symbol'); return symbol === null ? false : symbol === '' ? true : symbol; } function attributesParser (node) { var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) { if (acc.name !== 'class' && acc.name !== 'style') { acc[attr.name] = attr.value; } return acc; }, {}); var title = node.getAttribute('title'); var titleId = node.getAttribute('data-fa-title-id'); if (config.autoA11y) { if (title) { extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); } else { extraAttributes['aria-hidden'] = 'true'; extraAttributes['focusable'] = 'false'; } } return extraAttributes; } function maskParser (node) { var mask = node.getAttribute('data-fa-mask'); if (!mask) { return emptyCanonicalIcon(); } else { return getCanonicalIcon(mask.split(' ').map(function (i) { return i.trim(); })); } } function blankMeta() { return { iconName: null, title: null, titleId: null, prefix: null, transform: meaninglessTransform, symbol: false, mask: null, maskId: null, extra: { classes: [], styles: {}, attributes: {} } }; } function parseMeta(node) { var _classParser = classParser(node), iconName = _classParser.iconName, prefix = _classParser.prefix, extraClasses = _classParser.rest; var extraStyles = styleParser(node); var transform = transformParser(node); var symbol = symbolParser(node); var extraAttributes = attributesParser(node); var mask = maskParser(node); return { iconName: iconName, title: node.getAttribute('title'), titleId: node.getAttribute('data-fa-title-id'), prefix: prefix, transform: transform, symbol: symbol, mask: mask, maskId: node.getAttribute('data-fa-mask-id'), extra: { classes: extraClasses, styles: extraStyles, attributes: extraAttributes } }; } function MissingIcon(error) { this.name = 'MissingIcon'; this.message = error || 'Icon unavailable'; this.stack = new Error().stack; } MissingIcon.prototype = Object.create(Error.prototype); MissingIcon.prototype.constructor = MissingIcon; var FILL = { fill: 'currentColor' }; var ANIMATION_BASE = { attributeType: 'XML', repeatCount: 'indefinite', dur: '2s' }; var RING = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z' }) }; var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { attributeName: 'opacity' }); var DOT = { tag: 'circle', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { cx: '256', cy: '364', r: '28' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { attributeName: 'r', values: '28;14;28;28;14;28;' }) }, { tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '1;0;1;1;0;1;' }) }] }; var QUESTION = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { opacity: '1', d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '1;0;0;0;0;1;' }) }] }; var EXCLAMATION = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { opacity: '0', d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '0;0;1;1;0;0;' }) }] }; var missing = { tag: 'g', children: [RING, DOT, QUESTION, EXCLAMATION] }; var styles$2 = namespace.styles; function asFoundIcon(icon) { var width = icon[0]; var height = icon[1]; var _icon$slice = icon.slice(4), _icon$slice2 = _slicedToArray(_icon$slice, 1), vectorData = _icon$slice2[0]; var element = null; if (Array.isArray(vectorData)) { element = { tag: 'g', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP) }, children: [{ tag: 'path', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY), fill: 'currentColor', d: vectorData[0] } }, { tag: 'path', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY), fill: 'currentColor', d: vectorData[1] } }] }; } else { element = { tag: 'path', attributes: { fill: 'currentColor', d: vectorData } }; } return { found: true, width: width, height: height, icon: element }; } function findIcon(iconName, prefix) { return new picked(function (resolve, reject) { var val = { found: false, width: 512, height: 512, icon: missing }; if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) { var icon = styles$2[prefix][iconName]; return resolve(asFoundIcon(icon)); } if (iconName && prefix && !config.showMissingIcons) { reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName))); } else { resolve(val); } }); } var styles$3 = namespace.styles; function generateSvgReplacementMutation(node, nodeMeta) { var iconName = nodeMeta.iconName, title = nodeMeta.title, titleId = nodeMeta.titleId, prefix = nodeMeta.prefix, transform = nodeMeta.transform, symbol = nodeMeta.symbol, mask = nodeMeta.mask, maskId = nodeMeta.maskId, extra = nodeMeta.extra; return new picked(function (resolve, reject) { picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), main = _ref2[0], mask = _ref2[1]; resolve([node, makeInlineSvgAbstract({ icons: { main: main, mask: mask }, prefix: prefix, iconName: iconName, transform: transform, symbol: symbol, mask: mask, maskId: maskId, title: title, titleId: titleId, extra: extra, watchable: true })]); }); }); } function generateLayersText(node, nodeMeta) { var title = nodeMeta.title, transform = nodeMeta.transform, extra = nodeMeta.extra; var width = null; var height = null; if (IS_IE) { var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10); var boundingClientRect = node.getBoundingClientRect(); width = boundingClientRect.width / computedFontSize; height = boundingClientRect.height / computedFontSize; } if (config.autoA11y && !title) { extra.attributes['aria-hidden'] = 'true'; } return picked.resolve([node, makeLayersTextAbstract({ content: node.innerHTML, width: width, height: height, transform: transform, title: title, extra: extra, watchable: true })]); } function generateMutation(node) { var nodeMeta = parseMeta(node); if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) { return generateLayersText(node, nodeMeta); } else { return generateSvgReplacementMutation(node, nodeMeta); } } function onTree(root) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (!IS_DOM) return; var htmlClassList = DOCUMENT.documentElement.classList; var hclAdd = function hclAdd(suffix) { return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); }; var hclRemove = function hclRemove(suffix) { return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); }; var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3); var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) { return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])"); })).join(', '); if (prefixesDomQuery.length === 0) { return; } var candidates = []; try { candidates = toArray(root.querySelectorAll(prefixesDomQuery)); } catch (e) {// noop } if (candidates.length > 0) { hclAdd('pending'); hclRemove('complete'); } else { return; } var mark = perf.begin('onTree'); var mutations = candidates.reduce(function (acc, node) { try { var mutation = generateMutation(node); if (mutation) { acc.push(mutation); } } catch (e) { if (!PRODUCTION) { if (e instanceof MissingIcon) { console.error(e); } } } return acc; }, []); return new picked(function (resolve, reject) { picked.all(mutations).then(function (resolvedMutations) { perform(resolvedMutations, function () { hclAdd('active'); hclAdd('complete'); hclRemove('pending'); if (typeof callback === 'function') callback(); mark(); resolve(); }); }).catch(function () { mark(); reject(); }); }); } function onNode(node) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; generateMutation(node).then(function (mutation) { if (mutation) { perform([mutation], callback); } }); } function replaceForPosition(node, position) { var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-')); return new picked(function (resolve, reject) { if (node.getAttribute(pendingAttribute) !== null) { // This node is already being processed return resolve(); } var children = toArray(node.children); var alreadyProcessedPseudoElement = children.filter(function (c) { return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position; })[0]; var styles = WINDOW.getComputedStyle(node, position); var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN); var fontWeight = styles.getPropertyValue('font-weight'); var content = styles.getPropertyValue('content'); if (alreadyProcessedPseudoElement && !fontFamily) { // If we've already processed it but the current computed style does not result in a font-family, // that probably means that a class name that was previously present to make the icon has been // removed. So we now should delete the icon. node.removeChild(alreadyProcessedPseudoElement); return resolve(); } else if (fontFamily && content !== 'none' && content !== '') { var _content = styles.getPropertyValue('content'); var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight]; var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content); var iconName = byUnicode(prefix, hexValue); var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't // already done so with the same prefix and iconName if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) { node.setAttribute(pendingAttribute, iconIdentifier); if (alreadyProcessedPseudoElement) { // Delete the old one, since we're replacing it with a new one node.removeChild(alreadyProcessedPseudoElement); } var meta = blankMeta(); var extra = meta.extra; extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position; findIcon(iconName, prefix).then(function (main) { var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, { icons: { main: main, mask: emptyCanonicalIcon() }, prefix: prefix, iconName: iconIdentifier, extra: extra, watchable: true })); var element = DOCUMENT.createElement('svg'); if (position === ':before') { node.insertBefore(element, node.firstChild); } else { node.appendChild(element); } element.outerHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); node.removeAttribute(pendingAttribute); resolve(); }).catch(reject); } else { resolve(); } } else { resolve(); } }); } function replace(node) { return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]); } function processable(node) { return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg'); } function searchPseudoElements (root) { if (!IS_DOM) return; return new picked(function (resolve, reject) { var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace); var end = perf.begin('searchPseudoElements'); disableObservation(); picked.all(operations).then(function () { end(); enableObservation(); resolve(); }).catch(function () { end(); enableObservation(); reject(); }); }); } var baseStyles = "svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff}"; function css () { var dfp = DEFAULT_FAMILY_PREFIX; var drc = DEFAULT_REPLACEMENT_CLASS; var fp = config.familyPrefix; var rc = config.replacementClass; var s = baseStyles; if (fp !== dfp || rc !== drc) { var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g'); var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g'); var rPatt = new RegExp("\\.".concat(drc), 'g'); s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc)); } return s; } var Library = /*#__PURE__*/function () { function Library() { _classCallCheck(this, Library); this.definitions = {}; } _createClass(Library, [{ key: "add", value: function add() { var _this = this; for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) { definitions[_key] = arguments[_key]; } var additions = definitions.reduce(this._pullDefinitions, {}); Object.keys(additions).forEach(function (key) { _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]); defineIcons(key, additions[key]); build(); }); } }, { key: "reset", value: function reset() { this.definitions = {}; } }, { key: "_pullDefinitions", value: function _pullDefinitions(additions, definition) { var normalized = definition.prefix && definition.iconName && definition.icon ? { 0: definition } : definition; Object.keys(normalized).map(function (key) { var _normalized$key = normalized[key], prefix = _normalized$key.prefix, iconName = _normalized$key.iconName, icon = _normalized$key.icon; if (!additions[prefix]) additions[prefix] = {}; additions[prefix][iconName] = icon; }); return additions; } }]); return Library; }(); function ensureCss() { if (config.autoAddCss && !_cssInserted) { insertCss(css()); _cssInserted = true; } } function apiObject(val, abstractCreator) { Object.defineProperty(val, 'abstract', { get: abstractCreator }); Object.defineProperty(val, 'html', { get: function get() { return val.abstract.map(function (a) { return toHtml(a); }); } }); Object.defineProperty(val, 'node', { get: function get() { if (!IS_DOM) return; var container = DOCUMENT.createElement('div'); container.innerHTML = val.html; return container.children; } }); return val; } function findIconDefinition(iconLookup) { var _iconLookup$prefix = iconLookup.prefix, prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix, iconName = iconLookup.iconName; if (!iconName) return; return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName); } function resolveIcons(next) { return function (maybeIconDefinition) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {}); var mask = params.mask; if (mask) { mask = (mask || {}).icon ? mask : findIconDefinition(mask || {}); } return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, { mask: mask })); }; } var library = new Library(); var noAuto = function noAuto() { config.autoReplaceSvg = false; config.observeMutations = false; disconnect(); }; var _cssInserted = false; var dom = { i2svg: function i2svg() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (IS_DOM) { ensureCss(); var _params$node = params.node, node = _params$node === void 0 ? DOCUMENT : _params$node, _params$callback = params.callback, callback = _params$callback === void 0 ? function () {} : _params$callback; if (config.searchPseudoElements) { searchPseudoElements(node); } return onTree(node, callback); } else { return picked.reject('Operation requires a DOM of some kind.'); } }, css: css, insertCss: function insertCss$$1() { if (!_cssInserted) { insertCss(css()); _cssInserted = true; } }, watch: function watch() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var autoReplaceSvgRoot = params.autoReplaceSvgRoot, observeMutationsRoot = params.observeMutationsRoot; if (config.autoReplaceSvg === false) { config.autoReplaceSvg = true; } config.observeMutations = true; domready(function () { autoReplace({ autoReplaceSvgRoot: autoReplaceSvgRoot }); observe({ treeCallback: onTree, nodeCallback: onNode, pseudoElementsCallback: searchPseudoElements, observeMutationsRoot: observeMutationsRoot }); }); } }; var parse = { transform: function transform(transformString) { return parseTransformString(transformString); } }; var icon = resolveIcons(function (iconDefinition) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$transform = params.transform, transform = _params$transform === void 0 ? meaninglessTransform : _params$transform, _params$symbol = params.symbol, symbol = _params$symbol === void 0 ? false : _params$symbol, _params$mask = params.mask, mask = _params$mask === void 0 ? null : _params$mask, _params$maskId = params.maskId, maskId = _params$maskId === void 0 ? null : _params$maskId, _params$title = params.title, title = _params$title === void 0 ? null : _params$title, _params$titleId = params.titleId, titleId = _params$titleId === void 0 ? null : _params$titleId, _params$classes = params.classes, classes = _params$classes === void 0 ? [] : _params$classes, _params$attributes = params.attributes, attributes = _params$attributes === void 0 ? {} : _params$attributes, _params$styles = params.styles, styles = _params$styles === void 0 ? {} : _params$styles; if (!iconDefinition) return; var prefix = iconDefinition.prefix, iconName = iconDefinition.iconName, icon = iconDefinition.icon; return apiObject(_objectSpread2({ type: 'icon' }, iconDefinition), function () { ensureCss(); if (config.autoA11y) { if (title) { attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); } else { attributes['aria-hidden'] = 'true'; attributes['focusable'] = 'false'; } } return makeInlineSvgAbstract({ icons: { main: asFoundIcon(icon), mask: mask ? asFoundIcon(mask.icon) : { found: false, width: null, height: null, icon: {} } }, prefix: prefix, iconName: iconName, transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), symbol: symbol, title: title, maskId: maskId, titleId: titleId, extra: { attributes: attributes, styles: styles, classes: classes } }); }); }); var text = function text(content) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$transform2 = params.transform, transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2, _params$title2 = params.title, title = _params$title2 === void 0 ? null : _params$title2, _params$classes2 = params.classes, classes = _params$classes2 === void 0 ? [] : _params$classes2, _params$attributes2 = params.attributes, attributes = _params$attributes2 === void 0 ? {} : _params$attributes2, _params$styles2 = params.styles, styles = _params$styles2 === void 0 ? {} : _params$styles2; return apiObject({ type: 'text', content: content }, function () { ensureCss(); return makeLayersTextAbstract({ content: content, transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), title: title, extra: { attributes: attributes, styles: styles, classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes)) } }); }); }; var counter = function counter(content) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$title3 = params.title, title = _params$title3 === void 0 ? null : _params$title3, _params$classes3 = params.classes, classes = _params$classes3 === void 0 ? [] : _params$classes3, _params$attributes3 = params.attributes, attributes = _params$attributes3 === void 0 ? {} : _params$attributes3, _params$styles3 = params.styles, styles = _params$styles3 === void 0 ? {} : _params$styles3; return apiObject({ type: 'counter', content: content }, function () { ensureCss(); return makeLayersCounterAbstract({ content: content.toString(), title: title, extra: { attributes: attributes, styles: styles, classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes)) } }); }); }; var layer = function layer(assembler) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$classes4 = params.classes, classes = _params$classes4 === void 0 ? [] : _params$classes4; return apiObject({ type: 'layer' }, function () { ensureCss(); var children = []; assembler(function (args) { Array.isArray(args) ? args.map(function (a) { children = children.concat(a.abstract); }) : children = children.concat(args.abstract); }); return [{ tag: 'span', attributes: { class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ') }, children: children }]; }); }; var api = { noAuto: noAuto, config: config, dom: dom, library: library, parse: parse, findIconDefinition: findIconDefinition, icon: icon, text: text, counter: counter, layer: layer, toHtml: toHtml }; var autoReplace = function autoReplace() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _params$autoReplaceSv = params.autoReplaceSvgRoot, autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv; if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({ node: autoReplaceSvgRoot }); }; function bootstrap() { if (IS_BROWSER) { if (!WINDOW.FontAwesome) { WINDOW.FontAwesome = api; } domready(function () { autoReplace(); observe({ treeCallback: onTree, nodeCallback: onNode, pseudoElementsCallback: searchPseudoElements }); }); } namespace.hooks = _objectSpread2(_objectSpread2({}, namespace.hooks), {}, { addPack: function addPack(prefix, icons) { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), icons); build(); autoReplace(); }, addShims: function addShims(shims) { var _namespace$shims; (_namespace$shims = namespace.shims).push.apply(_namespace$shims, _toConsumableArray(shims)); build(); autoReplace(); } }); } bunker(bootstrap); }()); ================================================ FILE: public/fonts/font-awesome/js/brands.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "aws": [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"], "cc-amazon-pay": [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"], "cc-amex": [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"], "cc-apple-pay": [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"], "cc-diners-club": [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"], "cc-discover": [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"], "cc-jcb": [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"], "cc-mastercard": [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"], "cc-paypal": [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"], "cc-stripe": [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"], "cc-visa": [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"], "discourse": [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"], "docker": [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"], "github": [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"], "instagram": [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"], "microsoft": [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"], "rev": [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"], "slack": [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"], "twitter": [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"] }; bunker(function () { defineIcons('fab', icons); }); }()); ================================================ FILE: public/fonts/font-awesome/js/duotone.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "abacus": [576, 512, [], "f640", ["M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"]], "align-slash": [640, 512, [], "f846", ["M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"]], "atom-alt": [448, 512, [], "f5d3", ["M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"]], "badge-check": [512, 512, [], "f336", ["M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"]], "bell": [448, 512, [], "f0f3", ["M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z"]], "books": [576, 512, [], "f5db", ["M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"]], "brackets-curly": [576, 512, [], "f7ea", ["M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]], "chart-network": [640, 512, [], "f78a", ["M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]], "chart-scatter": [512, 512, [], "f7ee", ["M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]], "check": [512, 512, [], "f00c", ["M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"]], "circle": [512, 512, [], "f111", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"]], "clouds": [640, 512, [], "f744", ["M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"]], "cogs": [640, 512, [], "f085", ["M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"]], "comment-dots": [512, 512, [], "f4ad", ["M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]], "concierge-bell": [512, 512, [], "f562", ["M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"]], "dot-circle": [512, 512, [], "f192", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"]], "envelope": [512, 512, [], "f0e0", ["M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"]], "exchange-alt": [512, 512, [], "f362", ["M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"]], "file-alt": [384, 512, [], "f15c", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"]], "file-code": [384, 512, [], "f1c9", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"]], "globe": [496, 512, [], "f0ac", ["M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"]], "globe-africa": [496, 512, [], "f57c", ["M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"]], "globe-americas": [496, 512, [], "f57d", ["M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"]], "globe-asia": [496, 512, [], "f57e", ["M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"]], "globe-europe": [496, 512, [], "f7a2", ["M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"]], "graduation-cap": [640, 512, [], "f19d", ["M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"]], "history": [512, 512, [], "f1da", ["M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"]], "key": [512, 512, [], "f084", ["M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]], "key-skeleton": [512, 512, [], "f6f3", ["M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"]], "laptop": [640, 512, [], "f109", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]], "laptop-code": [640, 512, [], "f5fc", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"]], "laptop-house": [640, 512, [], "e066", ["M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]], "life-ring": [512, 512, [], "f1cd", ["M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"]], "lightbulb": [352, 512, [], "f0eb", ["M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"]], "list-alt": [512, 512, [], "f022", ["M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"]], "list-ul": [512, 512, [], "f0ca", ["M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"]], "lock-alt": [448, 512, [], "f30d", ["M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"]], "map-marker-alt": [384, 512, [], "f3c5", ["M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]], "moon-stars": [512, 512, [], "f755", ["M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"]], "network-wired": [640, 512, [], "f6ff", ["M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"]], "planet-ringed": [512, 512, [], "e020", ["M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"]], "question-circle": [512, 512, [], "f059", ["M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"]], "quote-left": [512, 512, [], "f10d", ["M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"]], "random": [512, 512, [], "f074", ["M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"]], "rocket": [512, 512, [], "f135", ["M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"]], "search": [512, 512, [], "f002", ["M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"]], "server": [512, 512, [], "f233", ["M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"]], "sign-out": [512, 512, [], "f08b", ["M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"]], "siren-on": [640, 512, [], "e02e", ["M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"]], "smile": [496, 512, [], "f118", ["M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"]], "snowman": [512, 512, [], "f7d0", ["M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"]], "sun": [512, 512, [], "f185", ["M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"]], "tasks": [512, 512, [], "f0ae", ["M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"]], "university": [512, 512, [], "f19c", ["M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"]], "user": [448, 512, [], "f007", ["M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"]], "user-hard-hat": [448, 512, [], "f82c", ["M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"]], "user-shield": [640, 512, [], "f505", ["M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"]], "users": [640, 512, [], "f0c0", ["M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"]] }; bunker(function () { defineIcons('fad', icons); }); }()); ================================================ FILE: public/fonts/font-awesome/js/fontawesome.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function () { 'use strict'; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var noop = function noop() {}; var _WINDOW = {}; var _DOCUMENT = {}; var _MUTATION_OBSERVER = null; var _PERFORMANCE = { mark: noop, measure: noop }; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver; if (typeof performance !== 'undefined') _PERFORMANCE = performance; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var MUTATION_OBSERVER = _MUTATION_OBSERVER; var PERFORMANCE = _PERFORMANCE; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var UNITS_IN_GRID = 16; var DEFAULT_FAMILY_PREFIX = 'fa'; var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa'; var DATA_FA_I2SVG = 'data-fa-i2svg'; var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element'; var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending'; var DATA_PREFIX = 'data-prefix'; var DATA_ICON = 'data-icon'; var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg'; var MUTATION_APPROACH_ASYNC = 'async'; var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT']; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); var PREFIX_TO_STYLE = { 'fas': 'solid', 'far': 'regular', 'fal': 'light', 'fad': 'duotone', 'fab': 'brands', 'fak': 'kit', 'fa': 'solid' }; var STYLE_TO_PREFIX = { 'solid': 'fas', 'regular': 'far', 'light': 'fal', 'duotone': 'fad', 'brands': 'fab', 'kit': 'fak' }; var LAYERS_TEXT_CLASSNAME = 'fa-layers-text'; var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements? var FONT_WEIGHT_TO_PREFIX = { '900': 'fas', '400': 'far', 'normal': 'far', '300': 'fal' }; var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask']; var DUOTONE_CLASSES = { GROUP: 'group', SWAP_OPACITY: 'swap-opacity', PRIMARY: 'primary', SECONDARY: 'secondary' }; var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) { return "".concat(n, "x"); })).concat(oneToTwenty.map(function (n) { return "w-".concat(n); })); var initial = WINDOW.FontAwesomeConfig || {}; function getAttrConfig(attr) { var element = DOCUMENT.querySelector('script[' + attr + ']'); if (element) { return element.getAttribute(attr); } } function coerce(val) { // Getting an empty string will occur if the attribute is set on the HTML tag but without a value // We'll assume that this is an indication that it should be toggled to true // For example if (val === '') return true; if (val === 'false') return false; if (val === 'true') return true; return val; } if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') { var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']]; attrs.forEach(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), attr = _ref2[0], key = _ref2[1]; var val = coerce(getAttrConfig(attr)); if (val !== undefined && val !== null) { initial[key] = val; } }); } var _default = { familyPrefix: DEFAULT_FAMILY_PREFIX, replacementClass: DEFAULT_REPLACEMENT_CLASS, autoReplaceSvg: true, autoAddCss: true, autoA11y: true, searchPseudoElements: false, observeMutations: true, mutateApproach: 'async', keepOriginalSource: true, measurePerformance: false, showMissingIcons: true }; var _config = _objectSpread2(_objectSpread2({}, _default), initial); if (!_config.autoReplaceSvg) _config.observeMutations = false; var config = _objectSpread2({}, _config); WINDOW.FontAwesomeConfig = config; var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; var functions = []; var listener = function listener() { DOCUMENT.removeEventListener('DOMContentLoaded', listener); loaded = 1; functions.map(function (fn) { return fn(); }); }; var loaded = false; if (IS_DOM) { loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState); if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener); } function domready (fn) { if (!IS_DOM) return; loaded ? setTimeout(fn, 0) : functions.push(fn); } var PENDING = 'pending'; var SETTLED = 'settled'; var FULFILLED = 'fulfilled'; var REJECTED = 'rejected'; var NOOP = function NOOP() {}; var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function'; var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate; var asyncQueue = []; var asyncTimer; function asyncFlush() { // run promise callbacks for (var i = 0; i < asyncQueue.length; i++) { asyncQueue[i][0](asyncQueue[i][1]); } // reset async asyncQueue asyncQueue = []; asyncTimer = false; } function asyncCall(callback, arg) { asyncQueue.push([callback, arg]); if (!asyncTimer) { asyncTimer = true; asyncSetTimer(asyncFlush, 0); } } function invokeResolver(resolver, promise) { function resolvePromise(value) { resolve(promise, value); } function rejectPromise(reason) { reject(promise, reason); } try { resolver(resolvePromise, rejectPromise); } catch (e) { rejectPromise(e); } } function invokeCallback(subscriber) { var owner = subscriber.owner; var settled = owner._state; var value = owner._data; var callback = subscriber[settled]; var promise = subscriber.then; if (typeof callback === 'function') { settled = FULFILLED; try { value = callback(value); } catch (e) { reject(promise, e); } } if (!handleThenable(promise, value)) { if (settled === FULFILLED) { resolve(promise, value); } if (settled === REJECTED) { reject(promise, value); } } } function handleThenable(promise, value) { var resolved; try { if (promise === value) { throw new TypeError('A promises callback cannot return that same promise.'); } if (value && (typeof value === 'function' || _typeof(value) === 'object')) { // then should be retrieved only once var then = value.then; if (typeof then === 'function') { then.call(value, function (val) { if (!resolved) { resolved = true; if (value === val) { fulfill(promise, val); } else { resolve(promise, val); } } }, function (reason) { if (!resolved) { resolved = true; reject(promise, reason); } }); return true; } } } catch (e) { if (!resolved) { reject(promise, e); } return true; } return false; } function resolve(promise, value) { if (promise === value || !handleThenable(promise, value)) { fulfill(promise, value); } } function fulfill(promise, value) { if (promise._state === PENDING) { promise._state = SETTLED; promise._data = value; asyncCall(publishFulfillment, promise); } } function reject(promise, reason) { if (promise._state === PENDING) { promise._state = SETTLED; promise._data = reason; asyncCall(publishRejection, promise); } } function publish(promise) { promise._then = promise._then.forEach(invokeCallback); } function publishFulfillment(promise) { promise._state = FULFILLED; publish(promise); } function publishRejection(promise) { promise._state = REJECTED; publish(promise); if (!promise._handled && isNode) { global.process.emit('unhandledRejection', promise._data, promise); } } function notifyRejectionHandled(promise) { global.process.emit('rejectionHandled', promise); } /** * @class */ function P(resolver) { if (typeof resolver !== 'function') { throw new TypeError('Promise resolver ' + resolver + ' is not a function'); } if (this instanceof P === false) { throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.'); } this._then = []; invokeResolver(resolver, this); } P.prototype = { constructor: P, _state: PENDING, _then: null, _data: undefined, _handled: false, then: function then(onFulfillment, onRejection) { var subscriber = { owner: this, then: new this.constructor(NOOP), fulfilled: onFulfillment, rejected: onRejection }; if ((onRejection || onFulfillment) && !this._handled) { this._handled = true; if (this._state === REJECTED && isNode) { asyncCall(notifyRejectionHandled, this); } } if (this._state === FULFILLED || this._state === REJECTED) { // already resolved, call callback async asyncCall(invokeCallback, subscriber); } else { // subscribe this._then.push(subscriber); } return subscriber.then; }, catch: function _catch(onRejection) { return this.then(null, onRejection); } }; P.all = function (promises) { if (!Array.isArray(promises)) { throw new TypeError('You must pass an array to Promise.all().'); } return new P(function (resolve, reject) { var results = []; var remaining = 0; function resolver(index) { remaining++; return function (value) { results[index] = value; if (! --remaining) { resolve(results); } }; } for (var i = 0, promise; i < promises.length; i++) { promise = promises[i]; if (promise && typeof promise.then === 'function') { promise.then(resolver(i), reject); } else { results[i] = promise; } } if (!remaining) { resolve(results); } }); }; P.race = function (promises) { if (!Array.isArray(promises)) { throw new TypeError('You must pass an array to Promise.race().'); } return new P(function (resolve, reject) { for (var i = 0, promise; i < promises.length; i++) { promise = promises[i]; if (promise && typeof promise.then === 'function') { promise.then(resolve, reject); } else { resolve(promise); } } }); }; P.resolve = function (value) { if (value && _typeof(value) === 'object' && value.constructor === P) { return value; } return new P(function (resolve) { resolve(value); }); }; P.reject = function (reason) { return new P(function (resolve, reject) { reject(reason); }); }; var picked = typeof Promise === 'function' ? Promise : P; var d = UNITS_IN_GRID; var meaninglessTransform = { size: 16, x: 0, y: 0, rotate: 0, flipX: false, flipY: false }; function isReserved(name) { return ~RESERVED_CLASSES.indexOf(name); } function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function insertCss(css) { if (!css || !IS_DOM) { return; } var style = DOCUMENT.createElement('style'); style.setAttribute('type', 'text/css'); style.innerHTML = css; var headChildren = DOCUMENT.head.childNodes; var beforeChild = null; for (var i = headChildren.length - 1; i > -1; i--) { var child = headChildren[i]; var tagName = (child.tagName || '').toUpperCase(); if (['STYLE', 'LINK'].indexOf(tagName) > -1) { beforeChild = child; } } DOCUMENT.head.insertBefore(style, beforeChild); return css; } var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; function nextUniqueId() { var size = 12; var id = ''; while (size-- > 0) { id += idPool[Math.random() * 62 | 0]; } return id; } function toArray(obj) { var array = []; for (var i = (obj || []).length >>> 0; i--;) { array[i] = obj[i]; } return array; } function classArray(node) { if (node.classList) { return toArray(node.classList); } else { return (node.getAttribute('class') || '').split(' ').filter(function (i) { return i; }); } } function getIconName(familyPrefix, cls) { var parts = cls.split('-'); var prefix = parts[0]; var iconName = parts.slice(1).join('-'); if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) { return iconName; } else { return null; } } function htmlEscape(str) { return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>'); } function joinAttributes(attributes) { return Object.keys(attributes || {}).reduce(function (acc, attributeName) { return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" "); }, '').trim(); } function joinStyles(styles) { return Object.keys(styles || {}).reduce(function (acc, styleName) { return acc + "".concat(styleName, ": ").concat(styles[styleName], ";"); }, ''); } function transformIsMeaningful(transform) { return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY; } function transformForSvg(_ref) { var transform = _ref.transform, containerWidth = _ref.containerWidth, iconWidth = _ref.iconWidth; var outer = { transform: "translate(".concat(containerWidth / 2, " 256)") }; var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") "); var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") "); var innerRotate = "rotate(".concat(transform.rotate, " 0 0)"); var inner = { transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate) }; var path = { transform: "translate(".concat(iconWidth / 2 * -1, " -256)") }; return { outer: outer, inner: inner, path: path }; } function transformForCss(_ref2) { var transform = _ref2.transform, _ref2$width = _ref2.width, width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width, _ref2$height = _ref2.height, height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height, _ref2$startCentered = _ref2.startCentered, startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered; var val = ''; if (startCentered && IS_IE) { val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) "); } else if (startCentered) { val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) "); } else { val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) "); } val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") "); val += "rotate(".concat(transform.rotate, "deg) "); return val; } var ALL_SPACE = { x: 0, y: 0, width: '100%', height: '100%' }; function fillBlack(abstract) { var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; if (abstract.attributes && (abstract.attributes.fill || force)) { abstract.attributes.fill = 'black'; } return abstract; } function deGroup(abstract) { if (abstract.tag === 'g') { return abstract.children; } else { return [abstract]; } } function makeIconMasking (_ref) { var children = _ref.children, attributes = _ref.attributes, main = _ref.main, mask = _ref.mask, explicitMaskId = _ref.maskId, transform = _ref.transform; var mainWidth = main.width, mainPath = main.icon; var maskWidth = mask.width, maskPath = mask.icon; var trans = transformForSvg({ transform: transform, containerWidth: maskWidth, iconWidth: mainWidth }); var maskRect = { tag: 'rect', attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { fill: 'white' }) }; var maskInnerGroupChildrenMixin = mainPath.children ? { children: mainPath.children.map(fillBlack) } : {}; var maskInnerGroup = { tag: 'g', attributes: _objectSpread2({}, trans.inner), children: [fillBlack(_objectSpread2({ tag: mainPath.tag, attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path) }, maskInnerGroupChildrenMixin))] }; var maskOuterGroup = { tag: 'g', attributes: _objectSpread2({}, trans.outer), children: [maskInnerGroup] }; var maskId = "mask-".concat(explicitMaskId || nextUniqueId()); var clipId = "clip-".concat(explicitMaskId || nextUniqueId()); var maskTag = { tag: 'mask', attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { id: maskId, maskUnits: 'userSpaceOnUse', maskContentUnits: 'userSpaceOnUse' }), children: [maskRect, maskOuterGroup] }; var defs = { tag: 'defs', children: [{ tag: 'clipPath', attributes: { id: clipId }, children: deGroup(maskPath) }, maskTag] }; children.push(defs, { tag: 'rect', attributes: _objectSpread2({ fill: 'currentColor', 'clip-path': "url(#".concat(clipId, ")"), mask: "url(#".concat(maskId, ")") }, ALL_SPACE) }); return { children: children, attributes: attributes }; } function makeIconStandard (_ref) { var children = _ref.children, attributes = _ref.attributes, main = _ref.main, transform = _ref.transform, styles = _ref.styles; var styleString = joinStyles(styles); if (styleString.length > 0) { attributes['style'] = styleString; } if (transformIsMeaningful(transform)) { var trans = transformForSvg({ transform: transform, containerWidth: main.width, iconWidth: main.width }); children.push({ tag: 'g', attributes: _objectSpread2({}, trans.outer), children: [{ tag: 'g', attributes: _objectSpread2({}, trans.inner), children: [{ tag: main.icon.tag, children: main.icon.children, attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), trans.path) }] }] }); } else { children.push(main.icon); } return { children: children, attributes: attributes }; } function asIcon (_ref) { var children = _ref.children, main = _ref.main, mask = _ref.mask, attributes = _ref.attributes, styles = _ref.styles, transform = _ref.transform; if (transformIsMeaningful(transform) && main.found && !mask.found) { var width = main.width, height = main.height; var offset = { x: width / height / 2, y: 0.5 }; attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, { 'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em") })); } return [{ tag: 'svg', attributes: attributes, children: children }]; } function asSymbol (_ref) { var prefix = _ref.prefix, iconName = _ref.iconName, children = _ref.children, attributes = _ref.attributes, symbol = _ref.symbol; var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol; return [{ tag: 'svg', attributes: { style: 'display: none;' }, children: [{ tag: 'symbol', attributes: _objectSpread2(_objectSpread2({}, attributes), {}, { id: id }), children: children }] }]; } function makeInlineSvgAbstract(params) { var _params$icons = params.icons, main = _params$icons.main, mask = _params$icons.mask, prefix = params.prefix, iconName = params.iconName, transform = params.transform, symbol = params.symbol, title = params.title, maskId = params.maskId, titleId = params.titleId, extra = params.extra, _params$watchable = params.watchable, watchable = _params$watchable === void 0 ? false : _params$watchable; var _ref = mask.found ? mask : main, width = _ref.width, height = _ref.height; var isUploadedIcon = prefix === 'fak'; var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16)); var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) { return extra.classes.indexOf(c) === -1; }).filter(function (c) { return c !== '' || !!c; }).concat(extra.classes).join(' '); var content = { children: [], attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, { 'data-prefix': prefix, 'data-icon': iconName, 'class': attrClass, 'role': extra.attributes.role || 'img', 'xmlns': 'http://www.w3.org/2000/svg', 'viewBox': "0 0 ".concat(width, " ").concat(height) }) }; var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? { width: "".concat(width / height * 16 * 0.0625, "em") } : {}; if (watchable) { content.attributes[DATA_FA_I2SVG] = ''; } if (title) content.children.push({ tag: 'title', attributes: { id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId()) }, children: [title] }); var args = _objectSpread2(_objectSpread2({}, content), {}, { prefix: prefix, iconName: iconName, main: main, mask: mask, maskId: maskId, transform: transform, symbol: symbol, styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles) }); var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args), children = _ref2.children, attributes = _ref2.attributes; args.children = children; args.attributes = attributes; if (symbol) { return asSymbol(args); } else { return asIcon(args); } } function makeLayersTextAbstract(params) { var content = params.content, width = params.width, height = params.height, transform = params.transform, title = params.title, extra = params.extra, _params$watchable2 = params.watchable, watchable = _params$watchable2 === void 0 ? false : _params$watchable2; var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { 'title': title } : {}), {}, { 'class': extra.classes.join(' ') }); if (watchable) { attributes[DATA_FA_I2SVG] = ''; } var styles = _objectSpread2({}, extra.styles); if (transformIsMeaningful(transform)) { styles['transform'] = transformForCss({ transform: transform, startCentered: true, width: width, height: height }); styles['-webkit-transform'] = styles['transform']; } var styleString = joinStyles(styles); if (styleString.length > 0) { attributes['style'] = styleString; } var val = []; val.push({ tag: 'span', attributes: attributes, children: [content] }); if (title) { val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] }); } return val; } function makeLayersCounterAbstract(params) { var content = params.content, title = params.title, extra = params.extra; var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { 'title': title } : {}), {}, { 'class': extra.classes.join(' ') }); var styleString = joinStyles(extra.styles); if (styleString.length > 0) { attributes['style'] = styleString; } var val = []; val.push({ tag: 'span', attributes: attributes, children: [content] }); if (title) { val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] }); } return val; } var noop$1 = function noop() {}; var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { mark: noop$1, measure: noop$1 }; var preamble = "FA \"5.15.4\""; var begin = function begin(name) { p.mark("".concat(preamble, " ").concat(name, " begins")); return function () { return end(name); }; }; var end = function end(name) { p.mark("".concat(preamble, " ").concat(name, " ends")); p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends")); }; var perf = { begin: begin, end: end }; /** * Internal helper to bind a function known to have 4 arguments * to a given context. */ var bindInternal4 = function bindInternal4(func, thisContext) { return function (a, b, c, d) { return func.call(thisContext, a, b, c, d); }; }; /** * # Reduce * * A fast object `.reduce()` implementation. * * @param {Object} subject The object to reduce over. * @param {Function} fn The reducer function. * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0]. * @param {Object} thisContext The context for the reducer. * @return {mixed} The final result. */ var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) { var keys = Object.keys(subject), length = keys.length, iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn, i, key, result; if (initialValue === undefined) { i = 1; result = subject[keys[0]]; } else { i = 0; result = initialValue; } for (; i < length; i++) { key = keys[i]; result = iterator(result, subject[key], key, subject); } return result; }; function toHex(unicode) { var result = ''; for (var i = 0; i < unicode.length; i++) { var hex = unicode.charCodeAt(i).toString(16); result += ('000' + hex).slice(-4); } return result; } function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var styles = namespace.styles, shims = namespace.shims; var _byUnicode = {}; var _byLigature = {}; var _byOldName = {}; var build = function build() { var lookup = function lookup(reducer) { return reduce(styles, function (o, style, prefix) { o[prefix] = reduce(style, reducer, {}); return o; }, {}); }; _byUnicode = lookup(function (acc, icon, iconName) { if (icon[3]) { acc[icon[3]] = iconName; } return acc; }); _byLigature = lookup(function (acc, icon, iconName) { var ligatures = icon[2]; acc[iconName] = iconName; ligatures.forEach(function (ligature) { acc[ligature] = iconName; }); return acc; }); var hasRegular = ('far' in styles); _byOldName = reduce(shims, function (acc, shim) { var oldName = shim[0]; var prefix = shim[1]; var iconName = shim[2]; if (prefix === 'far' && !hasRegular) { prefix = 'fas'; } acc[oldName] = { prefix: prefix, iconName: iconName }; return acc; }, {}); }; build(); function byUnicode(prefix, unicode) { return (_byUnicode[prefix] || {})[unicode]; } function byLigature(prefix, ligature) { return (_byLigature[prefix] || {})[ligature]; } function byOldName(name) { return _byOldName[name] || { prefix: null, iconName: null }; } var styles$1 = namespace.styles; var emptyCanonicalIcon = function emptyCanonicalIcon() { return { prefix: null, iconName: null, rest: [] }; }; function getCanonicalIcon(values) { return values.reduce(function (acc, cls) { var iconName = getIconName(config.familyPrefix, cls); if (styles$1[cls]) { acc.prefix = cls; } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) { acc.prefix = cls; } else if (iconName) { var shim = acc.prefix === 'fa' ? byOldName(iconName) : {}; acc.iconName = shim.iconName || iconName; acc.prefix = shim.prefix || acc.prefix; } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) { acc.rest.push(cls); } return acc; }, emptyCanonicalIcon()); } function iconFromMapping(mapping, prefix, iconName) { if (mapping && mapping[prefix] && mapping[prefix][iconName]) { return { prefix: prefix, iconName: iconName, icon: mapping[prefix][iconName] }; } } function toHtml(abstractNodes) { var tag = abstractNodes.tag, _abstractNodes$attrib = abstractNodes.attributes, attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib, _abstractNodes$childr = abstractNodes.children, children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr; if (typeof abstractNodes === 'string') { return htmlEscape(abstractNodes); } else { return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), ""); } } var noop$2 = function noop() {}; function isWatched(node) { var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null; return typeof i2svg === 'string'; } function getMutator() { if (config.autoReplaceSvg === true) { return mutators.replace; } var mutator = mutators[config.autoReplaceSvg]; return mutator || mutators.replace; } var mutators = { replace: function replace(mutation) { var node = mutation[0]; var abstract = mutation[1]; var newOuterHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); if (node.parentNode && node.outerHTML) { node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "") : ''); } else if (node.parentNode) { var newNode = document.createElement('span'); node.parentNode.replaceChild(newNode, node); newNode.outerHTML = newOuterHTML; } }, nest: function nest(mutation) { var node = mutation[0]; var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it. // Short-circuit to the standard replacement if (~classArray(node).indexOf(config.replacementClass)) { return mutators.replace(mutation); } var forSvg = new RegExp("".concat(config.familyPrefix, "-.*")); delete abstract[0].attributes.style; delete abstract[0].attributes.id; var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) { if (cls === config.replacementClass || cls.match(forSvg)) { acc.toSvg.push(cls); } else { acc.toNode.push(cls); } return acc; }, { toNode: [], toSvg: [] }); abstract[0].attributes.class = splitClasses.toSvg.join(' '); var newInnerHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); node.setAttribute('class', splitClasses.toNode.join(' ')); node.setAttribute(DATA_FA_I2SVG, ''); node.innerHTML = newInnerHTML; } }; function performOperationSync(op) { op(); } function perform(mutations, callback) { var callbackFunction = typeof callback === 'function' ? callback : noop$2; if (mutations.length === 0) { callbackFunction(); } else { var frame = performOperationSync; if (config.mutateApproach === MUTATION_APPROACH_ASYNC) { frame = WINDOW.requestAnimationFrame || performOperationSync; } frame(function () { var mutator = getMutator(); var mark = perf.begin('mutate'); mutations.map(mutator); mark(); callbackFunction(); }); } } var disabled = false; function disableObservation() { disabled = true; } function enableObservation() { disabled = false; } var mo = null; function observe(options) { if (!MUTATION_OBSERVER) { return; } if (!config.observeMutations) { return; } var treeCallback = options.treeCallback, nodeCallback = options.nodeCallback, pseudoElementsCallback = options.pseudoElementsCallback, _options$observeMutat = options.observeMutationsRoot, observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat; mo = new MUTATION_OBSERVER(function (objects) { if (disabled) return; toArray(objects).forEach(function (mutationRecord) { if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) { if (config.searchPseudoElements) { pseudoElementsCallback(mutationRecord.target); } treeCallback(mutationRecord.target); } if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) { pseudoElementsCallback(mutationRecord.target.parentNode); } if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) { if (mutationRecord.attributeName === 'class') { var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)), prefix = _getCanonicalIcon.prefix, iconName = _getCanonicalIcon.iconName; if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix); if (iconName) mutationRecord.target.setAttribute('data-icon', iconName); } else { nodeCallback(mutationRecord.target); } } }); }); if (!IS_DOM) return; mo.observe(observeMutationsRoot, { childList: true, attributes: true, characterData: true, subtree: true }); } function disconnect() { if (!mo) return; mo.disconnect(); } function styleParser (node) { var style = node.getAttribute('style'); var val = []; if (style) { val = style.split(';').reduce(function (acc, style) { var styles = style.split(':'); var prop = styles[0]; var value = styles.slice(1); if (prop && value.length > 0) { acc[prop] = value.join(':').trim(); } return acc; }, {}); } return val; } function classParser (node) { var existingPrefix = node.getAttribute('data-prefix'); var existingIconName = node.getAttribute('data-icon'); var innerText = node.innerText !== undefined ? node.innerText.trim() : ''; var val = getCanonicalIcon(classArray(node)); if (existingPrefix && existingIconName) { val.prefix = existingPrefix; val.iconName = existingIconName; } if (val.prefix && innerText.length > 1) { val.iconName = byLigature(val.prefix, node.innerText); } else if (val.prefix && innerText.length === 1) { val.iconName = byUnicode(val.prefix, toHex(node.innerText)); } return val; } var parseTransformString = function parseTransformString(transformString) { var transform = { size: 16, x: 0, y: 0, flipX: false, flipY: false, rotate: 0 }; if (!transformString) { return transform; } else { return transformString.toLowerCase().split(' ').reduce(function (acc, n) { var parts = n.toLowerCase().split('-'); var first = parts[0]; var rest = parts.slice(1).join('-'); if (first && rest === 'h') { acc.flipX = true; return acc; } if (first && rest === 'v') { acc.flipY = true; return acc; } rest = parseFloat(rest); if (isNaN(rest)) { return acc; } switch (first) { case 'grow': acc.size = acc.size + rest; break; case 'shrink': acc.size = acc.size - rest; break; case 'left': acc.x = acc.x - rest; break; case 'right': acc.x = acc.x + rest; break; case 'up': acc.y = acc.y - rest; break; case 'down': acc.y = acc.y + rest; break; case 'rotate': acc.rotate = acc.rotate + rest; break; } return acc; }, transform); } }; function transformParser (node) { return parseTransformString(node.getAttribute('data-fa-transform')); } function symbolParser (node) { var symbol = node.getAttribute('data-fa-symbol'); return symbol === null ? false : symbol === '' ? true : symbol; } function attributesParser (node) { var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) { if (acc.name !== 'class' && acc.name !== 'style') { acc[attr.name] = attr.value; } return acc; }, {}); var title = node.getAttribute('title'); var titleId = node.getAttribute('data-fa-title-id'); if (config.autoA11y) { if (title) { extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); } else { extraAttributes['aria-hidden'] = 'true'; extraAttributes['focusable'] = 'false'; } } return extraAttributes; } function maskParser (node) { var mask = node.getAttribute('data-fa-mask'); if (!mask) { return emptyCanonicalIcon(); } else { return getCanonicalIcon(mask.split(' ').map(function (i) { return i.trim(); })); } } function blankMeta() { return { iconName: null, title: null, titleId: null, prefix: null, transform: meaninglessTransform, symbol: false, mask: null, maskId: null, extra: { classes: [], styles: {}, attributes: {} } }; } function parseMeta(node) { var _classParser = classParser(node), iconName = _classParser.iconName, prefix = _classParser.prefix, extraClasses = _classParser.rest; var extraStyles = styleParser(node); var transform = transformParser(node); var symbol = symbolParser(node); var extraAttributes = attributesParser(node); var mask = maskParser(node); return { iconName: iconName, title: node.getAttribute('title'), titleId: node.getAttribute('data-fa-title-id'), prefix: prefix, transform: transform, symbol: symbol, mask: mask, maskId: node.getAttribute('data-fa-mask-id'), extra: { classes: extraClasses, styles: extraStyles, attributes: extraAttributes } }; } function MissingIcon(error) { this.name = 'MissingIcon'; this.message = error || 'Icon unavailable'; this.stack = new Error().stack; } MissingIcon.prototype = Object.create(Error.prototype); MissingIcon.prototype.constructor = MissingIcon; var FILL = { fill: 'currentColor' }; var ANIMATION_BASE = { attributeType: 'XML', repeatCount: 'indefinite', dur: '2s' }; var RING = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z' }) }; var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { attributeName: 'opacity' }); var DOT = { tag: 'circle', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { cx: '256', cy: '364', r: '28' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { attributeName: 'r', values: '28;14;28;28;14;28;' }) }, { tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '1;0;1;1;0;1;' }) }] }; var QUESTION = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { opacity: '1', d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '1;0;0;0;0;1;' }) }] }; var EXCLAMATION = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { opacity: '0', d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '0;0;1;1;0;0;' }) }] }; var missing = { tag: 'g', children: [RING, DOT, QUESTION, EXCLAMATION] }; var styles$2 = namespace.styles; function asFoundIcon(icon) { var width = icon[0]; var height = icon[1]; var _icon$slice = icon.slice(4), _icon$slice2 = _slicedToArray(_icon$slice, 1), vectorData = _icon$slice2[0]; var element = null; if (Array.isArray(vectorData)) { element = { tag: 'g', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP) }, children: [{ tag: 'path', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY), fill: 'currentColor', d: vectorData[0] } }, { tag: 'path', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY), fill: 'currentColor', d: vectorData[1] } }] }; } else { element = { tag: 'path', attributes: { fill: 'currentColor', d: vectorData } }; } return { found: true, width: width, height: height, icon: element }; } function findIcon(iconName, prefix) { return new picked(function (resolve, reject) { var val = { found: false, width: 512, height: 512, icon: missing }; if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) { var icon = styles$2[prefix][iconName]; return resolve(asFoundIcon(icon)); } if (iconName && prefix && !config.showMissingIcons) { reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName))); } else { resolve(val); } }); } var styles$3 = namespace.styles; function generateSvgReplacementMutation(node, nodeMeta) { var iconName = nodeMeta.iconName, title = nodeMeta.title, titleId = nodeMeta.titleId, prefix = nodeMeta.prefix, transform = nodeMeta.transform, symbol = nodeMeta.symbol, mask = nodeMeta.mask, maskId = nodeMeta.maskId, extra = nodeMeta.extra; return new picked(function (resolve, reject) { picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), main = _ref2[0], mask = _ref2[1]; resolve([node, makeInlineSvgAbstract({ icons: { main: main, mask: mask }, prefix: prefix, iconName: iconName, transform: transform, symbol: symbol, mask: mask, maskId: maskId, title: title, titleId: titleId, extra: extra, watchable: true })]); }); }); } function generateLayersText(node, nodeMeta) { var title = nodeMeta.title, transform = nodeMeta.transform, extra = nodeMeta.extra; var width = null; var height = null; if (IS_IE) { var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10); var boundingClientRect = node.getBoundingClientRect(); width = boundingClientRect.width / computedFontSize; height = boundingClientRect.height / computedFontSize; } if (config.autoA11y && !title) { extra.attributes['aria-hidden'] = 'true'; } return picked.resolve([node, makeLayersTextAbstract({ content: node.innerHTML, width: width, height: height, transform: transform, title: title, extra: extra, watchable: true })]); } function generateMutation(node) { var nodeMeta = parseMeta(node); if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) { return generateLayersText(node, nodeMeta); } else { return generateSvgReplacementMutation(node, nodeMeta); } } function onTree(root) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (!IS_DOM) return; var htmlClassList = DOCUMENT.documentElement.classList; var hclAdd = function hclAdd(suffix) { return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); }; var hclRemove = function hclRemove(suffix) { return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); }; var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3); var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) { return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])"); })).join(', '); if (prefixesDomQuery.length === 0) { return; } var candidates = []; try { candidates = toArray(root.querySelectorAll(prefixesDomQuery)); } catch (e) {// noop } if (candidates.length > 0) { hclAdd('pending'); hclRemove('complete'); } else { return; } var mark = perf.begin('onTree'); var mutations = candidates.reduce(function (acc, node) { try { var mutation = generateMutation(node); if (mutation) { acc.push(mutation); } } catch (e) { if (!PRODUCTION) { if (e instanceof MissingIcon) { console.error(e); } } } return acc; }, []); return new picked(function (resolve, reject) { picked.all(mutations).then(function (resolvedMutations) { perform(resolvedMutations, function () { hclAdd('active'); hclAdd('complete'); hclRemove('pending'); if (typeof callback === 'function') callback(); mark(); resolve(); }); }).catch(function () { mark(); reject(); }); }); } function onNode(node) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; generateMutation(node).then(function (mutation) { if (mutation) { perform([mutation], callback); } }); } function replaceForPosition(node, position) { var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-')); return new picked(function (resolve, reject) { if (node.getAttribute(pendingAttribute) !== null) { // This node is already being processed return resolve(); } var children = toArray(node.children); var alreadyProcessedPseudoElement = children.filter(function (c) { return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position; })[0]; var styles = WINDOW.getComputedStyle(node, position); var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN); var fontWeight = styles.getPropertyValue('font-weight'); var content = styles.getPropertyValue('content'); if (alreadyProcessedPseudoElement && !fontFamily) { // If we've already processed it but the current computed style does not result in a font-family, // that probably means that a class name that was previously present to make the icon has been // removed. So we now should delete the icon. node.removeChild(alreadyProcessedPseudoElement); return resolve(); } else if (fontFamily && content !== 'none' && content !== '') { var _content = styles.getPropertyValue('content'); var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight]; var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content); var iconName = byUnicode(prefix, hexValue); var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't // already done so with the same prefix and iconName if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) { node.setAttribute(pendingAttribute, iconIdentifier); if (alreadyProcessedPseudoElement) { // Delete the old one, since we're replacing it with a new one node.removeChild(alreadyProcessedPseudoElement); } var meta = blankMeta(); var extra = meta.extra; extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position; findIcon(iconName, prefix).then(function (main) { var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, { icons: { main: main, mask: emptyCanonicalIcon() }, prefix: prefix, iconName: iconIdentifier, extra: extra, watchable: true })); var element = DOCUMENT.createElement('svg'); if (position === ':before') { node.insertBefore(element, node.firstChild); } else { node.appendChild(element); } element.outerHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); node.removeAttribute(pendingAttribute); resolve(); }).catch(reject); } else { resolve(); } } else { resolve(); } }); } function replace(node) { return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]); } function processable(node) { return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg'); } function searchPseudoElements (root) { if (!IS_DOM) return; return new picked(function (resolve, reject) { var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace); var end = perf.begin('searchPseudoElements'); disableObservation(); picked.all(operations).then(function () { end(); enableObservation(); resolve(); }).catch(function () { end(); enableObservation(); reject(); }); }); } var baseStyles = "svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff}"; function css () { var dfp = DEFAULT_FAMILY_PREFIX; var drc = DEFAULT_REPLACEMENT_CLASS; var fp = config.familyPrefix; var rc = config.replacementClass; var s = baseStyles; if (fp !== dfp || rc !== drc) { var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g'); var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g'); var rPatt = new RegExp("\\.".concat(drc), 'g'); s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc)); } return s; } var Library = /*#__PURE__*/function () { function Library() { _classCallCheck(this, Library); this.definitions = {}; } _createClass(Library, [{ key: "add", value: function add() { var _this = this; for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) { definitions[_key] = arguments[_key]; } var additions = definitions.reduce(this._pullDefinitions, {}); Object.keys(additions).forEach(function (key) { _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]); defineIcons(key, additions[key]); build(); }); } }, { key: "reset", value: function reset() { this.definitions = {}; } }, { key: "_pullDefinitions", value: function _pullDefinitions(additions, definition) { var normalized = definition.prefix && definition.iconName && definition.icon ? { 0: definition } : definition; Object.keys(normalized).map(function (key) { var _normalized$key = normalized[key], prefix = _normalized$key.prefix, iconName = _normalized$key.iconName, icon = _normalized$key.icon; if (!additions[prefix]) additions[prefix] = {}; additions[prefix][iconName] = icon; }); return additions; } }]); return Library; }(); function ensureCss() { if (config.autoAddCss && !_cssInserted) { insertCss(css()); _cssInserted = true; } } function apiObject(val, abstractCreator) { Object.defineProperty(val, 'abstract', { get: abstractCreator }); Object.defineProperty(val, 'html', { get: function get() { return val.abstract.map(function (a) { return toHtml(a); }); } }); Object.defineProperty(val, 'node', { get: function get() { if (!IS_DOM) return; var container = DOCUMENT.createElement('div'); container.innerHTML = val.html; return container.children; } }); return val; } function findIconDefinition(iconLookup) { var _iconLookup$prefix = iconLookup.prefix, prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix, iconName = iconLookup.iconName; if (!iconName) return; return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName); } function resolveIcons(next) { return function (maybeIconDefinition) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {}); var mask = params.mask; if (mask) { mask = (mask || {}).icon ? mask : findIconDefinition(mask || {}); } return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, { mask: mask })); }; } var library = new Library(); var noAuto = function noAuto() { config.autoReplaceSvg = false; config.observeMutations = false; disconnect(); }; var _cssInserted = false; var dom = { i2svg: function i2svg() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (IS_DOM) { ensureCss(); var _params$node = params.node, node = _params$node === void 0 ? DOCUMENT : _params$node, _params$callback = params.callback, callback = _params$callback === void 0 ? function () {} : _params$callback; if (config.searchPseudoElements) { searchPseudoElements(node); } return onTree(node, callback); } else { return picked.reject('Operation requires a DOM of some kind.'); } }, css: css, insertCss: function insertCss$$1() { if (!_cssInserted) { insertCss(css()); _cssInserted = true; } }, watch: function watch() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var autoReplaceSvgRoot = params.autoReplaceSvgRoot, observeMutationsRoot = params.observeMutationsRoot; if (config.autoReplaceSvg === false) { config.autoReplaceSvg = true; } config.observeMutations = true; domready(function () { autoReplace({ autoReplaceSvgRoot: autoReplaceSvgRoot }); observe({ treeCallback: onTree, nodeCallback: onNode, pseudoElementsCallback: searchPseudoElements, observeMutationsRoot: observeMutationsRoot }); }); } }; var parse = { transform: function transform(transformString) { return parseTransformString(transformString); } }; var icon = resolveIcons(function (iconDefinition) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$transform = params.transform, transform = _params$transform === void 0 ? meaninglessTransform : _params$transform, _params$symbol = params.symbol, symbol = _params$symbol === void 0 ? false : _params$symbol, _params$mask = params.mask, mask = _params$mask === void 0 ? null : _params$mask, _params$maskId = params.maskId, maskId = _params$maskId === void 0 ? null : _params$maskId, _params$title = params.title, title = _params$title === void 0 ? null : _params$title, _params$titleId = params.titleId, titleId = _params$titleId === void 0 ? null : _params$titleId, _params$classes = params.classes, classes = _params$classes === void 0 ? [] : _params$classes, _params$attributes = params.attributes, attributes = _params$attributes === void 0 ? {} : _params$attributes, _params$styles = params.styles, styles = _params$styles === void 0 ? {} : _params$styles; if (!iconDefinition) return; var prefix = iconDefinition.prefix, iconName = iconDefinition.iconName, icon = iconDefinition.icon; return apiObject(_objectSpread2({ type: 'icon' }, iconDefinition), function () { ensureCss(); if (config.autoA11y) { if (title) { attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); } else { attributes['aria-hidden'] = 'true'; attributes['focusable'] = 'false'; } } return makeInlineSvgAbstract({ icons: { main: asFoundIcon(icon), mask: mask ? asFoundIcon(mask.icon) : { found: false, width: null, height: null, icon: {} } }, prefix: prefix, iconName: iconName, transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), symbol: symbol, title: title, maskId: maskId, titleId: titleId, extra: { attributes: attributes, styles: styles, classes: classes } }); }); }); var text = function text(content) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$transform2 = params.transform, transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2, _params$title2 = params.title, title = _params$title2 === void 0 ? null : _params$title2, _params$classes2 = params.classes, classes = _params$classes2 === void 0 ? [] : _params$classes2, _params$attributes2 = params.attributes, attributes = _params$attributes2 === void 0 ? {} : _params$attributes2, _params$styles2 = params.styles, styles = _params$styles2 === void 0 ? {} : _params$styles2; return apiObject({ type: 'text', content: content }, function () { ensureCss(); return makeLayersTextAbstract({ content: content, transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), title: title, extra: { attributes: attributes, styles: styles, classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes)) } }); }); }; var counter = function counter(content) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$title3 = params.title, title = _params$title3 === void 0 ? null : _params$title3, _params$classes3 = params.classes, classes = _params$classes3 === void 0 ? [] : _params$classes3, _params$attributes3 = params.attributes, attributes = _params$attributes3 === void 0 ? {} : _params$attributes3, _params$styles3 = params.styles, styles = _params$styles3 === void 0 ? {} : _params$styles3; return apiObject({ type: 'counter', content: content }, function () { ensureCss(); return makeLayersCounterAbstract({ content: content.toString(), title: title, extra: { attributes: attributes, styles: styles, classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes)) } }); }); }; var layer = function layer(assembler) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$classes4 = params.classes, classes = _params$classes4 === void 0 ? [] : _params$classes4; return apiObject({ type: 'layer' }, function () { ensureCss(); var children = []; assembler(function (args) { Array.isArray(args) ? args.map(function (a) { children = children.concat(a.abstract); }) : children = children.concat(args.abstract); }); return [{ tag: 'span', attributes: { class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ') }, children: children }]; }); }; var api = { noAuto: noAuto, config: config, dom: dom, library: library, parse: parse, findIconDefinition: findIconDefinition, icon: icon, text: text, counter: counter, layer: layer, toHtml: toHtml }; var autoReplace = function autoReplace() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _params$autoReplaceSv = params.autoReplaceSvgRoot, autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv; if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({ node: autoReplaceSvgRoot }); }; function bootstrap() { if (IS_BROWSER) { if (!WINDOW.FontAwesome) { WINDOW.FontAwesome = api; } domready(function () { autoReplace(); observe({ treeCallback: onTree, nodeCallback: onNode, pseudoElementsCallback: searchPseudoElements }); }); } namespace.hooks = _objectSpread2(_objectSpread2({}, namespace.hooks), {}, { addPack: function addPack(prefix, icons) { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), icons); build(); autoReplace(); }, addShims: function addShims(shims) { var _namespace$shims; (_namespace$shims = namespace.shims).push.apply(_namespace$shims, _toConsumableArray(shims)); build(); autoReplace(); } }); } bunker(bootstrap); }()); ================================================ FILE: public/fonts/font-awesome/js/regular.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "check-circle": [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"], "desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"], "eye": [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"], "file-code": [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"], "info": [256, 512, [], "f129", "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"], "info-circle": [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"], "plus": [384, 512, [], "f067", "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"], "question-circle": [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"], "rocket": [512, 512, [], "f135", "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"], "save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"], "slash": [640, 512, [], "f715", "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"], "times": [320, 512, [], "f00d", "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"], "undo": [512, 512, [], "f0e2", "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"], "undo-alt": [512, 512, [], "f2ea", "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"], "user": [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"], "user-friends": [640, 512, [], "f500", "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"], "users": [640, 512, [], "f0c0", "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"] }; bunker(function () { defineIcons('far', icons); }); }()); ================================================ FILE: public/fonts/font-awesome/js/solid.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "alarm-exclamation": [512, 512, [], "f843", "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"], "align-left": [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"], "book-dead": [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"], "check": [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"], "circle": [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"], "cloud": [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"], "credit-card": [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"], "desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"], "envelope": [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"], "eye": [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"], "fingerprint": [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"], "history": [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"], "home": [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"], "plus": [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"], "robot": [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"], "rocket": [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"], "save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"], "slash": [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"], "spinner-third": [512, 512, [], "f3f4", "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"], "square-full": [512, 512, [], "f45c", "M512 512H0V0h512v512z"], "times": [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"], "times-circle": [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"], "undo": [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"], "undo-alt": [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"], "user": [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"], "users": [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"] }; bunker(function () { defineIcons('fas', icons); }); }()); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-common-types/LICENSE.txt ================================================ Font Awesome Free License ------------------------- Font Awesome Free is free, open source, and GPL friendly. You can use it for commercial projects, open source projects, or really almost whatever you want. Full Font Awesome Free license: https://fontawesome.com/license/free. # Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) In the Font Awesome Free download, the CC BY 4.0 license applies to all icons packaged as SVG and JS file types. # Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL) In the Font Awesome Free download, the SIL OFL license applies to all icons packaged as web and desktop font files. # Code: MIT License (https://opensource.org/licenses/MIT) In the Font Awesome Free download, the MIT license applies to all non-font and non-icon files. # Attribution Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font Awesome Free files already contain embedded comments with sufficient attribution, so you shouldn't need to do anything additional when using these files normally. We've kept attribution comments terse, so we ask that you do not actively work to remove them from files, especially code. They're a great way for folks to learn about Font Awesome. # Brand Icons All brand icons are trademarks of their respective owners. The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa. **Please do not use brand logos for any purpose except to represent the company, product, or service to which they refer.** ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-common-types/README.md ================================================ # @fortawesome/fontawesome-common-types - SVG with JavaScript > "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum" [![npm](https://img.shields.io/npm/v/@fortawesome/fontawesome-common-types.svg?style=flat-square)](https://www.npmjs.com/package/@fortawesome/fontawesome-common-types) ## What is this package? Font Awesome 5 JavaScript packages support TypeScript. This package abstracts out some of the common definitions that those packages use. ## Here be dragons If you are trying to import types from this package we *highly* recommend you do the following instead as *all types in this package are re-exported to the main fontawesome package*. your.ts ``` import { IconName } from `@fortawesome/fontawesome-svg-core` const myIcon: IconName = "..." ``` ## Issues and support Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to. ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-common-types/attribution.js ================================================ console.log(`Font Awesome Free 0.2.36 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) `) ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-common-types/index.d.ts ================================================ export type IconPrefix = "fas" | "fab" | "far" | "fal" | "fad"; export type IconPathData = string | string[] export interface IconLookup { prefix: IconPrefix; // IconName is defined in the code that will be generated at build time and bundled with this file. iconName: IconName; } export interface IconDefinition extends IconLookup { icon: [ number, // width number, // height string[], // ligatures string, // unicode IconPathData // svgPathData ]; } export interface IconPack { [key: string]: IconDefinition; } export type IconName = 'aws' | 'cc-amazon-pay' | 'cc-amex' | 'cc-apple-pay' | 'cc-diners-club' | 'cc-discover' | 'cc-jcb' | 'cc-mastercard' | 'cc-paypal' | 'cc-stripe' | 'cc-visa' | 'discourse' | 'docker' | 'github' | 'instagram' | 'microsoft' | 'rev' | 'slack' | 'twitter' | 'abacus' | 'align-slash' | 'atom-alt' | 'badge-check' | 'bell' | 'books' | 'brackets-curly' | 'chart-network' | 'chart-scatter' | 'check' | 'circle' | 'clouds' | 'cogs' | 'comment-dots' | 'concierge-bell' | 'dot-circle' | 'envelope' | 'exchange-alt' | 'file-alt' | 'file-code' | 'globe' | 'globe-africa' | 'globe-americas' | 'globe-asia' | 'globe-europe' | 'graduation-cap' | 'history' | 'key' | 'key-skeleton' | 'laptop' | 'laptop-code' | 'laptop-house' | 'life-ring' | 'lightbulb' | 'list-alt' | 'list-ul' | 'lock-alt' | 'map-marker-alt' | 'moon-stars' | 'network-wired' | 'planet-ringed' | 'question-circle' | 'quote-left' | 'random' | 'rocket' | 'search' | 'server' | 'sign-out' | 'siren-on' | 'smile' | 'snowman' | 'sun' | 'tasks' | 'university' | 'user' | 'user-hard-hat' | 'user-shield' | 'users' | 'check-circle' | 'desktop' | 'eye' | 'file-code' | 'info' | 'info-circle' | 'plus' | 'question-circle' | 'rocket' | 'save' | 'slash' | 'times' | 'undo' | 'undo-alt' | 'user' | 'user-friends' | 'users' | 'alarm-exclamation' | 'align-left' | 'book-dead' | 'check' | 'circle' | 'cloud' | 'credit-card' | 'desktop' | 'envelope' | 'eye' | 'fingerprint' | 'history' | 'home' | 'plus' | 'robot' | 'rocket' | 'save' | 'slash' | 'spinner-third' | 'square-full' | 'times' | 'times-circle' | 'undo' | 'undo-alt' | 'user' | 'users'; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-common-types/package.json ================================================ { "description": "The iconic font, CSS, and SVG framework", "keywords": [ "font", "awesome", "fontawesome", "icon", "svg", "bootstrap" ], "homepage": "https://fontawesome.com", "bugs": { "url": "http://github.com/FortAwesome/Font-Awesome/issues" }, "author": { "name": "Dave Gandy", "email": "dave@fontawesome.com", "web": "http://twitter.com/davegandy" }, "contributors": [ { "name": "Brian Talbot", "web": "http://twitter.com/talbs" }, { "name": "Travis Chase", "web": "http://twitter.com/supercodepoet" }, { "name": "Rob Madole", "web": "http://twitter.com/robmadole" }, { "name": "Geremia Taglialatela", "web": "http://twitter.com/gtagliala" }, { "name": "Mike Wilkerson", "web": "http://twitter.com/mw77" } ], "repository": { "type": "git", "url": "https://github.com/FortAwesome/Font-Awesome" }, "engines": { "node": ">=6" }, "dependencies": {}, "version": "0.2.36", "name": "@fortawesome/fontawesome-common-types", "license": "MIT", "types": "./index.d.ts", "scripts": { "postinstall": "node attribution.js" } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/LICENSE.txt ================================================ Font Awesome Pro License ------------------------ Font Awesome Pro is commercial software that requires a paid license. Full Font Awesome Pro license: https://fontawesome.com/license. # Commercial License The Font Awesome Pro commercial license allows you to pay for FA Pro once, own it, and use it just about everywhere you'd like. # Attribution Attribution is not required by the Font Awesome Pro commercial license. # Brand Icons All brand icons are trademarks of their respective owners. The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa. **Please do not use brand logos for any purpose except to represent the company, product, or service to which they refer.** ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/attribution.js ================================================ console.log(`Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) `) ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/all.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ .fa, .fas, .far, .fal, .fad, .fab { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; font-style: normal; font-variant: normal; text-rendering: auto; line-height: 1; } .fa-lg { font-size: 1.33333em; line-height: 0.75em; vertical-align: -.0667em; } .fa-xs { font-size: .75em; } .fa-sm { font-size: .875em; } .fa-1x { font-size: 1em; } .fa-2x { font-size: 2em; } .fa-3x { font-size: 3em; } .fa-4x { font-size: 4em; } .fa-5x { font-size: 5em; } .fa-6x { font-size: 6em; } .fa-7x { font-size: 7em; } .fa-8x { font-size: 8em; } .fa-9x { font-size: 9em; } .fa-10x { font-size: 10em; } .fa-fw { text-align: center; width: 1.25em; } .fa-ul { list-style-type: none; margin-left: 2.5em; padding-left: 0; } .fa-ul > li { position: relative; } .fa-li { left: -2em; position: absolute; text-align: center; width: 2em; line-height: inherit; } .fa-border { border: solid 0.08em #eee; border-radius: .1em; padding: .2em .25em .15em; } .fa-pull-left { float: left; } .fa-pull-right { float: right; } .fa.fa-pull-left, .fas.fa-pull-left, .far.fa-pull-left, .fal.fa-pull-left, .fab.fa-pull-left { margin-right: .3em; } .fa.fa-pull-right, .fas.fa-pull-right, .far.fa-pull-right, .fal.fa-pull-right, .fab.fa-pull-right { margin-left: .3em; } .fa-spin { -webkit-animation: fa-spin 2s infinite linear; animation: fa-spin 2s infinite linear; } .fa-pulse { -webkit-animation: fa-spin 1s infinite steps(8); animation: fa-spin 1s infinite steps(8); } @-webkit-keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } .fa-rotate-90 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); transform: rotate(90deg); } .fa-rotate-180 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); transform: rotate(180deg); } .fa-rotate-270 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); transform: rotate(270deg); } .fa-flip-horizontal { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); transform: scale(-1, 1); } .fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); transform: scale(1, -1); } .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(-1, -1); transform: scale(-1, -1); } :root .fa-rotate-90, :root .fa-rotate-180, :root .fa-rotate-270, :root .fa-flip-horizontal, :root .fa-flip-vertical, :root .fa-flip-both { -webkit-filter: none; filter: none; } .fa-stack { display: inline-block; height: 2em; line-height: 2em; position: relative; vertical-align: middle; width: 2.5em; } .fa-stack-1x, .fa-stack-2x { left: 0; position: absolute; text-align: center; width: 100%; } .fa-stack-1x { line-height: inherit; } .fa-stack-2x { font-size: 2em; } .fa-inverse { color: #fff; } /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ .fa-abacus:before { content: "\f640"; } .fa-alarm-exclamation:before { content: "\f843"; } .fa-align-left:before { content: "\f036"; } .fa-align-slash:before { content: "\f846"; } .fa-atom-alt:before { content: "\f5d3"; } .fa-aws:before { content: "\f375"; } .fa-badge-check:before { content: "\f336"; } .fa-bell:before { content: "\f0f3"; } .fa-book-dead:before { content: "\f6b7"; } .fa-books:before { content: "\f5db"; } .fa-brackets-curly:before { content: "\f7ea"; } .fa-cc-amazon-pay:before { content: "\f42d"; } .fa-cc-amex:before { content: "\f1f3"; } .fa-cc-apple-pay:before { content: "\f416"; } .fa-cc-diners-club:before { content: "\f24c"; } .fa-cc-discover:before { content: "\f1f2"; } .fa-cc-jcb:before { content: "\f24b"; } .fa-cc-mastercard:before { content: "\f1f1"; } .fa-cc-paypal:before { content: "\f1f4"; } .fa-cc-stripe:before { content: "\f1f5"; } .fa-cc-visa:before { content: "\f1f0"; } .fa-chart-network:before { content: "\f78a"; } .fa-chart-scatter:before { content: "\f7ee"; } .fa-check:before { content: "\f00c"; } .fa-check-circle:before { content: "\f058"; } .fa-circle:before { content: "\f111"; } .fa-cloud:before { content: "\f0c2"; } .fa-clouds:before { content: "\f744"; } .fa-cogs:before { content: "\f085"; } .fa-comment-dots:before { content: "\f4ad"; } .fa-concierge-bell:before { content: "\f562"; } .fa-credit-card:before { content: "\f09d"; } .fa-desktop:before { content: "\f108"; } .fa-discourse:before { content: "\f393"; } .fa-docker:before { content: "\f395"; } .fa-dot-circle:before { content: "\f192"; } .fa-envelope:before { content: "\f0e0"; } .fa-exchange-alt:before { content: "\f362"; } .fa-eye:before { content: "\f06e"; } .fa-file-alt:before { content: "\f15c"; } .fa-file-code:before { content: "\f1c9"; } .fa-fingerprint:before { content: "\f577"; } .fa-github:before { content: "\f09b"; } .fa-globe:before { content: "\f0ac"; } .fa-globe-africa:before { content: "\f57c"; } .fa-globe-americas:before { content: "\f57d"; } .fa-globe-asia:before { content: "\f57e"; } .fa-globe-europe:before { content: "\f7a2"; } .fa-graduation-cap:before { content: "\f19d"; } .fa-history:before { content: "\f1da"; } .fa-home:before { content: "\f015"; } .fa-info:before { content: "\f129"; } .fa-info-circle:before { content: "\f05a"; } .fa-instagram:before { content: "\f16d"; } .fa-key:before { content: "\f084"; } .fa-key-skeleton:before { content: "\f6f3"; } .fa-laptop:before { content: "\f109"; } .fa-laptop-code:before { content: "\f5fc"; } .fa-laptop-house:before { content: "\e066"; } .fa-life-ring:before { content: "\f1cd"; } .fa-lightbulb:before { content: "\f0eb"; } .fa-list-alt:before { content: "\f022"; } .fa-list-ul:before { content: "\f0ca"; } .fa-lock-alt:before { content: "\f30d"; } .fa-map-marker-alt:before { content: "\f3c5"; } .fa-microsoft:before { content: "\f3ca"; } .fa-moon-stars:before { content: "\f755"; } .fa-network-wired:before { content: "\f6ff"; } .fa-planet-ringed:before { content: "\e020"; } .fa-plus:before { content: "\f067"; } .fa-question-circle:before { content: "\f059"; } .fa-quote-left:before { content: "\f10d"; } .fa-random:before { content: "\f074"; } .fa-rev:before { content: "\f5b2"; } .fa-robot:before { content: "\f544"; } .fa-rocket:before { content: "\f135"; } .fa-save:before { content: "\f0c7"; } .fa-search:before { content: "\f002"; } .fa-server:before { content: "\f233"; } .fa-sign-out:before { content: "\f08b"; } .fa-siren-on:before { content: "\e02e"; } .fa-slack:before { content: "\f198"; } .fa-slash:before { content: "\f715"; } .fa-smile:before { content: "\f118"; } .fa-snowman:before { content: "\f7d0"; } .fa-spinner-third:before { content: "\f3f4"; } .fa-square-full:before { content: "\f45c"; } .fa-sun:before { content: "\f185"; } .fa-tasks:before { content: "\f0ae"; } .fa-times:before { content: "\f00d"; } .fa-times-circle:before { content: "\f057"; } .fa-twitter:before { content: "\f099"; } .fa-undo:before { content: "\f0e2"; } .fa-undo-alt:before { content: "\f2ea"; } .fa-university:before { content: "\f19c"; } .fa-user:before { content: "\f007"; } .fa-user-friends:before { content: "\f500"; } .fa-user-hard-hat:before { content: "\f82c"; } .fa-user-shield:before { content: "\f505"; } .fa-users:before { content: "\f0c0"; } .sr-only { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .sr-only-focusable:active, .sr-only-focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } @font-face { font-family: 'Font Awesome 5 Brands'; font-style: normal; font-weight: 400; font-display: block; src: url("../webfonts/fa-brands-400.eot"); src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } .fab { font-family: 'Font Awesome 5 Brands'; font-weight: 400; } @font-face { font-family: 'Font Awesome 5 Duotone'; font-style: normal; font-weight: 900; font-display: block; src: url("../webfonts/fa-duotone-900.eot"); src: url("../webfonts/fa-duotone-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-duotone-900.woff2") format("woff2"), url("../webfonts/fa-duotone-900.woff") format("woff"), url("../webfonts/fa-duotone-900.ttf") format("truetype"), url("../webfonts/fa-duotone-900.svg#fontawesome") format("svg"); } .fad { position: relative; font-family: 'Font Awesome 5 Duotone'; font-weight: 900; } .fad:before { position: absolute; color: var(--fa-primary-color, inherit); opacity: 1; opacity: var(--fa-primary-opacity, 1); } .fad:after { color: var(--fa-secondary-color, inherit); opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .fa-swap-opacity .fad:before, .fad.fa-swap-opacity:before { opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .fa-swap-opacity .fad:after, .fad.fa-swap-opacity:after { opacity: 1; opacity: var(--fa-primary-opacity, 1); } .fad.fa-inverse { color: #fff; } .fad.fa-stack-1x, .fad.fa-stack-2x { position: absolute; } .fad.fa-stack-1x:before, .fad.fa-stack-2x:before, .fad.fa-fw:before { left: 50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); } .fad.fa-abacus:after { content: "\10f640"; } .fad.fa-align-slash:after { content: "\10f846"; } .fad.fa-atom-alt:after { content: "\10f5d3"; } .fad.fa-badge-check:after { content: "\10f336"; } .fad.fa-bell:after { content: "\10f0f3"; } .fad.fa-books:after { content: "\10f5db"; } .fad.fa-brackets-curly:after { content: "\10f7ea"; } .fad.fa-chart-network:after { content: "\10f78a"; } .fad.fa-chart-scatter:after { content: "\10f7ee"; } .fad.fa-check:after { content: "\10f00c"; } .fad.fa-circle:after { content: "\10f111"; } .fad.fa-clouds:after { content: "\10f744"; } .fad.fa-cogs:after { content: "\10f085"; } .fad.fa-comment-dots:after { content: "\10f4ad"; } .fad.fa-concierge-bell:after { content: "\10f562"; } .fad.fa-dot-circle:after { content: "\10f192"; } .fad.fa-envelope:after { content: "\10f0e0"; } .fad.fa-exchange-alt:after { content: "\10f362"; } .fad.fa-file-alt:after { content: "\10f15c"; } .fad.fa-file-code:after { content: "\10f1c9"; } .fad.fa-globe:after { content: "\10f0ac"; } .fad.fa-globe-africa:after { content: "\10f57c"; } .fad.fa-globe-americas:after { content: "\10f57d"; } .fad.fa-globe-asia:after { content: "\10f57e"; } .fad.fa-globe-europe:after { content: "\10f7a2"; } .fad.fa-graduation-cap:after { content: "\10f19d"; } .fad.fa-history:after { content: "\10f1da"; } .fad.fa-key:after { content: "\10f084"; } .fad.fa-key-skeleton:after { content: "\10f6f3"; } .fad.fa-laptop:after { content: "\10f109"; } .fad.fa-laptop-code:after { content: "\10f5fc"; } .fad.fa-laptop-house:after { content: "\10e066"; } .fad.fa-life-ring:after { content: "\10f1cd"; } .fad.fa-lightbulb:after { content: "\10f0eb"; } .fad.fa-list-alt:after { content: "\10f022"; } .fad.fa-list-ul:after { content: "\10f0ca"; } .fad.fa-lock-alt:after { content: "\10f30d"; } .fad.fa-map-marker-alt:after { content: "\10f3c5"; } .fad.fa-moon-stars:after { content: "\10f755"; } .fad.fa-network-wired:after { content: "\10f6ff"; } .fad.fa-planet-ringed:after { content: "\10e020"; } .fad.fa-question-circle:after { content: "\10f059"; } .fad.fa-quote-left:after { content: "\10f10d"; } .fad.fa-random:after { content: "\10f074"; } .fad.fa-rocket:after { content: "\10f135"; } .fad.fa-search:after { content: "\10f002"; } .fad.fa-server:after { content: "\10f233"; } .fad.fa-sign-out:after { content: "\10f08b"; } .fad.fa-siren-on:after { content: "\10e02e"; } .fad.fa-smile:after { content: "\10f118"; } .fad.fa-snowman:after { content: "\10f7d0"; } .fad.fa-sun:after { content: "\10f185"; } .fad.fa-tasks:after { content: "\10f0ae"; } .fad.fa-university:after { content: "\10f19c"; } .fad.fa-user:after { content: "\10f007"; } .fad.fa-user-hard-hat:after { content: "\10f82c"; } .fad.fa-user-shield:after { content: "\10f505"; } .fad.fa-users:after { content: "\10f0c0"; } @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 400; font-display: block; src: url("../webfonts/fa-regular-400.eot"); src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } .far { font-family: 'Font Awesome 5 Pro'; font-weight: 400; } @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 900; font-display: block; src: url("../webfonts/fa-solid-900.eot"); src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } .fa, .fas { font-family: 'Font Awesome 5 Pro'; font-weight: 900; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/brands.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ @font-face { font-family: 'Font Awesome 5 Brands'; font-style: normal; font-weight: 400; font-display: block; src: url("../webfonts/fa-brands-400.eot"); src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } .fab { font-family: 'Font Awesome 5 Brands'; font-weight: 400; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/duotone.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ @font-face { font-family: 'Font Awesome 5 Duotone'; font-style: normal; font-weight: 900; font-display: block; src: url("../webfonts/fa-duotone-900.eot"); src: url("../webfonts/fa-duotone-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-duotone-900.woff2") format("woff2"), url("../webfonts/fa-duotone-900.woff") format("woff"), url("../webfonts/fa-duotone-900.ttf") format("truetype"), url("../webfonts/fa-duotone-900.svg#fontawesome") format("svg"); } .fad { position: relative; font-family: 'Font Awesome 5 Duotone'; font-weight: 900; } .fad:before { position: absolute; color: var(--fa-primary-color, inherit); opacity: 1; opacity: var(--fa-primary-opacity, 1); } .fad:after { color: var(--fa-secondary-color, inherit); opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .fa-swap-opacity .fad:before, .fad.fa-swap-opacity:before { opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .fa-swap-opacity .fad:after, .fad.fa-swap-opacity:after { opacity: 1; opacity: var(--fa-primary-opacity, 1); } .fad.fa-inverse { color: #fff; } .fad.fa-stack-1x, .fad.fa-stack-2x { position: absolute; } .fad.fa-stack-1x:before, .fad.fa-stack-2x:before, .fad.fa-fw:before { left: 50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); } .fad.fa-abacus:after { content: "\10f640"; } .fad.fa-align-slash:after { content: "\10f846"; } .fad.fa-atom-alt:after { content: "\10f5d3"; } .fad.fa-badge-check:after { content: "\10f336"; } .fad.fa-bell:after { content: "\10f0f3"; } .fad.fa-books:after { content: "\10f5db"; } .fad.fa-brackets-curly:after { content: "\10f7ea"; } .fad.fa-chart-network:after { content: "\10f78a"; } .fad.fa-chart-scatter:after { content: "\10f7ee"; } .fad.fa-check:after { content: "\10f00c"; } .fad.fa-circle:after { content: "\10f111"; } .fad.fa-clouds:after { content: "\10f744"; } .fad.fa-cogs:after { content: "\10f085"; } .fad.fa-comment-dots:after { content: "\10f4ad"; } .fad.fa-concierge-bell:after { content: "\10f562"; } .fad.fa-dot-circle:after { content: "\10f192"; } .fad.fa-envelope:after { content: "\10f0e0"; } .fad.fa-exchange-alt:after { content: "\10f362"; } .fad.fa-file-alt:after { content: "\10f15c"; } .fad.fa-file-code:after { content: "\10f1c9"; } .fad.fa-globe:after { content: "\10f0ac"; } .fad.fa-globe-africa:after { content: "\10f57c"; } .fad.fa-globe-americas:after { content: "\10f57d"; } .fad.fa-globe-asia:after { content: "\10f57e"; } .fad.fa-globe-europe:after { content: "\10f7a2"; } .fad.fa-graduation-cap:after { content: "\10f19d"; } .fad.fa-history:after { content: "\10f1da"; } .fad.fa-key:after { content: "\10f084"; } .fad.fa-key-skeleton:after { content: "\10f6f3"; } .fad.fa-laptop:after { content: "\10f109"; } .fad.fa-laptop-code:after { content: "\10f5fc"; } .fad.fa-laptop-house:after { content: "\10e066"; } .fad.fa-life-ring:after { content: "\10f1cd"; } .fad.fa-lightbulb:after { content: "\10f0eb"; } .fad.fa-list-alt:after { content: "\10f022"; } .fad.fa-list-ul:after { content: "\10f0ca"; } .fad.fa-lock-alt:after { content: "\10f30d"; } .fad.fa-map-marker-alt:after { content: "\10f3c5"; } .fad.fa-moon-stars:after { content: "\10f755"; } .fad.fa-network-wired:after { content: "\10f6ff"; } .fad.fa-planet-ringed:after { content: "\10e020"; } .fad.fa-question-circle:after { content: "\10f059"; } .fad.fa-quote-left:after { content: "\10f10d"; } .fad.fa-random:after { content: "\10f074"; } .fad.fa-rocket:after { content: "\10f135"; } .fad.fa-search:after { content: "\10f002"; } .fad.fa-server:after { content: "\10f233"; } .fad.fa-sign-out:after { content: "\10f08b"; } .fad.fa-siren-on:after { content: "\10e02e"; } .fad.fa-smile:after { content: "\10f118"; } .fad.fa-snowman:after { content: "\10f7d0"; } .fad.fa-sun:after { content: "\10f185"; } .fad.fa-tasks:after { content: "\10f0ae"; } .fad.fa-university:after { content: "\10f19c"; } .fad.fa-user:after { content: "\10f007"; } .fad.fa-user-hard-hat:after { content: "\10f82c"; } .fad.fa-user-shield:after { content: "\10f505"; } .fad.fa-users:after { content: "\10f0c0"; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/fontawesome.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ .fa, .fas, .far, .fal, .fad, .fab { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; font-style: normal; font-variant: normal; text-rendering: auto; line-height: 1; } .fa-lg { font-size: 1.33333em; line-height: 0.75em; vertical-align: -.0667em; } .fa-xs { font-size: .75em; } .fa-sm { font-size: .875em; } .fa-1x { font-size: 1em; } .fa-2x { font-size: 2em; } .fa-3x { font-size: 3em; } .fa-4x { font-size: 4em; } .fa-5x { font-size: 5em; } .fa-6x { font-size: 6em; } .fa-7x { font-size: 7em; } .fa-8x { font-size: 8em; } .fa-9x { font-size: 9em; } .fa-10x { font-size: 10em; } .fa-fw { text-align: center; width: 1.25em; } .fa-ul { list-style-type: none; margin-left: 2.5em; padding-left: 0; } .fa-ul > li { position: relative; } .fa-li { left: -2em; position: absolute; text-align: center; width: 2em; line-height: inherit; } .fa-border { border: solid 0.08em #eee; border-radius: .1em; padding: .2em .25em .15em; } .fa-pull-left { float: left; } .fa-pull-right { float: right; } .fa.fa-pull-left, .fas.fa-pull-left, .far.fa-pull-left, .fal.fa-pull-left, .fab.fa-pull-left { margin-right: .3em; } .fa.fa-pull-right, .fas.fa-pull-right, .far.fa-pull-right, .fal.fa-pull-right, .fab.fa-pull-right { margin-left: .3em; } .fa-spin { -webkit-animation: fa-spin 2s infinite linear; animation: fa-spin 2s infinite linear; } .fa-pulse { -webkit-animation: fa-spin 1s infinite steps(8); animation: fa-spin 1s infinite steps(8); } @-webkit-keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } .fa-rotate-90 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); transform: rotate(90deg); } .fa-rotate-180 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); transform: rotate(180deg); } .fa-rotate-270 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); transform: rotate(270deg); } .fa-flip-horizontal { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); transform: scale(-1, 1); } .fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); transform: scale(1, -1); } .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(-1, -1); transform: scale(-1, -1); } :root .fa-rotate-90, :root .fa-rotate-180, :root .fa-rotate-270, :root .fa-flip-horizontal, :root .fa-flip-vertical, :root .fa-flip-both { -webkit-filter: none; filter: none; } .fa-stack { display: inline-block; height: 2em; line-height: 2em; position: relative; vertical-align: middle; width: 2.5em; } .fa-stack-1x, .fa-stack-2x { left: 0; position: absolute; text-align: center; width: 100%; } .fa-stack-1x { line-height: inherit; } .fa-stack-2x { font-size: 2em; } .fa-inverse { color: #fff; } /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ .fa-abacus:before { content: "\f640"; } .fa-alarm-exclamation:before { content: "\f843"; } .fa-align-left:before { content: "\f036"; } .fa-align-slash:before { content: "\f846"; } .fa-atom-alt:before { content: "\f5d3"; } .fa-aws:before { content: "\f375"; } .fa-badge-check:before { content: "\f336"; } .fa-bell:before { content: "\f0f3"; } .fa-book-dead:before { content: "\f6b7"; } .fa-books:before { content: "\f5db"; } .fa-brackets-curly:before { content: "\f7ea"; } .fa-cc-amazon-pay:before { content: "\f42d"; } .fa-cc-amex:before { content: "\f1f3"; } .fa-cc-apple-pay:before { content: "\f416"; } .fa-cc-diners-club:before { content: "\f24c"; } .fa-cc-discover:before { content: "\f1f2"; } .fa-cc-jcb:before { content: "\f24b"; } .fa-cc-mastercard:before { content: "\f1f1"; } .fa-cc-paypal:before { content: "\f1f4"; } .fa-cc-stripe:before { content: "\f1f5"; } .fa-cc-visa:before { content: "\f1f0"; } .fa-chart-network:before { content: "\f78a"; } .fa-chart-scatter:before { content: "\f7ee"; } .fa-check:before { content: "\f00c"; } .fa-check-circle:before { content: "\f058"; } .fa-circle:before { content: "\f111"; } .fa-cloud:before { content: "\f0c2"; } .fa-clouds:before { content: "\f744"; } .fa-cogs:before { content: "\f085"; } .fa-comment-dots:before { content: "\f4ad"; } .fa-concierge-bell:before { content: "\f562"; } .fa-credit-card:before { content: "\f09d"; } .fa-desktop:before { content: "\f108"; } .fa-discourse:before { content: "\f393"; } .fa-docker:before { content: "\f395"; } .fa-dot-circle:before { content: "\f192"; } .fa-envelope:before { content: "\f0e0"; } .fa-exchange-alt:before { content: "\f362"; } .fa-eye:before { content: "\f06e"; } .fa-file-alt:before { content: "\f15c"; } .fa-file-code:before { content: "\f1c9"; } .fa-fingerprint:before { content: "\f577"; } .fa-github:before { content: "\f09b"; } .fa-globe:before { content: "\f0ac"; } .fa-globe-africa:before { content: "\f57c"; } .fa-globe-americas:before { content: "\f57d"; } .fa-globe-asia:before { content: "\f57e"; } .fa-globe-europe:before { content: "\f7a2"; } .fa-graduation-cap:before { content: "\f19d"; } .fa-history:before { content: "\f1da"; } .fa-home:before { content: "\f015"; } .fa-info:before { content: "\f129"; } .fa-info-circle:before { content: "\f05a"; } .fa-instagram:before { content: "\f16d"; } .fa-key:before { content: "\f084"; } .fa-key-skeleton:before { content: "\f6f3"; } .fa-laptop:before { content: "\f109"; } .fa-laptop-code:before { content: "\f5fc"; } .fa-laptop-house:before { content: "\e066"; } .fa-life-ring:before { content: "\f1cd"; } .fa-lightbulb:before { content: "\f0eb"; } .fa-list-alt:before { content: "\f022"; } .fa-list-ul:before { content: "\f0ca"; } .fa-lock-alt:before { content: "\f30d"; } .fa-map-marker-alt:before { content: "\f3c5"; } .fa-microsoft:before { content: "\f3ca"; } .fa-moon-stars:before { content: "\f755"; } .fa-network-wired:before { content: "\f6ff"; } .fa-planet-ringed:before { content: "\e020"; } .fa-plus:before { content: "\f067"; } .fa-question-circle:before { content: "\f059"; } .fa-quote-left:before { content: "\f10d"; } .fa-random:before { content: "\f074"; } .fa-rev:before { content: "\f5b2"; } .fa-robot:before { content: "\f544"; } .fa-rocket:before { content: "\f135"; } .fa-save:before { content: "\f0c7"; } .fa-search:before { content: "\f002"; } .fa-server:before { content: "\f233"; } .fa-sign-out:before { content: "\f08b"; } .fa-siren-on:before { content: "\e02e"; } .fa-slack:before { content: "\f198"; } .fa-slash:before { content: "\f715"; } .fa-smile:before { content: "\f118"; } .fa-snowman:before { content: "\f7d0"; } .fa-spinner-third:before { content: "\f3f4"; } .fa-square-full:before { content: "\f45c"; } .fa-sun:before { content: "\f185"; } .fa-tasks:before { content: "\f0ae"; } .fa-times:before { content: "\f00d"; } .fa-times-circle:before { content: "\f057"; } .fa-twitter:before { content: "\f099"; } .fa-undo:before { content: "\f0e2"; } .fa-undo-alt:before { content: "\f2ea"; } .fa-university:before { content: "\f19c"; } .fa-user:before { content: "\f007"; } .fa-user-friends:before { content: "\f500"; } .fa-user-hard-hat:before { content: "\f82c"; } .fa-user-shield:before { content: "\f505"; } .fa-users:before { content: "\f0c0"; } .sr-only { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .sr-only-focusable:active, .sr-only-focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/regular.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 400; font-display: block; src: url("../webfonts/fa-regular-400.eot"); src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } .far { font-family: 'Font Awesome 5 Pro'; font-weight: 400; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/solid.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 900; font-display: block; src: url("../webfonts/fa-solid-900.eot"); src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } .fa, .fas { font-family: 'Font Awesome 5 Pro'; font-weight: 900; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/css/svg-with-js.css ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ svg:not(:root).svg-inline--fa { overflow: visible; } .svg-inline--fa { display: inline-block; font-size: inherit; height: 1em; overflow: visible; vertical-align: -.125em; } .svg-inline--fa.fa-lg { vertical-align: -.225em; } .svg-inline--fa.fa-w-1 { width: 0.0625em; } .svg-inline--fa.fa-w-2 { width: 0.125em; } .svg-inline--fa.fa-w-3 { width: 0.1875em; } .svg-inline--fa.fa-w-4 { width: 0.25em; } .svg-inline--fa.fa-w-5 { width: 0.3125em; } .svg-inline--fa.fa-w-6 { width: 0.375em; } .svg-inline--fa.fa-w-7 { width: 0.4375em; } .svg-inline--fa.fa-w-8 { width: 0.5em; } .svg-inline--fa.fa-w-9 { width: 0.5625em; } .svg-inline--fa.fa-w-10 { width: 0.625em; } .svg-inline--fa.fa-w-11 { width: 0.6875em; } .svg-inline--fa.fa-w-12 { width: 0.75em; } .svg-inline--fa.fa-w-13 { width: 0.8125em; } .svg-inline--fa.fa-w-14 { width: 0.875em; } .svg-inline--fa.fa-w-15 { width: 0.9375em; } .svg-inline--fa.fa-w-16 { width: 1em; } .svg-inline--fa.fa-w-17 { width: 1.0625em; } .svg-inline--fa.fa-w-18 { width: 1.125em; } .svg-inline--fa.fa-w-19 { width: 1.1875em; } .svg-inline--fa.fa-w-20 { width: 1.25em; } .svg-inline--fa.fa-pull-left { margin-right: .3em; width: auto; } .svg-inline--fa.fa-pull-right { margin-left: .3em; width: auto; } .svg-inline--fa.fa-border { height: 1.5em; } .svg-inline--fa.fa-li { width: 2em; } .svg-inline--fa.fa-fw { width: 1.25em; } .fa-layers svg.svg-inline--fa { bottom: 0; left: 0; margin: auto; position: absolute; right: 0; top: 0; } .fa-layers { display: inline-block; height: 1em; position: relative; text-align: center; vertical-align: -.125em; width: 1em; } .fa-layers svg.svg-inline--fa { -webkit-transform-origin: center center; transform-origin: center center; } .fa-layers-text, .fa-layers-counter { display: inline-block; position: absolute; text-align: center; } .fa-layers-text { left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); -webkit-transform-origin: center center; transform-origin: center center; } .fa-layers-counter { background-color: #ff253a; border-radius: 1em; -webkit-box-sizing: border-box; box-sizing: border-box; color: #fff; height: 1.5em; line-height: 1; max-width: 5em; min-width: 1.5em; overflow: hidden; padding: .25em; right: 0; text-overflow: ellipsis; top: 0; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: top right; transform-origin: top right; } .fa-layers-bottom-right { bottom: 0; right: 0; top: auto; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: bottom right; transform-origin: bottom right; } .fa-layers-bottom-left { bottom: 0; left: 0; right: auto; top: auto; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: bottom left; transform-origin: bottom left; } .fa-layers-top-right { right: 0; top: 0; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: top right; transform-origin: top right; } .fa-layers-top-left { left: 0; right: auto; top: 0; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: top left; transform-origin: top left; } .fa-lg { font-size: 1.33333em; line-height: 0.75em; vertical-align: -.0667em; } .fa-xs { font-size: .75em; } .fa-sm { font-size: .875em; } .fa-1x { font-size: 1em; } .fa-2x { font-size: 2em; } .fa-3x { font-size: 3em; } .fa-4x { font-size: 4em; } .fa-5x { font-size: 5em; } .fa-6x { font-size: 6em; } .fa-7x { font-size: 7em; } .fa-8x { font-size: 8em; } .fa-9x { font-size: 9em; } .fa-10x { font-size: 10em; } .fa-fw { text-align: center; width: 1.25em; } .fa-ul { list-style-type: none; margin-left: 2.5em; padding-left: 0; } .fa-ul > li { position: relative; } .fa-li { left: -2em; position: absolute; text-align: center; width: 2em; line-height: inherit; } .fa-border { border: solid 0.08em #eee; border-radius: .1em; padding: .2em .25em .15em; } .fa-pull-left { float: left; } .fa-pull-right { float: right; } .fa.fa-pull-left, .fas.fa-pull-left, .far.fa-pull-left, .fal.fa-pull-left, .fab.fa-pull-left { margin-right: .3em; } .fa.fa-pull-right, .fas.fa-pull-right, .far.fa-pull-right, .fal.fa-pull-right, .fab.fa-pull-right { margin-left: .3em; } .fa-spin { -webkit-animation: fa-spin 2s infinite linear; animation: fa-spin 2s infinite linear; } .fa-pulse { -webkit-animation: fa-spin 1s infinite steps(8); animation: fa-spin 1s infinite steps(8); } @-webkit-keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } .fa-rotate-90 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); transform: rotate(90deg); } .fa-rotate-180 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); transform: rotate(180deg); } .fa-rotate-270 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); transform: rotate(270deg); } .fa-flip-horizontal { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); transform: scale(-1, 1); } .fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); transform: scale(1, -1); } .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(-1, -1); transform: scale(-1, -1); } :root .fa-rotate-90, :root .fa-rotate-180, :root .fa-rotate-270, :root .fa-flip-horizontal, :root .fa-flip-vertical, :root .fa-flip-both { -webkit-filter: none; filter: none; } .fa-stack { display: inline-block; height: 2em; position: relative; width: 2.5em; } .fa-stack-1x, .fa-stack-2x { bottom: 0; left: 0; margin: auto; position: absolute; right: 0; top: 0; } .svg-inline--fa.fa-stack-1x { height: 1em; width: 1.25em; } .svg-inline--fa.fa-stack-2x { height: 2em; width: 2.5em; } .fa-inverse { color: #fff; } .sr-only { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .sr-only-focusable:active, .sr-only-focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } .svg-inline--fa .fa-primary { fill: var(--fa-primary-color, currentColor); opacity: 1; opacity: var(--fa-primary-opacity, 1); } .svg-inline--fa .fa-secondary { fill: var(--fa-secondary-color, currentColor); opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .svg-inline--fa.fa-swap-opacity .fa-primary { opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .svg-inline--fa.fa-swap-opacity .fa-secondary { opacity: 1; opacity: var(--fa-primary-opacity, 1); } .svg-inline--fa mask .fa-primary, .svg-inline--fa mask .fa-secondary { fill: black; } .fad.fa-inverse { color: #fff; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/js/all.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "aws": [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"], "cc-amazon-pay": [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"], "cc-amex": [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"], "cc-apple-pay": [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"], "cc-diners-club": [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"], "cc-discover": [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"], "cc-jcb": [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"], "cc-mastercard": [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"], "cc-paypal": [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"], "cc-stripe": [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"], "cc-visa": [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"], "discourse": [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"], "docker": [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"], "github": [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"], "instagram": [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"], "microsoft": [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"], "rev": [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"], "slack": [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"], "twitter": [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"] }; bunker(function () { defineIcons('fab', icons); }); }()); (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "abacus": [576, 512, [], "f640", ["M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"]], "align-slash": [640, 512, [], "f846", ["M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"]], "atom-alt": [448, 512, [], "f5d3", ["M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"]], "badge-check": [512, 512, [], "f336", ["M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"]], "bell": [448, 512, [], "f0f3", ["M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z"]], "books": [576, 512, [], "f5db", ["M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"]], "brackets-curly": [576, 512, [], "f7ea", ["M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]], "chart-network": [640, 512, [], "f78a", ["M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]], "chart-scatter": [512, 512, [], "f7ee", ["M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]], "check": [512, 512, [], "f00c", ["M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"]], "circle": [512, 512, [], "f111", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"]], "clouds": [640, 512, [], "f744", ["M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"]], "cogs": [640, 512, [], "f085", ["M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"]], "comment-dots": [512, 512, [], "f4ad", ["M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]], "concierge-bell": [512, 512, [], "f562", ["M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"]], "dot-circle": [512, 512, [], "f192", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"]], "envelope": [512, 512, [], "f0e0", ["M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"]], "exchange-alt": [512, 512, [], "f362", ["M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"]], "file-alt": [384, 512, [], "f15c", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"]], "file-code": [384, 512, [], "f1c9", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"]], "globe": [496, 512, [], "f0ac", ["M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"]], "globe-africa": [496, 512, [], "f57c", ["M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"]], "globe-americas": [496, 512, [], "f57d", ["M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"]], "globe-asia": [496, 512, [], "f57e", ["M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"]], "globe-europe": [496, 512, [], "f7a2", ["M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"]], "graduation-cap": [640, 512, [], "f19d", ["M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"]], "history": [512, 512, [], "f1da", ["M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"]], "key": [512, 512, [], "f084", ["M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]], "key-skeleton": [512, 512, [], "f6f3", ["M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"]], "laptop": [640, 512, [], "f109", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]], "laptop-code": [640, 512, [], "f5fc", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"]], "laptop-house": [640, 512, [], "e066", ["M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]], "life-ring": [512, 512, [], "f1cd", ["M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"]], "lightbulb": [352, 512, [], "f0eb", ["M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"]], "list-alt": [512, 512, [], "f022", ["M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"]], "list-ul": [512, 512, [], "f0ca", ["M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"]], "lock-alt": [448, 512, [], "f30d", ["M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"]], "map-marker-alt": [384, 512, [], "f3c5", ["M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]], "moon-stars": [512, 512, [], "f755", ["M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"]], "network-wired": [640, 512, [], "f6ff", ["M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"]], "planet-ringed": [512, 512, [], "e020", ["M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"]], "question-circle": [512, 512, [], "f059", ["M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"]], "quote-left": [512, 512, [], "f10d", ["M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"]], "random": [512, 512, [], "f074", ["M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"]], "rocket": [512, 512, [], "f135", ["M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"]], "search": [512, 512, [], "f002", ["M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"]], "server": [512, 512, [], "f233", ["M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"]], "sign-out": [512, 512, [], "f08b", ["M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"]], "siren-on": [640, 512, [], "e02e", ["M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"]], "smile": [496, 512, [], "f118", ["M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"]], "snowman": [512, 512, [], "f7d0", ["M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"]], "sun": [512, 512, [], "f185", ["M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"]], "tasks": [512, 512, [], "f0ae", ["M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"]], "university": [512, 512, [], "f19c", ["M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"]], "user": [448, 512, [], "f007", ["M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"]], "user-hard-hat": [448, 512, [], "f82c", ["M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"]], "user-shield": [640, 512, [], "f505", ["M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"]], "users": [640, 512, [], "f0c0", ["M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"]] }; bunker(function () { defineIcons('fad', icons); }); }()); (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "check-circle": [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"], "desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"], "eye": [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"], "file-code": [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"], "info": [256, 512, [], "f129", "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"], "info-circle": [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"], "plus": [384, 512, [], "f067", "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"], "question-circle": [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"], "rocket": [512, 512, [], "f135", "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"], "save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"], "slash": [640, 512, [], "f715", "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"], "times": [320, 512, [], "f00d", "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"], "undo": [512, 512, [], "f0e2", "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"], "undo-alt": [512, 512, [], "f2ea", "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"], "user": [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"], "user-friends": [640, 512, [], "f500", "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"], "users": [640, 512, [], "f0c0", "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"] }; bunker(function () { defineIcons('far', icons); }); }()); (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "alarm-exclamation": [512, 512, [], "f843", "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"], "align-left": [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"], "book-dead": [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"], "check": [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"], "circle": [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"], "cloud": [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"], "credit-card": [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"], "desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"], "envelope": [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"], "eye": [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"], "fingerprint": [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"], "history": [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"], "home": [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"], "plus": [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"], "robot": [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"], "rocket": [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"], "save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"], "slash": [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"], "spinner-third": [512, 512, [], "f3f4", "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"], "square-full": [512, 512, [], "f45c", "M512 512H0V0h512v512z"], "times": [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"], "times-circle": [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"], "undo": [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"], "undo-alt": [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"], "user": [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"], "users": [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"] }; bunker(function () { defineIcons('fas', icons); }); }()); (function () { 'use strict'; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var noop = function noop() {}; var _WINDOW = {}; var _DOCUMENT = {}; var _MUTATION_OBSERVER = null; var _PERFORMANCE = { mark: noop, measure: noop }; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver; if (typeof performance !== 'undefined') _PERFORMANCE = performance; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var MUTATION_OBSERVER = _MUTATION_OBSERVER; var PERFORMANCE = _PERFORMANCE; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var UNITS_IN_GRID = 16; var DEFAULT_FAMILY_PREFIX = 'fa'; var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa'; var DATA_FA_I2SVG = 'data-fa-i2svg'; var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element'; var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending'; var DATA_PREFIX = 'data-prefix'; var DATA_ICON = 'data-icon'; var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg'; var MUTATION_APPROACH_ASYNC = 'async'; var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT']; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); var PREFIX_TO_STYLE = { 'fas': 'solid', 'far': 'regular', 'fal': 'light', 'fad': 'duotone', 'fab': 'brands', 'fak': 'kit', 'fa': 'solid' }; var STYLE_TO_PREFIX = { 'solid': 'fas', 'regular': 'far', 'light': 'fal', 'duotone': 'fad', 'brands': 'fab', 'kit': 'fak' }; var LAYERS_TEXT_CLASSNAME = 'fa-layers-text'; var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements? var FONT_WEIGHT_TO_PREFIX = { '900': 'fas', '400': 'far', 'normal': 'far', '300': 'fal' }; var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask']; var DUOTONE_CLASSES = { GROUP: 'group', SWAP_OPACITY: 'swap-opacity', PRIMARY: 'primary', SECONDARY: 'secondary' }; var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) { return "".concat(n, "x"); })).concat(oneToTwenty.map(function (n) { return "w-".concat(n); })); var initial = WINDOW.FontAwesomeConfig || {}; function getAttrConfig(attr) { var element = DOCUMENT.querySelector('script[' + attr + ']'); if (element) { return element.getAttribute(attr); } } function coerce(val) { // Getting an empty string will occur if the attribute is set on the HTML tag but without a value // We'll assume that this is an indication that it should be toggled to true // For example if (val === '') return true; if (val === 'false') return false; if (val === 'true') return true; return val; } if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') { var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']]; attrs.forEach(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), attr = _ref2[0], key = _ref2[1]; var val = coerce(getAttrConfig(attr)); if (val !== undefined && val !== null) { initial[key] = val; } }); } var _default = { familyPrefix: DEFAULT_FAMILY_PREFIX, replacementClass: DEFAULT_REPLACEMENT_CLASS, autoReplaceSvg: true, autoAddCss: true, autoA11y: true, searchPseudoElements: false, observeMutations: true, mutateApproach: 'async', keepOriginalSource: true, measurePerformance: false, showMissingIcons: true }; var _config = _objectSpread2(_objectSpread2({}, _default), initial); if (!_config.autoReplaceSvg) _config.observeMutations = false; var config = _objectSpread2({}, _config); WINDOW.FontAwesomeConfig = config; var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; var functions = []; var listener = function listener() { DOCUMENT.removeEventListener('DOMContentLoaded', listener); loaded = 1; functions.map(function (fn) { return fn(); }); }; var loaded = false; if (IS_DOM) { loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState); if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener); } function domready (fn) { if (!IS_DOM) return; loaded ? setTimeout(fn, 0) : functions.push(fn); } var PENDING = 'pending'; var SETTLED = 'settled'; var FULFILLED = 'fulfilled'; var REJECTED = 'rejected'; var NOOP = function NOOP() {}; var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function'; var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate; var asyncQueue = []; var asyncTimer; function asyncFlush() { // run promise callbacks for (var i = 0; i < asyncQueue.length; i++) { asyncQueue[i][0](asyncQueue[i][1]); } // reset async asyncQueue asyncQueue = []; asyncTimer = false; } function asyncCall(callback, arg) { asyncQueue.push([callback, arg]); if (!asyncTimer) { asyncTimer = true; asyncSetTimer(asyncFlush, 0); } } function invokeResolver(resolver, promise) { function resolvePromise(value) { resolve(promise, value); } function rejectPromise(reason) { reject(promise, reason); } try { resolver(resolvePromise, rejectPromise); } catch (e) { rejectPromise(e); } } function invokeCallback(subscriber) { var owner = subscriber.owner; var settled = owner._state; var value = owner._data; var callback = subscriber[settled]; var promise = subscriber.then; if (typeof callback === 'function') { settled = FULFILLED; try { value = callback(value); } catch (e) { reject(promise, e); } } if (!handleThenable(promise, value)) { if (settled === FULFILLED) { resolve(promise, value); } if (settled === REJECTED) { reject(promise, value); } } } function handleThenable(promise, value) { var resolved; try { if (promise === value) { throw new TypeError('A promises callback cannot return that same promise.'); } if (value && (typeof value === 'function' || _typeof(value) === 'object')) { // then should be retrieved only once var then = value.then; if (typeof then === 'function') { then.call(value, function (val) { if (!resolved) { resolved = true; if (value === val) { fulfill(promise, val); } else { resolve(promise, val); } } }, function (reason) { if (!resolved) { resolved = true; reject(promise, reason); } }); return true; } } } catch (e) { if (!resolved) { reject(promise, e); } return true; } return false; } function resolve(promise, value) { if (promise === value || !handleThenable(promise, value)) { fulfill(promise, value); } } function fulfill(promise, value) { if (promise._state === PENDING) { promise._state = SETTLED; promise._data = value; asyncCall(publishFulfillment, promise); } } function reject(promise, reason) { if (promise._state === PENDING) { promise._state = SETTLED; promise._data = reason; asyncCall(publishRejection, promise); } } function publish(promise) { promise._then = promise._then.forEach(invokeCallback); } function publishFulfillment(promise) { promise._state = FULFILLED; publish(promise); } function publishRejection(promise) { promise._state = REJECTED; publish(promise); if (!promise._handled && isNode) { global.process.emit('unhandledRejection', promise._data, promise); } } function notifyRejectionHandled(promise) { global.process.emit('rejectionHandled', promise); } /** * @class */ function P(resolver) { if (typeof resolver !== 'function') { throw new TypeError('Promise resolver ' + resolver + ' is not a function'); } if (this instanceof P === false) { throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.'); } this._then = []; invokeResolver(resolver, this); } P.prototype = { constructor: P, _state: PENDING, _then: null, _data: undefined, _handled: false, then: function then(onFulfillment, onRejection) { var subscriber = { owner: this, then: new this.constructor(NOOP), fulfilled: onFulfillment, rejected: onRejection }; if ((onRejection || onFulfillment) && !this._handled) { this._handled = true; if (this._state === REJECTED && isNode) { asyncCall(notifyRejectionHandled, this); } } if (this._state === FULFILLED || this._state === REJECTED) { // already resolved, call callback async asyncCall(invokeCallback, subscriber); } else { // subscribe this._then.push(subscriber); } return subscriber.then; }, catch: function _catch(onRejection) { return this.then(null, onRejection); } }; P.all = function (promises) { if (!Array.isArray(promises)) { throw new TypeError('You must pass an array to Promise.all().'); } return new P(function (resolve, reject) { var results = []; var remaining = 0; function resolver(index) { remaining++; return function (value) { results[index] = value; if (! --remaining) { resolve(results); } }; } for (var i = 0, promise; i < promises.length; i++) { promise = promises[i]; if (promise && typeof promise.then === 'function') { promise.then(resolver(i), reject); } else { results[i] = promise; } } if (!remaining) { resolve(results); } }); }; P.race = function (promises) { if (!Array.isArray(promises)) { throw new TypeError('You must pass an array to Promise.race().'); } return new P(function (resolve, reject) { for (var i = 0, promise; i < promises.length; i++) { promise = promises[i]; if (promise && typeof promise.then === 'function') { promise.then(resolve, reject); } else { resolve(promise); } } }); }; P.resolve = function (value) { if (value && _typeof(value) === 'object' && value.constructor === P) { return value; } return new P(function (resolve) { resolve(value); }); }; P.reject = function (reason) { return new P(function (resolve, reject) { reject(reason); }); }; var picked = typeof Promise === 'function' ? Promise : P; var d = UNITS_IN_GRID; var meaninglessTransform = { size: 16, x: 0, y: 0, rotate: 0, flipX: false, flipY: false }; function isReserved(name) { return ~RESERVED_CLASSES.indexOf(name); } function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function insertCss(css) { if (!css || !IS_DOM) { return; } var style = DOCUMENT.createElement('style'); style.setAttribute('type', 'text/css'); style.innerHTML = css; var headChildren = DOCUMENT.head.childNodes; var beforeChild = null; for (var i = headChildren.length - 1; i > -1; i--) { var child = headChildren[i]; var tagName = (child.tagName || '').toUpperCase(); if (['STYLE', 'LINK'].indexOf(tagName) > -1) { beforeChild = child; } } DOCUMENT.head.insertBefore(style, beforeChild); return css; } var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; function nextUniqueId() { var size = 12; var id = ''; while (size-- > 0) { id += idPool[Math.random() * 62 | 0]; } return id; } function toArray(obj) { var array = []; for (var i = (obj || []).length >>> 0; i--;) { array[i] = obj[i]; } return array; } function classArray(node) { if (node.classList) { return toArray(node.classList); } else { return (node.getAttribute('class') || '').split(' ').filter(function (i) { return i; }); } } function getIconName(familyPrefix, cls) { var parts = cls.split('-'); var prefix = parts[0]; var iconName = parts.slice(1).join('-'); if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) { return iconName; } else { return null; } } function htmlEscape(str) { return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>'); } function joinAttributes(attributes) { return Object.keys(attributes || {}).reduce(function (acc, attributeName) { return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" "); }, '').trim(); } function joinStyles(styles) { return Object.keys(styles || {}).reduce(function (acc, styleName) { return acc + "".concat(styleName, ": ").concat(styles[styleName], ";"); }, ''); } function transformIsMeaningful(transform) { return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY; } function transformForSvg(_ref) { var transform = _ref.transform, containerWidth = _ref.containerWidth, iconWidth = _ref.iconWidth; var outer = { transform: "translate(".concat(containerWidth / 2, " 256)") }; var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") "); var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") "); var innerRotate = "rotate(".concat(transform.rotate, " 0 0)"); var inner = { transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate) }; var path = { transform: "translate(".concat(iconWidth / 2 * -1, " -256)") }; return { outer: outer, inner: inner, path: path }; } function transformForCss(_ref2) { var transform = _ref2.transform, _ref2$width = _ref2.width, width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width, _ref2$height = _ref2.height, height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height, _ref2$startCentered = _ref2.startCentered, startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered; var val = ''; if (startCentered && IS_IE) { val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) "); } else if (startCentered) { val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) "); } else { val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) "); } val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") "); val += "rotate(".concat(transform.rotate, "deg) "); return val; } var ALL_SPACE = { x: 0, y: 0, width: '100%', height: '100%' }; function fillBlack(abstract) { var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; if (abstract.attributes && (abstract.attributes.fill || force)) { abstract.attributes.fill = 'black'; } return abstract; } function deGroup(abstract) { if (abstract.tag === 'g') { return abstract.children; } else { return [abstract]; } } function makeIconMasking (_ref) { var children = _ref.children, attributes = _ref.attributes, main = _ref.main, mask = _ref.mask, explicitMaskId = _ref.maskId, transform = _ref.transform; var mainWidth = main.width, mainPath = main.icon; var maskWidth = mask.width, maskPath = mask.icon; var trans = transformForSvg({ transform: transform, containerWidth: maskWidth, iconWidth: mainWidth }); var maskRect = { tag: 'rect', attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { fill: 'white' }) }; var maskInnerGroupChildrenMixin = mainPath.children ? { children: mainPath.children.map(fillBlack) } : {}; var maskInnerGroup = { tag: 'g', attributes: _objectSpread2({}, trans.inner), children: [fillBlack(_objectSpread2({ tag: mainPath.tag, attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path) }, maskInnerGroupChildrenMixin))] }; var maskOuterGroup = { tag: 'g', attributes: _objectSpread2({}, trans.outer), children: [maskInnerGroup] }; var maskId = "mask-".concat(explicitMaskId || nextUniqueId()); var clipId = "clip-".concat(explicitMaskId || nextUniqueId()); var maskTag = { tag: 'mask', attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { id: maskId, maskUnits: 'userSpaceOnUse', maskContentUnits: 'userSpaceOnUse' }), children: [maskRect, maskOuterGroup] }; var defs = { tag: 'defs', children: [{ tag: 'clipPath', attributes: { id: clipId }, children: deGroup(maskPath) }, maskTag] }; children.push(defs, { tag: 'rect', attributes: _objectSpread2({ fill: 'currentColor', 'clip-path': "url(#".concat(clipId, ")"), mask: "url(#".concat(maskId, ")") }, ALL_SPACE) }); return { children: children, attributes: attributes }; } function makeIconStandard (_ref) { var children = _ref.children, attributes = _ref.attributes, main = _ref.main, transform = _ref.transform, styles = _ref.styles; var styleString = joinStyles(styles); if (styleString.length > 0) { attributes['style'] = styleString; } if (transformIsMeaningful(transform)) { var trans = transformForSvg({ transform: transform, containerWidth: main.width, iconWidth: main.width }); children.push({ tag: 'g', attributes: _objectSpread2({}, trans.outer), children: [{ tag: 'g', attributes: _objectSpread2({}, trans.inner), children: [{ tag: main.icon.tag, children: main.icon.children, attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), trans.path) }] }] }); } else { children.push(main.icon); } return { children: children, attributes: attributes }; } function asIcon (_ref) { var children = _ref.children, main = _ref.main, mask = _ref.mask, attributes = _ref.attributes, styles = _ref.styles, transform = _ref.transform; if (transformIsMeaningful(transform) && main.found && !mask.found) { var width = main.width, height = main.height; var offset = { x: width / height / 2, y: 0.5 }; attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, { 'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em") })); } return [{ tag: 'svg', attributes: attributes, children: children }]; } function asSymbol (_ref) { var prefix = _ref.prefix, iconName = _ref.iconName, children = _ref.children, attributes = _ref.attributes, symbol = _ref.symbol; var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol; return [{ tag: 'svg', attributes: { style: 'display: none;' }, children: [{ tag: 'symbol', attributes: _objectSpread2(_objectSpread2({}, attributes), {}, { id: id }), children: children }] }]; } function makeInlineSvgAbstract(params) { var _params$icons = params.icons, main = _params$icons.main, mask = _params$icons.mask, prefix = params.prefix, iconName = params.iconName, transform = params.transform, symbol = params.symbol, title = params.title, maskId = params.maskId, titleId = params.titleId, extra = params.extra, _params$watchable = params.watchable, watchable = _params$watchable === void 0 ? false : _params$watchable; var _ref = mask.found ? mask : main, width = _ref.width, height = _ref.height; var isUploadedIcon = prefix === 'fak'; var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16)); var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) { return extra.classes.indexOf(c) === -1; }).filter(function (c) { return c !== '' || !!c; }).concat(extra.classes).join(' '); var content = { children: [], attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, { 'data-prefix': prefix, 'data-icon': iconName, 'class': attrClass, 'role': extra.attributes.role || 'img', 'xmlns': 'http://www.w3.org/2000/svg', 'viewBox': "0 0 ".concat(width, " ").concat(height) }) }; var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? { width: "".concat(width / height * 16 * 0.0625, "em") } : {}; if (watchable) { content.attributes[DATA_FA_I2SVG] = ''; } if (title) content.children.push({ tag: 'title', attributes: { id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId()) }, children: [title] }); var args = _objectSpread2(_objectSpread2({}, content), {}, { prefix: prefix, iconName: iconName, main: main, mask: mask, maskId: maskId, transform: transform, symbol: symbol, styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles) }); var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args), children = _ref2.children, attributes = _ref2.attributes; args.children = children; args.attributes = attributes; if (symbol) { return asSymbol(args); } else { return asIcon(args); } } function makeLayersTextAbstract(params) { var content = params.content, width = params.width, height = params.height, transform = params.transform, title = params.title, extra = params.extra, _params$watchable2 = params.watchable, watchable = _params$watchable2 === void 0 ? false : _params$watchable2; var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { 'title': title } : {}), {}, { 'class': extra.classes.join(' ') }); if (watchable) { attributes[DATA_FA_I2SVG] = ''; } var styles = _objectSpread2({}, extra.styles); if (transformIsMeaningful(transform)) { styles['transform'] = transformForCss({ transform: transform, startCentered: true, width: width, height: height }); styles['-webkit-transform'] = styles['transform']; } var styleString = joinStyles(styles); if (styleString.length > 0) { attributes['style'] = styleString; } var val = []; val.push({ tag: 'span', attributes: attributes, children: [content] }); if (title) { val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] }); } return val; } function makeLayersCounterAbstract(params) { var content = params.content, title = params.title, extra = params.extra; var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { 'title': title } : {}), {}, { 'class': extra.classes.join(' ') }); var styleString = joinStyles(extra.styles); if (styleString.length > 0) { attributes['style'] = styleString; } var val = []; val.push({ tag: 'span', attributes: attributes, children: [content] }); if (title) { val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] }); } return val; } var noop$1 = function noop() {}; var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { mark: noop$1, measure: noop$1 }; var preamble = "FA \"5.15.4\""; var begin = function begin(name) { p.mark("".concat(preamble, " ").concat(name, " begins")); return function () { return end(name); }; }; var end = function end(name) { p.mark("".concat(preamble, " ").concat(name, " ends")); p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends")); }; var perf = { begin: begin, end: end }; /** * Internal helper to bind a function known to have 4 arguments * to a given context. */ var bindInternal4 = function bindInternal4(func, thisContext) { return function (a, b, c, d) { return func.call(thisContext, a, b, c, d); }; }; /** * # Reduce * * A fast object `.reduce()` implementation. * * @param {Object} subject The object to reduce over. * @param {Function} fn The reducer function. * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0]. * @param {Object} thisContext The context for the reducer. * @return {mixed} The final result. */ var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) { var keys = Object.keys(subject), length = keys.length, iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn, i, key, result; if (initialValue === undefined) { i = 1; result = subject[keys[0]]; } else { i = 0; result = initialValue; } for (; i < length; i++) { key = keys[i]; result = iterator(result, subject[key], key, subject); } return result; }; function toHex(unicode) { var result = ''; for (var i = 0; i < unicode.length; i++) { var hex = unicode.charCodeAt(i).toString(16); result += ('000' + hex).slice(-4); } return result; } function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var styles = namespace.styles, shims = namespace.shims; var _byUnicode = {}; var _byLigature = {}; var _byOldName = {}; var build = function build() { var lookup = function lookup(reducer) { return reduce(styles, function (o, style, prefix) { o[prefix] = reduce(style, reducer, {}); return o; }, {}); }; _byUnicode = lookup(function (acc, icon, iconName) { if (icon[3]) { acc[icon[3]] = iconName; } return acc; }); _byLigature = lookup(function (acc, icon, iconName) { var ligatures = icon[2]; acc[iconName] = iconName; ligatures.forEach(function (ligature) { acc[ligature] = iconName; }); return acc; }); var hasRegular = ('far' in styles); _byOldName = reduce(shims, function (acc, shim) { var oldName = shim[0]; var prefix = shim[1]; var iconName = shim[2]; if (prefix === 'far' && !hasRegular) { prefix = 'fas'; } acc[oldName] = { prefix: prefix, iconName: iconName }; return acc; }, {}); }; build(); function byUnicode(prefix, unicode) { return (_byUnicode[prefix] || {})[unicode]; } function byLigature(prefix, ligature) { return (_byLigature[prefix] || {})[ligature]; } function byOldName(name) { return _byOldName[name] || { prefix: null, iconName: null }; } var styles$1 = namespace.styles; var emptyCanonicalIcon = function emptyCanonicalIcon() { return { prefix: null, iconName: null, rest: [] }; }; function getCanonicalIcon(values) { return values.reduce(function (acc, cls) { var iconName = getIconName(config.familyPrefix, cls); if (styles$1[cls]) { acc.prefix = cls; } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) { acc.prefix = cls; } else if (iconName) { var shim = acc.prefix === 'fa' ? byOldName(iconName) : {}; acc.iconName = shim.iconName || iconName; acc.prefix = shim.prefix || acc.prefix; } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) { acc.rest.push(cls); } return acc; }, emptyCanonicalIcon()); } function iconFromMapping(mapping, prefix, iconName) { if (mapping && mapping[prefix] && mapping[prefix][iconName]) { return { prefix: prefix, iconName: iconName, icon: mapping[prefix][iconName] }; } } function toHtml(abstractNodes) { var tag = abstractNodes.tag, _abstractNodes$attrib = abstractNodes.attributes, attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib, _abstractNodes$childr = abstractNodes.children, children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr; if (typeof abstractNodes === 'string') { return htmlEscape(abstractNodes); } else { return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), ""); } } var noop$2 = function noop() {}; function isWatched(node) { var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null; return typeof i2svg === 'string'; } function getMutator() { if (config.autoReplaceSvg === true) { return mutators.replace; } var mutator = mutators[config.autoReplaceSvg]; return mutator || mutators.replace; } var mutators = { replace: function replace(mutation) { var node = mutation[0]; var abstract = mutation[1]; var newOuterHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); if (node.parentNode && node.outerHTML) { node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "") : ''); } else if (node.parentNode) { var newNode = document.createElement('span'); node.parentNode.replaceChild(newNode, node); newNode.outerHTML = newOuterHTML; } }, nest: function nest(mutation) { var node = mutation[0]; var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it. // Short-circuit to the standard replacement if (~classArray(node).indexOf(config.replacementClass)) { return mutators.replace(mutation); } var forSvg = new RegExp("".concat(config.familyPrefix, "-.*")); delete abstract[0].attributes.style; delete abstract[0].attributes.id; var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) { if (cls === config.replacementClass || cls.match(forSvg)) { acc.toSvg.push(cls); } else { acc.toNode.push(cls); } return acc; }, { toNode: [], toSvg: [] }); abstract[0].attributes.class = splitClasses.toSvg.join(' '); var newInnerHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); node.setAttribute('class', splitClasses.toNode.join(' ')); node.setAttribute(DATA_FA_I2SVG, ''); node.innerHTML = newInnerHTML; } }; function performOperationSync(op) { op(); } function perform(mutations, callback) { var callbackFunction = typeof callback === 'function' ? callback : noop$2; if (mutations.length === 0) { callbackFunction(); } else { var frame = performOperationSync; if (config.mutateApproach === MUTATION_APPROACH_ASYNC) { frame = WINDOW.requestAnimationFrame || performOperationSync; } frame(function () { var mutator = getMutator(); var mark = perf.begin('mutate'); mutations.map(mutator); mark(); callbackFunction(); }); } } var disabled = false; function disableObservation() { disabled = true; } function enableObservation() { disabled = false; } var mo = null; function observe(options) { if (!MUTATION_OBSERVER) { return; } if (!config.observeMutations) { return; } var treeCallback = options.treeCallback, nodeCallback = options.nodeCallback, pseudoElementsCallback = options.pseudoElementsCallback, _options$observeMutat = options.observeMutationsRoot, observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat; mo = new MUTATION_OBSERVER(function (objects) { if (disabled) return; toArray(objects).forEach(function (mutationRecord) { if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) { if (config.searchPseudoElements) { pseudoElementsCallback(mutationRecord.target); } treeCallback(mutationRecord.target); } if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) { pseudoElementsCallback(mutationRecord.target.parentNode); } if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) { if (mutationRecord.attributeName === 'class') { var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)), prefix = _getCanonicalIcon.prefix, iconName = _getCanonicalIcon.iconName; if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix); if (iconName) mutationRecord.target.setAttribute('data-icon', iconName); } else { nodeCallback(mutationRecord.target); } } }); }); if (!IS_DOM) return; mo.observe(observeMutationsRoot, { childList: true, attributes: true, characterData: true, subtree: true }); } function disconnect() { if (!mo) return; mo.disconnect(); } function styleParser (node) { var style = node.getAttribute('style'); var val = []; if (style) { val = style.split(';').reduce(function (acc, style) { var styles = style.split(':'); var prop = styles[0]; var value = styles.slice(1); if (prop && value.length > 0) { acc[prop] = value.join(':').trim(); } return acc; }, {}); } return val; } function classParser (node) { var existingPrefix = node.getAttribute('data-prefix'); var existingIconName = node.getAttribute('data-icon'); var innerText = node.innerText !== undefined ? node.innerText.trim() : ''; var val = getCanonicalIcon(classArray(node)); if (existingPrefix && existingIconName) { val.prefix = existingPrefix; val.iconName = existingIconName; } if (val.prefix && innerText.length > 1) { val.iconName = byLigature(val.prefix, node.innerText); } else if (val.prefix && innerText.length === 1) { val.iconName = byUnicode(val.prefix, toHex(node.innerText)); } return val; } var parseTransformString = function parseTransformString(transformString) { var transform = { size: 16, x: 0, y: 0, flipX: false, flipY: false, rotate: 0 }; if (!transformString) { return transform; } else { return transformString.toLowerCase().split(' ').reduce(function (acc, n) { var parts = n.toLowerCase().split('-'); var first = parts[0]; var rest = parts.slice(1).join('-'); if (first && rest === 'h') { acc.flipX = true; return acc; } if (first && rest === 'v') { acc.flipY = true; return acc; } rest = parseFloat(rest); if (isNaN(rest)) { return acc; } switch (first) { case 'grow': acc.size = acc.size + rest; break; case 'shrink': acc.size = acc.size - rest; break; case 'left': acc.x = acc.x - rest; break; case 'right': acc.x = acc.x + rest; break; case 'up': acc.y = acc.y - rest; break; case 'down': acc.y = acc.y + rest; break; case 'rotate': acc.rotate = acc.rotate + rest; break; } return acc; }, transform); } }; function transformParser (node) { return parseTransformString(node.getAttribute('data-fa-transform')); } function symbolParser (node) { var symbol = node.getAttribute('data-fa-symbol'); return symbol === null ? false : symbol === '' ? true : symbol; } function attributesParser (node) { var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) { if (acc.name !== 'class' && acc.name !== 'style') { acc[attr.name] = attr.value; } return acc; }, {}); var title = node.getAttribute('title'); var titleId = node.getAttribute('data-fa-title-id'); if (config.autoA11y) { if (title) { extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); } else { extraAttributes['aria-hidden'] = 'true'; extraAttributes['focusable'] = 'false'; } } return extraAttributes; } function maskParser (node) { var mask = node.getAttribute('data-fa-mask'); if (!mask) { return emptyCanonicalIcon(); } else { return getCanonicalIcon(mask.split(' ').map(function (i) { return i.trim(); })); } } function blankMeta() { return { iconName: null, title: null, titleId: null, prefix: null, transform: meaninglessTransform, symbol: false, mask: null, maskId: null, extra: { classes: [], styles: {}, attributes: {} } }; } function parseMeta(node) { var _classParser = classParser(node), iconName = _classParser.iconName, prefix = _classParser.prefix, extraClasses = _classParser.rest; var extraStyles = styleParser(node); var transform = transformParser(node); var symbol = symbolParser(node); var extraAttributes = attributesParser(node); var mask = maskParser(node); return { iconName: iconName, title: node.getAttribute('title'), titleId: node.getAttribute('data-fa-title-id'), prefix: prefix, transform: transform, symbol: symbol, mask: mask, maskId: node.getAttribute('data-fa-mask-id'), extra: { classes: extraClasses, styles: extraStyles, attributes: extraAttributes } }; } function MissingIcon(error) { this.name = 'MissingIcon'; this.message = error || 'Icon unavailable'; this.stack = new Error().stack; } MissingIcon.prototype = Object.create(Error.prototype); MissingIcon.prototype.constructor = MissingIcon; var FILL = { fill: 'currentColor' }; var ANIMATION_BASE = { attributeType: 'XML', repeatCount: 'indefinite', dur: '2s' }; var RING = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z' }) }; var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { attributeName: 'opacity' }); var DOT = { tag: 'circle', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { cx: '256', cy: '364', r: '28' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { attributeName: 'r', values: '28;14;28;28;14;28;' }) }, { tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '1;0;1;1;0;1;' }) }] }; var QUESTION = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { opacity: '1', d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '1;0;0;0;0;1;' }) }] }; var EXCLAMATION = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { opacity: '0', d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '0;0;1;1;0;0;' }) }] }; var missing = { tag: 'g', children: [RING, DOT, QUESTION, EXCLAMATION] }; var styles$2 = namespace.styles; function asFoundIcon(icon) { var width = icon[0]; var height = icon[1]; var _icon$slice = icon.slice(4), _icon$slice2 = _slicedToArray(_icon$slice, 1), vectorData = _icon$slice2[0]; var element = null; if (Array.isArray(vectorData)) { element = { tag: 'g', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP) }, children: [{ tag: 'path', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY), fill: 'currentColor', d: vectorData[0] } }, { tag: 'path', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY), fill: 'currentColor', d: vectorData[1] } }] }; } else { element = { tag: 'path', attributes: { fill: 'currentColor', d: vectorData } }; } return { found: true, width: width, height: height, icon: element }; } function findIcon(iconName, prefix) { return new picked(function (resolve, reject) { var val = { found: false, width: 512, height: 512, icon: missing }; if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) { var icon = styles$2[prefix][iconName]; return resolve(asFoundIcon(icon)); } if (iconName && prefix && !config.showMissingIcons) { reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName))); } else { resolve(val); } }); } var styles$3 = namespace.styles; function generateSvgReplacementMutation(node, nodeMeta) { var iconName = nodeMeta.iconName, title = nodeMeta.title, titleId = nodeMeta.titleId, prefix = nodeMeta.prefix, transform = nodeMeta.transform, symbol = nodeMeta.symbol, mask = nodeMeta.mask, maskId = nodeMeta.maskId, extra = nodeMeta.extra; return new picked(function (resolve, reject) { picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), main = _ref2[0], mask = _ref2[1]; resolve([node, makeInlineSvgAbstract({ icons: { main: main, mask: mask }, prefix: prefix, iconName: iconName, transform: transform, symbol: symbol, mask: mask, maskId: maskId, title: title, titleId: titleId, extra: extra, watchable: true })]); }); }); } function generateLayersText(node, nodeMeta) { var title = nodeMeta.title, transform = nodeMeta.transform, extra = nodeMeta.extra; var width = null; var height = null; if (IS_IE) { var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10); var boundingClientRect = node.getBoundingClientRect(); width = boundingClientRect.width / computedFontSize; height = boundingClientRect.height / computedFontSize; } if (config.autoA11y && !title) { extra.attributes['aria-hidden'] = 'true'; } return picked.resolve([node, makeLayersTextAbstract({ content: node.innerHTML, width: width, height: height, transform: transform, title: title, extra: extra, watchable: true })]); } function generateMutation(node) { var nodeMeta = parseMeta(node); if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) { return generateLayersText(node, nodeMeta); } else { return generateSvgReplacementMutation(node, nodeMeta); } } function onTree(root) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (!IS_DOM) return; var htmlClassList = DOCUMENT.documentElement.classList; var hclAdd = function hclAdd(suffix) { return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); }; var hclRemove = function hclRemove(suffix) { return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); }; var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3); var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) { return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])"); })).join(', '); if (prefixesDomQuery.length === 0) { return; } var candidates = []; try { candidates = toArray(root.querySelectorAll(prefixesDomQuery)); } catch (e) {// noop } if (candidates.length > 0) { hclAdd('pending'); hclRemove('complete'); } else { return; } var mark = perf.begin('onTree'); var mutations = candidates.reduce(function (acc, node) { try { var mutation = generateMutation(node); if (mutation) { acc.push(mutation); } } catch (e) { if (!PRODUCTION) { if (e instanceof MissingIcon) { console.error(e); } } } return acc; }, []); return new picked(function (resolve, reject) { picked.all(mutations).then(function (resolvedMutations) { perform(resolvedMutations, function () { hclAdd('active'); hclAdd('complete'); hclRemove('pending'); if (typeof callback === 'function') callback(); mark(); resolve(); }); }).catch(function () { mark(); reject(); }); }); } function onNode(node) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; generateMutation(node).then(function (mutation) { if (mutation) { perform([mutation], callback); } }); } function replaceForPosition(node, position) { var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-')); return new picked(function (resolve, reject) { if (node.getAttribute(pendingAttribute) !== null) { // This node is already being processed return resolve(); } var children = toArray(node.children); var alreadyProcessedPseudoElement = children.filter(function (c) { return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position; })[0]; var styles = WINDOW.getComputedStyle(node, position); var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN); var fontWeight = styles.getPropertyValue('font-weight'); var content = styles.getPropertyValue('content'); if (alreadyProcessedPseudoElement && !fontFamily) { // If we've already processed it but the current computed style does not result in a font-family, // that probably means that a class name that was previously present to make the icon has been // removed. So we now should delete the icon. node.removeChild(alreadyProcessedPseudoElement); return resolve(); } else if (fontFamily && content !== 'none' && content !== '') { var _content = styles.getPropertyValue('content'); var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight]; var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content); var iconName = byUnicode(prefix, hexValue); var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't // already done so with the same prefix and iconName if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) { node.setAttribute(pendingAttribute, iconIdentifier); if (alreadyProcessedPseudoElement) { // Delete the old one, since we're replacing it with a new one node.removeChild(alreadyProcessedPseudoElement); } var meta = blankMeta(); var extra = meta.extra; extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position; findIcon(iconName, prefix).then(function (main) { var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, { icons: { main: main, mask: emptyCanonicalIcon() }, prefix: prefix, iconName: iconIdentifier, extra: extra, watchable: true })); var element = DOCUMENT.createElement('svg'); if (position === ':before') { node.insertBefore(element, node.firstChild); } else { node.appendChild(element); } element.outerHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); node.removeAttribute(pendingAttribute); resolve(); }).catch(reject); } else { resolve(); } } else { resolve(); } }); } function replace(node) { return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]); } function processable(node) { return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg'); } function searchPseudoElements (root) { if (!IS_DOM) return; return new picked(function (resolve, reject) { var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace); var end = perf.begin('searchPseudoElements'); disableObservation(); picked.all(operations).then(function () { end(); enableObservation(); resolve(); }).catch(function () { end(); enableObservation(); reject(); }); }); } var baseStyles = "svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff}"; function css () { var dfp = DEFAULT_FAMILY_PREFIX; var drc = DEFAULT_REPLACEMENT_CLASS; var fp = config.familyPrefix; var rc = config.replacementClass; var s = baseStyles; if (fp !== dfp || rc !== drc) { var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g'); var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g'); var rPatt = new RegExp("\\.".concat(drc), 'g'); s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc)); } return s; } var Library = /*#__PURE__*/function () { function Library() { _classCallCheck(this, Library); this.definitions = {}; } _createClass(Library, [{ key: "add", value: function add() { var _this = this; for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) { definitions[_key] = arguments[_key]; } var additions = definitions.reduce(this._pullDefinitions, {}); Object.keys(additions).forEach(function (key) { _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]); defineIcons(key, additions[key]); build(); }); } }, { key: "reset", value: function reset() { this.definitions = {}; } }, { key: "_pullDefinitions", value: function _pullDefinitions(additions, definition) { var normalized = definition.prefix && definition.iconName && definition.icon ? { 0: definition } : definition; Object.keys(normalized).map(function (key) { var _normalized$key = normalized[key], prefix = _normalized$key.prefix, iconName = _normalized$key.iconName, icon = _normalized$key.icon; if (!additions[prefix]) additions[prefix] = {}; additions[prefix][iconName] = icon; }); return additions; } }]); return Library; }(); function ensureCss() { if (config.autoAddCss && !_cssInserted) { insertCss(css()); _cssInserted = true; } } function apiObject(val, abstractCreator) { Object.defineProperty(val, 'abstract', { get: abstractCreator }); Object.defineProperty(val, 'html', { get: function get() { return val.abstract.map(function (a) { return toHtml(a); }); } }); Object.defineProperty(val, 'node', { get: function get() { if (!IS_DOM) return; var container = DOCUMENT.createElement('div'); container.innerHTML = val.html; return container.children; } }); return val; } function findIconDefinition(iconLookup) { var _iconLookup$prefix = iconLookup.prefix, prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix, iconName = iconLookup.iconName; if (!iconName) return; return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName); } function resolveIcons(next) { return function (maybeIconDefinition) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {}); var mask = params.mask; if (mask) { mask = (mask || {}).icon ? mask : findIconDefinition(mask || {}); } return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, { mask: mask })); }; } var library = new Library(); var noAuto = function noAuto() { config.autoReplaceSvg = false; config.observeMutations = false; disconnect(); }; var _cssInserted = false; var dom = { i2svg: function i2svg() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (IS_DOM) { ensureCss(); var _params$node = params.node, node = _params$node === void 0 ? DOCUMENT : _params$node, _params$callback = params.callback, callback = _params$callback === void 0 ? function () {} : _params$callback; if (config.searchPseudoElements) { searchPseudoElements(node); } return onTree(node, callback); } else { return picked.reject('Operation requires a DOM of some kind.'); } }, css: css, insertCss: function insertCss$$1() { if (!_cssInserted) { insertCss(css()); _cssInserted = true; } }, watch: function watch() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var autoReplaceSvgRoot = params.autoReplaceSvgRoot, observeMutationsRoot = params.observeMutationsRoot; if (config.autoReplaceSvg === false) { config.autoReplaceSvg = true; } config.observeMutations = true; domready(function () { autoReplace({ autoReplaceSvgRoot: autoReplaceSvgRoot }); observe({ treeCallback: onTree, nodeCallback: onNode, pseudoElementsCallback: searchPseudoElements, observeMutationsRoot: observeMutationsRoot }); }); } }; var parse = { transform: function transform(transformString) { return parseTransformString(transformString); } }; var icon = resolveIcons(function (iconDefinition) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$transform = params.transform, transform = _params$transform === void 0 ? meaninglessTransform : _params$transform, _params$symbol = params.symbol, symbol = _params$symbol === void 0 ? false : _params$symbol, _params$mask = params.mask, mask = _params$mask === void 0 ? null : _params$mask, _params$maskId = params.maskId, maskId = _params$maskId === void 0 ? null : _params$maskId, _params$title = params.title, title = _params$title === void 0 ? null : _params$title, _params$titleId = params.titleId, titleId = _params$titleId === void 0 ? null : _params$titleId, _params$classes = params.classes, classes = _params$classes === void 0 ? [] : _params$classes, _params$attributes = params.attributes, attributes = _params$attributes === void 0 ? {} : _params$attributes, _params$styles = params.styles, styles = _params$styles === void 0 ? {} : _params$styles; if (!iconDefinition) return; var prefix = iconDefinition.prefix, iconName = iconDefinition.iconName, icon = iconDefinition.icon; return apiObject(_objectSpread2({ type: 'icon' }, iconDefinition), function () { ensureCss(); if (config.autoA11y) { if (title) { attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); } else { attributes['aria-hidden'] = 'true'; attributes['focusable'] = 'false'; } } return makeInlineSvgAbstract({ icons: { main: asFoundIcon(icon), mask: mask ? asFoundIcon(mask.icon) : { found: false, width: null, height: null, icon: {} } }, prefix: prefix, iconName: iconName, transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), symbol: symbol, title: title, maskId: maskId, titleId: titleId, extra: { attributes: attributes, styles: styles, classes: classes } }); }); }); var text = function text(content) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$transform2 = params.transform, transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2, _params$title2 = params.title, title = _params$title2 === void 0 ? null : _params$title2, _params$classes2 = params.classes, classes = _params$classes2 === void 0 ? [] : _params$classes2, _params$attributes2 = params.attributes, attributes = _params$attributes2 === void 0 ? {} : _params$attributes2, _params$styles2 = params.styles, styles = _params$styles2 === void 0 ? {} : _params$styles2; return apiObject({ type: 'text', content: content }, function () { ensureCss(); return makeLayersTextAbstract({ content: content, transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), title: title, extra: { attributes: attributes, styles: styles, classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes)) } }); }); }; var counter = function counter(content) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$title3 = params.title, title = _params$title3 === void 0 ? null : _params$title3, _params$classes3 = params.classes, classes = _params$classes3 === void 0 ? [] : _params$classes3, _params$attributes3 = params.attributes, attributes = _params$attributes3 === void 0 ? {} : _params$attributes3, _params$styles3 = params.styles, styles = _params$styles3 === void 0 ? {} : _params$styles3; return apiObject({ type: 'counter', content: content }, function () { ensureCss(); return makeLayersCounterAbstract({ content: content.toString(), title: title, extra: { attributes: attributes, styles: styles, classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes)) } }); }); }; var layer = function layer(assembler) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$classes4 = params.classes, classes = _params$classes4 === void 0 ? [] : _params$classes4; return apiObject({ type: 'layer' }, function () { ensureCss(); var children = []; assembler(function (args) { Array.isArray(args) ? args.map(function (a) { children = children.concat(a.abstract); }) : children = children.concat(args.abstract); }); return [{ tag: 'span', attributes: { class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ') }, children: children }]; }); }; var api = { noAuto: noAuto, config: config, dom: dom, library: library, parse: parse, findIconDefinition: findIconDefinition, icon: icon, text: text, counter: counter, layer: layer, toHtml: toHtml }; var autoReplace = function autoReplace() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _params$autoReplaceSv = params.autoReplaceSvgRoot, autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv; if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({ node: autoReplaceSvgRoot }); }; function bootstrap() { if (IS_BROWSER) { if (!WINDOW.FontAwesome) { WINDOW.FontAwesome = api; } domready(function () { autoReplace(); observe({ treeCallback: onTree, nodeCallback: onNode, pseudoElementsCallback: searchPseudoElements }); }); } namespace.hooks = _objectSpread2(_objectSpread2({}, namespace.hooks), {}, { addPack: function addPack(prefix, icons) { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), icons); build(); autoReplace(); }, addShims: function addShims(shims) { var _namespace$shims; (_namespace$shims = namespace.shims).push.apply(_namespace$shims, _toConsumableArray(shims)); build(); autoReplace(); } }); } bunker(bootstrap); }()); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/js/brands.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "aws": [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"], "cc-amazon-pay": [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"], "cc-amex": [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"], "cc-apple-pay": [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"], "cc-diners-club": [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"], "cc-discover": [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"], "cc-jcb": [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"], "cc-mastercard": [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"], "cc-paypal": [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"], "cc-stripe": [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"], "cc-visa": [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"], "discourse": [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"], "docker": [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"], "github": [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"], "instagram": [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"], "microsoft": [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"], "rev": [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"], "slack": [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"], "twitter": [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"] }; bunker(function () { defineIcons('fab', icons); }); }()); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/js/duotone.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "abacus": [576, 512, [], "f640", ["M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"]], "align-slash": [640, 512, [], "f846", ["M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"]], "atom-alt": [448, 512, [], "f5d3", ["M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"]], "badge-check": [512, 512, [], "f336", ["M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"]], "bell": [448, 512, [], "f0f3", ["M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z"]], "books": [576, 512, [], "f5db", ["M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"]], "brackets-curly": [576, 512, [], "f7ea", ["M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]], "chart-network": [640, 512, [], "f78a", ["M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]], "chart-scatter": [512, 512, [], "f7ee", ["M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]], "check": [512, 512, [], "f00c", ["M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"]], "circle": [512, 512, [], "f111", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"]], "clouds": [640, 512, [], "f744", ["M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"]], "cogs": [640, 512, [], "f085", ["M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"]], "comment-dots": [512, 512, [], "f4ad", ["M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]], "concierge-bell": [512, 512, [], "f562", ["M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"]], "dot-circle": [512, 512, [], "f192", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"]], "envelope": [512, 512, [], "f0e0", ["M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"]], "exchange-alt": [512, 512, [], "f362", ["M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"]], "file-alt": [384, 512, [], "f15c", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"]], "file-code": [384, 512, [], "f1c9", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"]], "globe": [496, 512, [], "f0ac", ["M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"]], "globe-africa": [496, 512, [], "f57c", ["M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"]], "globe-americas": [496, 512, [], "f57d", ["M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"]], "globe-asia": [496, 512, [], "f57e", ["M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"]], "globe-europe": [496, 512, [], "f7a2", ["M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"]], "graduation-cap": [640, 512, [], "f19d", ["M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"]], "history": [512, 512, [], "f1da", ["M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"]], "key": [512, 512, [], "f084", ["M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]], "key-skeleton": [512, 512, [], "f6f3", ["M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"]], "laptop": [640, 512, [], "f109", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]], "laptop-code": [640, 512, [], "f5fc", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"]], "laptop-house": [640, 512, [], "e066", ["M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]], "life-ring": [512, 512, [], "f1cd", ["M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"]], "lightbulb": [352, 512, [], "f0eb", ["M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"]], "list-alt": [512, 512, [], "f022", ["M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"]], "list-ul": [512, 512, [], "f0ca", ["M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"]], "lock-alt": [448, 512, [], "f30d", ["M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"]], "map-marker-alt": [384, 512, [], "f3c5", ["M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]], "moon-stars": [512, 512, [], "f755", ["M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"]], "network-wired": [640, 512, [], "f6ff", ["M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"]], "planet-ringed": [512, 512, [], "e020", ["M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"]], "question-circle": [512, 512, [], "f059", ["M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"]], "quote-left": [512, 512, [], "f10d", ["M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"]], "random": [512, 512, [], "f074", ["M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"]], "rocket": [512, 512, [], "f135", ["M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"]], "search": [512, 512, [], "f002", ["M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"]], "server": [512, 512, [], "f233", ["M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"]], "sign-out": [512, 512, [], "f08b", ["M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"]], "siren-on": [640, 512, [], "e02e", ["M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"]], "smile": [496, 512, [], "f118", ["M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"]], "snowman": [512, 512, [], "f7d0", ["M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"]], "sun": [512, 512, [], "f185", ["M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"]], "tasks": [512, 512, [], "f0ae", ["M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"]], "university": [512, 512, [], "f19c", ["M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"]], "user": [448, 512, [], "f007", ["M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"]], "user-hard-hat": [448, 512, [], "f82c", ["M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"]], "user-shield": [640, 512, [], "f505", ["M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"]], "users": [640, 512, [], "f0c0", ["M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"]] }; bunker(function () { defineIcons('fad', icons); }); }()); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/js/fontawesome.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function () { 'use strict'; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var noop = function noop() {}; var _WINDOW = {}; var _DOCUMENT = {}; var _MUTATION_OBSERVER = null; var _PERFORMANCE = { mark: noop, measure: noop }; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver; if (typeof performance !== 'undefined') _PERFORMANCE = performance; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var MUTATION_OBSERVER = _MUTATION_OBSERVER; var PERFORMANCE = _PERFORMANCE; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var UNITS_IN_GRID = 16; var DEFAULT_FAMILY_PREFIX = 'fa'; var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa'; var DATA_FA_I2SVG = 'data-fa-i2svg'; var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element'; var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending'; var DATA_PREFIX = 'data-prefix'; var DATA_ICON = 'data-icon'; var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg'; var MUTATION_APPROACH_ASYNC = 'async'; var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT']; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); var PREFIX_TO_STYLE = { 'fas': 'solid', 'far': 'regular', 'fal': 'light', 'fad': 'duotone', 'fab': 'brands', 'fak': 'kit', 'fa': 'solid' }; var STYLE_TO_PREFIX = { 'solid': 'fas', 'regular': 'far', 'light': 'fal', 'duotone': 'fad', 'brands': 'fab', 'kit': 'fak' }; var LAYERS_TEXT_CLASSNAME = 'fa-layers-text'; var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements? var FONT_WEIGHT_TO_PREFIX = { '900': 'fas', '400': 'far', 'normal': 'far', '300': 'fal' }; var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask']; var DUOTONE_CLASSES = { GROUP: 'group', SWAP_OPACITY: 'swap-opacity', PRIMARY: 'primary', SECONDARY: 'secondary' }; var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) { return "".concat(n, "x"); })).concat(oneToTwenty.map(function (n) { return "w-".concat(n); })); var initial = WINDOW.FontAwesomeConfig || {}; function getAttrConfig(attr) { var element = DOCUMENT.querySelector('script[' + attr + ']'); if (element) { return element.getAttribute(attr); } } function coerce(val) { // Getting an empty string will occur if the attribute is set on the HTML tag but without a value // We'll assume that this is an indication that it should be toggled to true // For example if (val === '') return true; if (val === 'false') return false; if (val === 'true') return true; return val; } if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') { var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']]; attrs.forEach(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), attr = _ref2[0], key = _ref2[1]; var val = coerce(getAttrConfig(attr)); if (val !== undefined && val !== null) { initial[key] = val; } }); } var _default = { familyPrefix: DEFAULT_FAMILY_PREFIX, replacementClass: DEFAULT_REPLACEMENT_CLASS, autoReplaceSvg: true, autoAddCss: true, autoA11y: true, searchPseudoElements: false, observeMutations: true, mutateApproach: 'async', keepOriginalSource: true, measurePerformance: false, showMissingIcons: true }; var _config = _objectSpread2(_objectSpread2({}, _default), initial); if (!_config.autoReplaceSvg) _config.observeMutations = false; var config = _objectSpread2({}, _config); WINDOW.FontAwesomeConfig = config; var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; var functions = []; var listener = function listener() { DOCUMENT.removeEventListener('DOMContentLoaded', listener); loaded = 1; functions.map(function (fn) { return fn(); }); }; var loaded = false; if (IS_DOM) { loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState); if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener); } function domready (fn) { if (!IS_DOM) return; loaded ? setTimeout(fn, 0) : functions.push(fn); } var PENDING = 'pending'; var SETTLED = 'settled'; var FULFILLED = 'fulfilled'; var REJECTED = 'rejected'; var NOOP = function NOOP() {}; var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function'; var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate; var asyncQueue = []; var asyncTimer; function asyncFlush() { // run promise callbacks for (var i = 0; i < asyncQueue.length; i++) { asyncQueue[i][0](asyncQueue[i][1]); } // reset async asyncQueue asyncQueue = []; asyncTimer = false; } function asyncCall(callback, arg) { asyncQueue.push([callback, arg]); if (!asyncTimer) { asyncTimer = true; asyncSetTimer(asyncFlush, 0); } } function invokeResolver(resolver, promise) { function resolvePromise(value) { resolve(promise, value); } function rejectPromise(reason) { reject(promise, reason); } try { resolver(resolvePromise, rejectPromise); } catch (e) { rejectPromise(e); } } function invokeCallback(subscriber) { var owner = subscriber.owner; var settled = owner._state; var value = owner._data; var callback = subscriber[settled]; var promise = subscriber.then; if (typeof callback === 'function') { settled = FULFILLED; try { value = callback(value); } catch (e) { reject(promise, e); } } if (!handleThenable(promise, value)) { if (settled === FULFILLED) { resolve(promise, value); } if (settled === REJECTED) { reject(promise, value); } } } function handleThenable(promise, value) { var resolved; try { if (promise === value) { throw new TypeError('A promises callback cannot return that same promise.'); } if (value && (typeof value === 'function' || _typeof(value) === 'object')) { // then should be retrieved only once var then = value.then; if (typeof then === 'function') { then.call(value, function (val) { if (!resolved) { resolved = true; if (value === val) { fulfill(promise, val); } else { resolve(promise, val); } } }, function (reason) { if (!resolved) { resolved = true; reject(promise, reason); } }); return true; } } } catch (e) { if (!resolved) { reject(promise, e); } return true; } return false; } function resolve(promise, value) { if (promise === value || !handleThenable(promise, value)) { fulfill(promise, value); } } function fulfill(promise, value) { if (promise._state === PENDING) { promise._state = SETTLED; promise._data = value; asyncCall(publishFulfillment, promise); } } function reject(promise, reason) { if (promise._state === PENDING) { promise._state = SETTLED; promise._data = reason; asyncCall(publishRejection, promise); } } function publish(promise) { promise._then = promise._then.forEach(invokeCallback); } function publishFulfillment(promise) { promise._state = FULFILLED; publish(promise); } function publishRejection(promise) { promise._state = REJECTED; publish(promise); if (!promise._handled && isNode) { global.process.emit('unhandledRejection', promise._data, promise); } } function notifyRejectionHandled(promise) { global.process.emit('rejectionHandled', promise); } /** * @class */ function P(resolver) { if (typeof resolver !== 'function') { throw new TypeError('Promise resolver ' + resolver + ' is not a function'); } if (this instanceof P === false) { throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.'); } this._then = []; invokeResolver(resolver, this); } P.prototype = { constructor: P, _state: PENDING, _then: null, _data: undefined, _handled: false, then: function then(onFulfillment, onRejection) { var subscriber = { owner: this, then: new this.constructor(NOOP), fulfilled: onFulfillment, rejected: onRejection }; if ((onRejection || onFulfillment) && !this._handled) { this._handled = true; if (this._state === REJECTED && isNode) { asyncCall(notifyRejectionHandled, this); } } if (this._state === FULFILLED || this._state === REJECTED) { // already resolved, call callback async asyncCall(invokeCallback, subscriber); } else { // subscribe this._then.push(subscriber); } return subscriber.then; }, catch: function _catch(onRejection) { return this.then(null, onRejection); } }; P.all = function (promises) { if (!Array.isArray(promises)) { throw new TypeError('You must pass an array to Promise.all().'); } return new P(function (resolve, reject) { var results = []; var remaining = 0; function resolver(index) { remaining++; return function (value) { results[index] = value; if (! --remaining) { resolve(results); } }; } for (var i = 0, promise; i < promises.length; i++) { promise = promises[i]; if (promise && typeof promise.then === 'function') { promise.then(resolver(i), reject); } else { results[i] = promise; } } if (!remaining) { resolve(results); } }); }; P.race = function (promises) { if (!Array.isArray(promises)) { throw new TypeError('You must pass an array to Promise.race().'); } return new P(function (resolve, reject) { for (var i = 0, promise; i < promises.length; i++) { promise = promises[i]; if (promise && typeof promise.then === 'function') { promise.then(resolve, reject); } else { resolve(promise); } } }); }; P.resolve = function (value) { if (value && _typeof(value) === 'object' && value.constructor === P) { return value; } return new P(function (resolve) { resolve(value); }); }; P.reject = function (reason) { return new P(function (resolve, reject) { reject(reason); }); }; var picked = typeof Promise === 'function' ? Promise : P; var d = UNITS_IN_GRID; var meaninglessTransform = { size: 16, x: 0, y: 0, rotate: 0, flipX: false, flipY: false }; function isReserved(name) { return ~RESERVED_CLASSES.indexOf(name); } function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function insertCss(css) { if (!css || !IS_DOM) { return; } var style = DOCUMENT.createElement('style'); style.setAttribute('type', 'text/css'); style.innerHTML = css; var headChildren = DOCUMENT.head.childNodes; var beforeChild = null; for (var i = headChildren.length - 1; i > -1; i--) { var child = headChildren[i]; var tagName = (child.tagName || '').toUpperCase(); if (['STYLE', 'LINK'].indexOf(tagName) > -1) { beforeChild = child; } } DOCUMENT.head.insertBefore(style, beforeChild); return css; } var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; function nextUniqueId() { var size = 12; var id = ''; while (size-- > 0) { id += idPool[Math.random() * 62 | 0]; } return id; } function toArray(obj) { var array = []; for (var i = (obj || []).length >>> 0; i--;) { array[i] = obj[i]; } return array; } function classArray(node) { if (node.classList) { return toArray(node.classList); } else { return (node.getAttribute('class') || '').split(' ').filter(function (i) { return i; }); } } function getIconName(familyPrefix, cls) { var parts = cls.split('-'); var prefix = parts[0]; var iconName = parts.slice(1).join('-'); if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) { return iconName; } else { return null; } } function htmlEscape(str) { return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>'); } function joinAttributes(attributes) { return Object.keys(attributes || {}).reduce(function (acc, attributeName) { return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" "); }, '').trim(); } function joinStyles(styles) { return Object.keys(styles || {}).reduce(function (acc, styleName) { return acc + "".concat(styleName, ": ").concat(styles[styleName], ";"); }, ''); } function transformIsMeaningful(transform) { return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY; } function transformForSvg(_ref) { var transform = _ref.transform, containerWidth = _ref.containerWidth, iconWidth = _ref.iconWidth; var outer = { transform: "translate(".concat(containerWidth / 2, " 256)") }; var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") "); var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") "); var innerRotate = "rotate(".concat(transform.rotate, " 0 0)"); var inner = { transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate) }; var path = { transform: "translate(".concat(iconWidth / 2 * -1, " -256)") }; return { outer: outer, inner: inner, path: path }; } function transformForCss(_ref2) { var transform = _ref2.transform, _ref2$width = _ref2.width, width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width, _ref2$height = _ref2.height, height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height, _ref2$startCentered = _ref2.startCentered, startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered; var val = ''; if (startCentered && IS_IE) { val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) "); } else if (startCentered) { val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) "); } else { val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) "); } val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") "); val += "rotate(".concat(transform.rotate, "deg) "); return val; } var ALL_SPACE = { x: 0, y: 0, width: '100%', height: '100%' }; function fillBlack(abstract) { var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; if (abstract.attributes && (abstract.attributes.fill || force)) { abstract.attributes.fill = 'black'; } return abstract; } function deGroup(abstract) { if (abstract.tag === 'g') { return abstract.children; } else { return [abstract]; } } function makeIconMasking (_ref) { var children = _ref.children, attributes = _ref.attributes, main = _ref.main, mask = _ref.mask, explicitMaskId = _ref.maskId, transform = _ref.transform; var mainWidth = main.width, mainPath = main.icon; var maskWidth = mask.width, maskPath = mask.icon; var trans = transformForSvg({ transform: transform, containerWidth: maskWidth, iconWidth: mainWidth }); var maskRect = { tag: 'rect', attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { fill: 'white' }) }; var maskInnerGroupChildrenMixin = mainPath.children ? { children: mainPath.children.map(fillBlack) } : {}; var maskInnerGroup = { tag: 'g', attributes: _objectSpread2({}, trans.inner), children: [fillBlack(_objectSpread2({ tag: mainPath.tag, attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path) }, maskInnerGroupChildrenMixin))] }; var maskOuterGroup = { tag: 'g', attributes: _objectSpread2({}, trans.outer), children: [maskInnerGroup] }; var maskId = "mask-".concat(explicitMaskId || nextUniqueId()); var clipId = "clip-".concat(explicitMaskId || nextUniqueId()); var maskTag = { tag: 'mask', attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { id: maskId, maskUnits: 'userSpaceOnUse', maskContentUnits: 'userSpaceOnUse' }), children: [maskRect, maskOuterGroup] }; var defs = { tag: 'defs', children: [{ tag: 'clipPath', attributes: { id: clipId }, children: deGroup(maskPath) }, maskTag] }; children.push(defs, { tag: 'rect', attributes: _objectSpread2({ fill: 'currentColor', 'clip-path': "url(#".concat(clipId, ")"), mask: "url(#".concat(maskId, ")") }, ALL_SPACE) }); return { children: children, attributes: attributes }; } function makeIconStandard (_ref) { var children = _ref.children, attributes = _ref.attributes, main = _ref.main, transform = _ref.transform, styles = _ref.styles; var styleString = joinStyles(styles); if (styleString.length > 0) { attributes['style'] = styleString; } if (transformIsMeaningful(transform)) { var trans = transformForSvg({ transform: transform, containerWidth: main.width, iconWidth: main.width }); children.push({ tag: 'g', attributes: _objectSpread2({}, trans.outer), children: [{ tag: 'g', attributes: _objectSpread2({}, trans.inner), children: [{ tag: main.icon.tag, children: main.icon.children, attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), trans.path) }] }] }); } else { children.push(main.icon); } return { children: children, attributes: attributes }; } function asIcon (_ref) { var children = _ref.children, main = _ref.main, mask = _ref.mask, attributes = _ref.attributes, styles = _ref.styles, transform = _ref.transform; if (transformIsMeaningful(transform) && main.found && !mask.found) { var width = main.width, height = main.height; var offset = { x: width / height / 2, y: 0.5 }; attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, { 'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em") })); } return [{ tag: 'svg', attributes: attributes, children: children }]; } function asSymbol (_ref) { var prefix = _ref.prefix, iconName = _ref.iconName, children = _ref.children, attributes = _ref.attributes, symbol = _ref.symbol; var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol; return [{ tag: 'svg', attributes: { style: 'display: none;' }, children: [{ tag: 'symbol', attributes: _objectSpread2(_objectSpread2({}, attributes), {}, { id: id }), children: children }] }]; } function makeInlineSvgAbstract(params) { var _params$icons = params.icons, main = _params$icons.main, mask = _params$icons.mask, prefix = params.prefix, iconName = params.iconName, transform = params.transform, symbol = params.symbol, title = params.title, maskId = params.maskId, titleId = params.titleId, extra = params.extra, _params$watchable = params.watchable, watchable = _params$watchable === void 0 ? false : _params$watchable; var _ref = mask.found ? mask : main, width = _ref.width, height = _ref.height; var isUploadedIcon = prefix === 'fak'; var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16)); var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) { return extra.classes.indexOf(c) === -1; }).filter(function (c) { return c !== '' || !!c; }).concat(extra.classes).join(' '); var content = { children: [], attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, { 'data-prefix': prefix, 'data-icon': iconName, 'class': attrClass, 'role': extra.attributes.role || 'img', 'xmlns': 'http://www.w3.org/2000/svg', 'viewBox': "0 0 ".concat(width, " ").concat(height) }) }; var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? { width: "".concat(width / height * 16 * 0.0625, "em") } : {}; if (watchable) { content.attributes[DATA_FA_I2SVG] = ''; } if (title) content.children.push({ tag: 'title', attributes: { id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId()) }, children: [title] }); var args = _objectSpread2(_objectSpread2({}, content), {}, { prefix: prefix, iconName: iconName, main: main, mask: mask, maskId: maskId, transform: transform, symbol: symbol, styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles) }); var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args), children = _ref2.children, attributes = _ref2.attributes; args.children = children; args.attributes = attributes; if (symbol) { return asSymbol(args); } else { return asIcon(args); } } function makeLayersTextAbstract(params) { var content = params.content, width = params.width, height = params.height, transform = params.transform, title = params.title, extra = params.extra, _params$watchable2 = params.watchable, watchable = _params$watchable2 === void 0 ? false : _params$watchable2; var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { 'title': title } : {}), {}, { 'class': extra.classes.join(' ') }); if (watchable) { attributes[DATA_FA_I2SVG] = ''; } var styles = _objectSpread2({}, extra.styles); if (transformIsMeaningful(transform)) { styles['transform'] = transformForCss({ transform: transform, startCentered: true, width: width, height: height }); styles['-webkit-transform'] = styles['transform']; } var styleString = joinStyles(styles); if (styleString.length > 0) { attributes['style'] = styleString; } var val = []; val.push({ tag: 'span', attributes: attributes, children: [content] }); if (title) { val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] }); } return val; } function makeLayersCounterAbstract(params) { var content = params.content, title = params.title, extra = params.extra; var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { 'title': title } : {}), {}, { 'class': extra.classes.join(' ') }); var styleString = joinStyles(extra.styles); if (styleString.length > 0) { attributes['style'] = styleString; } var val = []; val.push({ tag: 'span', attributes: attributes, children: [content] }); if (title) { val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] }); } return val; } var noop$1 = function noop() {}; var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { mark: noop$1, measure: noop$1 }; var preamble = "FA \"5.15.4\""; var begin = function begin(name) { p.mark("".concat(preamble, " ").concat(name, " begins")); return function () { return end(name); }; }; var end = function end(name) { p.mark("".concat(preamble, " ").concat(name, " ends")); p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends")); }; var perf = { begin: begin, end: end }; /** * Internal helper to bind a function known to have 4 arguments * to a given context. */ var bindInternal4 = function bindInternal4(func, thisContext) { return function (a, b, c, d) { return func.call(thisContext, a, b, c, d); }; }; /** * # Reduce * * A fast object `.reduce()` implementation. * * @param {Object} subject The object to reduce over. * @param {Function} fn The reducer function. * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0]. * @param {Object} thisContext The context for the reducer. * @return {mixed} The final result. */ var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) { var keys = Object.keys(subject), length = keys.length, iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn, i, key, result; if (initialValue === undefined) { i = 1; result = subject[keys[0]]; } else { i = 0; result = initialValue; } for (; i < length; i++) { key = keys[i]; result = iterator(result, subject[key], key, subject); } return result; }; function toHex(unicode) { var result = ''; for (var i = 0; i < unicode.length; i++) { var hex = unicode.charCodeAt(i).toString(16); result += ('000' + hex).slice(-4); } return result; } function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var styles = namespace.styles, shims = namespace.shims; var _byUnicode = {}; var _byLigature = {}; var _byOldName = {}; var build = function build() { var lookup = function lookup(reducer) { return reduce(styles, function (o, style, prefix) { o[prefix] = reduce(style, reducer, {}); return o; }, {}); }; _byUnicode = lookup(function (acc, icon, iconName) { if (icon[3]) { acc[icon[3]] = iconName; } return acc; }); _byLigature = lookup(function (acc, icon, iconName) { var ligatures = icon[2]; acc[iconName] = iconName; ligatures.forEach(function (ligature) { acc[ligature] = iconName; }); return acc; }); var hasRegular = ('far' in styles); _byOldName = reduce(shims, function (acc, shim) { var oldName = shim[0]; var prefix = shim[1]; var iconName = shim[2]; if (prefix === 'far' && !hasRegular) { prefix = 'fas'; } acc[oldName] = { prefix: prefix, iconName: iconName }; return acc; }, {}); }; build(); function byUnicode(prefix, unicode) { return (_byUnicode[prefix] || {})[unicode]; } function byLigature(prefix, ligature) { return (_byLigature[prefix] || {})[ligature]; } function byOldName(name) { return _byOldName[name] || { prefix: null, iconName: null }; } var styles$1 = namespace.styles; var emptyCanonicalIcon = function emptyCanonicalIcon() { return { prefix: null, iconName: null, rest: [] }; }; function getCanonicalIcon(values) { return values.reduce(function (acc, cls) { var iconName = getIconName(config.familyPrefix, cls); if (styles$1[cls]) { acc.prefix = cls; } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) { acc.prefix = cls; } else if (iconName) { var shim = acc.prefix === 'fa' ? byOldName(iconName) : {}; acc.iconName = shim.iconName || iconName; acc.prefix = shim.prefix || acc.prefix; } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) { acc.rest.push(cls); } return acc; }, emptyCanonicalIcon()); } function iconFromMapping(mapping, prefix, iconName) { if (mapping && mapping[prefix] && mapping[prefix][iconName]) { return { prefix: prefix, iconName: iconName, icon: mapping[prefix][iconName] }; } } function toHtml(abstractNodes) { var tag = abstractNodes.tag, _abstractNodes$attrib = abstractNodes.attributes, attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib, _abstractNodes$childr = abstractNodes.children, children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr; if (typeof abstractNodes === 'string') { return htmlEscape(abstractNodes); } else { return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), ""); } } var noop$2 = function noop() {}; function isWatched(node) { var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null; return typeof i2svg === 'string'; } function getMutator() { if (config.autoReplaceSvg === true) { return mutators.replace; } var mutator = mutators[config.autoReplaceSvg]; return mutator || mutators.replace; } var mutators = { replace: function replace(mutation) { var node = mutation[0]; var abstract = mutation[1]; var newOuterHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); if (node.parentNode && node.outerHTML) { node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "") : ''); } else if (node.parentNode) { var newNode = document.createElement('span'); node.parentNode.replaceChild(newNode, node); newNode.outerHTML = newOuterHTML; } }, nest: function nest(mutation) { var node = mutation[0]; var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it. // Short-circuit to the standard replacement if (~classArray(node).indexOf(config.replacementClass)) { return mutators.replace(mutation); } var forSvg = new RegExp("".concat(config.familyPrefix, "-.*")); delete abstract[0].attributes.style; delete abstract[0].attributes.id; var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) { if (cls === config.replacementClass || cls.match(forSvg)) { acc.toSvg.push(cls); } else { acc.toNode.push(cls); } return acc; }, { toNode: [], toSvg: [] }); abstract[0].attributes.class = splitClasses.toSvg.join(' '); var newInnerHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); node.setAttribute('class', splitClasses.toNode.join(' ')); node.setAttribute(DATA_FA_I2SVG, ''); node.innerHTML = newInnerHTML; } }; function performOperationSync(op) { op(); } function perform(mutations, callback) { var callbackFunction = typeof callback === 'function' ? callback : noop$2; if (mutations.length === 0) { callbackFunction(); } else { var frame = performOperationSync; if (config.mutateApproach === MUTATION_APPROACH_ASYNC) { frame = WINDOW.requestAnimationFrame || performOperationSync; } frame(function () { var mutator = getMutator(); var mark = perf.begin('mutate'); mutations.map(mutator); mark(); callbackFunction(); }); } } var disabled = false; function disableObservation() { disabled = true; } function enableObservation() { disabled = false; } var mo = null; function observe(options) { if (!MUTATION_OBSERVER) { return; } if (!config.observeMutations) { return; } var treeCallback = options.treeCallback, nodeCallback = options.nodeCallback, pseudoElementsCallback = options.pseudoElementsCallback, _options$observeMutat = options.observeMutationsRoot, observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat; mo = new MUTATION_OBSERVER(function (objects) { if (disabled) return; toArray(objects).forEach(function (mutationRecord) { if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) { if (config.searchPseudoElements) { pseudoElementsCallback(mutationRecord.target); } treeCallback(mutationRecord.target); } if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) { pseudoElementsCallback(mutationRecord.target.parentNode); } if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) { if (mutationRecord.attributeName === 'class') { var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)), prefix = _getCanonicalIcon.prefix, iconName = _getCanonicalIcon.iconName; if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix); if (iconName) mutationRecord.target.setAttribute('data-icon', iconName); } else { nodeCallback(mutationRecord.target); } } }); }); if (!IS_DOM) return; mo.observe(observeMutationsRoot, { childList: true, attributes: true, characterData: true, subtree: true }); } function disconnect() { if (!mo) return; mo.disconnect(); } function styleParser (node) { var style = node.getAttribute('style'); var val = []; if (style) { val = style.split(';').reduce(function (acc, style) { var styles = style.split(':'); var prop = styles[0]; var value = styles.slice(1); if (prop && value.length > 0) { acc[prop] = value.join(':').trim(); } return acc; }, {}); } return val; } function classParser (node) { var existingPrefix = node.getAttribute('data-prefix'); var existingIconName = node.getAttribute('data-icon'); var innerText = node.innerText !== undefined ? node.innerText.trim() : ''; var val = getCanonicalIcon(classArray(node)); if (existingPrefix && existingIconName) { val.prefix = existingPrefix; val.iconName = existingIconName; } if (val.prefix && innerText.length > 1) { val.iconName = byLigature(val.prefix, node.innerText); } else if (val.prefix && innerText.length === 1) { val.iconName = byUnicode(val.prefix, toHex(node.innerText)); } return val; } var parseTransformString = function parseTransformString(transformString) { var transform = { size: 16, x: 0, y: 0, flipX: false, flipY: false, rotate: 0 }; if (!transformString) { return transform; } else { return transformString.toLowerCase().split(' ').reduce(function (acc, n) { var parts = n.toLowerCase().split('-'); var first = parts[0]; var rest = parts.slice(1).join('-'); if (first && rest === 'h') { acc.flipX = true; return acc; } if (first && rest === 'v') { acc.flipY = true; return acc; } rest = parseFloat(rest); if (isNaN(rest)) { return acc; } switch (first) { case 'grow': acc.size = acc.size + rest; break; case 'shrink': acc.size = acc.size - rest; break; case 'left': acc.x = acc.x - rest; break; case 'right': acc.x = acc.x + rest; break; case 'up': acc.y = acc.y - rest; break; case 'down': acc.y = acc.y + rest; break; case 'rotate': acc.rotate = acc.rotate + rest; break; } return acc; }, transform); } }; function transformParser (node) { return parseTransformString(node.getAttribute('data-fa-transform')); } function symbolParser (node) { var symbol = node.getAttribute('data-fa-symbol'); return symbol === null ? false : symbol === '' ? true : symbol; } function attributesParser (node) { var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) { if (acc.name !== 'class' && acc.name !== 'style') { acc[attr.name] = attr.value; } return acc; }, {}); var title = node.getAttribute('title'); var titleId = node.getAttribute('data-fa-title-id'); if (config.autoA11y) { if (title) { extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); } else { extraAttributes['aria-hidden'] = 'true'; extraAttributes['focusable'] = 'false'; } } return extraAttributes; } function maskParser (node) { var mask = node.getAttribute('data-fa-mask'); if (!mask) { return emptyCanonicalIcon(); } else { return getCanonicalIcon(mask.split(' ').map(function (i) { return i.trim(); })); } } function blankMeta() { return { iconName: null, title: null, titleId: null, prefix: null, transform: meaninglessTransform, symbol: false, mask: null, maskId: null, extra: { classes: [], styles: {}, attributes: {} } }; } function parseMeta(node) { var _classParser = classParser(node), iconName = _classParser.iconName, prefix = _classParser.prefix, extraClasses = _classParser.rest; var extraStyles = styleParser(node); var transform = transformParser(node); var symbol = symbolParser(node); var extraAttributes = attributesParser(node); var mask = maskParser(node); return { iconName: iconName, title: node.getAttribute('title'), titleId: node.getAttribute('data-fa-title-id'), prefix: prefix, transform: transform, symbol: symbol, mask: mask, maskId: node.getAttribute('data-fa-mask-id'), extra: { classes: extraClasses, styles: extraStyles, attributes: extraAttributes } }; } function MissingIcon(error) { this.name = 'MissingIcon'; this.message = error || 'Icon unavailable'; this.stack = new Error().stack; } MissingIcon.prototype = Object.create(Error.prototype); MissingIcon.prototype.constructor = MissingIcon; var FILL = { fill: 'currentColor' }; var ANIMATION_BASE = { attributeType: 'XML', repeatCount: 'indefinite', dur: '2s' }; var RING = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z' }) }; var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { attributeName: 'opacity' }); var DOT = { tag: 'circle', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { cx: '256', cy: '364', r: '28' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { attributeName: 'r', values: '28;14;28;28;14;28;' }) }, { tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '1;0;1;1;0;1;' }) }] }; var QUESTION = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { opacity: '1', d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '1;0;0;0;0;1;' }) }] }; var EXCLAMATION = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { opacity: '0', d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '0;0;1;1;0;0;' }) }] }; var missing = { tag: 'g', children: [RING, DOT, QUESTION, EXCLAMATION] }; var styles$2 = namespace.styles; function asFoundIcon(icon) { var width = icon[0]; var height = icon[1]; var _icon$slice = icon.slice(4), _icon$slice2 = _slicedToArray(_icon$slice, 1), vectorData = _icon$slice2[0]; var element = null; if (Array.isArray(vectorData)) { element = { tag: 'g', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP) }, children: [{ tag: 'path', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY), fill: 'currentColor', d: vectorData[0] } }, { tag: 'path', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY), fill: 'currentColor', d: vectorData[1] } }] }; } else { element = { tag: 'path', attributes: { fill: 'currentColor', d: vectorData } }; } return { found: true, width: width, height: height, icon: element }; } function findIcon(iconName, prefix) { return new picked(function (resolve, reject) { var val = { found: false, width: 512, height: 512, icon: missing }; if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) { var icon = styles$2[prefix][iconName]; return resolve(asFoundIcon(icon)); } if (iconName && prefix && !config.showMissingIcons) { reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName))); } else { resolve(val); } }); } var styles$3 = namespace.styles; function generateSvgReplacementMutation(node, nodeMeta) { var iconName = nodeMeta.iconName, title = nodeMeta.title, titleId = nodeMeta.titleId, prefix = nodeMeta.prefix, transform = nodeMeta.transform, symbol = nodeMeta.symbol, mask = nodeMeta.mask, maskId = nodeMeta.maskId, extra = nodeMeta.extra; return new picked(function (resolve, reject) { picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), main = _ref2[0], mask = _ref2[1]; resolve([node, makeInlineSvgAbstract({ icons: { main: main, mask: mask }, prefix: prefix, iconName: iconName, transform: transform, symbol: symbol, mask: mask, maskId: maskId, title: title, titleId: titleId, extra: extra, watchable: true })]); }); }); } function generateLayersText(node, nodeMeta) { var title = nodeMeta.title, transform = nodeMeta.transform, extra = nodeMeta.extra; var width = null; var height = null; if (IS_IE) { var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10); var boundingClientRect = node.getBoundingClientRect(); width = boundingClientRect.width / computedFontSize; height = boundingClientRect.height / computedFontSize; } if (config.autoA11y && !title) { extra.attributes['aria-hidden'] = 'true'; } return picked.resolve([node, makeLayersTextAbstract({ content: node.innerHTML, width: width, height: height, transform: transform, title: title, extra: extra, watchable: true })]); } function generateMutation(node) { var nodeMeta = parseMeta(node); if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) { return generateLayersText(node, nodeMeta); } else { return generateSvgReplacementMutation(node, nodeMeta); } } function onTree(root) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (!IS_DOM) return; var htmlClassList = DOCUMENT.documentElement.classList; var hclAdd = function hclAdd(suffix) { return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); }; var hclRemove = function hclRemove(suffix) { return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); }; var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3); var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) { return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])"); })).join(', '); if (prefixesDomQuery.length === 0) { return; } var candidates = []; try { candidates = toArray(root.querySelectorAll(prefixesDomQuery)); } catch (e) {// noop } if (candidates.length > 0) { hclAdd('pending'); hclRemove('complete'); } else { return; } var mark = perf.begin('onTree'); var mutations = candidates.reduce(function (acc, node) { try { var mutation = generateMutation(node); if (mutation) { acc.push(mutation); } } catch (e) { if (!PRODUCTION) { if (e instanceof MissingIcon) { console.error(e); } } } return acc; }, []); return new picked(function (resolve, reject) { picked.all(mutations).then(function (resolvedMutations) { perform(resolvedMutations, function () { hclAdd('active'); hclAdd('complete'); hclRemove('pending'); if (typeof callback === 'function') callback(); mark(); resolve(); }); }).catch(function () { mark(); reject(); }); }); } function onNode(node) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; generateMutation(node).then(function (mutation) { if (mutation) { perform([mutation], callback); } }); } function replaceForPosition(node, position) { var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-')); return new picked(function (resolve, reject) { if (node.getAttribute(pendingAttribute) !== null) { // This node is already being processed return resolve(); } var children = toArray(node.children); var alreadyProcessedPseudoElement = children.filter(function (c) { return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position; })[0]; var styles = WINDOW.getComputedStyle(node, position); var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN); var fontWeight = styles.getPropertyValue('font-weight'); var content = styles.getPropertyValue('content'); if (alreadyProcessedPseudoElement && !fontFamily) { // If we've already processed it but the current computed style does not result in a font-family, // that probably means that a class name that was previously present to make the icon has been // removed. So we now should delete the icon. node.removeChild(alreadyProcessedPseudoElement); return resolve(); } else if (fontFamily && content !== 'none' && content !== '') { var _content = styles.getPropertyValue('content'); var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight]; var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content); var iconName = byUnicode(prefix, hexValue); var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't // already done so with the same prefix and iconName if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) { node.setAttribute(pendingAttribute, iconIdentifier); if (alreadyProcessedPseudoElement) { // Delete the old one, since we're replacing it with a new one node.removeChild(alreadyProcessedPseudoElement); } var meta = blankMeta(); var extra = meta.extra; extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position; findIcon(iconName, prefix).then(function (main) { var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, { icons: { main: main, mask: emptyCanonicalIcon() }, prefix: prefix, iconName: iconIdentifier, extra: extra, watchable: true })); var element = DOCUMENT.createElement('svg'); if (position === ':before') { node.insertBefore(element, node.firstChild); } else { node.appendChild(element); } element.outerHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); node.removeAttribute(pendingAttribute); resolve(); }).catch(reject); } else { resolve(); } } else { resolve(); } }); } function replace(node) { return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]); } function processable(node) { return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg'); } function searchPseudoElements (root) { if (!IS_DOM) return; return new picked(function (resolve, reject) { var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace); var end = perf.begin('searchPseudoElements'); disableObservation(); picked.all(operations).then(function () { end(); enableObservation(); resolve(); }).catch(function () { end(); enableObservation(); reject(); }); }); } var baseStyles = "svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff}"; function css () { var dfp = DEFAULT_FAMILY_PREFIX; var drc = DEFAULT_REPLACEMENT_CLASS; var fp = config.familyPrefix; var rc = config.replacementClass; var s = baseStyles; if (fp !== dfp || rc !== drc) { var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g'); var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g'); var rPatt = new RegExp("\\.".concat(drc), 'g'); s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc)); } return s; } var Library = /*#__PURE__*/function () { function Library() { _classCallCheck(this, Library); this.definitions = {}; } _createClass(Library, [{ key: "add", value: function add() { var _this = this; for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) { definitions[_key] = arguments[_key]; } var additions = definitions.reduce(this._pullDefinitions, {}); Object.keys(additions).forEach(function (key) { _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]); defineIcons(key, additions[key]); build(); }); } }, { key: "reset", value: function reset() { this.definitions = {}; } }, { key: "_pullDefinitions", value: function _pullDefinitions(additions, definition) { var normalized = definition.prefix && definition.iconName && definition.icon ? { 0: definition } : definition; Object.keys(normalized).map(function (key) { var _normalized$key = normalized[key], prefix = _normalized$key.prefix, iconName = _normalized$key.iconName, icon = _normalized$key.icon; if (!additions[prefix]) additions[prefix] = {}; additions[prefix][iconName] = icon; }); return additions; } }]); return Library; }(); function ensureCss() { if (config.autoAddCss && !_cssInserted) { insertCss(css()); _cssInserted = true; } } function apiObject(val, abstractCreator) { Object.defineProperty(val, 'abstract', { get: abstractCreator }); Object.defineProperty(val, 'html', { get: function get() { return val.abstract.map(function (a) { return toHtml(a); }); } }); Object.defineProperty(val, 'node', { get: function get() { if (!IS_DOM) return; var container = DOCUMENT.createElement('div'); container.innerHTML = val.html; return container.children; } }); return val; } function findIconDefinition(iconLookup) { var _iconLookup$prefix = iconLookup.prefix, prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix, iconName = iconLookup.iconName; if (!iconName) return; return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName); } function resolveIcons(next) { return function (maybeIconDefinition) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {}); var mask = params.mask; if (mask) { mask = (mask || {}).icon ? mask : findIconDefinition(mask || {}); } return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, { mask: mask })); }; } var library = new Library(); var noAuto = function noAuto() { config.autoReplaceSvg = false; config.observeMutations = false; disconnect(); }; var _cssInserted = false; var dom = { i2svg: function i2svg() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (IS_DOM) { ensureCss(); var _params$node = params.node, node = _params$node === void 0 ? DOCUMENT : _params$node, _params$callback = params.callback, callback = _params$callback === void 0 ? function () {} : _params$callback; if (config.searchPseudoElements) { searchPseudoElements(node); } return onTree(node, callback); } else { return picked.reject('Operation requires a DOM of some kind.'); } }, css: css, insertCss: function insertCss$$1() { if (!_cssInserted) { insertCss(css()); _cssInserted = true; } }, watch: function watch() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var autoReplaceSvgRoot = params.autoReplaceSvgRoot, observeMutationsRoot = params.observeMutationsRoot; if (config.autoReplaceSvg === false) { config.autoReplaceSvg = true; } config.observeMutations = true; domready(function () { autoReplace({ autoReplaceSvgRoot: autoReplaceSvgRoot }); observe({ treeCallback: onTree, nodeCallback: onNode, pseudoElementsCallback: searchPseudoElements, observeMutationsRoot: observeMutationsRoot }); }); } }; var parse = { transform: function transform(transformString) { return parseTransformString(transformString); } }; var icon = resolveIcons(function (iconDefinition) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$transform = params.transform, transform = _params$transform === void 0 ? meaninglessTransform : _params$transform, _params$symbol = params.symbol, symbol = _params$symbol === void 0 ? false : _params$symbol, _params$mask = params.mask, mask = _params$mask === void 0 ? null : _params$mask, _params$maskId = params.maskId, maskId = _params$maskId === void 0 ? null : _params$maskId, _params$title = params.title, title = _params$title === void 0 ? null : _params$title, _params$titleId = params.titleId, titleId = _params$titleId === void 0 ? null : _params$titleId, _params$classes = params.classes, classes = _params$classes === void 0 ? [] : _params$classes, _params$attributes = params.attributes, attributes = _params$attributes === void 0 ? {} : _params$attributes, _params$styles = params.styles, styles = _params$styles === void 0 ? {} : _params$styles; if (!iconDefinition) return; var prefix = iconDefinition.prefix, iconName = iconDefinition.iconName, icon = iconDefinition.icon; return apiObject(_objectSpread2({ type: 'icon' }, iconDefinition), function () { ensureCss(); if (config.autoA11y) { if (title) { attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); } else { attributes['aria-hidden'] = 'true'; attributes['focusable'] = 'false'; } } return makeInlineSvgAbstract({ icons: { main: asFoundIcon(icon), mask: mask ? asFoundIcon(mask.icon) : { found: false, width: null, height: null, icon: {} } }, prefix: prefix, iconName: iconName, transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), symbol: symbol, title: title, maskId: maskId, titleId: titleId, extra: { attributes: attributes, styles: styles, classes: classes } }); }); }); var text = function text(content) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$transform2 = params.transform, transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2, _params$title2 = params.title, title = _params$title2 === void 0 ? null : _params$title2, _params$classes2 = params.classes, classes = _params$classes2 === void 0 ? [] : _params$classes2, _params$attributes2 = params.attributes, attributes = _params$attributes2 === void 0 ? {} : _params$attributes2, _params$styles2 = params.styles, styles = _params$styles2 === void 0 ? {} : _params$styles2; return apiObject({ type: 'text', content: content }, function () { ensureCss(); return makeLayersTextAbstract({ content: content, transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), title: title, extra: { attributes: attributes, styles: styles, classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes)) } }); }); }; var counter = function counter(content) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$title3 = params.title, title = _params$title3 === void 0 ? null : _params$title3, _params$classes3 = params.classes, classes = _params$classes3 === void 0 ? [] : _params$classes3, _params$attributes3 = params.attributes, attributes = _params$attributes3 === void 0 ? {} : _params$attributes3, _params$styles3 = params.styles, styles = _params$styles3 === void 0 ? {} : _params$styles3; return apiObject({ type: 'counter', content: content }, function () { ensureCss(); return makeLayersCounterAbstract({ content: content.toString(), title: title, extra: { attributes: attributes, styles: styles, classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes)) } }); }); }; var layer = function layer(assembler) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$classes4 = params.classes, classes = _params$classes4 === void 0 ? [] : _params$classes4; return apiObject({ type: 'layer' }, function () { ensureCss(); var children = []; assembler(function (args) { Array.isArray(args) ? args.map(function (a) { children = children.concat(a.abstract); }) : children = children.concat(args.abstract); }); return [{ tag: 'span', attributes: { class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ') }, children: children }]; }); }; var api = { noAuto: noAuto, config: config, dom: dom, library: library, parse: parse, findIconDefinition: findIconDefinition, icon: icon, text: text, counter: counter, layer: layer, toHtml: toHtml }; var autoReplace = function autoReplace() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _params$autoReplaceSv = params.autoReplaceSvgRoot, autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv; if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({ node: autoReplaceSvgRoot }); }; function bootstrap() { if (IS_BROWSER) { if (!WINDOW.FontAwesome) { WINDOW.FontAwesome = api; } domready(function () { autoReplace(); observe({ treeCallback: onTree, nodeCallback: onNode, pseudoElementsCallback: searchPseudoElements }); }); } namespace.hooks = _objectSpread2(_objectSpread2({}, namespace.hooks), {}, { addPack: function addPack(prefix, icons) { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), icons); build(); autoReplace(); }, addShims: function addShims(shims) { var _namespace$shims; (_namespace$shims = namespace.shims).push.apply(_namespace$shims, _toConsumableArray(shims)); build(); autoReplace(); } }); } bunker(bootstrap); }()); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/js/regular.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "check-circle": [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"], "desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"], "eye": [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"], "file-code": [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"], "info": [256, 512, [], "f129", "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"], "info-circle": [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"], "plus": [384, 512, [], "f067", "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"], "question-circle": [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"], "rocket": [512, 512, [], "f135", "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"], "save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"], "slash": [640, 512, [], "f715", "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"], "times": [320, 512, [], "f00d", "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"], "undo": [512, 512, [], "f0e2", "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"], "undo-alt": [512, 512, [], "f2ea", "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"], "user": [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"], "user-friends": [640, 512, [], "f500", "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"], "users": [640, 512, [], "f0c0", "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"] }; bunker(function () { defineIcons('far', icons); }); }()); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/js/solid.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function () { 'use strict'; var _WINDOW = {}; var _DOCUMENT = {}; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var PRODUCTION = function () { try { return "production" === 'production'; } catch (e) { return false; } }(); function bunker(fn) { try { fn(); } catch (e) { if (!PRODUCTION) { throw e; } } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var icons = { "alarm-exclamation": [512, 512, [], "f843", "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"], "align-left": [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"], "book-dead": [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"], "check": [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"], "circle": [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"], "cloud": [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"], "credit-card": [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"], "desktop": [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"], "envelope": [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"], "eye": [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"], "fingerprint": [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"], "history": [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"], "home": [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"], "plus": [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"], "robot": [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"], "rocket": [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"], "save": [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"], "slash": [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"], "spinner-third": [512, 512, [], "f3f4", "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"], "square-full": [512, 512, [], "f45c", "M512 512H0V0h512v512z"], "times": [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"], "times-circle": [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"], "undo": [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"], "undo-alt": [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"], "user": [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"], "users": [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"] }; bunker(function () { defineIcons('fas', icons); }); }()); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_animated.less ================================================ // Animated Icons // -------------------------- .@{fa-css-prefix}-spin { animation: fa-spin 2s infinite linear; } .@{fa-css-prefix}-pulse { animation: fa-spin 1s infinite steps(8); } @keyframes fa-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_bordered-pulled.less ================================================ // Bordered & Pulled // ------------------------- .@{fa-css-prefix}-border { border-radius: .1em; border: solid .08em @fa-border-color; padding: .2em .25em .15em; } .@{fa-css-prefix}-pull-left { float: left; } .@{fa-css-prefix}-pull-right { float: right; } .@{fa-css-prefix}, .fas, .far, .fal, .fab { &.@{fa-css-prefix}-pull-left { margin-right: .3em; } &.@{fa-css-prefix}-pull-right { margin-left: .3em; } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_core.less ================================================ // Base Class Definition // ------------------------- .@{fa-css-prefix}, .fas, .far, .fal, .fad, .fab { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; font-style: normal; font-variant: normal; text-rendering: auto; line-height: 1; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_fixed-width.less ================================================ // Fixed Width Icons // ------------------------- .@{fa-css-prefix}-fw { text-align: center; width: (20em / 16); } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_icons.less ================================================ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ .@{fa-css-prefix}-abacus:before { content: @fa-var-abacus; } .@{fa-css-prefix}-alarm-exclamation:before { content: @fa-var-alarm-exclamation; } .@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } .@{fa-css-prefix}-align-slash:before { content: @fa-var-align-slash; } .@{fa-css-prefix}-atom-alt:before { content: @fa-var-atom-alt; } .@{fa-css-prefix}-aws:before { content: @fa-var-aws; } .@{fa-css-prefix}-badge-check:before { content: @fa-var-badge-check; } .@{fa-css-prefix}-bell:before { content: @fa-var-bell; } .@{fa-css-prefix}-book-dead:before { content: @fa-var-book-dead; } .@{fa-css-prefix}-books:before { content: @fa-var-books; } .@{fa-css-prefix}-brackets-curly:before { content: @fa-var-brackets-curly; } .@{fa-css-prefix}-cc-amazon-pay:before { content: @fa-var-cc-amazon-pay; } .@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } .@{fa-css-prefix}-cc-apple-pay:before { content: @fa-var-cc-apple-pay; } .@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } .@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } .@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } .@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } .@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } .@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } .@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } .@{fa-css-prefix}-chart-network:before { content: @fa-var-chart-network; } .@{fa-css-prefix}-chart-scatter:before { content: @fa-var-chart-scatter; } .@{fa-css-prefix}-check:before { content: @fa-var-check; } .@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } .@{fa-css-prefix}-circle:before { content: @fa-var-circle; } .@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } .@{fa-css-prefix}-clouds:before { content: @fa-var-clouds; } .@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } .@{fa-css-prefix}-comment-dots:before { content: @fa-var-comment-dots; } .@{fa-css-prefix}-concierge-bell:before { content: @fa-var-concierge-bell; } .@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } .@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } .@{fa-css-prefix}-discourse:before { content: @fa-var-discourse; } .@{fa-css-prefix}-docker:before { content: @fa-var-docker; } .@{fa-css-prefix}-dot-circle:before { content: @fa-var-dot-circle; } .@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } .@{fa-css-prefix}-exchange-alt:before { content: @fa-var-exchange-alt; } .@{fa-css-prefix}-eye:before { content: @fa-var-eye; } .@{fa-css-prefix}-file-alt:before { content: @fa-var-file-alt; } .@{fa-css-prefix}-file-code:before { content: @fa-var-file-code; } .@{fa-css-prefix}-fingerprint:before { content: @fa-var-fingerprint; } .@{fa-css-prefix}-github:before { content: @fa-var-github; } .@{fa-css-prefix}-globe:before { content: @fa-var-globe; } .@{fa-css-prefix}-globe-africa:before { content: @fa-var-globe-africa; } .@{fa-css-prefix}-globe-americas:before { content: @fa-var-globe-americas; } .@{fa-css-prefix}-globe-asia:before { content: @fa-var-globe-asia; } .@{fa-css-prefix}-globe-europe:before { content: @fa-var-globe-europe; } .@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } .@{fa-css-prefix}-history:before { content: @fa-var-history; } .@{fa-css-prefix}-home:before { content: @fa-var-home; } .@{fa-css-prefix}-info:before { content: @fa-var-info; } .@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } .@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } .@{fa-css-prefix}-key:before { content: @fa-var-key; } .@{fa-css-prefix}-key-skeleton:before { content: @fa-var-key-skeleton; } .@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } .@{fa-css-prefix}-laptop-code:before { content: @fa-var-laptop-code; } .@{fa-css-prefix}-laptop-house:before { content: @fa-var-laptop-house; } .@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } .@{fa-css-prefix}-lightbulb:before { content: @fa-var-lightbulb; } .@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } .@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } .@{fa-css-prefix}-lock-alt:before { content: @fa-var-lock-alt; } .@{fa-css-prefix}-map-marker-alt:before { content: @fa-var-map-marker-alt; } .@{fa-css-prefix}-microsoft:before { content: @fa-var-microsoft; } .@{fa-css-prefix}-moon-stars:before { content: @fa-var-moon-stars; } .@{fa-css-prefix}-network-wired:before { content: @fa-var-network-wired; } .@{fa-css-prefix}-planet-ringed:before { content: @fa-var-planet-ringed; } .@{fa-css-prefix}-plus:before { content: @fa-var-plus; } .@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } .@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } .@{fa-css-prefix}-random:before { content: @fa-var-random; } .@{fa-css-prefix}-rev:before { content: @fa-var-rev; } .@{fa-css-prefix}-robot:before { content: @fa-var-robot; } .@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } .@{fa-css-prefix}-save:before { content: @fa-var-save; } .@{fa-css-prefix}-search:before { content: @fa-var-search; } .@{fa-css-prefix}-server:before { content: @fa-var-server; } .@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } .@{fa-css-prefix}-siren-on:before { content: @fa-var-siren-on; } .@{fa-css-prefix}-slack:before { content: @fa-var-slack; } .@{fa-css-prefix}-slash:before { content: @fa-var-slash; } .@{fa-css-prefix}-smile:before { content: @fa-var-smile; } .@{fa-css-prefix}-snowman:before { content: @fa-var-snowman; } .@{fa-css-prefix}-spinner-third:before { content: @fa-var-spinner-third; } .@{fa-css-prefix}-square-full:before { content: @fa-var-square-full; } .@{fa-css-prefix}-sun:before { content: @fa-var-sun; } .@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } .@{fa-css-prefix}-times:before { content: @fa-var-times; } .@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } .@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } .@{fa-css-prefix}-undo:before { content: @fa-var-undo; } .@{fa-css-prefix}-undo-alt:before { content: @fa-var-undo-alt; } .@{fa-css-prefix}-university:before { content: @fa-var-university; } .@{fa-css-prefix}-user:before { content: @fa-var-user; } .@{fa-css-prefix}-user-friends:before { content: @fa-var-user-friends; } .@{fa-css-prefix}-user-hard-hat:before { content: @fa-var-user-hard-hat; } .@{fa-css-prefix}-user-shield:before { content: @fa-var-user-shield; } .@{fa-css-prefix}-users:before { content: @fa-var-users; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_larger.less ================================================ // Icon Sizes // ------------------------- .larger(@factor) when (@factor > 0) { .larger((@factor - 1)); .@{fa-css-prefix}-@{factor}x { font-size: (@factor * 1em); } } /* makes the font 33% larger relative to the icon container */ .@{fa-css-prefix}-lg { font-size: (4em / 3); line-height: (3em / 4); vertical-align: -.0667em; } .@{fa-css-prefix}-xs { font-size: .75em; } .@{fa-css-prefix}-sm { font-size: .875em; } .larger(10); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_list.less ================================================ // List Icons // ------------------------- .@{fa-css-prefix}-ul { list-style-type: none; margin-left: (@fa-li-width * 5/4); padding-left: 0; > li { position: relative; } } .@{fa-css-prefix}-li { left: -@fa-li-width; position: absolute; text-align: center; width: @fa-li-width; line-height: inherit; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_mixins.less ================================================ // Mixins // -------------------------- .fa-icon() { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; font-style: normal; font-variant: normal; font-weight: normal; line-height: 1; } .fa-icon-rotate(@degrees, @rotation) { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; transform: rotate(@degrees); } .fa-icon-flip(@horiz, @vert, @rotation) { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; transform: scale(@horiz, @vert); } // Only display content to screen readers. A la Bootstrap 4. // // See: http://a11yproject.com/posts/how-to-hide-content/ .sr-only() { border: 0; clip: rect(0,0,0,0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } // Use in conjunction with .sr-only to only display content when it's focused. // // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 // // Credit: HTML5 Boilerplate .sr-only-focusable() { &:active, &:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_rotated-flipped.less ================================================ // Rotated & Flipped Icons // ------------------------- .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } .@{fa-css-prefix}-flip-both, .@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(-1, -1, 2); } // Hook for IE8-9 // ------------------------- :root { .@{fa-css-prefix}-rotate-90, .@{fa-css-prefix}-rotate-180, .@{fa-css-prefix}-rotate-270, .@{fa-css-prefix}-flip-horizontal, .@{fa-css-prefix}-flip-vertical, .@{fa-css-prefix}-flip-both { filter: none; } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_screen-reader.less ================================================ // Screen Readers // ------------------------- .sr-only { .sr-only(); } .sr-only-focusable { .sr-only-focusable(); } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_stacked.less ================================================ // Stacked Icons // ------------------------- .@{fa-css-prefix}-stack { display: inline-block; height: 2em; line-height: 2em; position: relative; vertical-align: middle; width: 2em; } .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { left: 0; position: absolute; text-align: center; width: 100%; } .@{fa-css-prefix}-stack-1x { line-height: inherit; } .@{fa-css-prefix}-stack-2x { font-size: 2em; } .@{fa-css-prefix}-inverse { color: @fa-inverse; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/_variables.less ================================================ // Variables // -------------------------- @fa-font-path: "../webfonts"; @fa-font-size-base: 16px; @fa-font-display: block; @fa-line-height-base: 1; @fa-css-prefix: fa; @fa-version: "5.15.4"; @fa-border-color: #eee; @fa-inverse: #fff; @fa-li-width: 2em; @fa-primary-opacity: 1; @fa-secondary-opacity: .4; @fa-var-abacus: "\f640"; @fa-var-alarm-exclamation: "\f843"; @fa-var-align-left: "\f036"; @fa-var-align-slash: "\f846"; @fa-var-atom-alt: "\f5d3"; @fa-var-aws: "\f375"; @fa-var-badge-check: "\f336"; @fa-var-bell: "\f0f3"; @fa-var-book-dead: "\f6b7"; @fa-var-books: "\f5db"; @fa-var-brackets-curly: "\f7ea"; @fa-var-cc-amazon-pay: "\f42d"; @fa-var-cc-amex: "\f1f3"; @fa-var-cc-apple-pay: "\f416"; @fa-var-cc-diners-club: "\f24c"; @fa-var-cc-discover: "\f1f2"; @fa-var-cc-jcb: "\f24b"; @fa-var-cc-mastercard: "\f1f1"; @fa-var-cc-paypal: "\f1f4"; @fa-var-cc-stripe: "\f1f5"; @fa-var-cc-visa: "\f1f0"; @fa-var-chart-network: "\f78a"; @fa-var-chart-scatter: "\f7ee"; @fa-var-check: "\f00c"; @fa-var-check-circle: "\f058"; @fa-var-circle: "\f111"; @fa-var-cloud: "\f0c2"; @fa-var-clouds: "\f744"; @fa-var-cogs: "\f085"; @fa-var-comment-dots: "\f4ad"; @fa-var-concierge-bell: "\f562"; @fa-var-credit-card: "\f09d"; @fa-var-desktop: "\f108"; @fa-var-discourse: "\f393"; @fa-var-docker: "\f395"; @fa-var-dot-circle: "\f192"; @fa-var-envelope: "\f0e0"; @fa-var-exchange-alt: "\f362"; @fa-var-eye: "\f06e"; @fa-var-file-alt: "\f15c"; @fa-var-file-code: "\f1c9"; @fa-var-fingerprint: "\f577"; @fa-var-github: "\f09b"; @fa-var-globe: "\f0ac"; @fa-var-globe-africa: "\f57c"; @fa-var-globe-americas: "\f57d"; @fa-var-globe-asia: "\f57e"; @fa-var-globe-europe: "\f7a2"; @fa-var-graduation-cap: "\f19d"; @fa-var-history: "\f1da"; @fa-var-home: "\f015"; @fa-var-info: "\f129"; @fa-var-info-circle: "\f05a"; @fa-var-instagram: "\f16d"; @fa-var-key: "\f084"; @fa-var-key-skeleton: "\f6f3"; @fa-var-laptop: "\f109"; @fa-var-laptop-code: "\f5fc"; @fa-var-laptop-house: "\e066"; @fa-var-life-ring: "\f1cd"; @fa-var-lightbulb: "\f0eb"; @fa-var-list-alt: "\f022"; @fa-var-list-ul: "\f0ca"; @fa-var-lock-alt: "\f30d"; @fa-var-map-marker-alt: "\f3c5"; @fa-var-microsoft: "\f3ca"; @fa-var-moon-stars: "\f755"; @fa-var-network-wired: "\f6ff"; @fa-var-planet-ringed: "\e020"; @fa-var-plus: "\f067"; @fa-var-question-circle: "\f059"; @fa-var-quote-left: "\f10d"; @fa-var-random: "\f074"; @fa-var-rev: "\f5b2"; @fa-var-robot: "\f544"; @fa-var-rocket: "\f135"; @fa-var-save: "\f0c7"; @fa-var-search: "\f002"; @fa-var-server: "\f233"; @fa-var-sign-out: "\f08b"; @fa-var-siren-on: "\e02e"; @fa-var-slack: "\f198"; @fa-var-slash: "\f715"; @fa-var-smile: "\f118"; @fa-var-snowman: "\f7d0"; @fa-var-spinner-third: "\f3f4"; @fa-var-square-full: "\f45c"; @fa-var-sun: "\f185"; @fa-var-tasks: "\f0ae"; @fa-var-times: "\f00d"; @fa-var-times-circle: "\f057"; @fa-var-twitter: "\f099"; @fa-var-undo: "\f0e2"; @fa-var-undo-alt: "\f2ea"; @fa-var-university: "\f19c"; @fa-var-user: "\f007"; @fa-var-user-friends: "\f500"; @fa-var-user-hard-hat: "\f82c"; @fa-var-user-shield: "\f505"; @fa-var-users: "\f0c0"; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/brands.less ================================================ @import "_variables.less"; @font-face { font-family: 'Font Awesome 5 Brands'; font-style: normal; font-weight: 400; font-display: @fa-font-display; src: url('@{fa-font-path}/fa-brands-400.eot'); src: url('@{fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'), url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'), url('@{fa-font-path}/fa-brands-400.woff') format('woff'), url('@{fa-font-path}/fa-brands-400.ttf') format('truetype'), url('@{fa-font-path}/fa-brands-400.svg#fontawesome') format('svg'); } .fab { font-family: 'Font Awesome 5 Brands'; font-weight: 400; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/duotone.less ================================================ @import "_variables.less"; @font-face { font-family: 'Font Awesome 5 Duotone'; font-style: normal; font-weight: 900; font-display: @fa-font-display; src: url('@{fa-font-path}/fa-duotone-900.eot'); src: url('@{fa-font-path}/fa-duotone-900.eot?#iefix') format('embedded-opentype'), url('@{fa-font-path}/fa-duotone-900.woff2') format('woff2'), url('@{fa-font-path}/fa-duotone-900.woff') format('woff'), url('@{fa-font-path}/fa-duotone-900.ttf') format('truetype'), url('@{fa-font-path}/fa-duotone-900.svg#fontawesome') format('svg'); } .fad { position: relative; font-family: 'Font Awesome 5 Duotone'; font-weight: 900; } .fad:before { position: absolute; color: ~'var(--@{fa-css-prefix}-primary-color, inherit)'; opacity: @fa-primary-opacity; opacity: ~'var(--@{fa-css-prefix}-primary-opacity, @{fa-primary-opacity})'; } .fad:after { color: ~'var(--@{fa-css-prefix}-secondary-color, inherit)'; opacity: @fa-secondary-opacity; opacity: ~'var(--@{fa-css-prefix}-secondary-opacity, @{fa-secondary-opacity})'; } .@{fa-css-prefix}-swap-opacity .fad:before, .fad.@{fa-css-prefix}-swap-opacity:before { opacity: @fa-secondary-opacity; opacity: ~'var(--@{fa-css-prefix}-secondary-opacity, @{fa-secondary-opacity})'; } .@{fa-css-prefix}-swap-opacity .fad:after, .fad.@{fa-css-prefix}-swap-opacity:after { opacity: @fa-primary-opacity; opacity: ~'var(--@{fa-css-prefix}-primary-opacity, @{fa-primary-opacity})'; } .fad.@{fa-css-prefix}-inverse { color: @fa-inverse; } .fad.@{fa-css-prefix}-stack-1x, .fad.@{fa-css-prefix}-stack-2x { position: absolute; } .fad.@{fa-css-prefix}-stack-1x:before, .fad.@{fa-css-prefix}-stack-2x:before, .fad.@{fa-css-prefix}-fw:before { left: 50%; transform: translateX(-50%); } .fad.@{fa-css-prefix}-abacus:after { content: "\10f640"; } .fad.@{fa-css-prefix}-align-slash:after { content: "\10f846"; } .fad.@{fa-css-prefix}-atom-alt:after { content: "\10f5d3"; } .fad.@{fa-css-prefix}-badge-check:after { content: "\10f336"; } .fad.@{fa-css-prefix}-bell:after { content: "\10f0f3"; } .fad.@{fa-css-prefix}-books:after { content: "\10f5db"; } .fad.@{fa-css-prefix}-brackets-curly:after { content: "\10f7ea"; } .fad.@{fa-css-prefix}-chart-network:after { content: "\10f78a"; } .fad.@{fa-css-prefix}-chart-scatter:after { content: "\10f7ee"; } .fad.@{fa-css-prefix}-check:after { content: "\10f00c"; } .fad.@{fa-css-prefix}-circle:after { content: "\10f111"; } .fad.@{fa-css-prefix}-clouds:after { content: "\10f744"; } .fad.@{fa-css-prefix}-cogs:after { content: "\10f085"; } .fad.@{fa-css-prefix}-comment-dots:after { content: "\10f4ad"; } .fad.@{fa-css-prefix}-concierge-bell:after { content: "\10f562"; } .fad.@{fa-css-prefix}-dot-circle:after { content: "\10f192"; } .fad.@{fa-css-prefix}-envelope:after { content: "\10f0e0"; } .fad.@{fa-css-prefix}-exchange-alt:after { content: "\10f362"; } .fad.@{fa-css-prefix}-file-alt:after { content: "\10f15c"; } .fad.@{fa-css-prefix}-file-code:after { content: "\10f1c9"; } .fad.@{fa-css-prefix}-globe:after { content: "\10f0ac"; } .fad.@{fa-css-prefix}-globe-africa:after { content: "\10f57c"; } .fad.@{fa-css-prefix}-globe-americas:after { content: "\10f57d"; } .fad.@{fa-css-prefix}-globe-asia:after { content: "\10f57e"; } .fad.@{fa-css-prefix}-globe-europe:after { content: "\10f7a2"; } .fad.@{fa-css-prefix}-graduation-cap:after { content: "\10f19d"; } .fad.@{fa-css-prefix}-history:after { content: "\10f1da"; } .fad.@{fa-css-prefix}-key:after { content: "\10f084"; } .fad.@{fa-css-prefix}-key-skeleton:after { content: "\10f6f3"; } .fad.@{fa-css-prefix}-laptop:after { content: "\10f109"; } .fad.@{fa-css-prefix}-laptop-code:after { content: "\10f5fc"; } .fad.@{fa-css-prefix}-laptop-house:after { content: "\10e066"; } .fad.@{fa-css-prefix}-life-ring:after { content: "\10f1cd"; } .fad.@{fa-css-prefix}-lightbulb:after { content: "\10f0eb"; } .fad.@{fa-css-prefix}-list-alt:after { content: "\10f022"; } .fad.@{fa-css-prefix}-list-ul:after { content: "\10f0ca"; } .fad.@{fa-css-prefix}-lock-alt:after { content: "\10f30d"; } .fad.@{fa-css-prefix}-map-marker-alt:after { content: "\10f3c5"; } .fad.@{fa-css-prefix}-moon-stars:after { content: "\10f755"; } .fad.@{fa-css-prefix}-network-wired:after { content: "\10f6ff"; } .fad.@{fa-css-prefix}-planet-ringed:after { content: "\10e020"; } .fad.@{fa-css-prefix}-question-circle:after { content: "\10f059"; } .fad.@{fa-css-prefix}-quote-left:after { content: "\10f10d"; } .fad.@{fa-css-prefix}-random:after { content: "\10f074"; } .fad.@{fa-css-prefix}-rocket:after { content: "\10f135"; } .fad.@{fa-css-prefix}-search:after { content: "\10f002"; } .fad.@{fa-css-prefix}-server:after { content: "\10f233"; } .fad.@{fa-css-prefix}-sign-out:after { content: "\10f08b"; } .fad.@{fa-css-prefix}-siren-on:after { content: "\10e02e"; } .fad.@{fa-css-prefix}-smile:after { content: "\10f118"; } .fad.@{fa-css-prefix}-snowman:after { content: "\10f7d0"; } .fad.@{fa-css-prefix}-sun:after { content: "\10f185"; } .fad.@{fa-css-prefix}-tasks:after { content: "\10f0ae"; } .fad.@{fa-css-prefix}-university:after { content: "\10f19c"; } .fad.@{fa-css-prefix}-user:after { content: "\10f007"; } .fad.@{fa-css-prefix}-user-hard-hat:after { content: "\10f82c"; } .fad.@{fa-css-prefix}-user-shield:after { content: "\10f505"; } .fad.@{fa-css-prefix}-users:after { content: "\10f0c0"; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/fontawesome.less ================================================ @import "_variables.less"; @import "_mixins.less"; @import "_core.less"; @import "_larger.less"; @import "_fixed-width.less"; @import "_list.less"; @import "_bordered-pulled.less"; @import "_animated.less"; @import "_rotated-flipped.less"; @import "_stacked.less"; @import "_icons.less"; @import "_screen-reader.less"; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/regular.less ================================================ @import "_variables.less"; @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 400; font-display: @fa-font-display; src: url('@{fa-font-path}/fa-regular-400.eot'); src: url('@{fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'), url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'), url('@{fa-font-path}/fa-regular-400.woff') format('woff'), url('@{fa-font-path}/fa-regular-400.ttf') format('truetype'), url('@{fa-font-path}/fa-regular-400.svg#fontawesome') format('svg'); } .far { font-family: 'Font Awesome 5 Pro'; font-weight: 400; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/less/solid.less ================================================ @import "_variables.less"; @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 900; font-display: @fa-font-display; src: url('@{fa-font-path}/fa-solid-900.eot'); src: url('@{fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'), url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'), url('@{fa-font-path}/fa-solid-900.woff') format('woff'), url('@{fa-font-path}/fa-solid-900.ttf') format('truetype'), url('@{fa-font-path}/fa-solid-900.svg#fontawesome') format('svg'); } .fa, .fas { font-family: 'Font Awesome 5 Pro'; font-weight: 900; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/metadata/categories.yml ================================================ accessibility: icons: - question-circle label: Accessibility alert: icons: - alarm-exclamation - bell label: Alert animals: icons: [] label: Animals arrows: icons: - exchange-alt - history - random - sign-out - undo - undo-alt label: Arrows audio-video: icons: - circle - random - undo - undo-alt label: Audio & Video automotive: icons: [] label: Automotive autumn: icons: [] label: Autumn beverage: icons: [] label: Beverage buildings: icons: - home - university label: Buildings business: icons: - badge-check - chart-network - chart-scatter - envelope - file-alt - globe - laptop-house - save - tasks label: Business camping: icons: [] label: Camping charity: icons: - globe label: Charity chat: icons: - comment-dots - quote-left - smile label: Chat chess: icons: - square-full label: Chess childhood: icons: - robot - snowman label: Childhood clothing: icons: - graduation-cap label: Clothing code: icons: - brackets-curly - file-alt - file-code - laptop-code label: Code communication: icons: - bell - envelope label: Communication computers: icons: - brackets-curly - desktop - laptop - laptop-house - save - server label: Computers construction: icons: - user-hard-hat label: Construction currency: icons: [] label: Currency date-time: icons: - alarm-exclamation - bell label: Date & Time design: icons: - eye - save label: Design editors: icons: - align-left - align-slash - file-alt - list-alt - list-ul - quote-left - tasks - undo - undo-alt label: Editors education: icons: - atom-alt - bell - books - graduation-cap - laptop-code label: Education emoji: icons: - smile label: Emoji energy: icons: - atom-alt - lightbulb - sun label: Energy files: icons: - file-alt - file-code - save label: Files finance: icons: - credit-card label: Finance fitness: icons: [] label: Fitness food: icons: [] label: Food fruit-vegetable: icons: [] label: Fruits & Vegetables games: icons: [] label: Games gaming-tabletop: icons: - book-dead label: Tabletop Gaming gender: icons: [] label: Genders halloween: icons: - book-dead - key-skeleton label: Halloween hands: icons: [] label: Hands health: icons: [] label: Health holiday: icons: - snowman label: Holiday hotel: icons: - concierge-bell - key label: Hotel household: icons: - bell - books - laptop-house - lightbulb - siren-on label: Household images: icons: - eye label: Images interfaces: icons: - badge-check - bell - check - check-circle - circle - cloud - cogs - dot-circle - envelope - eye - file-alt - fingerprint - history - home - info - info-circle - plus - question-circle - quote-left - save - search - sign-out - smile - times - times-circle - undo - undo-alt - user label: Interfaces logistics: icons: - user-hard-hat label: Logistics maps: icons: - bell - eye - globe - graduation-cap - home - info - info-circle - key - life-ring - lightbulb - map-marker-alt - plus - rocket - search - university label: Maps maritime: icons: [] label: Maritime marketing: icons: - badge-check - lightbulb label: Marketing mathematics: icons: - abacus - plus - times label: Mathematics medical: icons: - plus label: Medical moving: icons: [] label: Moving music: icons: [] label: Music objects: icons: - bell - book-dead - cloud - cogs - envelope - eye - file-alt - globe - graduation-cap - home - key - laptop - life-ring - lightbulb - lock-alt - map-marker-alt - rocket - save - search - sun - university label: Objects payments-shopping: icons: - badge-check - bell - cc-amazon-pay - cc-amex - cc-apple-pay - cc-diners-club - cc-discover - cc-jcb - cc-mastercard - cc-paypal - cc-stripe - cc-visa - credit-card - key label: Payments & Shopping pharmacy: icons: - history label: Pharmacy political: icons: [] label: Political religion: icons: [] label: Religion science: icons: - atom-alt - chart-network - chart-scatter - key-skeleton label: Science science-fiction: icons: - atom-alt - globe - moon-stars - planet-ringed - robot - rocket label: Science Fiction security: icons: - eye - fingerprint - key - key-skeleton - lock-alt - siren-on - user-shield label: Security shapes: icons: - circle - cloud label: Shapes shopping: icons: - badge-check label: Shopping social: icons: - bell - envelope - map-marker-alt - user - user-friends - users label: Social spinners: icons: - atom-alt - life-ring - slash - spinner-third - sun label: Spinners sports: icons: [] label: Sports spring: icons: [] label: Spring status: icons: - badge-check - bell - eye - file-alt - info - info-circle - lightbulb - lock-alt - map-marker-alt - plus - question-circle - sign-out - user label: Status summer: icons: - sun label: Summer toggle: icons: - check-circle - circle - dot-circle label: Toggle travel: icons: - concierge-bell - globe-africa - globe-americas - globe-asia - globe-europe label: Travel users-people: icons: - smile - user - user-friends - user-hard-hat - user-shield - users label: Users & People vehicles: icons: - rocket label: Vehicles weather: icons: - cloud - clouds - moon-stars - sun label: Weather winter: icons: [] label: Winter writing: icons: - envelope - file-alt - quote-left label: Writing ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/metadata/icons.yml ================================================ abacus: changes: - 5.3.0 label: Abacus search: terms: - addition - ancient - arithmetic - calculator - counting - hexadecimal - math - subtraction styles: - duotone unicode: f640 voted: false alarm-exclamation: changes: - 5.9.0 label: Alarm Exclamation search: terms: - alert - date - late - reminder - sleep - snooze - timer - timestamp - watch styles: - solid unicode: f843 voted: false align-left: changes: - '1' - 5.0.0 - 5.9.0 label: align-left search: terms: - format - paragraph - text styles: - solid unicode: f036 voted: false align-slash: changes: - 5.9.0 label: Align Slash search: terms: - cancel - format - paragraph - remove styles: - duotone unicode: f846 voted: false atom-alt: changes: - 5.2.0 - 5.12.0 label: Atom Alt search: terms: - atheism - chemistry - electron - ion - isotope - neutron - nuclear - proton - science - space styles: - duotone unicode: f5d3 voted: false aws: changes: - 5.0.0 - 5.1.0 label: Amazon Web Services (AWS) search: terms: [] styles: - brands unicode: f375 voted: false badge-check: changes: - 5.0.0 label: Check Badge search: terms: - accept - achievement - agree - award - confirm - correct - done - ok - security - select - success - verified - verify - winner - 'yes' styles: - duotone unicode: f336 voted: false bell: changes: - '2' - 5.0.0 - 5.2.0 - 5.11.0 label: bell search: terms: - alarm - alert - chime - notification - reminder styles: - duotone unicode: f0f3 voted: false book-dead: changes: - 5.4.0 label: Book of the Dead search: terms: - Dungeons & Dragons - crossbones - d&d - dark arts - death - dnd - documentation - evil - fantasy - halloween - holiday - necronomicon - read - skull - spell styles: - solid unicode: f6b7 voted: false books: changes: - 5.2.0 - 5.10.1 label: Books search: terms: - diary - documentation - journal - library - read styles: - duotone unicode: f5db voted: false brackets-curly: changes: - 5.7.0 label: Curly Brackets search: terms: - code - developer - development - parentheses styles: - duotone unicode: f7ea voted: true cc-amazon-pay: changes: - 5.0.2 label: Amazon Pay Credit Card search: terms: [] styles: - brands unicode: f42d voted: false cc-amex: changes: - '4.2' - 5.0.0 - 5.7.0 label: American Express Credit Card search: terms: - amex styles: - brands unicode: f1f3 voted: false cc-apple-pay: changes: - 5.0.0 label: Apple Pay Credit Card search: terms: [] styles: - brands unicode: f416 voted: false cc-diners-club: changes: - '4.4' - 5.0.0 label: Diner's Club Credit Card search: terms: [] styles: - brands unicode: f24c voted: false cc-discover: changes: - '4.2' - 5.0.0 label: Discover Credit Card search: terms: [] styles: - brands unicode: f1f2 voted: false cc-jcb: changes: - '4.4' - 5.0.0 label: JCB Credit Card search: terms: [] styles: - brands unicode: f24b voted: false cc-mastercard: changes: - '4.2' - 5.0.0 label: MasterCard Credit Card search: terms: [] styles: - brands unicode: f1f1 voted: false cc-paypal: changes: - '4.2' - 5.0.0 label: Paypal Credit Card search: terms: [] styles: - brands unicode: f1f4 voted: false cc-stripe: changes: - '4.2' - 5.0.0 label: Stripe Credit Card search: terms: [] styles: - brands unicode: f1f5 voted: false cc-visa: changes: - '4.2' - 5.0.0 label: Visa Credit Card search: terms: [] styles: - brands unicode: f1f0 voted: false chart-network: changes: - 5.6.0 label: Network Chart search: terms: - activity - analytics - association - dashboard - diagram - distribution - map - network styles: - duotone unicode: f78a voted: true chart-scatter: changes: - 5.7.0 label: Scatter Chart search: terms: - analytics - chart - diagram - graph - plot styles: - duotone unicode: f7ee voted: true check: changes: - '1' - 5.0.0 label: Check search: terms: - accept - agree - checkmark - confirm - correct - done - notice - notification - notify - ok - select - success - tick - todo - 'yes' styles: - duotone - solid unicode: f00c voted: false check-circle: changes: - '1' - 5.0.0 label: Check Circle search: terms: - accept - agree - confirm - correct - done - ok - select - success - tick - todo - 'yes' styles: - regular unicode: f058 voted: false circle: changes: - '3' - 5.0.0 - 5.10.1 - 5.10.2 label: Circle search: terms: - circle-thin - diameter - dot - ellipse - notification - round styles: - duotone - solid unicode: f111 voted: false cloud: changes: - '2' - 5.0.0 - 5.0.11 label: Cloud search: terms: - atmosphere - fog - overcast - save - upload - weather styles: - solid unicode: f0c2 voted: false clouds: changes: - 5.5.0 label: Clouds search: terms: - cloudy - fog - haze - overcast - smoke - storm - weather styles: - duotone unicode: f744 voted: false cogs: changes: - '1' - 5.0.0 label: cogs search: terms: - gears - mechanical - settings - sprocket - wheel styles: - duotone unicode: f085 voted: false comment-dots: changes: - 5.0.9 label: Comment Dots search: terms: - bubble - chat - commenting - conversation - feedback - message - more - note - notification - reply - sms - speech - texting styles: - duotone unicode: f4ad voted: false concierge-bell: changes: - 5.1.0 label: Concierge Bell search: terms: - attention - hotel - receptionist - service - support styles: - duotone unicode: f562 voted: false credit-card: changes: - '2' - 5.0.0 label: Credit Card search: terms: - buy - checkout - credit-card-alt - debit - money - payment - purchase styles: - solid unicode: f09d voted: false desktop: changes: - '3' - 5.0.0 label: Desktop search: terms: - computer - cpu - demo - desktop - device - imac - machine - monitor - pc - screen styles: - solid - regular unicode: f108 voted: false discourse: changes: - 5.0.0 - 5.0.3 label: Discourse search: terms: [] styles: - brands unicode: f393 voted: false docker: changes: - 5.0.0 label: Docker search: terms: [] styles: - brands unicode: f395 voted: false dot-circle: changes: - '4' - 5.0.0 label: Dot Circle search: terms: - bullseye - notification - target styles: - duotone unicode: f192 voted: false envelope: changes: - '2' - 5.0.0 - 5.10.1 - 5.10.2 label: Envelope search: terms: - e-mail - email - letter - mail - message - notification - support styles: - solid - duotone unicode: f0e0 voted: false exchange-alt: changes: - 5.0.0 label: Alternate Exchange search: terms: - arrow - arrows - exchange - reciprocate - return - swap - transfer styles: - duotone unicode: f362 voted: false eye: changes: - '1' - 5.0.0 - 5.7.0 label: Eye search: terms: - look - optic - see - seen - show - sight - views - visible styles: - solid - regular unicode: f06e voted: false file-alt: changes: - '3.2' - 5.0.0 - 5.10.2 label: Alternate File search: terms: - document - file-text - invoice - new - page - pdf styles: - duotone unicode: f15c voted: false file-code: changes: - '4.1' - 5.0.0 - 5.10.2 label: Code File search: terms: - css - development - document - html styles: - duotone - regular unicode: f1c9 voted: false fingerprint: changes: - 5.1.0 label: Fingerprint search: terms: - human - id - identification - lock - smudge - touch - unique - unlock styles: - solid unicode: f577 voted: true github: changes: - '2' - 5.0.0 label: GitHub search: terms: - octocat styles: - brands unicode: f09b voted: false globe: changes: - '2' - 5.0.0 - 5.0.9 - 5.11.0 - 5.11.1 label: Globe search: terms: - all - coordinates - country - earth - global - gps - language - localize - location - map - online - place - planet - translate - travel - world styles: - duotone unicode: f0ac voted: false globe-africa: changes: - 5.1.0 - 5.11.0 - 5.11.1 label: Globe with Africa shown search: terms: - all - country - earth - global - gps - language - localize - location - map - online - place - planet - translate - travel - world styles: - duotone unicode: f57c voted: false globe-americas: changes: - 5.1.0 - 5.11.0 - 5.11.1 label: Globe with Americas shown search: terms: - all - country - earth - global - gps - language - localize - location - map - online - place - planet - translate - travel - world styles: - duotone unicode: f57d voted: false globe-asia: changes: - 5.1.0 - 5.11.0 - 5.11.1 label: Globe with Asia shown search: terms: - all - country - earth - global - gps - language - localize - location - map - online - place - planet - translate - travel - world styles: - duotone unicode: f57e voted: false globe-europe: changes: - 5.6.0 - 5.11.0 - 5.11.1 label: Globe with Europe shown search: terms: - all - country - earth - global - gps - language - localize - location - map - online - place - planet - translate - travel - world styles: - duotone unicode: f7a2 voted: true graduation-cap: changes: - '4.1' - 5.0.0 - 5.2.0 - 5.10.1 label: Graduation Cap search: terms: - ceremony - college - graduate - learning - school - student styles: - duotone unicode: f19d voted: false history: changes: - '4.1' - 5.0.0 label: History search: terms: - Rewind - clock - reverse - time - time machine styles: - solid - duotone unicode: f1da voted: false home: changes: - '1' - 5.0.0 - 5.7.0 label: home search: terms: - abode - building - house - main styles: - solid unicode: f015 voted: false info: changes: - '3.1' - 5.0.0 - 5.10.1 - 5.10.2 label: Info search: terms: - details - help - information - more - support styles: - regular unicode: f129 voted: false info-circle: changes: - '1' - 5.0.0 label: Info Circle search: terms: - details - help - information - more - support styles: - regular unicode: f05a voted: false instagram: changes: - '4.6' - 5.0.0 label: Instagram search: terms: [] styles: - brands unicode: f16d voted: false key: changes: - '1' - 5.0.0 - 5.10.1 label: key search: terms: - lock - password - private - secret - unlock styles: - duotone unicode: f084 voted: false key-skeleton: changes: - 5.4.0 label: Key Skeleton search: terms: - halloween - lock - password - private - secret - unlock styles: - duotone unicode: f6f3 voted: false laptop: changes: - '3' - 5.0.0 - 5.2.0 label: Laptop search: terms: - computer - cpu - dell - demo - device - mac - macbook - machine - pc styles: - duotone unicode: f109 voted: false laptop-code: changes: - 5.2.0 label: Laptop Code search: terms: - computer - cpu - dell - demo - develop - device - mac - macbook - machine - pc styles: - duotone unicode: f5fc voted: false laptop-house: changes: - 5.13.0 - 5.14.0 label: Laptop House search: terms: - computer - covid-19 - device - office - remote - work from home styles: - duotone unicode: e066 voted: false life-ring: changes: - '4.1' - 5.0.0 label: Life Ring search: terms: - coast guard - help - overboard - save - support styles: - duotone unicode: f1cd voted: false lightbulb: changes: - '3' - 5.0.0 - 5.3.0 label: Lightbulb search: terms: - energy - idea - inspiration - light styles: - duotone unicode: f0eb voted: false list-alt: changes: - '1' - 5.0.0 label: Alternate List search: terms: - checklist - completed - done - finished - ol - todo - ul styles: - duotone unicode: f022 voted: false list-ul: changes: - '2' - 5.0.0 - 5.9.0 label: list-ul search: terms: - checklist - completed - done - finished - ol - todo - ul styles: - duotone unicode: f0ca voted: false lock-alt: changes: - 5.0.0 label: Alternate Lock search: terms: - admin - lock - open - password - private - protect - security styles: - duotone unicode: f30d voted: false map-marker-alt: changes: - 5.0.0 label: Alternate Map Marker search: terms: - address - coordinates - destination - gps - localize - location - map - navigation - paper - pin - place - point of interest - position - route - travel styles: - duotone unicode: f3c5 voted: false microsoft: changes: - 5.0.0 label: Microsoft search: terms: [] styles: - brands unicode: f3ca voted: true moon-stars: changes: - 5.5.0 label: Moon with Stars search: terms: - clear - crescent - lunar - space - star styles: - duotone unicode: f755 voted: false network-wired: changes: - 5.4.0 label: Wired Network search: terms: - computer - connect - ethernet - internet - intranet styles: - duotone unicode: f6ff voted: true planet-ringed: changes: - 5.12.0 - 5.14.0 label: Ringed Planet search: terms: - orbit - saturn - solar system - space - universe styles: - duotone unicode: e020 voted: false plus: changes: - '1' - 5.0.0 - 5.0.13 label: plus search: terms: - add - create - expand - new - positive - shape styles: - regular - solid unicode: f067 voted: false question-circle: changes: - '1' - 5.0.0 label: Question Circle search: terms: - help - information - support - unknown styles: - duotone - regular unicode: f059 voted: false quote-left: changes: - '3' - 5.0.0 - 5.0.9 label: quote-left search: terms: - mention - note - phrase - text - type styles: - duotone unicode: f10d voted: false random: changes: - '1' - 5.0.0 label: random search: terms: - arrows - shuffle - sort - swap - switch - transfer styles: - duotone unicode: f074 voted: false rev: changes: - 5.1.0 - 5.1.1 - 5.8.0 label: Rev.io search: terms: [] styles: - brands unicode: f5b2 voted: false robot: changes: - 5.0.13 - 5.12.0 label: Robot search: terms: - android - automate - computer - cyborg styles: - solid unicode: f544 voted: true rocket: changes: - '3.1' - 5.0.0 - 5.7.0 - 5.12.0 label: rocket search: terms: - aircraft - app - jet - launch - nasa - space styles: - duotone - solid - regular unicode: f135 voted: false save: changes: - '2' - 5.0.0 - 5.10.2 label: Save search: terms: - disk - download - floppy - floppy-o styles: - solid - regular unicode: f0c7 voted: false search: changes: - '1' - 5.0.0 label: Search search: terms: - bigger - enlarge - find - magnify - preview - zoom styles: - duotone unicode: f002 voted: false server: changes: - '4.3' - 5.0.0 label: Server search: terms: - computer - cpu - database - hardware - network styles: - duotone unicode: f233 voted: false sign-out: changes: - '1' - 5.0.0 label: Sign Out search: terms: - arrow - exit - leave - log out - logout styles: - duotone unicode: f08b voted: false siren-on: changes: - 5.12.0 - 5.14.0 label: Siren On search: terms: - alarm - alert - ambulance - loud - police - warning styles: - duotone unicode: e02e voted: false slack: changes: - '4.1' - 5.0.0 - 5.7.0 label: Slack Logo search: terms: - anchor - hash - hashtag styles: - brands unicode: f198 voted: false slash: changes: - 5.4.0 label: Slash search: terms: - cancel - close - mute - 'off' - stop - x styles: - solid - regular unicode: f715 voted: true smile: changes: - '3.1' - 5.0.0 - 5.0.9 - 5.1.0 - 5.11.0 - 5.11.1 label: Smiling Face search: terms: - approve - emoticon - face - happy - rating - satisfied styles: - duotone unicode: f118 voted: false snowman: changes: - 5.6.0 label: Snowman search: terms: - decoration - frost - frosty - holiday styles: - duotone unicode: f7d0 spinner-third: changes: - 5.0.0 - 5.10.2 label: Spinner Third search: terms: - circle - loading - progress styles: - solid unicode: f3f4 voted: false square-full: changes: - 5.0.5 - 5.10.2 label: Square Full search: terms: - block - box - shape styles: - solid unicode: f45c voted: false sun: changes: - '3.2' - 5.0.0 - 5.5.0 label: Sun search: terms: - brighten - contrast - day - lighter - sol - solar - star - weather styles: - duotone unicode: f185 voted: false tasks: changes: - '2' - 5.0.0 - 5.9.0 label: Tasks search: terms: - checklist - downloading - downloads - loading - progress - project management - settings - to do styles: - duotone unicode: f0ae voted: false times: changes: - '1' - 5.0.0 - 5.0.13 - 5.11.0 - 5.11.1 label: Times search: terms: - close - cross - error - exit - incorrect - notice - notification - notify - problem - wrong - x styles: - solid - regular unicode: f00d voted: false times-circle: changes: - '1' - 5.0.0 label: Times Circle search: terms: - close - cross - exit - incorrect - notice - notification - notify - problem - wrong - x styles: - solid unicode: f057 voted: false twitter: changes: - '2' - 5.0.0 label: Twitter search: terms: - social network - tweet styles: - brands unicode: f099 voted: false undo: changes: - '2' - 5.0.0 label: Undo search: terms: - back - control z - exchange - oops - return - rotate - swap styles: - solid - regular unicode: f0e2 voted: false undo-alt: changes: - 5.0.0 label: Alternate Undo search: terms: - back - control z - exchange - oops - return - swap styles: - regular - solid unicode: f2ea voted: false university: changes: - '4.1' - 5.0.0 - 5.0.3 - 5.11.0 - 5.11.1 label: University search: terms: - bank - building - college - higher education - students - institution styles: - duotone unicode: f19c voted: false user: changes: - '1' - 5.0.0 - 5.0.3 - 5.0.11 label: User search: terms: - account - avatar - head - human - man - person - profile styles: - solid - duotone - regular unicode: f007 voted: false user-friends: changes: - 5.0.11 label: User Friends search: terms: - group - people - person - team - users styles: - regular unicode: f500 voted: false user-hard-hat: changes: - 5.7.0 label: Construction Worker search: terms: - construction - hardhat - helmet - safety styles: - duotone unicode: f82c voted: false user-shield: changes: - 5.0.11 label: User Shield search: terms: - admin - person - private - protect - safe styles: - duotone unicode: f505 voted: false users: changes: - '2' - 5.0.0 - 5.0.3 - 5.0.11 label: Users search: terms: - friends - group - people - persons - profiles - team styles: - duotone - solid - regular unicode: f0c0 voted: false ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/metadata/sponsors.yml ================================================ amazon-web-services: icons: - aws label: Amazon Web Services url: 'https://aws.amazon.com' discourse: icons: - discourse label: Discourse url: 'https://discourse.org' harvard-medical-school: icons: - plus label: Harvard Medical School url: 'https://hms.harvard.edu' mylogin-info: icons: - user-shield label: mylogin.info url: 'https://www.mylogin.info' rev-io: icons: - rev label: Rev.io url: 'https://rev.io' rocket-chat: icons: - comment-dots - quote-left - smile label: Rocket.Chat url: 'https://rocket.chat' supple: icons: - badge-check label: Supple url: 'https://supple.com.au' the-us-sunnah-foundation: icons: - globe label: The us-Sunnah Foundation url: 'https://www.ussunnah.org' ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/package.json ================================================ { "description": "The iconic font, CSS, and SVG framework", "keywords": [ "font", "awesome", "fontawesome", "icon", "svg", "bootstrap" ], "homepage": "https://fontawesome.com", "bugs": { "url": "http://github.com/FortAwesome/Font-Awesome/issues" }, "author": { "name": "Dave Gandy", "email": "dave@fontawesome.com", "web": "http://twitter.com/davegandy" }, "contributors": [ { "name": "Brian Talbot", "web": "http://twitter.com/talbs" }, { "name": "Travis Chase", "web": "http://twitter.com/supercodepoet" }, { "name": "Rob Madole", "web": "http://twitter.com/robmadole" }, { "name": "Geremia Taglialatela", "web": "http://twitter.com/gtagliala" }, { "name": "Mike Wilkerson", "web": "http://twitter.com/mw77" } ], "repository": { "type": "git", "url": "https://github.com/FortAwesome/Font-Awesome" }, "engines": { "node": ">=6" }, "dependencies": {}, "version": "5.15.4", "name": "@fortawesome/fontawesome-pro", "main": "js/fontawesome.js", "style": "css/fontawesome.css", "license": "UNLICENSED", "scripts": { "postinstall": "node attribution.js" } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_animated.scss ================================================ // Animated Icons // -------------------------- .#{$fa-css-prefix}-spin { animation: fa-spin 2s infinite linear; } .#{$fa-css-prefix}-pulse { animation: fa-spin 1s infinite steps(8); } @keyframes fa-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_bordered-pulled.scss ================================================ // Bordered & Pulled // ------------------------- .#{$fa-css-prefix}-border { border: solid .08em $fa-border-color; border-radius: .1em; padding: .2em .25em .15em; } .#{$fa-css-prefix}-pull-left { float: left; } .#{$fa-css-prefix}-pull-right { float: right; } .#{$fa-css-prefix}, .fas, .far, .fal, .fab { &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_core.scss ================================================ // Base Class Definition // ------------------------- .#{$fa-css-prefix}, .fas, .far, .fal, .fad, .fab { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; font-style: normal; font-variant: normal; text-rendering: auto; line-height: 1; } %fa-icon { @include fa-icon; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_fixed-width.scss ================================================ // Fixed Width Icons // ------------------------- .#{$fa-css-prefix}-fw { text-align: center; width: $fa-fw-width; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_icons.scss ================================================ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ .#{$fa-css-prefix}-abacus:before { content: fa-content($fa-var-abacus); } .#{$fa-css-prefix}-alarm-exclamation:before { content: fa-content($fa-var-alarm-exclamation); } .#{$fa-css-prefix}-align-left:before { content: fa-content($fa-var-align-left); } .#{$fa-css-prefix}-align-slash:before { content: fa-content($fa-var-align-slash); } .#{$fa-css-prefix}-atom-alt:before { content: fa-content($fa-var-atom-alt); } .#{$fa-css-prefix}-aws:before { content: fa-content($fa-var-aws); } .#{$fa-css-prefix}-badge-check:before { content: fa-content($fa-var-badge-check); } .#{$fa-css-prefix}-bell:before { content: fa-content($fa-var-bell); } .#{$fa-css-prefix}-book-dead:before { content: fa-content($fa-var-book-dead); } .#{$fa-css-prefix}-books:before { content: fa-content($fa-var-books); } .#{$fa-css-prefix}-brackets-curly:before { content: fa-content($fa-var-brackets-curly); } .#{$fa-css-prefix}-cc-amazon-pay:before { content: fa-content($fa-var-cc-amazon-pay); } .#{$fa-css-prefix}-cc-amex:before { content: fa-content($fa-var-cc-amex); } .#{$fa-css-prefix}-cc-apple-pay:before { content: fa-content($fa-var-cc-apple-pay); } .#{$fa-css-prefix}-cc-diners-club:before { content: fa-content($fa-var-cc-diners-club); } .#{$fa-css-prefix}-cc-discover:before { content: fa-content($fa-var-cc-discover); } .#{$fa-css-prefix}-cc-jcb:before { content: fa-content($fa-var-cc-jcb); } .#{$fa-css-prefix}-cc-mastercard:before { content: fa-content($fa-var-cc-mastercard); } .#{$fa-css-prefix}-cc-paypal:before { content: fa-content($fa-var-cc-paypal); } .#{$fa-css-prefix}-cc-stripe:before { content: fa-content($fa-var-cc-stripe); } .#{$fa-css-prefix}-cc-visa:before { content: fa-content($fa-var-cc-visa); } .#{$fa-css-prefix}-chart-network:before { content: fa-content($fa-var-chart-network); } .#{$fa-css-prefix}-chart-scatter:before { content: fa-content($fa-var-chart-scatter); } .#{$fa-css-prefix}-check:before { content: fa-content($fa-var-check); } .#{$fa-css-prefix}-check-circle:before { content: fa-content($fa-var-check-circle); } .#{$fa-css-prefix}-circle:before { content: fa-content($fa-var-circle); } .#{$fa-css-prefix}-cloud:before { content: fa-content($fa-var-cloud); } .#{$fa-css-prefix}-clouds:before { content: fa-content($fa-var-clouds); } .#{$fa-css-prefix}-cogs:before { content: fa-content($fa-var-cogs); } .#{$fa-css-prefix}-comment-dots:before { content: fa-content($fa-var-comment-dots); } .#{$fa-css-prefix}-concierge-bell:before { content: fa-content($fa-var-concierge-bell); } .#{$fa-css-prefix}-credit-card:before { content: fa-content($fa-var-credit-card); } .#{$fa-css-prefix}-desktop:before { content: fa-content($fa-var-desktop); } .#{$fa-css-prefix}-discourse:before { content: fa-content($fa-var-discourse); } .#{$fa-css-prefix}-docker:before { content: fa-content($fa-var-docker); } .#{$fa-css-prefix}-dot-circle:before { content: fa-content($fa-var-dot-circle); } .#{$fa-css-prefix}-envelope:before { content: fa-content($fa-var-envelope); } .#{$fa-css-prefix}-exchange-alt:before { content: fa-content($fa-var-exchange-alt); } .#{$fa-css-prefix}-eye:before { content: fa-content($fa-var-eye); } .#{$fa-css-prefix}-file-alt:before { content: fa-content($fa-var-file-alt); } .#{$fa-css-prefix}-file-code:before { content: fa-content($fa-var-file-code); } .#{$fa-css-prefix}-fingerprint:before { content: fa-content($fa-var-fingerprint); } .#{$fa-css-prefix}-github:before { content: fa-content($fa-var-github); } .#{$fa-css-prefix}-globe:before { content: fa-content($fa-var-globe); } .#{$fa-css-prefix}-globe-africa:before { content: fa-content($fa-var-globe-africa); } .#{$fa-css-prefix}-globe-americas:before { content: fa-content($fa-var-globe-americas); } .#{$fa-css-prefix}-globe-asia:before { content: fa-content($fa-var-globe-asia); } .#{$fa-css-prefix}-globe-europe:before { content: fa-content($fa-var-globe-europe); } .#{$fa-css-prefix}-graduation-cap:before { content: fa-content($fa-var-graduation-cap); } .#{$fa-css-prefix}-history:before { content: fa-content($fa-var-history); } .#{$fa-css-prefix}-home:before { content: fa-content($fa-var-home); } .#{$fa-css-prefix}-info:before { content: fa-content($fa-var-info); } .#{$fa-css-prefix}-info-circle:before { content: fa-content($fa-var-info-circle); } .#{$fa-css-prefix}-instagram:before { content: fa-content($fa-var-instagram); } .#{$fa-css-prefix}-key:before { content: fa-content($fa-var-key); } .#{$fa-css-prefix}-key-skeleton:before { content: fa-content($fa-var-key-skeleton); } .#{$fa-css-prefix}-laptop:before { content: fa-content($fa-var-laptop); } .#{$fa-css-prefix}-laptop-code:before { content: fa-content($fa-var-laptop-code); } .#{$fa-css-prefix}-laptop-house:before { content: fa-content($fa-var-laptop-house); } .#{$fa-css-prefix}-life-ring:before { content: fa-content($fa-var-life-ring); } .#{$fa-css-prefix}-lightbulb:before { content: fa-content($fa-var-lightbulb); } .#{$fa-css-prefix}-list-alt:before { content: fa-content($fa-var-list-alt); } .#{$fa-css-prefix}-list-ul:before { content: fa-content($fa-var-list-ul); } .#{$fa-css-prefix}-lock-alt:before { content: fa-content($fa-var-lock-alt); } .#{$fa-css-prefix}-map-marker-alt:before { content: fa-content($fa-var-map-marker-alt); } .#{$fa-css-prefix}-microsoft:before { content: fa-content($fa-var-microsoft); } .#{$fa-css-prefix}-moon-stars:before { content: fa-content($fa-var-moon-stars); } .#{$fa-css-prefix}-network-wired:before { content: fa-content($fa-var-network-wired); } .#{$fa-css-prefix}-planet-ringed:before { content: fa-content($fa-var-planet-ringed); } .#{$fa-css-prefix}-plus:before { content: fa-content($fa-var-plus); } .#{$fa-css-prefix}-question-circle:before { content: fa-content($fa-var-question-circle); } .#{$fa-css-prefix}-quote-left:before { content: fa-content($fa-var-quote-left); } .#{$fa-css-prefix}-random:before { content: fa-content($fa-var-random); } .#{$fa-css-prefix}-rev:before { content: fa-content($fa-var-rev); } .#{$fa-css-prefix}-robot:before { content: fa-content($fa-var-robot); } .#{$fa-css-prefix}-rocket:before { content: fa-content($fa-var-rocket); } .#{$fa-css-prefix}-save:before { content: fa-content($fa-var-save); } .#{$fa-css-prefix}-search:before { content: fa-content($fa-var-search); } .#{$fa-css-prefix}-server:before { content: fa-content($fa-var-server); } .#{$fa-css-prefix}-sign-out:before { content: fa-content($fa-var-sign-out); } .#{$fa-css-prefix}-siren-on:before { content: fa-content($fa-var-siren-on); } .#{$fa-css-prefix}-slack:before { content: fa-content($fa-var-slack); } .#{$fa-css-prefix}-slash:before { content: fa-content($fa-var-slash); } .#{$fa-css-prefix}-smile:before { content: fa-content($fa-var-smile); } .#{$fa-css-prefix}-snowman:before { content: fa-content($fa-var-snowman); } .#{$fa-css-prefix}-spinner-third:before { content: fa-content($fa-var-spinner-third); } .#{$fa-css-prefix}-square-full:before { content: fa-content($fa-var-square-full); } .#{$fa-css-prefix}-sun:before { content: fa-content($fa-var-sun); } .#{$fa-css-prefix}-tasks:before { content: fa-content($fa-var-tasks); } .#{$fa-css-prefix}-times:before { content: fa-content($fa-var-times); } .#{$fa-css-prefix}-times-circle:before { content: fa-content($fa-var-times-circle); } .#{$fa-css-prefix}-twitter:before { content: fa-content($fa-var-twitter); } .#{$fa-css-prefix}-undo:before { content: fa-content($fa-var-undo); } .#{$fa-css-prefix}-undo-alt:before { content: fa-content($fa-var-undo-alt); } .#{$fa-css-prefix}-university:before { content: fa-content($fa-var-university); } .#{$fa-css-prefix}-user:before { content: fa-content($fa-var-user); } .#{$fa-css-prefix}-user-friends:before { content: fa-content($fa-var-user-friends); } .#{$fa-css-prefix}-user-hard-hat:before { content: fa-content($fa-var-user-hard-hat); } .#{$fa-css-prefix}-user-shield:before { content: fa-content($fa-var-user-shield); } .#{$fa-css-prefix}-users:before { content: fa-content($fa-var-users); } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_larger.scss ================================================ // Icon Sizes // ------------------------- // makes the font 33% larger relative to the icon container .#{$fa-css-prefix}-lg { font-size: (4em / 3); line-height: (3em / 4); vertical-align: -.0667em; } .#{$fa-css-prefix}-xs { font-size: .75em; } .#{$fa-css-prefix}-sm { font-size: .875em; } @for $i from 1 through 10 { .#{$fa-css-prefix}-#{$i}x { font-size: $i * 1em; } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_list.scss ================================================ // List Icons // ------------------------- .#{$fa-css-prefix}-ul { list-style-type: none; margin-left: $fa-li-width * 5/4; padding-left: 0; > li { position: relative; } } .#{$fa-css-prefix}-li { left: -$fa-li-width; position: absolute; text-align: center; width: $fa-li-width; line-height: inherit; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_mixins.scss ================================================ // Mixins // -------------------------- @mixin fa-icon { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; font-style: normal; font-variant: normal; font-weight: normal; line-height: 1; } @mixin fa-icon-rotate($degrees, $rotation) { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; transform: rotate($degrees); } @mixin fa-icon-flip($horiz, $vert, $rotation) { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; transform: scale($horiz, $vert); } // Only display content to screen readers. A la Bootstrap 4. // // See: http://a11yproject.com/posts/how-to-hide-content/ @mixin sr-only { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } // Use in conjunction with .sr-only to only display content when it's focused. // // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 // // Credit: HTML5 Boilerplate @mixin sr-only-focusable { &:active, &:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_rotated-flipped.scss ================================================ // Rotated & Flipped Icons // ------------------------- .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } .#{$fa-css-prefix}-flip-both, .#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(-1, -1, 2); } // Hook for IE8-9 // ------------------------- :root { .#{$fa-css-prefix}-rotate-90, .#{$fa-css-prefix}-rotate-180, .#{$fa-css-prefix}-rotate-270, .#{$fa-css-prefix}-flip-horizontal, .#{$fa-css-prefix}-flip-vertical, .#{$fa-css-prefix}-flip-both { filter: none; } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_screen-reader.scss ================================================ // Screen Readers // ------------------------- .sr-only { @include sr-only; } .sr-only-focusable { @include sr-only-focusable; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_stacked.scss ================================================ // Stacked Icons // ------------------------- .#{$fa-css-prefix}-stack { display: inline-block; height: 2em; line-height: 2em; position: relative; vertical-align: middle; width: ($fa-fw-width*2); } .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { left: 0; position: absolute; text-align: center; width: 100%; } .#{$fa-css-prefix}-stack-1x { line-height: inherit; } .#{$fa-css-prefix}-stack-2x { font-size: 2em; } .#{$fa-css-prefix}-inverse { color: $fa-inverse; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/_variables.scss ================================================ // Variables // -------------------------- $fa-font-path: "../webfonts" !default; $fa-font-size-base: 16px !default; $fa-font-display: block !default; $fa-css-prefix: fa !default; $fa-version: "5.15.4" !default; $fa-border-color: #eee !default; $fa-inverse: #fff !default; $fa-li-width: 2em !default; $fa-fw-width: (20em / 16); $fa-primary-opacity: 1 !default; $fa-secondary-opacity: .4 !default; // Convenience function used to set content property @function fa-content($fa-var) { @return unquote("\"#{ $fa-var }\""); } $fa-var-abacus: \f640; $fa-var-alarm-exclamation: \f843; $fa-var-align-left: \f036; $fa-var-align-slash: \f846; $fa-var-atom-alt: \f5d3; $fa-var-aws: \f375; $fa-var-badge-check: \f336; $fa-var-bell: \f0f3; $fa-var-book-dead: \f6b7; $fa-var-books: \f5db; $fa-var-brackets-curly: \f7ea; $fa-var-cc-amazon-pay: \f42d; $fa-var-cc-amex: \f1f3; $fa-var-cc-apple-pay: \f416; $fa-var-cc-diners-club: \f24c; $fa-var-cc-discover: \f1f2; $fa-var-cc-jcb: \f24b; $fa-var-cc-mastercard: \f1f1; $fa-var-cc-paypal: \f1f4; $fa-var-cc-stripe: \f1f5; $fa-var-cc-visa: \f1f0; $fa-var-chart-network: \f78a; $fa-var-chart-scatter: \f7ee; $fa-var-check: \f00c; $fa-var-check-circle: \f058; $fa-var-circle: \f111; $fa-var-cloud: \f0c2; $fa-var-clouds: \f744; $fa-var-cogs: \f085; $fa-var-comment-dots: \f4ad; $fa-var-concierge-bell: \f562; $fa-var-credit-card: \f09d; $fa-var-desktop: \f108; $fa-var-discourse: \f393; $fa-var-docker: \f395; $fa-var-dot-circle: \f192; $fa-var-envelope: \f0e0; $fa-var-exchange-alt: \f362; $fa-var-eye: \f06e; $fa-var-file-alt: \f15c; $fa-var-file-code: \f1c9; $fa-var-fingerprint: \f577; $fa-var-github: \f09b; $fa-var-globe: \f0ac; $fa-var-globe-africa: \f57c; $fa-var-globe-americas: \f57d; $fa-var-globe-asia: \f57e; $fa-var-globe-europe: \f7a2; $fa-var-graduation-cap: \f19d; $fa-var-history: \f1da; $fa-var-home: \f015; $fa-var-info: \f129; $fa-var-info-circle: \f05a; $fa-var-instagram: \f16d; $fa-var-key: \f084; $fa-var-key-skeleton: \f6f3; $fa-var-laptop: \f109; $fa-var-laptop-code: \f5fc; $fa-var-laptop-house: \e066; $fa-var-life-ring: \f1cd; $fa-var-lightbulb: \f0eb; $fa-var-list-alt: \f022; $fa-var-list-ul: \f0ca; $fa-var-lock-alt: \f30d; $fa-var-map-marker-alt: \f3c5; $fa-var-microsoft: \f3ca; $fa-var-moon-stars: \f755; $fa-var-network-wired: \f6ff; $fa-var-planet-ringed: \e020; $fa-var-plus: \f067; $fa-var-question-circle: \f059; $fa-var-quote-left: \f10d; $fa-var-random: \f074; $fa-var-rev: \f5b2; $fa-var-robot: \f544; $fa-var-rocket: \f135; $fa-var-save: \f0c7; $fa-var-search: \f002; $fa-var-server: \f233; $fa-var-sign-out: \f08b; $fa-var-siren-on: \e02e; $fa-var-slack: \f198; $fa-var-slash: \f715; $fa-var-smile: \f118; $fa-var-snowman: \f7d0; $fa-var-spinner-third: \f3f4; $fa-var-square-full: \f45c; $fa-var-sun: \f185; $fa-var-tasks: \f0ae; $fa-var-times: \f00d; $fa-var-times-circle: \f057; $fa-var-twitter: \f099; $fa-var-undo: \f0e2; $fa-var-undo-alt: \f2ea; $fa-var-university: \f19c; $fa-var-user: \f007; $fa-var-user-friends: \f500; $fa-var-user-hard-hat: \f82c; $fa-var-user-shield: \f505; $fa-var-users: \f0c0; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/brands.scss ================================================ @import 'variables'; @font-face { font-family: 'Font Awesome 5 Brands'; font-style: normal; font-weight: 400; font-display: $fa-font-display; src: url('#{$fa-font-path}/fa-brands-400.eot'); src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'), url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'), url('#{$fa-font-path}/fa-brands-400.woff') format('woff'), url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'), url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg'); } .fab { font-family: 'Font Awesome 5 Brands'; font-weight: 400; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/duotone.scss ================================================ @import 'variables'; @font-face { font-family: 'Font Awesome 5 Duotone'; font-style: normal; font-weight: 900; font-display: $fa-font-display; src: url('#{$fa-font-path}/fa-duotone-900.eot'); src: url('#{$fa-font-path}/fa-duotone-900.eot?#iefix') format('embedded-opentype'), url('#{$fa-font-path}/fa-duotone-900.woff2') format('woff2'), url('#{$fa-font-path}/fa-duotone-900.woff') format('woff'), url('#{$fa-font-path}/fa-duotone-900.ttf') format('truetype'), url('#{$fa-font-path}/fa-duotone-900.svg#fontawesome') format('svg'); } .fad { position: relative; font-family: 'Font Awesome 5 Duotone'; font-weight: 900; } .fad:before { position: absolute; color: var(--#{$fa-css-prefix}-primary-color, inherit); opacity: $fa-primary-opacity; opacity: var(--#{$fa-css-prefix}-primary-opacity, #{$fa-primary-opacity}); } .fad:after { color: var(--#{$fa-css-prefix}-secondary-color, inherit); opacity: $fa-secondary-opacity; opacity: var(--#{$fa-css-prefix}-secondary-opacity, #{$fa-secondary-opacity}); } .#{$fa-css-prefix}-swap-opacity .fad:before, .fad.#{$fa-css-prefix}-swap-opacity:before { opacity: $fa-secondary-opacity; opacity: var(--#{$fa-css-prefix}-secondary-opacity, #{$fa-secondary-opacity}); } .#{$fa-css-prefix}-swap-opacity .fad:after, .fad.#{$fa-css-prefix}-swap-opacity:after { opacity: $fa-primary-opacity; opacity: var(--#{$fa-css-prefix}-primary-opacity, #{$fa-primary-opacity}); } .fad.#{$fa-css-prefix}-inverse { color: $fa-inverse; } .fad.#{$fa-css-prefix}-stack-1x, .fad.#{$fa-css-prefix}-stack-2x { position: absolute; } .fad.#{$fa-css-prefix}-stack-1x:before, .fad.#{$fa-css-prefix}-stack-2x:before, .fad.#{$fa-css-prefix}-fw:before { left: 50%; transform: translateX(-50%); } .fad.#{$fa-css-prefix}-abacus:after { content: fa-content(\10f640); } .fad.#{$fa-css-prefix}-align-slash:after { content: fa-content(\10f846); } .fad.#{$fa-css-prefix}-atom-alt:after { content: fa-content(\10f5d3); } .fad.#{$fa-css-prefix}-badge-check:after { content: fa-content(\10f336); } .fad.#{$fa-css-prefix}-bell:after { content: fa-content(\10f0f3); } .fad.#{$fa-css-prefix}-books:after { content: fa-content(\10f5db); } .fad.#{$fa-css-prefix}-brackets-curly:after { content: fa-content(\10f7ea); } .fad.#{$fa-css-prefix}-chart-network:after { content: fa-content(\10f78a); } .fad.#{$fa-css-prefix}-chart-scatter:after { content: fa-content(\10f7ee); } .fad.#{$fa-css-prefix}-check:after { content: fa-content(\10f00c); } .fad.#{$fa-css-prefix}-circle:after { content: fa-content(\10f111); } .fad.#{$fa-css-prefix}-clouds:after { content: fa-content(\10f744); } .fad.#{$fa-css-prefix}-cogs:after { content: fa-content(\10f085); } .fad.#{$fa-css-prefix}-comment-dots:after { content: fa-content(\10f4ad); } .fad.#{$fa-css-prefix}-concierge-bell:after { content: fa-content(\10f562); } .fad.#{$fa-css-prefix}-dot-circle:after { content: fa-content(\10f192); } .fad.#{$fa-css-prefix}-envelope:after { content: fa-content(\10f0e0); } .fad.#{$fa-css-prefix}-exchange-alt:after { content: fa-content(\10f362); } .fad.#{$fa-css-prefix}-file-alt:after { content: fa-content(\10f15c); } .fad.#{$fa-css-prefix}-file-code:after { content: fa-content(\10f1c9); } .fad.#{$fa-css-prefix}-globe:after { content: fa-content(\10f0ac); } .fad.#{$fa-css-prefix}-globe-africa:after { content: fa-content(\10f57c); } .fad.#{$fa-css-prefix}-globe-americas:after { content: fa-content(\10f57d); } .fad.#{$fa-css-prefix}-globe-asia:after { content: fa-content(\10f57e); } .fad.#{$fa-css-prefix}-globe-europe:after { content: fa-content(\10f7a2); } .fad.#{$fa-css-prefix}-graduation-cap:after { content: fa-content(\10f19d); } .fad.#{$fa-css-prefix}-history:after { content: fa-content(\10f1da); } .fad.#{$fa-css-prefix}-key:after { content: fa-content(\10f084); } .fad.#{$fa-css-prefix}-key-skeleton:after { content: fa-content(\10f6f3); } .fad.#{$fa-css-prefix}-laptop:after { content: fa-content(\10f109); } .fad.#{$fa-css-prefix}-laptop-code:after { content: fa-content(\10f5fc); } .fad.#{$fa-css-prefix}-laptop-house:after { content: fa-content(\10e066); } .fad.#{$fa-css-prefix}-life-ring:after { content: fa-content(\10f1cd); } .fad.#{$fa-css-prefix}-lightbulb:after { content: fa-content(\10f0eb); } .fad.#{$fa-css-prefix}-list-alt:after { content: fa-content(\10f022); } .fad.#{$fa-css-prefix}-list-ul:after { content: fa-content(\10f0ca); } .fad.#{$fa-css-prefix}-lock-alt:after { content: fa-content(\10f30d); } .fad.#{$fa-css-prefix}-map-marker-alt:after { content: fa-content(\10f3c5); } .fad.#{$fa-css-prefix}-moon-stars:after { content: fa-content(\10f755); } .fad.#{$fa-css-prefix}-network-wired:after { content: fa-content(\10f6ff); } .fad.#{$fa-css-prefix}-planet-ringed:after { content: fa-content(\10e020); } .fad.#{$fa-css-prefix}-question-circle:after { content: fa-content(\10f059); } .fad.#{$fa-css-prefix}-quote-left:after { content: fa-content(\10f10d); } .fad.#{$fa-css-prefix}-random:after { content: fa-content(\10f074); } .fad.#{$fa-css-prefix}-rocket:after { content: fa-content(\10f135); } .fad.#{$fa-css-prefix}-search:after { content: fa-content(\10f002); } .fad.#{$fa-css-prefix}-server:after { content: fa-content(\10f233); } .fad.#{$fa-css-prefix}-sign-out:after { content: fa-content(\10f08b); } .fad.#{$fa-css-prefix}-siren-on:after { content: fa-content(\10e02e); } .fad.#{$fa-css-prefix}-smile:after { content: fa-content(\10f118); } .fad.#{$fa-css-prefix}-snowman:after { content: fa-content(\10f7d0); } .fad.#{$fa-css-prefix}-sun:after { content: fa-content(\10f185); } .fad.#{$fa-css-prefix}-tasks:after { content: fa-content(\10f0ae); } .fad.#{$fa-css-prefix}-university:after { content: fa-content(\10f19c); } .fad.#{$fa-css-prefix}-user:after { content: fa-content(\10f007); } .fad.#{$fa-css-prefix}-user-hard-hat:after { content: fa-content(\10f82c); } .fad.#{$fa-css-prefix}-user-shield:after { content: fa-content(\10f505); } .fad.#{$fa-css-prefix}-users:after { content: fa-content(\10f0c0); } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/fontawesome.scss ================================================ @import 'variables'; @import 'mixins'; @import 'core'; @import 'larger'; @import 'fixed-width'; @import 'list'; @import 'bordered-pulled'; @import 'animated'; @import 'rotated-flipped'; @import 'stacked'; @import 'icons'; @import 'screen-reader'; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/regular.scss ================================================ @import 'variables'; @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 400; font-display: $fa-font-display; src: url('#{$fa-font-path}/fa-regular-400.eot'); src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'), url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'), url('#{$fa-font-path}/fa-regular-400.woff') format('woff'), url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'), url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg'); } .far { font-family: 'Font Awesome 5 Pro'; font-weight: 400; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-pro/scss/solid.scss ================================================ @import 'variables'; @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 900; font-display: $fa-font-display; src: url('#{$fa-font-path}/fa-solid-900.eot'); src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'), url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'), url('#{$fa-font-path}/fa-solid-900.woff') format('woff'), url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'), url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg'); } .fa, .fas { font-family: 'Font Awesome 5 Pro'; font-weight: 900; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/LICENSE.txt ================================================ Font Awesome Free License ------------------------- Font Awesome Free is free, open source, and GPL friendly. You can use it for commercial projects, open source projects, or really almost whatever you want. Full Font Awesome Free license: https://fontawesome.com/license/free. # Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) In the Font Awesome Free download, the CC BY 4.0 license applies to all icons packaged as SVG and JS file types. # Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL) In the Font Awesome Free download, the SIL OFL license applies to all icons packaged as web and desktop font files. # Code: MIT License (https://opensource.org/licenses/MIT) In the Font Awesome Free download, the MIT license applies to all non-font and non-icon files. # Attribution Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font Awesome Free files already contain embedded comments with sufficient attribution, so you shouldn't need to do anything additional when using these files normally. We've kept attribution comments terse, so we ask that you do not actively work to remove them from files, especially code. They're a great way for folks to learn about Font Awesome. # Brand Icons All brand icons are trademarks of their respective owners. The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa. **Please do not use brand logos for any purpose except to represent the company, product, or service to which they refer.** ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/README.md ================================================ # @fortawesome/fontawesome-svg-core - SVG with JavaScript version > "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum" [![npm](https://img.shields.io/npm/v/@fortawesome/fontawesome-svg-core.svg?style=flat-square)](https://www.npmjs.com/package/@fortawesome/fontawesome-svg-core) ## Installation ``` $ npm i --save @fortawesome/fontawesome-svg-core ``` Or ``` $ yarn add @fortawesome/fontawesome-svg-core ``` ## Documentation Get started [here](https://fontawesome.com/how-to-use/on-the-web/setup/getting-started). Continue your journey [here](https://fontawesome.com/how-to-use/on-the-web/advanced). Or go straight to the [API documentation](https://fontawesome.com/how-to-use/with-the-api). ## Issues and support Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to. ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/attribution.js ================================================ console.log(`Font Awesome Free 1.2.36 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) `) ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/index.d.ts ================================================ import {IconDefinition, IconLookup, IconName, IconPrefix, IconPathData, IconPack } from '@fortawesome/fontawesome-common-types'; export {IconDefinition, IconLookup, IconName, IconPrefix, IconPathData, IconPack } from '@fortawesome/fontawesome-common-types'; export const dom: DOM; export const library: Library; export const parse: { transform(transformString: string): Transform }; export const config: Config; export function noAuto():void; export function findIconDefinition(iconLookup: IconLookup): IconDefinition; export function text(content: string, params?: TextParams): Text; export function counter(content: string | number, params?: CounterParams): Counter; export function toHtml(content: any): string; export function toHtml(abstractNodes: AbstractElement): string; export function layer( assembler: ( addLayerCallback: (layerToAdd: IconOrText | IconOrText[]) => void ) => void, params?: LayerParams ): Layer; export function icon(icon: IconName | IconLookup, params?: IconParams): Icon; export type IconProp = IconName | [IconPrefix, IconName] | IconLookup; export type FlipProp = "horizontal" | "vertical" | "both"; export type SizeProp = | "xs" | "lg" | "sm" | "1x" | "2x" | "3x" | "4x" | "5x" | "6x" | "7x" | "8x" | "9x" | "10x"; export type PullProp = "left" | "right"; export type RotateProp = 90 | 180 | 270; export type FaSymbol = string | boolean; export interface Config { familyPrefix: IconPrefix; replacementClass: string; autoReplaceSvg: boolean | 'nest'; autoAddCss: boolean; autoA11y: boolean; searchPseudoElements: boolean; observeMutations: boolean; keepOriginalSource: boolean; measurePerformance: boolean; showMissingIcons: boolean; } export interface AbstractElement { tag: string; attributes: any; children?: AbstractElement[]; } export interface FontawesomeObject { readonly abstract: AbstractElement[]; readonly html: string[]; readonly node: HTMLCollection; } export interface Icon extends FontawesomeObject, IconDefinition { readonly type: "icon"; } export interface Text extends FontawesomeObject { readonly type: "text"; } export interface Counter extends FontawesomeObject { readonly type: "counter"; } export interface Layer extends FontawesomeObject { readonly type: "layer"; } type IconOrText = Icon | Text; export interface Attributes { [key: string]: number | string; } export interface Styles { [key: string]: string; } export interface Transform { size?: number; x?: number; y?: number; rotate?: number; flipX?: boolean; flipY?: boolean; } export interface Params { title?: string; titleId?: string; classes?: string | string[]; attributes?: Attributes; styles?: Styles; } export interface CounterParams extends Params { } export interface LayerParams { classes?: string | string[]; } export interface TextParams extends Params { transform?: Transform; } export interface IconParams extends Params { transform?: Transform; symbol?: FaSymbol; mask?: IconLookup; maskId?: string; } export interface DOM { i2svg(params?: { node: Node; callback: () => void }): Promise; css(): string; insertCss(): string; watch(): void; } type IconDefinitionOrPack = IconDefinition | IconPack; export interface Library { add(...definitions: IconDefinitionOrPack[]): void; reset(): void; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/index.es.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var noop = function noop() {}; var _WINDOW = {}; var _DOCUMENT = {}; var _MUTATION_OBSERVER = null; var _PERFORMANCE = { mark: noop, measure: noop }; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver; if (typeof performance !== 'undefined') _PERFORMANCE = performance; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var MUTATION_OBSERVER = _MUTATION_OBSERVER; var PERFORMANCE = _PERFORMANCE; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var UNITS_IN_GRID = 16; var DEFAULT_FAMILY_PREFIX = 'fa'; var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa'; var DATA_FA_I2SVG = 'data-fa-i2svg'; var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element'; var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending'; var DATA_PREFIX = 'data-prefix'; var DATA_ICON = 'data-icon'; var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg'; var MUTATION_APPROACH_ASYNC = 'async'; var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT']; var PRODUCTION = function () { try { return process.env.NODE_ENV === 'production'; } catch (e) { return false; } }(); var PREFIX_TO_STYLE = { 'fas': 'solid', 'far': 'regular', 'fal': 'light', 'fad': 'duotone', 'fab': 'brands', 'fak': 'kit', 'fa': 'solid' }; var STYLE_TO_PREFIX = { 'solid': 'fas', 'regular': 'far', 'light': 'fal', 'duotone': 'fad', 'brands': 'fab', 'kit': 'fak' }; var LAYERS_TEXT_CLASSNAME = 'fa-layers-text'; var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements? var FONT_WEIGHT_TO_PREFIX = { '900': 'fas', '400': 'far', 'normal': 'far', '300': 'fal' }; var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask']; var DUOTONE_CLASSES = { GROUP: 'group', SWAP_OPACITY: 'swap-opacity', PRIMARY: 'primary', SECONDARY: 'secondary' }; var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) { return "".concat(n, "x"); })).concat(oneToTwenty.map(function (n) { return "w-".concat(n); })); var initial = WINDOW.FontAwesomeConfig || {}; function getAttrConfig(attr) { var element = DOCUMENT.querySelector('script[' + attr + ']'); if (element) { return element.getAttribute(attr); } } function coerce(val) { // Getting an empty string will occur if the attribute is set on the HTML tag but without a value // We'll assume that this is an indication that it should be toggled to true // For example if (val === '') return true; if (val === 'false') return false; if (val === 'true') return true; return val; } if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') { var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']]; attrs.forEach(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), attr = _ref2[0], key = _ref2[1]; var val = coerce(getAttrConfig(attr)); if (val !== undefined && val !== null) { initial[key] = val; } }); } var _default = { familyPrefix: DEFAULT_FAMILY_PREFIX, replacementClass: DEFAULT_REPLACEMENT_CLASS, autoReplaceSvg: true, autoAddCss: true, autoA11y: true, searchPseudoElements: false, observeMutations: true, mutateApproach: 'async', keepOriginalSource: true, measurePerformance: false, showMissingIcons: true }; var _config = _objectSpread2(_objectSpread2({}, _default), initial); if (!_config.autoReplaceSvg) _config.observeMutations = false; var config = _objectSpread2({}, _config); WINDOW.FontAwesomeConfig = config; var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; var functions = []; var listener = function listener() { DOCUMENT.removeEventListener('DOMContentLoaded', listener); loaded = 1; functions.map(function (fn) { return fn(); }); }; var loaded = false; if (IS_DOM) { loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState); if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener); } function domready (fn) { if (!IS_DOM) return; loaded ? setTimeout(fn, 0) : functions.push(fn); } var PENDING = 'pending'; var SETTLED = 'settled'; var FULFILLED = 'fulfilled'; var REJECTED = 'rejected'; var NOOP = function NOOP() {}; var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function'; var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate; var asyncQueue = []; var asyncTimer; function asyncFlush() { // run promise callbacks for (var i = 0; i < asyncQueue.length; i++) { asyncQueue[i][0](asyncQueue[i][1]); } // reset async asyncQueue asyncQueue = []; asyncTimer = false; } function asyncCall(callback, arg) { asyncQueue.push([callback, arg]); if (!asyncTimer) { asyncTimer = true; asyncSetTimer(asyncFlush, 0); } } function invokeResolver(resolver, promise) { function resolvePromise(value) { resolve(promise, value); } function rejectPromise(reason) { reject(promise, reason); } try { resolver(resolvePromise, rejectPromise); } catch (e) { rejectPromise(e); } } function invokeCallback(subscriber) { var owner = subscriber.owner; var settled = owner._state; var value = owner._data; var callback = subscriber[settled]; var promise = subscriber.then; if (typeof callback === 'function') { settled = FULFILLED; try { value = callback(value); } catch (e) { reject(promise, e); } } if (!handleThenable(promise, value)) { if (settled === FULFILLED) { resolve(promise, value); } if (settled === REJECTED) { reject(promise, value); } } } function handleThenable(promise, value) { var resolved; try { if (promise === value) { throw new TypeError('A promises callback cannot return that same promise.'); } if (value && (typeof value === 'function' || _typeof(value) === 'object')) { // then should be retrieved only once var then = value.then; if (typeof then === 'function') { then.call(value, function (val) { if (!resolved) { resolved = true; if (value === val) { fulfill(promise, val); } else { resolve(promise, val); } } }, function (reason) { if (!resolved) { resolved = true; reject(promise, reason); } }); return true; } } } catch (e) { if (!resolved) { reject(promise, e); } return true; } return false; } function resolve(promise, value) { if (promise === value || !handleThenable(promise, value)) { fulfill(promise, value); } } function fulfill(promise, value) { if (promise._state === PENDING) { promise._state = SETTLED; promise._data = value; asyncCall(publishFulfillment, promise); } } function reject(promise, reason) { if (promise._state === PENDING) { promise._state = SETTLED; promise._data = reason; asyncCall(publishRejection, promise); } } function publish(promise) { promise._then = promise._then.forEach(invokeCallback); } function publishFulfillment(promise) { promise._state = FULFILLED; publish(promise); } function publishRejection(promise) { promise._state = REJECTED; publish(promise); if (!promise._handled && isNode) { global.process.emit('unhandledRejection', promise._data, promise); } } function notifyRejectionHandled(promise) { global.process.emit('rejectionHandled', promise); } /** * @class */ function P(resolver) { if (typeof resolver !== 'function') { throw new TypeError('Promise resolver ' + resolver + ' is not a function'); } if (this instanceof P === false) { throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.'); } this._then = []; invokeResolver(resolver, this); } P.prototype = { constructor: P, _state: PENDING, _then: null, _data: undefined, _handled: false, then: function then(onFulfillment, onRejection) { var subscriber = { owner: this, then: new this.constructor(NOOP), fulfilled: onFulfillment, rejected: onRejection }; if ((onRejection || onFulfillment) && !this._handled) { this._handled = true; if (this._state === REJECTED && isNode) { asyncCall(notifyRejectionHandled, this); } } if (this._state === FULFILLED || this._state === REJECTED) { // already resolved, call callback async asyncCall(invokeCallback, subscriber); } else { // subscribe this._then.push(subscriber); } return subscriber.then; }, catch: function _catch(onRejection) { return this.then(null, onRejection); } }; P.all = function (promises) { if (!Array.isArray(promises)) { throw new TypeError('You must pass an array to Promise.all().'); } return new P(function (resolve, reject) { var results = []; var remaining = 0; function resolver(index) { remaining++; return function (value) { results[index] = value; if (! --remaining) { resolve(results); } }; } for (var i = 0, promise; i < promises.length; i++) { promise = promises[i]; if (promise && typeof promise.then === 'function') { promise.then(resolver(i), reject); } else { results[i] = promise; } } if (!remaining) { resolve(results); } }); }; P.race = function (promises) { if (!Array.isArray(promises)) { throw new TypeError('You must pass an array to Promise.race().'); } return new P(function (resolve, reject) { for (var i = 0, promise; i < promises.length; i++) { promise = promises[i]; if (promise && typeof promise.then === 'function') { promise.then(resolve, reject); } else { resolve(promise); } } }); }; P.resolve = function (value) { if (value && _typeof(value) === 'object' && value.constructor === P) { return value; } return new P(function (resolve) { resolve(value); }); }; P.reject = function (reason) { return new P(function (resolve, reject) { reject(reason); }); }; var picked = typeof Promise === 'function' ? Promise : P; var d = UNITS_IN_GRID; var meaninglessTransform = { size: 16, x: 0, y: 0, rotate: 0, flipX: false, flipY: false }; function isReserved(name) { return ~RESERVED_CLASSES.indexOf(name); } function insertCss(css) { if (!css || !IS_DOM) { return; } var style = DOCUMENT.createElement('style'); style.setAttribute('type', 'text/css'); style.innerHTML = css; var headChildren = DOCUMENT.head.childNodes; var beforeChild = null; for (var i = headChildren.length - 1; i > -1; i--) { var child = headChildren[i]; var tagName = (child.tagName || '').toUpperCase(); if (['STYLE', 'LINK'].indexOf(tagName) > -1) { beforeChild = child; } } DOCUMENT.head.insertBefore(style, beforeChild); return css; } var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; function nextUniqueId() { var size = 12; var id = ''; while (size-- > 0) { id += idPool[Math.random() * 62 | 0]; } return id; } function toArray(obj) { var array = []; for (var i = (obj || []).length >>> 0; i--;) { array[i] = obj[i]; } return array; } function classArray(node) { if (node.classList) { return toArray(node.classList); } else { return (node.getAttribute('class') || '').split(' ').filter(function (i) { return i; }); } } function getIconName(familyPrefix, cls) { var parts = cls.split('-'); var prefix = parts[0]; var iconName = parts.slice(1).join('-'); if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) { return iconName; } else { return null; } } function htmlEscape(str) { return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>'); } function joinAttributes(attributes) { return Object.keys(attributes || {}).reduce(function (acc, attributeName) { return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" "); }, '').trim(); } function joinStyles(styles) { return Object.keys(styles || {}).reduce(function (acc, styleName) { return acc + "".concat(styleName, ": ").concat(styles[styleName], ";"); }, ''); } function transformIsMeaningful(transform) { return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY; } function transformForSvg(_ref) { var transform = _ref.transform, containerWidth = _ref.containerWidth, iconWidth = _ref.iconWidth; var outer = { transform: "translate(".concat(containerWidth / 2, " 256)") }; var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") "); var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") "); var innerRotate = "rotate(".concat(transform.rotate, " 0 0)"); var inner = { transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate) }; var path = { transform: "translate(".concat(iconWidth / 2 * -1, " -256)") }; return { outer: outer, inner: inner, path: path }; } function transformForCss(_ref2) { var transform = _ref2.transform, _ref2$width = _ref2.width, width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width, _ref2$height = _ref2.height, height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height, _ref2$startCentered = _ref2.startCentered, startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered; var val = ''; if (startCentered && IS_IE) { val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) "); } else if (startCentered) { val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) "); } else { val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) "); } val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") "); val += "rotate(".concat(transform.rotate, "deg) "); return val; } var ALL_SPACE = { x: 0, y: 0, width: '100%', height: '100%' }; function fillBlack(abstract) { var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; if (abstract.attributes && (abstract.attributes.fill || force)) { abstract.attributes.fill = 'black'; } return abstract; } function deGroup(abstract) { if (abstract.tag === 'g') { return abstract.children; } else { return [abstract]; } } function makeIconMasking (_ref) { var children = _ref.children, attributes = _ref.attributes, main = _ref.main, mask = _ref.mask, explicitMaskId = _ref.maskId, transform = _ref.transform; var mainWidth = main.width, mainPath = main.icon; var maskWidth = mask.width, maskPath = mask.icon; var trans = transformForSvg({ transform: transform, containerWidth: maskWidth, iconWidth: mainWidth }); var maskRect = { tag: 'rect', attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { fill: 'white' }) }; var maskInnerGroupChildrenMixin = mainPath.children ? { children: mainPath.children.map(fillBlack) } : {}; var maskInnerGroup = { tag: 'g', attributes: _objectSpread2({}, trans.inner), children: [fillBlack(_objectSpread2({ tag: mainPath.tag, attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path) }, maskInnerGroupChildrenMixin))] }; var maskOuterGroup = { tag: 'g', attributes: _objectSpread2({}, trans.outer), children: [maskInnerGroup] }; var maskId = "mask-".concat(explicitMaskId || nextUniqueId()); var clipId = "clip-".concat(explicitMaskId || nextUniqueId()); var maskTag = { tag: 'mask', attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { id: maskId, maskUnits: 'userSpaceOnUse', maskContentUnits: 'userSpaceOnUse' }), children: [maskRect, maskOuterGroup] }; var defs = { tag: 'defs', children: [{ tag: 'clipPath', attributes: { id: clipId }, children: deGroup(maskPath) }, maskTag] }; children.push(defs, { tag: 'rect', attributes: _objectSpread2({ fill: 'currentColor', 'clip-path': "url(#".concat(clipId, ")"), mask: "url(#".concat(maskId, ")") }, ALL_SPACE) }); return { children: children, attributes: attributes }; } function makeIconStandard (_ref) { var children = _ref.children, attributes = _ref.attributes, main = _ref.main, transform = _ref.transform, styles = _ref.styles; var styleString = joinStyles(styles); if (styleString.length > 0) { attributes['style'] = styleString; } if (transformIsMeaningful(transform)) { var trans = transformForSvg({ transform: transform, containerWidth: main.width, iconWidth: main.width }); children.push({ tag: 'g', attributes: _objectSpread2({}, trans.outer), children: [{ tag: 'g', attributes: _objectSpread2({}, trans.inner), children: [{ tag: main.icon.tag, children: main.icon.children, attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), trans.path) }] }] }); } else { children.push(main.icon); } return { children: children, attributes: attributes }; } function asIcon (_ref) { var children = _ref.children, main = _ref.main, mask = _ref.mask, attributes = _ref.attributes, styles = _ref.styles, transform = _ref.transform; if (transformIsMeaningful(transform) && main.found && !mask.found) { var width = main.width, height = main.height; var offset = { x: width / height / 2, y: 0.5 }; attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, { 'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em") })); } return [{ tag: 'svg', attributes: attributes, children: children }]; } function asSymbol (_ref) { var prefix = _ref.prefix, iconName = _ref.iconName, children = _ref.children, attributes = _ref.attributes, symbol = _ref.symbol; var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol; return [{ tag: 'svg', attributes: { style: 'display: none;' }, children: [{ tag: 'symbol', attributes: _objectSpread2(_objectSpread2({}, attributes), {}, { id: id }), children: children }] }]; } function makeInlineSvgAbstract(params) { var _params$icons = params.icons, main = _params$icons.main, mask = _params$icons.mask, prefix = params.prefix, iconName = params.iconName, transform = params.transform, symbol = params.symbol, title = params.title, maskId = params.maskId, titleId = params.titleId, extra = params.extra, _params$watchable = params.watchable, watchable = _params$watchable === void 0 ? false : _params$watchable; var _ref = mask.found ? mask : main, width = _ref.width, height = _ref.height; var isUploadedIcon = prefix === 'fak'; var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16)); var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) { return extra.classes.indexOf(c) === -1; }).filter(function (c) { return c !== '' || !!c; }).concat(extra.classes).join(' '); var content = { children: [], attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, { 'data-prefix': prefix, 'data-icon': iconName, 'class': attrClass, 'role': extra.attributes.role || 'img', 'xmlns': 'http://www.w3.org/2000/svg', 'viewBox': "0 0 ".concat(width, " ").concat(height) }) }; var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? { width: "".concat(width / height * 16 * 0.0625, "em") } : {}; if (watchable) { content.attributes[DATA_FA_I2SVG] = ''; } if (title) content.children.push({ tag: 'title', attributes: { id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId()) }, children: [title] }); var args = _objectSpread2(_objectSpread2({}, content), {}, { prefix: prefix, iconName: iconName, main: main, mask: mask, maskId: maskId, transform: transform, symbol: symbol, styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles) }); var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args), children = _ref2.children, attributes = _ref2.attributes; args.children = children; args.attributes = attributes; if (symbol) { return asSymbol(args); } else { return asIcon(args); } } function makeLayersTextAbstract(params) { var content = params.content, width = params.width, height = params.height, transform = params.transform, title = params.title, extra = params.extra, _params$watchable2 = params.watchable, watchable = _params$watchable2 === void 0 ? false : _params$watchable2; var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { 'title': title } : {}), {}, { 'class': extra.classes.join(' ') }); if (watchable) { attributes[DATA_FA_I2SVG] = ''; } var styles = _objectSpread2({}, extra.styles); if (transformIsMeaningful(transform)) { styles['transform'] = transformForCss({ transform: transform, startCentered: true, width: width, height: height }); styles['-webkit-transform'] = styles['transform']; } var styleString = joinStyles(styles); if (styleString.length > 0) { attributes['style'] = styleString; } var val = []; val.push({ tag: 'span', attributes: attributes, children: [content] }); if (title) { val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] }); } return val; } function makeLayersCounterAbstract(params) { var content = params.content, title = params.title, extra = params.extra; var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { 'title': title } : {}), {}, { 'class': extra.classes.join(' ') }); var styleString = joinStyles(extra.styles); if (styleString.length > 0) { attributes['style'] = styleString; } var val = []; val.push({ tag: 'span', attributes: attributes, children: [content] }); if (title) { val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] }); } return val; } var noop$1 = function noop() {}; var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { mark: noop$1, measure: noop$1 }; var preamble = "FA \"5.15.4\""; var begin = function begin(name) { p.mark("".concat(preamble, " ").concat(name, " begins")); return function () { return end(name); }; }; var end = function end(name) { p.mark("".concat(preamble, " ").concat(name, " ends")); p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends")); }; var perf = { begin: begin, end: end }; /** * Internal helper to bind a function known to have 4 arguments * to a given context. */ var bindInternal4 = function bindInternal4(func, thisContext) { return function (a, b, c, d) { return func.call(thisContext, a, b, c, d); }; }; /** * # Reduce * * A fast object `.reduce()` implementation. * * @param {Object} subject The object to reduce over. * @param {Function} fn The reducer function. * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0]. * @param {Object} thisContext The context for the reducer. * @return {mixed} The final result. */ var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) { var keys = Object.keys(subject), length = keys.length, iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn, i, key, result; if (initialValue === undefined) { i = 1; result = subject[keys[0]]; } else { i = 0; result = initialValue; } for (; i < length; i++) { key = keys[i]; result = iterator(result, subject[key], key, subject); } return result; }; function toHex(unicode) { var result = ''; for (var i = 0; i < unicode.length; i++) { var hex = unicode.charCodeAt(i).toString(16); result += ('000' + hex).slice(-4); } return result; } function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var styles = namespace.styles, shims = namespace.shims; var _byUnicode = {}; var _byLigature = {}; var _byOldName = {}; var build = function build() { var lookup = function lookup(reducer) { return reduce(styles, function (o, style, prefix) { o[prefix] = reduce(style, reducer, {}); return o; }, {}); }; _byUnicode = lookup(function (acc, icon, iconName) { if (icon[3]) { acc[icon[3]] = iconName; } return acc; }); _byLigature = lookup(function (acc, icon, iconName) { var ligatures = icon[2]; acc[iconName] = iconName; ligatures.forEach(function (ligature) { acc[ligature] = iconName; }); return acc; }); var hasRegular = ('far' in styles); _byOldName = reduce(shims, function (acc, shim) { var oldName = shim[0]; var prefix = shim[1]; var iconName = shim[2]; if (prefix === 'far' && !hasRegular) { prefix = 'fas'; } acc[oldName] = { prefix: prefix, iconName: iconName }; return acc; }, {}); }; build(); function byUnicode(prefix, unicode) { return (_byUnicode[prefix] || {})[unicode]; } function byLigature(prefix, ligature) { return (_byLigature[prefix] || {})[ligature]; } function byOldName(name) { return _byOldName[name] || { prefix: null, iconName: null }; } var styles$1 = namespace.styles; var emptyCanonicalIcon = function emptyCanonicalIcon() { return { prefix: null, iconName: null, rest: [] }; }; function getCanonicalIcon(values) { return values.reduce(function (acc, cls) { var iconName = getIconName(config.familyPrefix, cls); if (styles$1[cls]) { acc.prefix = cls; } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) { acc.prefix = cls; } else if (iconName) { var shim = acc.prefix === 'fa' ? byOldName(iconName) : {}; acc.iconName = shim.iconName || iconName; acc.prefix = shim.prefix || acc.prefix; } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) { acc.rest.push(cls); } return acc; }, emptyCanonicalIcon()); } function iconFromMapping(mapping, prefix, iconName) { if (mapping && mapping[prefix] && mapping[prefix][iconName]) { return { prefix: prefix, iconName: iconName, icon: mapping[prefix][iconName] }; } } function toHtml(abstractNodes) { var tag = abstractNodes.tag, _abstractNodes$attrib = abstractNodes.attributes, attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib, _abstractNodes$childr = abstractNodes.children, children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr; if (typeof abstractNodes === 'string') { return htmlEscape(abstractNodes); } else { return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), ""); } } var noop$2 = function noop() {}; function isWatched(node) { var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null; return typeof i2svg === 'string'; } function getMutator() { if (config.autoReplaceSvg === true) { return mutators.replace; } var mutator = mutators[config.autoReplaceSvg]; return mutator || mutators.replace; } var mutators = { replace: function replace(mutation) { var node = mutation[0]; var abstract = mutation[1]; var newOuterHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); if (node.parentNode && node.outerHTML) { node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "") : ''); } else if (node.parentNode) { var newNode = document.createElement('span'); node.parentNode.replaceChild(newNode, node); newNode.outerHTML = newOuterHTML; } }, nest: function nest(mutation) { var node = mutation[0]; var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it. // Short-circuit to the standard replacement if (~classArray(node).indexOf(config.replacementClass)) { return mutators.replace(mutation); } var forSvg = new RegExp("".concat(config.familyPrefix, "-.*")); delete abstract[0].attributes.style; delete abstract[0].attributes.id; var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) { if (cls === config.replacementClass || cls.match(forSvg)) { acc.toSvg.push(cls); } else { acc.toNode.push(cls); } return acc; }, { toNode: [], toSvg: [] }); abstract[0].attributes.class = splitClasses.toSvg.join(' '); var newInnerHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); node.setAttribute('class', splitClasses.toNode.join(' ')); node.setAttribute(DATA_FA_I2SVG, ''); node.innerHTML = newInnerHTML; } }; function performOperationSync(op) { op(); } function perform(mutations, callback) { var callbackFunction = typeof callback === 'function' ? callback : noop$2; if (mutations.length === 0) { callbackFunction(); } else { var frame = performOperationSync; if (config.mutateApproach === MUTATION_APPROACH_ASYNC) { frame = WINDOW.requestAnimationFrame || performOperationSync; } frame(function () { var mutator = getMutator(); var mark = perf.begin('mutate'); mutations.map(mutator); mark(); callbackFunction(); }); } } var disabled = false; function disableObservation() { disabled = true; } function enableObservation() { disabled = false; } var mo = null; function observe(options) { if (!MUTATION_OBSERVER) { return; } if (!config.observeMutations) { return; } var treeCallback = options.treeCallback, nodeCallback = options.nodeCallback, pseudoElementsCallback = options.pseudoElementsCallback, _options$observeMutat = options.observeMutationsRoot, observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat; mo = new MUTATION_OBSERVER(function (objects) { if (disabled) return; toArray(objects).forEach(function (mutationRecord) { if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) { if (config.searchPseudoElements) { pseudoElementsCallback(mutationRecord.target); } treeCallback(mutationRecord.target); } if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) { pseudoElementsCallback(mutationRecord.target.parentNode); } if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) { if (mutationRecord.attributeName === 'class') { var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)), prefix = _getCanonicalIcon.prefix, iconName = _getCanonicalIcon.iconName; if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix); if (iconName) mutationRecord.target.setAttribute('data-icon', iconName); } else { nodeCallback(mutationRecord.target); } } }); }); if (!IS_DOM) return; mo.observe(observeMutationsRoot, { childList: true, attributes: true, characterData: true, subtree: true }); } function disconnect() { if (!mo) return; mo.disconnect(); } function styleParser (node) { var style = node.getAttribute('style'); var val = []; if (style) { val = style.split(';').reduce(function (acc, style) { var styles = style.split(':'); var prop = styles[0]; var value = styles.slice(1); if (prop && value.length > 0) { acc[prop] = value.join(':').trim(); } return acc; }, {}); } return val; } function classParser (node) { var existingPrefix = node.getAttribute('data-prefix'); var existingIconName = node.getAttribute('data-icon'); var innerText = node.innerText !== undefined ? node.innerText.trim() : ''; var val = getCanonicalIcon(classArray(node)); if (existingPrefix && existingIconName) { val.prefix = existingPrefix; val.iconName = existingIconName; } if (val.prefix && innerText.length > 1) { val.iconName = byLigature(val.prefix, node.innerText); } else if (val.prefix && innerText.length === 1) { val.iconName = byUnicode(val.prefix, toHex(node.innerText)); } return val; } var parseTransformString = function parseTransformString(transformString) { var transform = { size: 16, x: 0, y: 0, flipX: false, flipY: false, rotate: 0 }; if (!transformString) { return transform; } else { return transformString.toLowerCase().split(' ').reduce(function (acc, n) { var parts = n.toLowerCase().split('-'); var first = parts[0]; var rest = parts.slice(1).join('-'); if (first && rest === 'h') { acc.flipX = true; return acc; } if (first && rest === 'v') { acc.flipY = true; return acc; } rest = parseFloat(rest); if (isNaN(rest)) { return acc; } switch (first) { case 'grow': acc.size = acc.size + rest; break; case 'shrink': acc.size = acc.size - rest; break; case 'left': acc.x = acc.x - rest; break; case 'right': acc.x = acc.x + rest; break; case 'up': acc.y = acc.y - rest; break; case 'down': acc.y = acc.y + rest; break; case 'rotate': acc.rotate = acc.rotate + rest; break; } return acc; }, transform); } }; function transformParser (node) { return parseTransformString(node.getAttribute('data-fa-transform')); } function symbolParser (node) { var symbol = node.getAttribute('data-fa-symbol'); return symbol === null ? false : symbol === '' ? true : symbol; } function attributesParser (node) { var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) { if (acc.name !== 'class' && acc.name !== 'style') { acc[attr.name] = attr.value; } return acc; }, {}); var title = node.getAttribute('title'); var titleId = node.getAttribute('data-fa-title-id'); if (config.autoA11y) { if (title) { extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); } else { extraAttributes['aria-hidden'] = 'true'; extraAttributes['focusable'] = 'false'; } } return extraAttributes; } function maskParser (node) { var mask = node.getAttribute('data-fa-mask'); if (!mask) { return emptyCanonicalIcon(); } else { return getCanonicalIcon(mask.split(' ').map(function (i) { return i.trim(); })); } } function blankMeta() { return { iconName: null, title: null, titleId: null, prefix: null, transform: meaninglessTransform, symbol: false, mask: null, maskId: null, extra: { classes: [], styles: {}, attributes: {} } }; } function parseMeta(node) { var _classParser = classParser(node), iconName = _classParser.iconName, prefix = _classParser.prefix, extraClasses = _classParser.rest; var extraStyles = styleParser(node); var transform = transformParser(node); var symbol = symbolParser(node); var extraAttributes = attributesParser(node); var mask = maskParser(node); return { iconName: iconName, title: node.getAttribute('title'), titleId: node.getAttribute('data-fa-title-id'), prefix: prefix, transform: transform, symbol: symbol, mask: mask, maskId: node.getAttribute('data-fa-mask-id'), extra: { classes: extraClasses, styles: extraStyles, attributes: extraAttributes } }; } function MissingIcon(error) { this.name = 'MissingIcon'; this.message = error || 'Icon unavailable'; this.stack = new Error().stack; } MissingIcon.prototype = Object.create(Error.prototype); MissingIcon.prototype.constructor = MissingIcon; var FILL = { fill: 'currentColor' }; var ANIMATION_BASE = { attributeType: 'XML', repeatCount: 'indefinite', dur: '2s' }; var RING = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z' }) }; var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { attributeName: 'opacity' }); var DOT = { tag: 'circle', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { cx: '256', cy: '364', r: '28' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { attributeName: 'r', values: '28;14;28;28;14;28;' }) }, { tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '1;0;1;1;0;1;' }) }] }; var QUESTION = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { opacity: '1', d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '1;0;0;0;0;1;' }) }] }; var EXCLAMATION = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { opacity: '0', d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '0;0;1;1;0;0;' }) }] }; var missing = { tag: 'g', children: [RING, DOT, QUESTION, EXCLAMATION] }; var styles$2 = namespace.styles; function asFoundIcon(icon) { var width = icon[0]; var height = icon[1]; var _icon$slice = icon.slice(4), _icon$slice2 = _slicedToArray(_icon$slice, 1), vectorData = _icon$slice2[0]; var element = null; if (Array.isArray(vectorData)) { element = { tag: 'g', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP) }, children: [{ tag: 'path', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY), fill: 'currentColor', d: vectorData[0] } }, { tag: 'path', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY), fill: 'currentColor', d: vectorData[1] } }] }; } else { element = { tag: 'path', attributes: { fill: 'currentColor', d: vectorData } }; } return { found: true, width: width, height: height, icon: element }; } function findIcon(iconName, prefix) { return new picked(function (resolve, reject) { var val = { found: false, width: 512, height: 512, icon: missing }; if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) { var icon = styles$2[prefix][iconName]; return resolve(asFoundIcon(icon)); } if (iconName && prefix && !config.showMissingIcons) { reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName))); } else { resolve(val); } }); } var styles$3 = namespace.styles; function generateSvgReplacementMutation(node, nodeMeta) { var iconName = nodeMeta.iconName, title = nodeMeta.title, titleId = nodeMeta.titleId, prefix = nodeMeta.prefix, transform = nodeMeta.transform, symbol = nodeMeta.symbol, mask = nodeMeta.mask, maskId = nodeMeta.maskId, extra = nodeMeta.extra; return new picked(function (resolve, reject) { picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), main = _ref2[0], mask = _ref2[1]; resolve([node, makeInlineSvgAbstract({ icons: { main: main, mask: mask }, prefix: prefix, iconName: iconName, transform: transform, symbol: symbol, mask: mask, maskId: maskId, title: title, titleId: titleId, extra: extra, watchable: true })]); }); }); } function generateLayersText(node, nodeMeta) { var title = nodeMeta.title, transform = nodeMeta.transform, extra = nodeMeta.extra; var width = null; var height = null; if (IS_IE) { var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10); var boundingClientRect = node.getBoundingClientRect(); width = boundingClientRect.width / computedFontSize; height = boundingClientRect.height / computedFontSize; } if (config.autoA11y && !title) { extra.attributes['aria-hidden'] = 'true'; } return picked.resolve([node, makeLayersTextAbstract({ content: node.innerHTML, width: width, height: height, transform: transform, title: title, extra: extra, watchable: true })]); } function generateMutation(node) { var nodeMeta = parseMeta(node); if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) { return generateLayersText(node, nodeMeta); } else { return generateSvgReplacementMutation(node, nodeMeta); } } function onTree(root) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (!IS_DOM) return; var htmlClassList = DOCUMENT.documentElement.classList; var hclAdd = function hclAdd(suffix) { return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); }; var hclRemove = function hclRemove(suffix) { return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); }; var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3); var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) { return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])"); })).join(', '); if (prefixesDomQuery.length === 0) { return; } var candidates = []; try { candidates = toArray(root.querySelectorAll(prefixesDomQuery)); } catch (e) {// noop } if (candidates.length > 0) { hclAdd('pending'); hclRemove('complete'); } else { return; } var mark = perf.begin('onTree'); var mutations = candidates.reduce(function (acc, node) { try { var mutation = generateMutation(node); if (mutation) { acc.push(mutation); } } catch (e) { if (!PRODUCTION) { if (e instanceof MissingIcon) { console.error(e); } } } return acc; }, []); return new picked(function (resolve, reject) { picked.all(mutations).then(function (resolvedMutations) { perform(resolvedMutations, function () { hclAdd('active'); hclAdd('complete'); hclRemove('pending'); if (typeof callback === 'function') callback(); mark(); resolve(); }); }).catch(function () { mark(); reject(); }); }); } function onNode(node) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; generateMutation(node).then(function (mutation) { if (mutation) { perform([mutation], callback); } }); } function replaceForPosition(node, position) { var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-')); return new picked(function (resolve, reject) { if (node.getAttribute(pendingAttribute) !== null) { // This node is already being processed return resolve(); } var children = toArray(node.children); var alreadyProcessedPseudoElement = children.filter(function (c) { return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position; })[0]; var styles = WINDOW.getComputedStyle(node, position); var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN); var fontWeight = styles.getPropertyValue('font-weight'); var content = styles.getPropertyValue('content'); if (alreadyProcessedPseudoElement && !fontFamily) { // If we've already processed it but the current computed style does not result in a font-family, // that probably means that a class name that was previously present to make the icon has been // removed. So we now should delete the icon. node.removeChild(alreadyProcessedPseudoElement); return resolve(); } else if (fontFamily && content !== 'none' && content !== '') { var _content = styles.getPropertyValue('content'); var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight]; var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content); var iconName = byUnicode(prefix, hexValue); var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't // already done so with the same prefix and iconName if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) { node.setAttribute(pendingAttribute, iconIdentifier); if (alreadyProcessedPseudoElement) { // Delete the old one, since we're replacing it with a new one node.removeChild(alreadyProcessedPseudoElement); } var meta = blankMeta(); var extra = meta.extra; extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position; findIcon(iconName, prefix).then(function (main) { var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, { icons: { main: main, mask: emptyCanonicalIcon() }, prefix: prefix, iconName: iconIdentifier, extra: extra, watchable: true })); var element = DOCUMENT.createElement('svg'); if (position === ':before') { node.insertBefore(element, node.firstChild); } else { node.appendChild(element); } element.outerHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); node.removeAttribute(pendingAttribute); resolve(); }).catch(reject); } else { resolve(); } } else { resolve(); } }); } function replace(node) { return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]); } function processable(node) { return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg'); } function searchPseudoElements (root) { if (!IS_DOM) return; return new picked(function (resolve, reject) { var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace); var end = perf.begin('searchPseudoElements'); disableObservation(); picked.all(operations).then(function () { end(); enableObservation(); resolve(); }).catch(function () { end(); enableObservation(); reject(); }); }); } var baseStyles = "svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}"; function css () { var dfp = DEFAULT_FAMILY_PREFIX; var drc = DEFAULT_REPLACEMENT_CLASS; var fp = config.familyPrefix; var rc = config.replacementClass; var s = baseStyles; if (fp !== dfp || rc !== drc) { var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g'); var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g'); var rPatt = new RegExp("\\.".concat(drc), 'g'); s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc)); } return s; } var Library = /*#__PURE__*/function () { function Library() { _classCallCheck(this, Library); this.definitions = {}; } _createClass(Library, [{ key: "add", value: function add() { var _this = this; for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) { definitions[_key] = arguments[_key]; } var additions = definitions.reduce(this._pullDefinitions, {}); Object.keys(additions).forEach(function (key) { _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]); defineIcons(key, additions[key]); build(); }); } }, { key: "reset", value: function reset() { this.definitions = {}; } }, { key: "_pullDefinitions", value: function _pullDefinitions(additions, definition) { var normalized = definition.prefix && definition.iconName && definition.icon ? { 0: definition } : definition; Object.keys(normalized).map(function (key) { var _normalized$key = normalized[key], prefix = _normalized$key.prefix, iconName = _normalized$key.iconName, icon = _normalized$key.icon; if (!additions[prefix]) additions[prefix] = {}; additions[prefix][iconName] = icon; }); return additions; } }]); return Library; }(); function ensureCss() { if (config.autoAddCss && !_cssInserted) { insertCss(css()); _cssInserted = true; } } function apiObject(val, abstractCreator) { Object.defineProperty(val, 'abstract', { get: abstractCreator }); Object.defineProperty(val, 'html', { get: function get() { return val.abstract.map(function (a) { return toHtml(a); }); } }); Object.defineProperty(val, 'node', { get: function get() { if (!IS_DOM) return; var container = DOCUMENT.createElement('div'); container.innerHTML = val.html; return container.children; } }); return val; } function findIconDefinition(iconLookup) { var _iconLookup$prefix = iconLookup.prefix, prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix, iconName = iconLookup.iconName; if (!iconName) return; return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName); } function resolveIcons(next) { return function (maybeIconDefinition) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {}); var mask = params.mask; if (mask) { mask = (mask || {}).icon ? mask : findIconDefinition(mask || {}); } return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, { mask: mask })); }; } var library = new Library(); var noAuto = function noAuto() { config.autoReplaceSvg = false; config.observeMutations = false; disconnect(); }; var _cssInserted = false; var dom = { i2svg: function i2svg() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (IS_DOM) { ensureCss(); var _params$node = params.node, node = _params$node === void 0 ? DOCUMENT : _params$node, _params$callback = params.callback, callback = _params$callback === void 0 ? function () {} : _params$callback; if (config.searchPseudoElements) { searchPseudoElements(node); } return onTree(node, callback); } else { return picked.reject('Operation requires a DOM of some kind.'); } }, css: css, insertCss: function insertCss$$1() { if (!_cssInserted) { insertCss(css()); _cssInserted = true; } }, watch: function watch() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var autoReplaceSvgRoot = params.autoReplaceSvgRoot, observeMutationsRoot = params.observeMutationsRoot; if (config.autoReplaceSvg === false) { config.autoReplaceSvg = true; } config.observeMutations = true; domready(function () { autoReplace({ autoReplaceSvgRoot: autoReplaceSvgRoot }); observe({ treeCallback: onTree, nodeCallback: onNode, pseudoElementsCallback: searchPseudoElements, observeMutationsRoot: observeMutationsRoot }); }); } }; var parse = { transform: function transform(transformString) { return parseTransformString(transformString); } }; var icon = resolveIcons(function (iconDefinition) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$transform = params.transform, transform = _params$transform === void 0 ? meaninglessTransform : _params$transform, _params$symbol = params.symbol, symbol = _params$symbol === void 0 ? false : _params$symbol, _params$mask = params.mask, mask = _params$mask === void 0 ? null : _params$mask, _params$maskId = params.maskId, maskId = _params$maskId === void 0 ? null : _params$maskId, _params$title = params.title, title = _params$title === void 0 ? null : _params$title, _params$titleId = params.titleId, titleId = _params$titleId === void 0 ? null : _params$titleId, _params$classes = params.classes, classes = _params$classes === void 0 ? [] : _params$classes, _params$attributes = params.attributes, attributes = _params$attributes === void 0 ? {} : _params$attributes, _params$styles = params.styles, styles = _params$styles === void 0 ? {} : _params$styles; if (!iconDefinition) return; var prefix = iconDefinition.prefix, iconName = iconDefinition.iconName, icon = iconDefinition.icon; return apiObject(_objectSpread2({ type: 'icon' }, iconDefinition), function () { ensureCss(); if (config.autoA11y) { if (title) { attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); } else { attributes['aria-hidden'] = 'true'; attributes['focusable'] = 'false'; } } return makeInlineSvgAbstract({ icons: { main: asFoundIcon(icon), mask: mask ? asFoundIcon(mask.icon) : { found: false, width: null, height: null, icon: {} } }, prefix: prefix, iconName: iconName, transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), symbol: symbol, title: title, maskId: maskId, titleId: titleId, extra: { attributes: attributes, styles: styles, classes: classes } }); }); }); var text = function text(content) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$transform2 = params.transform, transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2, _params$title2 = params.title, title = _params$title2 === void 0 ? null : _params$title2, _params$classes2 = params.classes, classes = _params$classes2 === void 0 ? [] : _params$classes2, _params$attributes2 = params.attributes, attributes = _params$attributes2 === void 0 ? {} : _params$attributes2, _params$styles2 = params.styles, styles = _params$styles2 === void 0 ? {} : _params$styles2; return apiObject({ type: 'text', content: content }, function () { ensureCss(); return makeLayersTextAbstract({ content: content, transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), title: title, extra: { attributes: attributes, styles: styles, classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes)) } }); }); }; var counter = function counter(content) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$title3 = params.title, title = _params$title3 === void 0 ? null : _params$title3, _params$classes3 = params.classes, classes = _params$classes3 === void 0 ? [] : _params$classes3, _params$attributes3 = params.attributes, attributes = _params$attributes3 === void 0 ? {} : _params$attributes3, _params$styles3 = params.styles, styles = _params$styles3 === void 0 ? {} : _params$styles3; return apiObject({ type: 'counter', content: content }, function () { ensureCss(); return makeLayersCounterAbstract({ content: content.toString(), title: title, extra: { attributes: attributes, styles: styles, classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes)) } }); }); }; var layer = function layer(assembler) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$classes4 = params.classes, classes = _params$classes4 === void 0 ? [] : _params$classes4; return apiObject({ type: 'layer' }, function () { ensureCss(); var children = []; assembler(function (args) { Array.isArray(args) ? args.map(function (a) { children = children.concat(a.abstract); }) : children = children.concat(args.abstract); }); return [{ tag: 'span', attributes: { class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ') }, children: children }]; }); }; var api = { noAuto: noAuto, config: config, dom: dom, library: library, parse: parse, findIconDefinition: findIconDefinition, icon: icon, text: text, counter: counter, layer: layer, toHtml: toHtml }; var autoReplace = function autoReplace() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _params$autoReplaceSv = params.autoReplaceSvgRoot, autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv; if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({ node: autoReplaceSvgRoot }); }; export { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition }; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/index.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (factory((global['fontawesome-svg-core'] = {}))); }(this, (function (exports) { 'use strict'; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var noop = function noop() {}; var _WINDOW = {}; var _DOCUMENT = {}; var _MUTATION_OBSERVER = null; var _PERFORMANCE = { mark: noop, measure: noop }; try { if (typeof window !== 'undefined') _WINDOW = window; if (typeof document !== 'undefined') _DOCUMENT = document; if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver; if (typeof performance !== 'undefined') _PERFORMANCE = performance; } catch (e) {} var _ref = _WINDOW.navigator || {}, _ref$userAgent = _ref.userAgent, userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent; var WINDOW = _WINDOW; var DOCUMENT = _DOCUMENT; var MUTATION_OBSERVER = _MUTATION_OBSERVER; var PERFORMANCE = _PERFORMANCE; var IS_BROWSER = !!WINDOW.document; var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function'; var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/'); var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___'; var UNITS_IN_GRID = 16; var DEFAULT_FAMILY_PREFIX = 'fa'; var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa'; var DATA_FA_I2SVG = 'data-fa-i2svg'; var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element'; var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending'; var DATA_PREFIX = 'data-prefix'; var DATA_ICON = 'data-icon'; var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg'; var MUTATION_APPROACH_ASYNC = 'async'; var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT']; var PRODUCTION = function () { try { return process.env.NODE_ENV === 'production'; } catch (e) { return false; } }(); var PREFIX_TO_STYLE = { 'fas': 'solid', 'far': 'regular', 'fal': 'light', 'fad': 'duotone', 'fab': 'brands', 'fak': 'kit', 'fa': 'solid' }; var STYLE_TO_PREFIX = { 'solid': 'fas', 'regular': 'far', 'light': 'fal', 'duotone': 'fad', 'brands': 'fab', 'kit': 'fak' }; var LAYERS_TEXT_CLASSNAME = 'fa-layers-text'; var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements? var FONT_WEIGHT_TO_PREFIX = { '900': 'fas', '400': 'far', 'normal': 'far', '300': 'fal' }; var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]); var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask']; var DUOTONE_CLASSES = { GROUP: 'group', SWAP_OPACITY: 'swap-opacity', PRIMARY: 'primary', SECONDARY: 'secondary' }; var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) { return "".concat(n, "x"); })).concat(oneToTwenty.map(function (n) { return "w-".concat(n); })); var initial = WINDOW.FontAwesomeConfig || {}; function getAttrConfig(attr) { var element = DOCUMENT.querySelector('script[' + attr + ']'); if (element) { return element.getAttribute(attr); } } function coerce(val) { // Getting an empty string will occur if the attribute is set on the HTML tag but without a value // We'll assume that this is an indication that it should be toggled to true // For example if (val === '') return true; if (val === 'false') return false; if (val === 'true') return true; return val; } if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') { var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']]; attrs.forEach(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), attr = _ref2[0], key = _ref2[1]; var val = coerce(getAttrConfig(attr)); if (val !== undefined && val !== null) { initial[key] = val; } }); } var _default = { familyPrefix: DEFAULT_FAMILY_PREFIX, replacementClass: DEFAULT_REPLACEMENT_CLASS, autoReplaceSvg: true, autoAddCss: true, autoA11y: true, searchPseudoElements: false, observeMutations: true, mutateApproach: 'async', keepOriginalSource: true, measurePerformance: false, showMissingIcons: true }; var _config = _objectSpread2(_objectSpread2({}, _default), initial); if (!_config.autoReplaceSvg) _config.observeMutations = false; var config = _objectSpread2({}, _config); WINDOW.FontAwesomeConfig = config; var w = WINDOW || {}; if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {}; if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {}; if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {}; if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = []; var namespace = w[NAMESPACE_IDENTIFIER]; var functions = []; var listener = function listener() { DOCUMENT.removeEventListener('DOMContentLoaded', listener); loaded = 1; functions.map(function (fn) { return fn(); }); }; var loaded = false; if (IS_DOM) { loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState); if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener); } function domready (fn) { if (!IS_DOM) return; loaded ? setTimeout(fn, 0) : functions.push(fn); } var PENDING = 'pending'; var SETTLED = 'settled'; var FULFILLED = 'fulfilled'; var REJECTED = 'rejected'; var NOOP = function NOOP() {}; var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function'; var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate; var asyncQueue = []; var asyncTimer; function asyncFlush() { // run promise callbacks for (var i = 0; i < asyncQueue.length; i++) { asyncQueue[i][0](asyncQueue[i][1]); } // reset async asyncQueue asyncQueue = []; asyncTimer = false; } function asyncCall(callback, arg) { asyncQueue.push([callback, arg]); if (!asyncTimer) { asyncTimer = true; asyncSetTimer(asyncFlush, 0); } } function invokeResolver(resolver, promise) { function resolvePromise(value) { resolve(promise, value); } function rejectPromise(reason) { reject(promise, reason); } try { resolver(resolvePromise, rejectPromise); } catch (e) { rejectPromise(e); } } function invokeCallback(subscriber) { var owner = subscriber.owner; var settled = owner._state; var value = owner._data; var callback = subscriber[settled]; var promise = subscriber.then; if (typeof callback === 'function') { settled = FULFILLED; try { value = callback(value); } catch (e) { reject(promise, e); } } if (!handleThenable(promise, value)) { if (settled === FULFILLED) { resolve(promise, value); } if (settled === REJECTED) { reject(promise, value); } } } function handleThenable(promise, value) { var resolved; try { if (promise === value) { throw new TypeError('A promises callback cannot return that same promise.'); } if (value && (typeof value === 'function' || _typeof(value) === 'object')) { // then should be retrieved only once var then = value.then; if (typeof then === 'function') { then.call(value, function (val) { if (!resolved) { resolved = true; if (value === val) { fulfill(promise, val); } else { resolve(promise, val); } } }, function (reason) { if (!resolved) { resolved = true; reject(promise, reason); } }); return true; } } } catch (e) { if (!resolved) { reject(promise, e); } return true; } return false; } function resolve(promise, value) { if (promise === value || !handleThenable(promise, value)) { fulfill(promise, value); } } function fulfill(promise, value) { if (promise._state === PENDING) { promise._state = SETTLED; promise._data = value; asyncCall(publishFulfillment, promise); } } function reject(promise, reason) { if (promise._state === PENDING) { promise._state = SETTLED; promise._data = reason; asyncCall(publishRejection, promise); } } function publish(promise) { promise._then = promise._then.forEach(invokeCallback); } function publishFulfillment(promise) { promise._state = FULFILLED; publish(promise); } function publishRejection(promise) { promise._state = REJECTED; publish(promise); if (!promise._handled && isNode) { global.process.emit('unhandledRejection', promise._data, promise); } } function notifyRejectionHandled(promise) { global.process.emit('rejectionHandled', promise); } /** * @class */ function P(resolver) { if (typeof resolver !== 'function') { throw new TypeError('Promise resolver ' + resolver + ' is not a function'); } if (this instanceof P === false) { throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.'); } this._then = []; invokeResolver(resolver, this); } P.prototype = { constructor: P, _state: PENDING, _then: null, _data: undefined, _handled: false, then: function then(onFulfillment, onRejection) { var subscriber = { owner: this, then: new this.constructor(NOOP), fulfilled: onFulfillment, rejected: onRejection }; if ((onRejection || onFulfillment) && !this._handled) { this._handled = true; if (this._state === REJECTED && isNode) { asyncCall(notifyRejectionHandled, this); } } if (this._state === FULFILLED || this._state === REJECTED) { // already resolved, call callback async asyncCall(invokeCallback, subscriber); } else { // subscribe this._then.push(subscriber); } return subscriber.then; }, catch: function _catch(onRejection) { return this.then(null, onRejection); } }; P.all = function (promises) { if (!Array.isArray(promises)) { throw new TypeError('You must pass an array to Promise.all().'); } return new P(function (resolve, reject) { var results = []; var remaining = 0; function resolver(index) { remaining++; return function (value) { results[index] = value; if (! --remaining) { resolve(results); } }; } for (var i = 0, promise; i < promises.length; i++) { promise = promises[i]; if (promise && typeof promise.then === 'function') { promise.then(resolver(i), reject); } else { results[i] = promise; } } if (!remaining) { resolve(results); } }); }; P.race = function (promises) { if (!Array.isArray(promises)) { throw new TypeError('You must pass an array to Promise.race().'); } return new P(function (resolve, reject) { for (var i = 0, promise; i < promises.length; i++) { promise = promises[i]; if (promise && typeof promise.then === 'function') { promise.then(resolve, reject); } else { resolve(promise); } } }); }; P.resolve = function (value) { if (value && _typeof(value) === 'object' && value.constructor === P) { return value; } return new P(function (resolve) { resolve(value); }); }; P.reject = function (reason) { return new P(function (resolve, reject) { reject(reason); }); }; var picked = typeof Promise === 'function' ? Promise : P; var d = UNITS_IN_GRID; var meaninglessTransform = { size: 16, x: 0, y: 0, rotate: 0, flipX: false, flipY: false }; function isReserved(name) { return ~RESERVED_CLASSES.indexOf(name); } function insertCss(css) { if (!css || !IS_DOM) { return; } var style = DOCUMENT.createElement('style'); style.setAttribute('type', 'text/css'); style.innerHTML = css; var headChildren = DOCUMENT.head.childNodes; var beforeChild = null; for (var i = headChildren.length - 1; i > -1; i--) { var child = headChildren[i]; var tagName = (child.tagName || '').toUpperCase(); if (['STYLE', 'LINK'].indexOf(tagName) > -1) { beforeChild = child; } } DOCUMENT.head.insertBefore(style, beforeChild); return css; } var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; function nextUniqueId() { var size = 12; var id = ''; while (size-- > 0) { id += idPool[Math.random() * 62 | 0]; } return id; } function toArray(obj) { var array = []; for (var i = (obj || []).length >>> 0; i--;) { array[i] = obj[i]; } return array; } function classArray(node) { if (node.classList) { return toArray(node.classList); } else { return (node.getAttribute('class') || '').split(' ').filter(function (i) { return i; }); } } function getIconName(familyPrefix, cls) { var parts = cls.split('-'); var prefix = parts[0]; var iconName = parts.slice(1).join('-'); if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) { return iconName; } else { return null; } } function htmlEscape(str) { return "".concat(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(//g, '>'); } function joinAttributes(attributes) { return Object.keys(attributes || {}).reduce(function (acc, attributeName) { return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" "); }, '').trim(); } function joinStyles(styles) { return Object.keys(styles || {}).reduce(function (acc, styleName) { return acc + "".concat(styleName, ": ").concat(styles[styleName], ";"); }, ''); } function transformIsMeaningful(transform) { return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY; } function transformForSvg(_ref) { var transform = _ref.transform, containerWidth = _ref.containerWidth, iconWidth = _ref.iconWidth; var outer = { transform: "translate(".concat(containerWidth / 2, " 256)") }; var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") "); var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") "); var innerRotate = "rotate(".concat(transform.rotate, " 0 0)"); var inner = { transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate) }; var path = { transform: "translate(".concat(iconWidth / 2 * -1, " -256)") }; return { outer: outer, inner: inner, path: path }; } function transformForCss(_ref2) { var transform = _ref2.transform, _ref2$width = _ref2.width, width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width, _ref2$height = _ref2.height, height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height, _ref2$startCentered = _ref2.startCentered, startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered; var val = ''; if (startCentered && IS_IE) { val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) "); } else if (startCentered) { val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) "); } else { val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) "); } val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") "); val += "rotate(".concat(transform.rotate, "deg) "); return val; } var ALL_SPACE = { x: 0, y: 0, width: '100%', height: '100%' }; function fillBlack(abstract) { var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; if (abstract.attributes && (abstract.attributes.fill || force)) { abstract.attributes.fill = 'black'; } return abstract; } function deGroup(abstract) { if (abstract.tag === 'g') { return abstract.children; } else { return [abstract]; } } function makeIconMasking (_ref) { var children = _ref.children, attributes = _ref.attributes, main = _ref.main, mask = _ref.mask, explicitMaskId = _ref.maskId, transform = _ref.transform; var mainWidth = main.width, mainPath = main.icon; var maskWidth = mask.width, maskPath = mask.icon; var trans = transformForSvg({ transform: transform, containerWidth: maskWidth, iconWidth: mainWidth }); var maskRect = { tag: 'rect', attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { fill: 'white' }) }; var maskInnerGroupChildrenMixin = mainPath.children ? { children: mainPath.children.map(fillBlack) } : {}; var maskInnerGroup = { tag: 'g', attributes: _objectSpread2({}, trans.inner), children: [fillBlack(_objectSpread2({ tag: mainPath.tag, attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path) }, maskInnerGroupChildrenMixin))] }; var maskOuterGroup = { tag: 'g', attributes: _objectSpread2({}, trans.outer), children: [maskInnerGroup] }; var maskId = "mask-".concat(explicitMaskId || nextUniqueId()); var clipId = "clip-".concat(explicitMaskId || nextUniqueId()); var maskTag = { tag: 'mask', attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, { id: maskId, maskUnits: 'userSpaceOnUse', maskContentUnits: 'userSpaceOnUse' }), children: [maskRect, maskOuterGroup] }; var defs = { tag: 'defs', children: [{ tag: 'clipPath', attributes: { id: clipId }, children: deGroup(maskPath) }, maskTag] }; children.push(defs, { tag: 'rect', attributes: _objectSpread2({ fill: 'currentColor', 'clip-path': "url(#".concat(clipId, ")"), mask: "url(#".concat(maskId, ")") }, ALL_SPACE) }); return { children: children, attributes: attributes }; } function makeIconStandard (_ref) { var children = _ref.children, attributes = _ref.attributes, main = _ref.main, transform = _ref.transform, styles = _ref.styles; var styleString = joinStyles(styles); if (styleString.length > 0) { attributes['style'] = styleString; } if (transformIsMeaningful(transform)) { var trans = transformForSvg({ transform: transform, containerWidth: main.width, iconWidth: main.width }); children.push({ tag: 'g', attributes: _objectSpread2({}, trans.outer), children: [{ tag: 'g', attributes: _objectSpread2({}, trans.inner), children: [{ tag: main.icon.tag, children: main.icon.children, attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), trans.path) }] }] }); } else { children.push(main.icon); } return { children: children, attributes: attributes }; } function asIcon (_ref) { var children = _ref.children, main = _ref.main, mask = _ref.mask, attributes = _ref.attributes, styles = _ref.styles, transform = _ref.transform; if (transformIsMeaningful(transform) && main.found && !mask.found) { var width = main.width, height = main.height; var offset = { x: width / height / 2, y: 0.5 }; attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, { 'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em") })); } return [{ tag: 'svg', attributes: attributes, children: children }]; } function asSymbol (_ref) { var prefix = _ref.prefix, iconName = _ref.iconName, children = _ref.children, attributes = _ref.attributes, symbol = _ref.symbol; var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol; return [{ tag: 'svg', attributes: { style: 'display: none;' }, children: [{ tag: 'symbol', attributes: _objectSpread2(_objectSpread2({}, attributes), {}, { id: id }), children: children }] }]; } function makeInlineSvgAbstract(params) { var _params$icons = params.icons, main = _params$icons.main, mask = _params$icons.mask, prefix = params.prefix, iconName = params.iconName, transform = params.transform, symbol = params.symbol, title = params.title, maskId = params.maskId, titleId = params.titleId, extra = params.extra, _params$watchable = params.watchable, watchable = _params$watchable === void 0 ? false : _params$watchable; var _ref = mask.found ? mask : main, width = _ref.width, height = _ref.height; var isUploadedIcon = prefix === 'fak'; var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16)); var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) { return extra.classes.indexOf(c) === -1; }).filter(function (c) { return c !== '' || !!c; }).concat(extra.classes).join(' '); var content = { children: [], attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, { 'data-prefix': prefix, 'data-icon': iconName, 'class': attrClass, 'role': extra.attributes.role || 'img', 'xmlns': 'http://www.w3.org/2000/svg', 'viewBox': "0 0 ".concat(width, " ").concat(height) }) }; var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? { width: "".concat(width / height * 16 * 0.0625, "em") } : {}; if (watchable) { content.attributes[DATA_FA_I2SVG] = ''; } if (title) content.children.push({ tag: 'title', attributes: { id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId()) }, children: [title] }); var args = _objectSpread2(_objectSpread2({}, content), {}, { prefix: prefix, iconName: iconName, main: main, mask: mask, maskId: maskId, transform: transform, symbol: symbol, styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles) }); var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args), children = _ref2.children, attributes = _ref2.attributes; args.children = children; args.attributes = attributes; if (symbol) { return asSymbol(args); } else { return asIcon(args); } } function makeLayersTextAbstract(params) { var content = params.content, width = params.width, height = params.height, transform = params.transform, title = params.title, extra = params.extra, _params$watchable2 = params.watchable, watchable = _params$watchable2 === void 0 ? false : _params$watchable2; var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { 'title': title } : {}), {}, { 'class': extra.classes.join(' ') }); if (watchable) { attributes[DATA_FA_I2SVG] = ''; } var styles = _objectSpread2({}, extra.styles); if (transformIsMeaningful(transform)) { styles['transform'] = transformForCss({ transform: transform, startCentered: true, width: width, height: height }); styles['-webkit-transform'] = styles['transform']; } var styleString = joinStyles(styles); if (styleString.length > 0) { attributes['style'] = styleString; } var val = []; val.push({ tag: 'span', attributes: attributes, children: [content] }); if (title) { val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] }); } return val; } function makeLayersCounterAbstract(params) { var content = params.content, title = params.title, extra = params.extra; var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? { 'title': title } : {}), {}, { 'class': extra.classes.join(' ') }); var styleString = joinStyles(extra.styles); if (styleString.length > 0) { attributes['style'] = styleString; } var val = []; val.push({ tag: 'span', attributes: attributes, children: [content] }); if (title) { val.push({ tag: 'span', attributes: { class: 'sr-only' }, children: [title] }); } return val; } var noop$1 = function noop() {}; var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : { mark: noop$1, measure: noop$1 }; var preamble = "FA \"5.15.4\""; var begin = function begin(name) { p.mark("".concat(preamble, " ").concat(name, " begins")); return function () { return end(name); }; }; var end = function end(name) { p.mark("".concat(preamble, " ").concat(name, " ends")); p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends")); }; var perf = { begin: begin, end: end }; /** * Internal helper to bind a function known to have 4 arguments * to a given context. */ var bindInternal4 = function bindInternal4(func, thisContext) { return function (a, b, c, d) { return func.call(thisContext, a, b, c, d); }; }; /** * # Reduce * * A fast object `.reduce()` implementation. * * @param {Object} subject The object to reduce over. * @param {Function} fn The reducer function. * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0]. * @param {Object} thisContext The context for the reducer. * @return {mixed} The final result. */ var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) { var keys = Object.keys(subject), length = keys.length, iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn, i, key, result; if (initialValue === undefined) { i = 1; result = subject[keys[0]]; } else { i = 0; result = initialValue; } for (; i < length; i++) { key = keys[i]; result = iterator(result, subject[key], key, subject); } return result; }; function toHex(unicode) { var result = ''; for (var i = 0; i < unicode.length; i++) { var hex = unicode.charCodeAt(i).toString(16); result += ('000' + hex).slice(-4); } return result; } function defineIcons(prefix, icons) { var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _params$skipHooks = params.skipHooks, skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks; var normalized = Object.keys(icons).reduce(function (acc, iconName) { var icon = icons[iconName]; var expanded = !!icon.icon; if (expanded) { acc[icon.iconName] = icon.icon; } else { acc[iconName] = icon; } return acc; }, {}); if (typeof namespace.hooks.addPack === 'function' && !skipHooks) { namespace.hooks.addPack(prefix, normalized); } else { namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized); } /** * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction * of new styles we needed to differentiate between them. Prefix `fa` is now an alias * for `fas` so we'll easy the upgrade process for our users by automatically defining * this as well. */ if (prefix === 'fas') { defineIcons('fa', icons); } } var styles = namespace.styles, shims = namespace.shims; var _byUnicode = {}; var _byLigature = {}; var _byOldName = {}; var build = function build() { var lookup = function lookup(reducer) { return reduce(styles, function (o, style, prefix) { o[prefix] = reduce(style, reducer, {}); return o; }, {}); }; _byUnicode = lookup(function (acc, icon, iconName) { if (icon[3]) { acc[icon[3]] = iconName; } return acc; }); _byLigature = lookup(function (acc, icon, iconName) { var ligatures = icon[2]; acc[iconName] = iconName; ligatures.forEach(function (ligature) { acc[ligature] = iconName; }); return acc; }); var hasRegular = ('far' in styles); _byOldName = reduce(shims, function (acc, shim) { var oldName = shim[0]; var prefix = shim[1]; var iconName = shim[2]; if (prefix === 'far' && !hasRegular) { prefix = 'fas'; } acc[oldName] = { prefix: prefix, iconName: iconName }; return acc; }, {}); }; build(); function byUnicode(prefix, unicode) { return (_byUnicode[prefix] || {})[unicode]; } function byLigature(prefix, ligature) { return (_byLigature[prefix] || {})[ligature]; } function byOldName(name) { return _byOldName[name] || { prefix: null, iconName: null }; } var styles$1 = namespace.styles; var emptyCanonicalIcon = function emptyCanonicalIcon() { return { prefix: null, iconName: null, rest: [] }; }; function getCanonicalIcon(values) { return values.reduce(function (acc, cls) { var iconName = getIconName(config.familyPrefix, cls); if (styles$1[cls]) { acc.prefix = cls; } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) { acc.prefix = cls; } else if (iconName) { var shim = acc.prefix === 'fa' ? byOldName(iconName) : {}; acc.iconName = shim.iconName || iconName; acc.prefix = shim.prefix || acc.prefix; } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) { acc.rest.push(cls); } return acc; }, emptyCanonicalIcon()); } function iconFromMapping(mapping, prefix, iconName) { if (mapping && mapping[prefix] && mapping[prefix][iconName]) { return { prefix: prefix, iconName: iconName, icon: mapping[prefix][iconName] }; } } function toHtml(abstractNodes) { var tag = abstractNodes.tag, _abstractNodes$attrib = abstractNodes.attributes, attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib, _abstractNodes$childr = abstractNodes.children, children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr; if (typeof abstractNodes === 'string') { return htmlEscape(abstractNodes); } else { return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), ""); } } var noop$2 = function noop() {}; function isWatched(node) { var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null; return typeof i2svg === 'string'; } function getMutator() { if (config.autoReplaceSvg === true) { return mutators.replace; } var mutator = mutators[config.autoReplaceSvg]; return mutator || mutators.replace; } var mutators = { replace: function replace(mutation) { var node = mutation[0]; var abstract = mutation[1]; var newOuterHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); if (node.parentNode && node.outerHTML) { node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "") : ''); } else if (node.parentNode) { var newNode = document.createElement('span'); node.parentNode.replaceChild(newNode, node); newNode.outerHTML = newOuterHTML; } }, nest: function nest(mutation) { var node = mutation[0]; var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it. // Short-circuit to the standard replacement if (~classArray(node).indexOf(config.replacementClass)) { return mutators.replace(mutation); } var forSvg = new RegExp("".concat(config.familyPrefix, "-.*")); delete abstract[0].attributes.style; delete abstract[0].attributes.id; var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) { if (cls === config.replacementClass || cls.match(forSvg)) { acc.toSvg.push(cls); } else { acc.toNode.push(cls); } return acc; }, { toNode: [], toSvg: [] }); abstract[0].attributes.class = splitClasses.toSvg.join(' '); var newInnerHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); node.setAttribute('class', splitClasses.toNode.join(' ')); node.setAttribute(DATA_FA_I2SVG, ''); node.innerHTML = newInnerHTML; } }; function performOperationSync(op) { op(); } function perform(mutations, callback) { var callbackFunction = typeof callback === 'function' ? callback : noop$2; if (mutations.length === 0) { callbackFunction(); } else { var frame = performOperationSync; if (config.mutateApproach === MUTATION_APPROACH_ASYNC) { frame = WINDOW.requestAnimationFrame || performOperationSync; } frame(function () { var mutator = getMutator(); var mark = perf.begin('mutate'); mutations.map(mutator); mark(); callbackFunction(); }); } } var disabled = false; function disableObservation() { disabled = true; } function enableObservation() { disabled = false; } var mo = null; function observe(options) { if (!MUTATION_OBSERVER) { return; } if (!config.observeMutations) { return; } var treeCallback = options.treeCallback, nodeCallback = options.nodeCallback, pseudoElementsCallback = options.pseudoElementsCallback, _options$observeMutat = options.observeMutationsRoot, observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat; mo = new MUTATION_OBSERVER(function (objects) { if (disabled) return; toArray(objects).forEach(function (mutationRecord) { if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) { if (config.searchPseudoElements) { pseudoElementsCallback(mutationRecord.target); } treeCallback(mutationRecord.target); } if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) { pseudoElementsCallback(mutationRecord.target.parentNode); } if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) { if (mutationRecord.attributeName === 'class') { var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)), prefix = _getCanonicalIcon.prefix, iconName = _getCanonicalIcon.iconName; if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix); if (iconName) mutationRecord.target.setAttribute('data-icon', iconName); } else { nodeCallback(mutationRecord.target); } } }); }); if (!IS_DOM) return; mo.observe(observeMutationsRoot, { childList: true, attributes: true, characterData: true, subtree: true }); } function disconnect() { if (!mo) return; mo.disconnect(); } function styleParser (node) { var style = node.getAttribute('style'); var val = []; if (style) { val = style.split(';').reduce(function (acc, style) { var styles = style.split(':'); var prop = styles[0]; var value = styles.slice(1); if (prop && value.length > 0) { acc[prop] = value.join(':').trim(); } return acc; }, {}); } return val; } function classParser (node) { var existingPrefix = node.getAttribute('data-prefix'); var existingIconName = node.getAttribute('data-icon'); var innerText = node.innerText !== undefined ? node.innerText.trim() : ''; var val = getCanonicalIcon(classArray(node)); if (existingPrefix && existingIconName) { val.prefix = existingPrefix; val.iconName = existingIconName; } if (val.prefix && innerText.length > 1) { val.iconName = byLigature(val.prefix, node.innerText); } else if (val.prefix && innerText.length === 1) { val.iconName = byUnicode(val.prefix, toHex(node.innerText)); } return val; } var parseTransformString = function parseTransformString(transformString) { var transform = { size: 16, x: 0, y: 0, flipX: false, flipY: false, rotate: 0 }; if (!transformString) { return transform; } else { return transformString.toLowerCase().split(' ').reduce(function (acc, n) { var parts = n.toLowerCase().split('-'); var first = parts[0]; var rest = parts.slice(1).join('-'); if (first && rest === 'h') { acc.flipX = true; return acc; } if (first && rest === 'v') { acc.flipY = true; return acc; } rest = parseFloat(rest); if (isNaN(rest)) { return acc; } switch (first) { case 'grow': acc.size = acc.size + rest; break; case 'shrink': acc.size = acc.size - rest; break; case 'left': acc.x = acc.x - rest; break; case 'right': acc.x = acc.x + rest; break; case 'up': acc.y = acc.y - rest; break; case 'down': acc.y = acc.y + rest; break; case 'rotate': acc.rotate = acc.rotate + rest; break; } return acc; }, transform); } }; function transformParser (node) { return parseTransformString(node.getAttribute('data-fa-transform')); } function symbolParser (node) { var symbol = node.getAttribute('data-fa-symbol'); return symbol === null ? false : symbol === '' ? true : symbol; } function attributesParser (node) { var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) { if (acc.name !== 'class' && acc.name !== 'style') { acc[attr.name] = attr.value; } return acc; }, {}); var title = node.getAttribute('title'); var titleId = node.getAttribute('data-fa-title-id'); if (config.autoA11y) { if (title) { extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); } else { extraAttributes['aria-hidden'] = 'true'; extraAttributes['focusable'] = 'false'; } } return extraAttributes; } function maskParser (node) { var mask = node.getAttribute('data-fa-mask'); if (!mask) { return emptyCanonicalIcon(); } else { return getCanonicalIcon(mask.split(' ').map(function (i) { return i.trim(); })); } } function blankMeta() { return { iconName: null, title: null, titleId: null, prefix: null, transform: meaninglessTransform, symbol: false, mask: null, maskId: null, extra: { classes: [], styles: {}, attributes: {} } }; } function parseMeta(node) { var _classParser = classParser(node), iconName = _classParser.iconName, prefix = _classParser.prefix, extraClasses = _classParser.rest; var extraStyles = styleParser(node); var transform = transformParser(node); var symbol = symbolParser(node); var extraAttributes = attributesParser(node); var mask = maskParser(node); return { iconName: iconName, title: node.getAttribute('title'), titleId: node.getAttribute('data-fa-title-id'), prefix: prefix, transform: transform, symbol: symbol, mask: mask, maskId: node.getAttribute('data-fa-mask-id'), extra: { classes: extraClasses, styles: extraStyles, attributes: extraAttributes } }; } function MissingIcon(error) { this.name = 'MissingIcon'; this.message = error || 'Icon unavailable'; this.stack = new Error().stack; } MissingIcon.prototype = Object.create(Error.prototype); MissingIcon.prototype.constructor = MissingIcon; var FILL = { fill: 'currentColor' }; var ANIMATION_BASE = { attributeType: 'XML', repeatCount: 'indefinite', dur: '2s' }; var RING = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z' }) }; var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { attributeName: 'opacity' }); var DOT = { tag: 'circle', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { cx: '256', cy: '364', r: '28' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, { attributeName: 'r', values: '28;14;28;28;14;28;' }) }, { tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '1;0;1;1;0;1;' }) }] }; var QUESTION = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { opacity: '1', d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '1;0;0;0;0;1;' }) }] }; var EXCLAMATION = { tag: 'path', attributes: _objectSpread2(_objectSpread2({}, FILL), {}, { opacity: '0', d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z' }), children: [{ tag: 'animate', attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, { values: '0;0;1;1;0;0;' }) }] }; var missing = { tag: 'g', children: [RING, DOT, QUESTION, EXCLAMATION] }; var styles$2 = namespace.styles; function asFoundIcon(icon) { var width = icon[0]; var height = icon[1]; var _icon$slice = icon.slice(4), _icon$slice2 = _slicedToArray(_icon$slice, 1), vectorData = _icon$slice2[0]; var element = null; if (Array.isArray(vectorData)) { element = { tag: 'g', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP) }, children: [{ tag: 'path', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY), fill: 'currentColor', d: vectorData[0] } }, { tag: 'path', attributes: { class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY), fill: 'currentColor', d: vectorData[1] } }] }; } else { element = { tag: 'path', attributes: { fill: 'currentColor', d: vectorData } }; } return { found: true, width: width, height: height, icon: element }; } function findIcon(iconName, prefix) { return new picked(function (resolve, reject) { var val = { found: false, width: 512, height: 512, icon: missing }; if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) { var icon = styles$2[prefix][iconName]; return resolve(asFoundIcon(icon)); } if (iconName && prefix && !config.showMissingIcons) { reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName))); } else { resolve(val); } }); } var styles$3 = namespace.styles; function generateSvgReplacementMutation(node, nodeMeta) { var iconName = nodeMeta.iconName, title = nodeMeta.title, titleId = nodeMeta.titleId, prefix = nodeMeta.prefix, transform = nodeMeta.transform, symbol = nodeMeta.symbol, mask = nodeMeta.mask, maskId = nodeMeta.maskId, extra = nodeMeta.extra; return new picked(function (resolve, reject) { picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), main = _ref2[0], mask = _ref2[1]; resolve([node, makeInlineSvgAbstract({ icons: { main: main, mask: mask }, prefix: prefix, iconName: iconName, transform: transform, symbol: symbol, mask: mask, maskId: maskId, title: title, titleId: titleId, extra: extra, watchable: true })]); }); }); } function generateLayersText(node, nodeMeta) { var title = nodeMeta.title, transform = nodeMeta.transform, extra = nodeMeta.extra; var width = null; var height = null; if (IS_IE) { var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10); var boundingClientRect = node.getBoundingClientRect(); width = boundingClientRect.width / computedFontSize; height = boundingClientRect.height / computedFontSize; } if (config.autoA11y && !title) { extra.attributes['aria-hidden'] = 'true'; } return picked.resolve([node, makeLayersTextAbstract({ content: node.innerHTML, width: width, height: height, transform: transform, title: title, extra: extra, watchable: true })]); } function generateMutation(node) { var nodeMeta = parseMeta(node); if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) { return generateLayersText(node, nodeMeta); } else { return generateSvgReplacementMutation(node, nodeMeta); } } function onTree(root) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (!IS_DOM) return; var htmlClassList = DOCUMENT.documentElement.classList; var hclAdd = function hclAdd(suffix) { return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); }; var hclRemove = function hclRemove(suffix) { return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix)); }; var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3); var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) { return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])"); })).join(', '); if (prefixesDomQuery.length === 0) { return; } var candidates = []; try { candidates = toArray(root.querySelectorAll(prefixesDomQuery)); } catch (e) {// noop } if (candidates.length > 0) { hclAdd('pending'); hclRemove('complete'); } else { return; } var mark = perf.begin('onTree'); var mutations = candidates.reduce(function (acc, node) { try { var mutation = generateMutation(node); if (mutation) { acc.push(mutation); } } catch (e) { if (!PRODUCTION) { if (e instanceof MissingIcon) { console.error(e); } } } return acc; }, []); return new picked(function (resolve, reject) { picked.all(mutations).then(function (resolvedMutations) { perform(resolvedMutations, function () { hclAdd('active'); hclAdd('complete'); hclRemove('pending'); if (typeof callback === 'function') callback(); mark(); resolve(); }); }).catch(function () { mark(); reject(); }); }); } function onNode(node) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; generateMutation(node).then(function (mutation) { if (mutation) { perform([mutation], callback); } }); } function replaceForPosition(node, position) { var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-')); return new picked(function (resolve, reject) { if (node.getAttribute(pendingAttribute) !== null) { // This node is already being processed return resolve(); } var children = toArray(node.children); var alreadyProcessedPseudoElement = children.filter(function (c) { return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position; })[0]; var styles = WINDOW.getComputedStyle(node, position); var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN); var fontWeight = styles.getPropertyValue('font-weight'); var content = styles.getPropertyValue('content'); if (alreadyProcessedPseudoElement && !fontFamily) { // If we've already processed it but the current computed style does not result in a font-family, // that probably means that a class name that was previously present to make the icon has been // removed. So we now should delete the icon. node.removeChild(alreadyProcessedPseudoElement); return resolve(); } else if (fontFamily && content !== 'none' && content !== '') { var _content = styles.getPropertyValue('content'); var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight]; var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content); var iconName = byUnicode(prefix, hexValue); var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't // already done so with the same prefix and iconName if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) { node.setAttribute(pendingAttribute, iconIdentifier); if (alreadyProcessedPseudoElement) { // Delete the old one, since we're replacing it with a new one node.removeChild(alreadyProcessedPseudoElement); } var meta = blankMeta(); var extra = meta.extra; extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position; findIcon(iconName, prefix).then(function (main) { var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, { icons: { main: main, mask: emptyCanonicalIcon() }, prefix: prefix, iconName: iconIdentifier, extra: extra, watchable: true })); var element = DOCUMENT.createElement('svg'); if (position === ':before') { node.insertBefore(element, node.firstChild); } else { node.appendChild(element); } element.outerHTML = abstract.map(function (a) { return toHtml(a); }).join('\n'); node.removeAttribute(pendingAttribute); resolve(); }).catch(reject); } else { resolve(); } } else { resolve(); } }); } function replace(node) { return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]); } function processable(node) { return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg'); } function searchPseudoElements (root) { if (!IS_DOM) return; return new picked(function (resolve, reject) { var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace); var end = perf.begin('searchPseudoElements'); disableObservation(); picked.all(operations).then(function () { end(); enableObservation(); resolve(); }).catch(function () { end(); enableObservation(); reject(); }); }); } var baseStyles = "svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}"; function css () { var dfp = DEFAULT_FAMILY_PREFIX; var drc = DEFAULT_REPLACEMENT_CLASS; var fp = config.familyPrefix; var rc = config.replacementClass; var s = baseStyles; if (fp !== dfp || rc !== drc) { var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g'); var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g'); var rPatt = new RegExp("\\.".concat(drc), 'g'); s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc)); } return s; } var Library = /*#__PURE__*/function () { function Library() { _classCallCheck(this, Library); this.definitions = {}; } _createClass(Library, [{ key: "add", value: function add() { var _this = this; for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) { definitions[_key] = arguments[_key]; } var additions = definitions.reduce(this._pullDefinitions, {}); Object.keys(additions).forEach(function (key) { _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]); defineIcons(key, additions[key]); build(); }); } }, { key: "reset", value: function reset() { this.definitions = {}; } }, { key: "_pullDefinitions", value: function _pullDefinitions(additions, definition) { var normalized = definition.prefix && definition.iconName && definition.icon ? { 0: definition } : definition; Object.keys(normalized).map(function (key) { var _normalized$key = normalized[key], prefix = _normalized$key.prefix, iconName = _normalized$key.iconName, icon = _normalized$key.icon; if (!additions[prefix]) additions[prefix] = {}; additions[prefix][iconName] = icon; }); return additions; } }]); return Library; }(); function ensureCss() { if (config.autoAddCss && !_cssInserted) { insertCss(css()); _cssInserted = true; } } function apiObject(val, abstractCreator) { Object.defineProperty(val, 'abstract', { get: abstractCreator }); Object.defineProperty(val, 'html', { get: function get() { return val.abstract.map(function (a) { return toHtml(a); }); } }); Object.defineProperty(val, 'node', { get: function get() { if (!IS_DOM) return; var container = DOCUMENT.createElement('div'); container.innerHTML = val.html; return container.children; } }); return val; } function findIconDefinition(iconLookup) { var _iconLookup$prefix = iconLookup.prefix, prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix, iconName = iconLookup.iconName; if (!iconName) return; return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName); } function resolveIcons(next) { return function (maybeIconDefinition) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {}); var mask = params.mask; if (mask) { mask = (mask || {}).icon ? mask : findIconDefinition(mask || {}); } return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, { mask: mask })); }; } var library = new Library(); var noAuto = function noAuto() { config.autoReplaceSvg = false; config.observeMutations = false; disconnect(); }; var _cssInserted = false; var dom = { i2svg: function i2svg() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (IS_DOM) { ensureCss(); var _params$node = params.node, node = _params$node === void 0 ? DOCUMENT : _params$node, _params$callback = params.callback, callback = _params$callback === void 0 ? function () {} : _params$callback; if (config.searchPseudoElements) { searchPseudoElements(node); } return onTree(node, callback); } else { return picked.reject('Operation requires a DOM of some kind.'); } }, css: css, insertCss: function insertCss$$1() { if (!_cssInserted) { insertCss(css()); _cssInserted = true; } }, watch: function watch() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var autoReplaceSvgRoot = params.autoReplaceSvgRoot, observeMutationsRoot = params.observeMutationsRoot; if (config.autoReplaceSvg === false) { config.autoReplaceSvg = true; } config.observeMutations = true; domready(function () { autoReplace({ autoReplaceSvgRoot: autoReplaceSvgRoot }); observe({ treeCallback: onTree, nodeCallback: onNode, pseudoElementsCallback: searchPseudoElements, observeMutationsRoot: observeMutationsRoot }); }); } }; var parse = { transform: function transform(transformString) { return parseTransformString(transformString); } }; var icon = resolveIcons(function (iconDefinition) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$transform = params.transform, transform = _params$transform === void 0 ? meaninglessTransform : _params$transform, _params$symbol = params.symbol, symbol = _params$symbol === void 0 ? false : _params$symbol, _params$mask = params.mask, mask = _params$mask === void 0 ? null : _params$mask, _params$maskId = params.maskId, maskId = _params$maskId === void 0 ? null : _params$maskId, _params$title = params.title, title = _params$title === void 0 ? null : _params$title, _params$titleId = params.titleId, titleId = _params$titleId === void 0 ? null : _params$titleId, _params$classes = params.classes, classes = _params$classes === void 0 ? [] : _params$classes, _params$attributes = params.attributes, attributes = _params$attributes === void 0 ? {} : _params$attributes, _params$styles = params.styles, styles = _params$styles === void 0 ? {} : _params$styles; if (!iconDefinition) return; var prefix = iconDefinition.prefix, iconName = iconDefinition.iconName, icon = iconDefinition.icon; return apiObject(_objectSpread2({ type: 'icon' }, iconDefinition), function () { ensureCss(); if (config.autoA11y) { if (title) { attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId()); } else { attributes['aria-hidden'] = 'true'; attributes['focusable'] = 'false'; } } return makeInlineSvgAbstract({ icons: { main: asFoundIcon(icon), mask: mask ? asFoundIcon(mask.icon) : { found: false, width: null, height: null, icon: {} } }, prefix: prefix, iconName: iconName, transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), symbol: symbol, title: title, maskId: maskId, titleId: titleId, extra: { attributes: attributes, styles: styles, classes: classes } }); }); }); var text = function text(content) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$transform2 = params.transform, transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2, _params$title2 = params.title, title = _params$title2 === void 0 ? null : _params$title2, _params$classes2 = params.classes, classes = _params$classes2 === void 0 ? [] : _params$classes2, _params$attributes2 = params.attributes, attributes = _params$attributes2 === void 0 ? {} : _params$attributes2, _params$styles2 = params.styles, styles = _params$styles2 === void 0 ? {} : _params$styles2; return apiObject({ type: 'text', content: content }, function () { ensureCss(); return makeLayersTextAbstract({ content: content, transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform), title: title, extra: { attributes: attributes, styles: styles, classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes)) } }); }); }; var counter = function counter(content) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$title3 = params.title, title = _params$title3 === void 0 ? null : _params$title3, _params$classes3 = params.classes, classes = _params$classes3 === void 0 ? [] : _params$classes3, _params$attributes3 = params.attributes, attributes = _params$attributes3 === void 0 ? {} : _params$attributes3, _params$styles3 = params.styles, styles = _params$styles3 === void 0 ? {} : _params$styles3; return apiObject({ type: 'counter', content: content }, function () { ensureCss(); return makeLayersCounterAbstract({ content: content.toString(), title: title, extra: { attributes: attributes, styles: styles, classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes)) } }); }); }; var layer = function layer(assembler) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _params$classes4 = params.classes, classes = _params$classes4 === void 0 ? [] : _params$classes4; return apiObject({ type: 'layer' }, function () { ensureCss(); var children = []; assembler(function (args) { Array.isArray(args) ? args.map(function (a) { children = children.concat(a.abstract); }) : children = children.concat(args.abstract); }); return [{ tag: 'span', attributes: { class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ') }, children: children }]; }); }; var api = { noAuto: noAuto, config: config, dom: dom, library: library, parse: parse, findIconDefinition: findIconDefinition, icon: icon, text: text, counter: counter, layer: layer, toHtml: toHtml }; var autoReplace = function autoReplace() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _params$autoReplaceSv = params.autoReplaceSvgRoot, autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv; if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({ node: autoReplaceSvgRoot }); }; exports.icon = icon; exports.noAuto = noAuto; exports.config = config; exports.toHtml = toHtml; exports.layer = layer; exports.text = text; exports.counter = counter; exports.library = library; exports.dom = dom; exports.parse = parse; exports.findIconDefinition = findIconDefinition; Object.defineProperty(exports, '__esModule', { value: true }); }))); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/package.json ================================================ { "description": "The iconic font, CSS, and SVG framework", "keywords": [ "font", "awesome", "fontawesome", "icon", "svg", "bootstrap" ], "homepage": "https://fontawesome.com", "bugs": { "url": "http://github.com/FortAwesome/Font-Awesome/issues" }, "author": { "name": "Dave Gandy", "email": "dave@fontawesome.com", "web": "http://twitter.com/davegandy" }, "contributors": [ { "name": "Brian Talbot", "web": "http://twitter.com/talbs" }, { "name": "Travis Chase", "web": "http://twitter.com/supercodepoet" }, { "name": "Rob Madole", "web": "http://twitter.com/robmadole" }, { "name": "Geremia Taglialatela", "web": "http://twitter.com/gtagliala" }, { "name": "Mike Wilkerson", "web": "http://twitter.com/mw77" } ], "repository": { "type": "git", "url": "https://github.com/FortAwesome/Font-Awesome" }, "engines": { "node": ">=6" }, "dependencies": { "@fortawesome/fontawesome-common-types": "^0.2.36" }, "version": "1.2.36", "name": "@fortawesome/fontawesome-svg-core", "main": "index.js", "module": "index.es.js", "jsnext:main": "index.es.js", "style": "styles.css", "license": "MIT", "types": "./index.d.ts", "scripts": { "postinstall": "node attribution.js" } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/fontawesome-svg-core/styles.css ================================================ svg:not(:root).svg-inline--fa { overflow: visible; } .svg-inline--fa { display: inline-block; font-size: inherit; height: 1em; overflow: visible; vertical-align: -.125em; } .svg-inline--fa.fa-lg { vertical-align: -.225em; } .svg-inline--fa.fa-w-1 { width: 0.0625em; } .svg-inline--fa.fa-w-2 { width: 0.125em; } .svg-inline--fa.fa-w-3 { width: 0.1875em; } .svg-inline--fa.fa-w-4 { width: 0.25em; } .svg-inline--fa.fa-w-5 { width: 0.3125em; } .svg-inline--fa.fa-w-6 { width: 0.375em; } .svg-inline--fa.fa-w-7 { width: 0.4375em; } .svg-inline--fa.fa-w-8 { width: 0.5em; } .svg-inline--fa.fa-w-9 { width: 0.5625em; } .svg-inline--fa.fa-w-10 { width: 0.625em; } .svg-inline--fa.fa-w-11 { width: 0.6875em; } .svg-inline--fa.fa-w-12 { width: 0.75em; } .svg-inline--fa.fa-w-13 { width: 0.8125em; } .svg-inline--fa.fa-w-14 { width: 0.875em; } .svg-inline--fa.fa-w-15 { width: 0.9375em; } .svg-inline--fa.fa-w-16 { width: 1em; } .svg-inline--fa.fa-w-17 { width: 1.0625em; } .svg-inline--fa.fa-w-18 { width: 1.125em; } .svg-inline--fa.fa-w-19 { width: 1.1875em; } .svg-inline--fa.fa-w-20 { width: 1.25em; } .svg-inline--fa.fa-pull-left { margin-right: .3em; width: auto; } .svg-inline--fa.fa-pull-right { margin-left: .3em; width: auto; } .svg-inline--fa.fa-border { height: 1.5em; } .svg-inline--fa.fa-li { width: 2em; } .svg-inline--fa.fa-fw { width: 1.25em; } .fa-layers svg.svg-inline--fa { bottom: 0; left: 0; margin: auto; position: absolute; right: 0; top: 0; } .fa-layers { display: inline-block; height: 1em; position: relative; text-align: center; vertical-align: -.125em; width: 1em; } .fa-layers svg.svg-inline--fa { -webkit-transform-origin: center center; transform-origin: center center; } .fa-layers-text, .fa-layers-counter { display: inline-block; position: absolute; text-align: center; } .fa-layers-text { left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); -webkit-transform-origin: center center; transform-origin: center center; } .fa-layers-counter { background-color: #ff253a; border-radius: 1em; -webkit-box-sizing: border-box; box-sizing: border-box; color: #fff; height: 1.5em; line-height: 1; max-width: 5em; min-width: 1.5em; overflow: hidden; padding: .25em; right: 0; text-overflow: ellipsis; top: 0; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: top right; transform-origin: top right; } .fa-layers-bottom-right { bottom: 0; right: 0; top: auto; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: bottom right; transform-origin: bottom right; } .fa-layers-bottom-left { bottom: 0; left: 0; right: auto; top: auto; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: bottom left; transform-origin: bottom left; } .fa-layers-top-right { right: 0; top: 0; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: top right; transform-origin: top right; } .fa-layers-top-left { left: 0; right: auto; top: 0; -webkit-transform: scale(0.25); transform: scale(0.25); -webkit-transform-origin: top left; transform-origin: top left; } .fa-lg { font-size: 1.33333em; line-height: 0.75em; vertical-align: -.0667em; } .fa-xs { font-size: .75em; } .fa-sm { font-size: .875em; } .fa-1x { font-size: 1em; } .fa-2x { font-size: 2em; } .fa-3x { font-size: 3em; } .fa-4x { font-size: 4em; } .fa-5x { font-size: 5em; } .fa-6x { font-size: 6em; } .fa-7x { font-size: 7em; } .fa-8x { font-size: 8em; } .fa-9x { font-size: 9em; } .fa-10x { font-size: 10em; } .fa-fw { text-align: center; width: 1.25em; } .fa-ul { list-style-type: none; margin-left: 2.5em; padding-left: 0; } .fa-ul > li { position: relative; } .fa-li { left: -2em; position: absolute; text-align: center; width: 2em; line-height: inherit; } .fa-border { border: solid 0.08em #eee; border-radius: .1em; padding: .2em .25em .15em; } .fa-pull-left { float: left; } .fa-pull-right { float: right; } .fa.fa-pull-left, .fas.fa-pull-left, .far.fa-pull-left, .fal.fa-pull-left, .fab.fa-pull-left { margin-right: .3em; } .fa.fa-pull-right, .fas.fa-pull-right, .far.fa-pull-right, .fal.fa-pull-right, .fab.fa-pull-right { margin-left: .3em; } .fa-spin { -webkit-animation: fa-spin 2s infinite linear; animation: fa-spin 2s infinite linear; } .fa-pulse { -webkit-animation: fa-spin 1s infinite steps(8); animation: fa-spin 1s infinite steps(8); } @-webkit-keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } .fa-rotate-90 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); transform: rotate(90deg); } .fa-rotate-180 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); transform: rotate(180deg); } .fa-rotate-270 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); transform: rotate(270deg); } .fa-flip-horizontal { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); transform: scale(-1, 1); } .fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); transform: scale(1, -1); } .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(-1, -1); transform: scale(-1, -1); } :root .fa-rotate-90, :root .fa-rotate-180, :root .fa-rotate-270, :root .fa-flip-horizontal, :root .fa-flip-vertical, :root .fa-flip-both { -webkit-filter: none; filter: none; } .fa-stack { display: inline-block; height: 2em; position: relative; width: 2.5em; } .fa-stack-1x, .fa-stack-2x { bottom: 0; left: 0; margin: auto; position: absolute; right: 0; top: 0; } .svg-inline--fa.fa-stack-1x { height: 1em; width: 1.25em; } .svg-inline--fa.fa-stack-2x { height: 2em; width: 2.5em; } .fa-inverse { color: #fff; } .sr-only { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .sr-only-focusable:active, .sr-only-focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } .svg-inline--fa .fa-primary { fill: var(--fa-primary-color, currentColor); opacity: 1; opacity: var(--fa-primary-opacity, 1); } .svg-inline--fa .fa-secondary { fill: var(--fa-secondary-color, currentColor); opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .svg-inline--fa.fa-swap-opacity .fa-primary { opacity: 0.4; opacity: var(--fa-secondary-opacity, 0.4); } .svg-inline--fa.fa-swap-opacity .fa-secondary { opacity: 1; opacity: var(--fa-primary-opacity, 1); } .svg-inline--fa mask .fa-primary, .svg-inline--fa mask .fa-secondary { fill: black; } .fad.fa-inverse { color: #fff; } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/LICENSE.txt ================================================ Font Awesome Pro License ------------------------ Font Awesome Pro is commercial software that requires a paid license. Full Font Awesome Pro license: https://fontawesome.com/license. # Commercial License The Font Awesome Pro commercial license allows you to pay for FA Pro once, own it, and use it just about everywhere you'd like. # Attribution Attribution is not required by the Font Awesome Pro commercial license. # Brand Icons All brand icons are trademarks of their respective owners. The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa. **Please do not use brand logos for any purpose except to represent the company, product, or service to which they refer.** ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/attribution.js ================================================ console.log(`Font Awesome Pro undefined by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) `) ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faAws.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faAws: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faAws.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'aws'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f375'; var svgPathData = 'M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faAws = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcAmazonPay.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCcAmazonPay: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcAmazonPay.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'cc-amazon-pay'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f42d'; var svgPathData = 'M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCcAmazonPay = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcAmex.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCcAmex: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcAmex.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'cc-amex'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f1f3'; var svgPathData = 'M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCcAmex = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcApplePay.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCcApplePay: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcApplePay.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'cc-apple-pay'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f416'; var svgPathData = 'M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCcApplePay = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcDinersClub.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCcDinersClub: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcDinersClub.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'cc-diners-club'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f24c'; var svgPathData = 'M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCcDinersClub = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcDiscover.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCcDiscover: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcDiscover.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'cc-discover'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f1f2'; var svgPathData = 'M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCcDiscover = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcJcb.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCcJcb: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcJcb.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'cc-jcb'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f24b'; var svgPathData = 'M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCcJcb = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcMastercard.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCcMastercard: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcMastercard.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'cc-mastercard'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f1f1'; var svgPathData = 'M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCcMastercard = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcPaypal.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCcPaypal: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcPaypal.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'cc-paypal'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f1f4'; var svgPathData = 'M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCcPaypal = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcStripe.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCcStripe: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcStripe.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'cc-stripe'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f1f5'; var svgPathData = 'M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCcStripe = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcVisa.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCcVisa: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faCcVisa.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'cc-visa'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f1f0'; var svgPathData = 'M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCcVisa = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faDiscourse.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faDiscourse: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faDiscourse.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'discourse'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f393'; var svgPathData = 'M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faDiscourse = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faDocker.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faDocker: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faDocker.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'docker'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f395'; var svgPathData = 'M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faDocker = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faGithub.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faGithub: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faGithub.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'github'; var width = 496; var height = 512; var ligatures = []; var unicode = 'f09b'; var svgPathData = 'M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faGithub = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faInstagram.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faInstagram: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faInstagram.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'instagram'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f16d'; var svgPathData = 'M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faInstagram = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faMicrosoft.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faMicrosoft: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faMicrosoft.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'microsoft'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f3ca'; var svgPathData = 'M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faMicrosoft = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faRev.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faRev: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faRev.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'rev'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f5b2'; var svgPathData = 'M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faRev = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faSlack.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSlack: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faSlack.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'slack'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f198'; var svgPathData = 'M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSlack = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faTwitter.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faTwitter: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/faTwitter.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fab'; var iconName = 'twitter'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f099'; var svgPathData = 'M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faTwitter = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/index.d.ts ================================================ export const faAws: IconDefinition; export const faCcAmazonPay: IconDefinition; export const faCcAmex: IconDefinition; export const faCcApplePay: IconDefinition; export const faCcDinersClub: IconDefinition; export const faCcDiscover: IconDefinition; export const faCcJcb: IconDefinition; export const faCcMastercard: IconDefinition; export const faCcPaypal: IconDefinition; export const faCcStripe: IconDefinition; export const faCcVisa: IconDefinition; export const faDiscourse: IconDefinition; export const faDocker: IconDefinition; export const faGithub: IconDefinition; export const faInstagram: IconDefinition; export const faMicrosoft: IconDefinition; export const faRev: IconDefinition; export const faSlack: IconDefinition; export const faTwitter: IconDefinition; import { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types'; export { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types'; export const prefix: IconPrefix; export const fab: IconPack; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/index.es.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ var prefix = "fab"; var faAws = { prefix: 'fab', iconName: 'aws', icon: [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"] }; var faCcAmazonPay = { prefix: 'fab', iconName: 'cc-amazon-pay', icon: [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"] }; var faCcAmex = { prefix: 'fab', iconName: 'cc-amex', icon: [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"] }; var faCcApplePay = { prefix: 'fab', iconName: 'cc-apple-pay', icon: [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"] }; var faCcDinersClub = { prefix: 'fab', iconName: 'cc-diners-club', icon: [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"] }; var faCcDiscover = { prefix: 'fab', iconName: 'cc-discover', icon: [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"] }; var faCcJcb = { prefix: 'fab', iconName: 'cc-jcb', icon: [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"] }; var faCcMastercard = { prefix: 'fab', iconName: 'cc-mastercard', icon: [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"] }; var faCcPaypal = { prefix: 'fab', iconName: 'cc-paypal', icon: [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"] }; var faCcStripe = { prefix: 'fab', iconName: 'cc-stripe', icon: [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"] }; var faCcVisa = { prefix: 'fab', iconName: 'cc-visa', icon: [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"] }; var faDiscourse = { prefix: 'fab', iconName: 'discourse', icon: [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"] }; var faDocker = { prefix: 'fab', iconName: 'docker', icon: [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"] }; var faGithub = { prefix: 'fab', iconName: 'github', icon: [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"] }; var faInstagram = { prefix: 'fab', iconName: 'instagram', icon: [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"] }; var faMicrosoft = { prefix: 'fab', iconName: 'microsoft', icon: [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"] }; var faRev = { prefix: 'fab', iconName: 'rev', icon: [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"] }; var faSlack = { prefix: 'fab', iconName: 'slack', icon: [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"] }; var faTwitter = { prefix: 'fab', iconName: 'twitter', icon: [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"] }; var _iconsCache = { faAws: faAws, faCcAmazonPay: faCcAmazonPay, faCcAmex: faCcAmex, faCcApplePay: faCcApplePay, faCcDinersClub: faCcDinersClub, faCcDiscover: faCcDiscover, faCcJcb: faCcJcb, faCcMastercard: faCcMastercard, faCcPaypal: faCcPaypal, faCcStripe: faCcStripe, faCcVisa: faCcVisa, faDiscourse: faDiscourse, faDocker: faDocker, faGithub: faGithub, faInstagram: faInstagram, faMicrosoft: faMicrosoft, faRev: faRev, faSlack: faSlack, faTwitter: faTwitter }; export { _iconsCache as fab, prefix, faAws, faCcAmazonPay, faCcAmex, faCcApplePay, faCcDinersClub, faCcDiscover, faCcJcb, faCcMastercard, faCcPaypal, faCcStripe, faCcVisa, faDiscourse, faDocker, faGithub, faInstagram, faMicrosoft, faRev, faSlack, faTwitter }; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/index.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (factory((global['pro-brands-svg-icons'] = {}))); }(this, (function (exports) { 'use strict'; var prefix = "fab"; var faAws = { prefix: 'fab', iconName: 'aws', icon: [640, 512, [], "f375", "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"] }; var faCcAmazonPay = { prefix: 'fab', iconName: 'cc-amazon-pay', icon: [576, 512, [], "f42d", "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"] }; var faCcAmex = { prefix: 'fab', iconName: 'cc-amex', icon: [576, 512, [], "f1f3", "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"] }; var faCcApplePay = { prefix: 'fab', iconName: 'cc-apple-pay', icon: [576, 512, [], "f416", "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"] }; var faCcDinersClub = { prefix: 'fab', iconName: 'cc-diners-club', icon: [576, 512, [], "f24c", "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"] }; var faCcDiscover = { prefix: 'fab', iconName: 'cc-discover', icon: [576, 512, [], "f1f2", "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"] }; var faCcJcb = { prefix: 'fab', iconName: 'cc-jcb', icon: [576, 512, [], "f24b", "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"] }; var faCcMastercard = { prefix: 'fab', iconName: 'cc-mastercard', icon: [576, 512, [], "f1f1", "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"] }; var faCcPaypal = { prefix: 'fab', iconName: 'cc-paypal', icon: [576, 512, [], "f1f4", "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"] }; var faCcStripe = { prefix: 'fab', iconName: 'cc-stripe', icon: [576, 512, [], "f1f5", "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"] }; var faCcVisa = { prefix: 'fab', iconName: 'cc-visa', icon: [576, 512, [], "f1f0", "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"] }; var faDiscourse = { prefix: 'fab', iconName: 'discourse', icon: [448, 512, [], "f393", "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"] }; var faDocker = { prefix: 'fab', iconName: 'docker', icon: [640, 512, [], "f395", "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"] }; var faGithub = { prefix: 'fab', iconName: 'github', icon: [496, 512, [], "f09b", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"] }; var faInstagram = { prefix: 'fab', iconName: 'instagram', icon: [448, 512, [], "f16d", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"] }; var faMicrosoft = { prefix: 'fab', iconName: 'microsoft', icon: [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"] }; var faRev = { prefix: 'fab', iconName: 'rev', icon: [448, 512, [], "f5b2", "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"] }; var faSlack = { prefix: 'fab', iconName: 'slack', icon: [448, 512, [], "f198", "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"] }; var faTwitter = { prefix: 'fab', iconName: 'twitter', icon: [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"] }; var _iconsCache = { faAws: faAws, faCcAmazonPay: faCcAmazonPay, faCcAmex: faCcAmex, faCcApplePay: faCcApplePay, faCcDinersClub: faCcDinersClub, faCcDiscover: faCcDiscover, faCcJcb: faCcJcb, faCcMastercard: faCcMastercard, faCcPaypal: faCcPaypal, faCcStripe: faCcStripe, faCcVisa: faCcVisa, faDiscourse: faDiscourse, faDocker: faDocker, faGithub: faGithub, faInstagram: faInstagram, faMicrosoft: faMicrosoft, faRev: faRev, faSlack: faSlack, faTwitter: faTwitter }; exports.fab = _iconsCache; exports.prefix = prefix; exports.faAws = faAws; exports.faCcAmazonPay = faCcAmazonPay; exports.faCcAmex = faCcAmex; exports.faCcApplePay = faCcApplePay; exports.faCcDinersClub = faCcDinersClub; exports.faCcDiscover = faCcDiscover; exports.faCcJcb = faCcJcb; exports.faCcMastercard = faCcMastercard; exports.faCcPaypal = faCcPaypal; exports.faCcStripe = faCcStripe; exports.faCcVisa = faCcVisa; exports.faDiscourse = faDiscourse; exports.faDocker = faDocker; exports.faGithub = faGithub; exports.faInstagram = faInstagram; exports.faMicrosoft = faMicrosoft; exports.faRev = faRev; exports.faSlack = faSlack; exports.faTwitter = faTwitter; Object.defineProperty(exports, '__esModule', { value: true }); }))); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-brands-svg-icons/package.json ================================================ { "description": "The iconic font, CSS, and SVG framework", "keywords": [ "font", "awesome", "fontawesome", "icon", "svg", "bootstrap" ], "homepage": "https://fontawesome.com", "bugs": { "url": "http://github.com/FortAwesome/Font-Awesome/issues" }, "author": { "name": "Dave Gandy", "email": "dave@fontawesome.com", "web": "http://twitter.com/davegandy" }, "contributors": [ { "name": "Brian Talbot", "web": "http://twitter.com/talbs" }, { "name": "Travis Chase", "web": "http://twitter.com/supercodepoet" }, { "name": "Rob Madole", "web": "http://twitter.com/robmadole" }, { "name": "Geremia Taglialatela", "web": "http://twitter.com/gtagliala" }, { "name": "Mike Wilkerson", "web": "http://twitter.com/mw77" } ], "repository": { "type": "git", "url": "https://github.com/FortAwesome/Font-Awesome" }, "engines": { "node": ">=6" }, "dependencies": { "@fortawesome/fontawesome-common-types": "^0.2.36" }, "name": "@fortawesome/pro-brands-svg-icons", "main": "index.js", "module": "index.es.js", "jsnext:main": "index.es.js", "license": "UNLICENSED", "types": "./index.d.ts", "sideEffects": false, "scripts": { "postinstall": "node attribution.js" } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/LICENSE.txt ================================================ Font Awesome Pro License ------------------------ Font Awesome Pro is commercial software that requires a paid license. Full Font Awesome Pro license: https://fontawesome.com/license. # Commercial License The Font Awesome Pro commercial license allows you to pay for FA Pro once, own it, and use it just about everywhere you'd like. # Attribution Attribution is not required by the Font Awesome Pro commercial license. # Brand Icons All brand icons are trademarks of their respective owners. The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa. **Please do not use brand logos for any purpose except to represent the company, product, or service to which they refer.** ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/README.md ================================================ # @fortawesome/free-duotone-svg-icons - SVG with JavaScript version > "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum" [![npm](https://img.shields.io/npm/v/@fortawesome/free-duotone-svg-icons.svg?style=flat-square)](https://www.npmjs.com/package/@fortawesome/free-duotone-svg-icons) ## Installation ``` $ npm i --save @fortawesome/free-duotone-svg-icons ``` Or ``` $ yarn add @fortawesome/free-duotone-svg-icons ``` ## Documentation Get started [here](https://fontawesome.com/how-to-use/on-the-web/setup/getting-started). Continue your journey [here](https://fontawesome.com/how-to-use/on-the-web/advanced). Or go straight to the [API documentation](https://fontawesome.com/how-to-use/with-the-api). ## Issues and support Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to. ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/attribution.js ================================================ console.log(`Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) `) ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faAbacus.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faAbacus: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faAbacus.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'abacus'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f640'; var svgPathData = ['M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z', 'M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faAbacus = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faAlignSlash.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faAlignSlash: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faAlignSlash.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'align-slash'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f846'; var svgPathData = ['M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z', 'M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faAlignSlash = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faAtomAlt.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faAtomAlt: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faAtomAlt.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'atom-alt'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f5d3'; var svgPathData = ['M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z', 'M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faAtomAlt = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBadgeCheck.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faBadgeCheck: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBadgeCheck.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'badge-check'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f336'; var svgPathData = ['M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z', 'M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faBadgeCheck = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBell.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faBell: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBell.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'bell'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f0f3'; var svgPathData = ['M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z', 'M160 448h128a64 64 0 0 1-128 0z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faBell = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBooks.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faBooks: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBooks.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'books'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f5db'; var svgPathData = ['M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z', 'M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faBooks = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBracketsCurly.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faBracketsCurly: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faBracketsCurly.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'brackets-curly'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f7ea'; var svgPathData = ['M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z', 'M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faBracketsCurly = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faChartNetwork.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faChartNetwork: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faChartNetwork.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'chart-network'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f78a'; var svgPathData = ['M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z', 'M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faChartNetwork = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faChartScatter.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faChartScatter: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faChartScatter.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'chart-scatter'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f7ee'; var svgPathData = ['M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z', 'M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faChartScatter = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCheck.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCheck: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCheck.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'check'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f00c'; var svgPathData = ['M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z', 'M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCheck = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCircle.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCircle: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCircle.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'circle'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f111'; var svgPathData = ['M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z', 'M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCircle = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faClouds.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faClouds: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faClouds.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'clouds'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f744'; var svgPathData = ['M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z', 'M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faClouds = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCogs.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCogs: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCogs.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'cogs'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f085'; var svgPathData = ['M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z', 'M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCogs = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCommentDots.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCommentDots: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faCommentDots.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'comment-dots'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f4ad'; var svgPathData = ['M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z', 'M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCommentDots = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faConciergeBell.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faConciergeBell: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faConciergeBell.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'concierge-bell'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f562'; var svgPathData = ['M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z', 'M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faConciergeBell = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faDotCircle.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faDotCircle: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faDotCircle.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'dot-circle'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f192'; var svgPathData = ['M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z', 'M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faDotCircle = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faEnvelope.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faEnvelope: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faEnvelope.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'envelope'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f0e0'; var svgPathData = ['M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z', 'M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faEnvelope = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faExchangeAlt.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faExchangeAlt: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faExchangeAlt.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'exchange-alt'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f362'; var svgPathData = ['M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z', 'M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faExchangeAlt = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faFileAlt.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faFileAlt: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faFileAlt.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'file-alt'; var width = 384; var height = 512; var ligatures = []; var unicode = 'f15c'; var svgPathData = ['M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z', 'M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faFileAlt = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faFileCode.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faFileCode: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faFileCode.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'file-code'; var width = 384; var height = 512; var ligatures = []; var unicode = 'f1c9'; var svgPathData = ['M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z', 'M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faFileCode = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobe.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faGlobe: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobe.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'globe'; var width = 496; var height = 512; var ligatures = []; var unicode = 'f0ac'; var svgPathData = ['M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z', 'M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faGlobe = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeAfrica.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faGlobeAfrica: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeAfrica.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'globe-africa'; var width = 496; var height = 512; var ligatures = []; var unicode = 'f57c'; var svgPathData = ['M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z', 'M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faGlobeAfrica = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeAmericas.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faGlobeAmericas: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeAmericas.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'globe-americas'; var width = 496; var height = 512; var ligatures = []; var unicode = 'f57d'; var svgPathData = ['M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z', 'M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faGlobeAmericas = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeAsia.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faGlobeAsia: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeAsia.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'globe-asia'; var width = 496; var height = 512; var ligatures = []; var unicode = 'f57e'; var svgPathData = ['M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z', 'M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faGlobeAsia = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeEurope.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faGlobeEurope: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGlobeEurope.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'globe-europe'; var width = 496; var height = 512; var ligatures = []; var unicode = 'f7a2'; var svgPathData = ['M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z', 'M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faGlobeEurope = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGraduationCap.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faGraduationCap: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faGraduationCap.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'graduation-cap'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f19d'; var svgPathData = ['M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z', 'M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faGraduationCap = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faHistory.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faHistory: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faHistory.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'history'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f1da'; var svgPathData = ['M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z', 'M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faHistory = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faKey.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faKey: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faKey.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'key'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f084'; var svgPathData = ['M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z', 'M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faKey = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faKeySkeleton.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faKeySkeleton: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faKeySkeleton.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'key-skeleton'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f6f3'; var svgPathData = ['M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z', 'M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faKeySkeleton = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLaptop.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faLaptop: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLaptop.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'laptop'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f109'; var svgPathData = ['M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z', 'M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faLaptop = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLaptopCode.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faLaptopCode: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLaptopCode.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'laptop-code'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f5fc'; var svgPathData = ['M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z', 'M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faLaptopCode = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLaptopHouse.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faLaptopHouse: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLaptopHouse.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'laptop-house'; var width = 640; var height = 512; var ligatures = []; var unicode = 'e066'; var svgPathData = ['M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z', 'M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faLaptopHouse = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLifeRing.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faLifeRing: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLifeRing.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'life-ring'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f1cd'; var svgPathData = ['M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z', 'M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faLifeRing = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLightbulb.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faLightbulb: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLightbulb.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'lightbulb'; var width = 352; var height = 512; var ligatures = []; var unicode = 'f0eb'; var svgPathData = ['M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z', 'M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faLightbulb = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faListAlt.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faListAlt: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faListAlt.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'list-alt'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f022'; var svgPathData = ['M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z', 'M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faListAlt = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faListUl.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faListUl: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faListUl.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'list-ul'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f0ca'; var svgPathData = ['M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z', 'M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faListUl = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLockAlt.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faLockAlt: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faLockAlt.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'lock-alt'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f30d'; var svgPathData = ['M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z', 'M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faLockAlt = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faMapMarkerAlt.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faMapMarkerAlt: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faMapMarkerAlt.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'map-marker-alt'; var width = 384; var height = 512; var ligatures = []; var unicode = 'f3c5'; var svgPathData = ['M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z', 'M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faMapMarkerAlt = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faMoonStars.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faMoonStars: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faMoonStars.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'moon-stars'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f755'; var svgPathData = ['M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z', 'M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faMoonStars = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faNetworkWired.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faNetworkWired: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faNetworkWired.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'network-wired'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f6ff'; var svgPathData = ['M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z', 'M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faNetworkWired = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faPlanetRinged.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faPlanetRinged: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faPlanetRinged.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'planet-ringed'; var width = 512; var height = 512; var ligatures = []; var unicode = 'e020'; var svgPathData = ['M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z', 'M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faPlanetRinged = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faQuestionCircle.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faQuestionCircle: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faQuestionCircle.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'question-circle'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f059'; var svgPathData = ['M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z', 'M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faQuestionCircle = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faQuoteLeft.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faQuoteLeft: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faQuoteLeft.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'quote-left'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f10d'; var svgPathData = ['M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z', 'M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faQuoteLeft = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faRandom.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faRandom: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faRandom.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'random'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f074'; var svgPathData = ['M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z', 'M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faRandom = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faRocket.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faRocket: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faRocket.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'rocket'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f135'; var svgPathData = ['M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z', 'M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faRocket = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSearch.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSearch: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSearch.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'search'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f002'; var svgPathData = ['M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z', 'M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSearch = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faServer.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faServer: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faServer.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'server'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f233'; var svgPathData = ['M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z', 'M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faServer = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSignOut.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSignOut: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSignOut.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'sign-out'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f08b'; var svgPathData = ['M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z', 'M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSignOut = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSirenOn.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSirenOn: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSirenOn.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'siren-on'; var width = 640; var height = 512; var ligatures = []; var unicode = 'e02e'; var svgPathData = ['M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z', 'M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSirenOn = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSmile.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSmile: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSmile.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'smile'; var width = 496; var height = 512; var ligatures = []; var unicode = 'f118'; var svgPathData = ['M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z', 'M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSmile = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSnowman.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSnowman: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSnowman.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'snowman'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f7d0'; var svgPathData = ['M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z', 'M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSnowman = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSun.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSun: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faSun.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'sun'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f185'; var svgPathData = ['M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z', 'M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSun = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faTasks.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faTasks: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faTasks.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'tasks'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f0ae'; var svgPathData = ['M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z', 'M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faTasks = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUniversity.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUniversity: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUniversity.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'university'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f19c'; var svgPathData = ['M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z', 'M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUniversity = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUser.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUser: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUser.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'user'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f007'; var svgPathData = ['M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z', 'M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUser = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUserHardHat.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUserHardHat: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUserHardHat.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'user-hard-hat'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f82c'; var svgPathData = ['M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z', 'M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUserHardHat = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUserShield.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUserShield: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUserShield.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'user-shield'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f505'; var svgPathData = ['M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z', 'M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUserShield = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUsers.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUsers: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string[]; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/faUsers.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fad'; var iconName = 'users'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f0c0'; var svgPathData = ['M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z', 'M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z']; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUsers = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/index.d.ts ================================================ export const faAbacus: IconDefinition; export const faAlignSlash: IconDefinition; export const faAtomAlt: IconDefinition; export const faBadgeCheck: IconDefinition; export const faBell: IconDefinition; export const faBooks: IconDefinition; export const faBracketsCurly: IconDefinition; export const faChartNetwork: IconDefinition; export const faChartScatter: IconDefinition; export const faCheck: IconDefinition; export const faCircle: IconDefinition; export const faClouds: IconDefinition; export const faCogs: IconDefinition; export const faCommentDots: IconDefinition; export const faConciergeBell: IconDefinition; export const faDotCircle: IconDefinition; export const faEnvelope: IconDefinition; export const faExchangeAlt: IconDefinition; export const faFileAlt: IconDefinition; export const faFileCode: IconDefinition; export const faGlobe: IconDefinition; export const faGlobeAfrica: IconDefinition; export const faGlobeAmericas: IconDefinition; export const faGlobeAsia: IconDefinition; export const faGlobeEurope: IconDefinition; export const faGraduationCap: IconDefinition; export const faHistory: IconDefinition; export const faKey: IconDefinition; export const faKeySkeleton: IconDefinition; export const faLaptop: IconDefinition; export const faLaptopCode: IconDefinition; export const faLaptopHouse: IconDefinition; export const faLifeRing: IconDefinition; export const faLightbulb: IconDefinition; export const faListAlt: IconDefinition; export const faListUl: IconDefinition; export const faLockAlt: IconDefinition; export const faMapMarkerAlt: IconDefinition; export const faMoonStars: IconDefinition; export const faNetworkWired: IconDefinition; export const faPlanetRinged: IconDefinition; export const faQuestionCircle: IconDefinition; export const faQuoteLeft: IconDefinition; export const faRandom: IconDefinition; export const faRocket: IconDefinition; export const faSearch: IconDefinition; export const faServer: IconDefinition; export const faSignOut: IconDefinition; export const faSirenOn: IconDefinition; export const faSmile: IconDefinition; export const faSnowman: IconDefinition; export const faSun: IconDefinition; export const faTasks: IconDefinition; export const faUniversity: IconDefinition; export const faUser: IconDefinition; export const faUserHardHat: IconDefinition; export const faUserShield: IconDefinition; export const faUsers: IconDefinition; import { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types'; export { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types'; export const prefix: IconPrefix; export const fad: IconPack; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/index.es.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ var prefix = "fad"; var faAbacus = { prefix: 'fad', iconName: 'abacus', icon: [576, 512, [], "f640", ["M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"]] }; var faAlignSlash = { prefix: 'fad', iconName: 'align-slash', icon: [640, 512, [], "f846", ["M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"]] }; var faAtomAlt = { prefix: 'fad', iconName: 'atom-alt', icon: [448, 512, [], "f5d3", ["M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"]] }; var faBadgeCheck = { prefix: 'fad', iconName: 'badge-check', icon: [512, 512, [], "f336", ["M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"]] }; var faBell = { prefix: 'fad', iconName: 'bell', icon: [448, 512, [], "f0f3", ["M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z"]] }; var faBooks = { prefix: 'fad', iconName: 'books', icon: [576, 512, [], "f5db", ["M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"]] }; var faBracketsCurly = { prefix: 'fad', iconName: 'brackets-curly', icon: [576, 512, [], "f7ea", ["M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]] }; var faChartNetwork = { prefix: 'fad', iconName: 'chart-network', icon: [640, 512, [], "f78a", ["M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]] }; var faChartScatter = { prefix: 'fad', iconName: 'chart-scatter', icon: [512, 512, [], "f7ee", ["M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]] }; var faCheck = { prefix: 'fad', iconName: 'check', icon: [512, 512, [], "f00c", ["M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"]] }; var faCircle = { prefix: 'fad', iconName: 'circle', icon: [512, 512, [], "f111", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"]] }; var faClouds = { prefix: 'fad', iconName: 'clouds', icon: [640, 512, [], "f744", ["M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"]] }; var faCogs = { prefix: 'fad', iconName: 'cogs', icon: [640, 512, [], "f085", ["M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"]] }; var faCommentDots = { prefix: 'fad', iconName: 'comment-dots', icon: [512, 512, [], "f4ad", ["M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]] }; var faConciergeBell = { prefix: 'fad', iconName: 'concierge-bell', icon: [512, 512, [], "f562", ["M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"]] }; var faDotCircle = { prefix: 'fad', iconName: 'dot-circle', icon: [512, 512, [], "f192", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"]] }; var faEnvelope = { prefix: 'fad', iconName: 'envelope', icon: [512, 512, [], "f0e0", ["M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"]] }; var faExchangeAlt = { prefix: 'fad', iconName: 'exchange-alt', icon: [512, 512, [], "f362", ["M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"]] }; var faFileAlt = { prefix: 'fad', iconName: 'file-alt', icon: [384, 512, [], "f15c", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"]] }; var faFileCode = { prefix: 'fad', iconName: 'file-code', icon: [384, 512, [], "f1c9", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"]] }; var faGlobe = { prefix: 'fad', iconName: 'globe', icon: [496, 512, [], "f0ac", ["M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"]] }; var faGlobeAfrica = { prefix: 'fad', iconName: 'globe-africa', icon: [496, 512, [], "f57c", ["M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"]] }; var faGlobeAmericas = { prefix: 'fad', iconName: 'globe-americas', icon: [496, 512, [], "f57d", ["M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"]] }; var faGlobeAsia = { prefix: 'fad', iconName: 'globe-asia', icon: [496, 512, [], "f57e", ["M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"]] }; var faGlobeEurope = { prefix: 'fad', iconName: 'globe-europe', icon: [496, 512, [], "f7a2", ["M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"]] }; var faGraduationCap = { prefix: 'fad', iconName: 'graduation-cap', icon: [640, 512, [], "f19d", ["M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"]] }; var faHistory = { prefix: 'fad', iconName: 'history', icon: [512, 512, [], "f1da", ["M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"]] }; var faKey = { prefix: 'fad', iconName: 'key', icon: [512, 512, [], "f084", ["M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]] }; var faKeySkeleton = { prefix: 'fad', iconName: 'key-skeleton', icon: [512, 512, [], "f6f3", ["M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"]] }; var faLaptop = { prefix: 'fad', iconName: 'laptop', icon: [640, 512, [], "f109", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]] }; var faLaptopCode = { prefix: 'fad', iconName: 'laptop-code', icon: [640, 512, [], "f5fc", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"]] }; var faLaptopHouse = { prefix: 'fad', iconName: 'laptop-house', icon: [640, 512, [], "e066", ["M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]] }; var faLifeRing = { prefix: 'fad', iconName: 'life-ring', icon: [512, 512, [], "f1cd", ["M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"]] }; var faLightbulb = { prefix: 'fad', iconName: 'lightbulb', icon: [352, 512, [], "f0eb", ["M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"]] }; var faListAlt = { prefix: 'fad', iconName: 'list-alt', icon: [512, 512, [], "f022", ["M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"]] }; var faListUl = { prefix: 'fad', iconName: 'list-ul', icon: [512, 512, [], "f0ca", ["M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"]] }; var faLockAlt = { prefix: 'fad', iconName: 'lock-alt', icon: [448, 512, [], "f30d", ["M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"]] }; var faMapMarkerAlt = { prefix: 'fad', iconName: 'map-marker-alt', icon: [384, 512, [], "f3c5", ["M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]] }; var faMoonStars = { prefix: 'fad', iconName: 'moon-stars', icon: [512, 512, [], "f755", ["M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"]] }; var faNetworkWired = { prefix: 'fad', iconName: 'network-wired', icon: [640, 512, [], "f6ff", ["M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"]] }; var faPlanetRinged = { prefix: 'fad', iconName: 'planet-ringed', icon: [512, 512, [], "e020", ["M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"]] }; var faQuestionCircle = { prefix: 'fad', iconName: 'question-circle', icon: [512, 512, [], "f059", ["M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"]] }; var faQuoteLeft = { prefix: 'fad', iconName: 'quote-left', icon: [512, 512, [], "f10d", ["M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"]] }; var faRandom = { prefix: 'fad', iconName: 'random', icon: [512, 512, [], "f074", ["M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"]] }; var faRocket = { prefix: 'fad', iconName: 'rocket', icon: [512, 512, [], "f135", ["M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"]] }; var faSearch = { prefix: 'fad', iconName: 'search', icon: [512, 512, [], "f002", ["M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"]] }; var faServer = { prefix: 'fad', iconName: 'server', icon: [512, 512, [], "f233", ["M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"]] }; var faSignOut = { prefix: 'fad', iconName: 'sign-out', icon: [512, 512, [], "f08b", ["M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"]] }; var faSirenOn = { prefix: 'fad', iconName: 'siren-on', icon: [640, 512, [], "e02e", ["M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"]] }; var faSmile = { prefix: 'fad', iconName: 'smile', icon: [496, 512, [], "f118", ["M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"]] }; var faSnowman = { prefix: 'fad', iconName: 'snowman', icon: [512, 512, [], "f7d0", ["M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"]] }; var faSun = { prefix: 'fad', iconName: 'sun', icon: [512, 512, [], "f185", ["M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"]] }; var faTasks = { prefix: 'fad', iconName: 'tasks', icon: [512, 512, [], "f0ae", ["M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"]] }; var faUniversity = { prefix: 'fad', iconName: 'university', icon: [512, 512, [], "f19c", ["M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"]] }; var faUser = { prefix: 'fad', iconName: 'user', icon: [448, 512, [], "f007", ["M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"]] }; var faUserHardHat = { prefix: 'fad', iconName: 'user-hard-hat', icon: [448, 512, [], "f82c", ["M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"]] }; var faUserShield = { prefix: 'fad', iconName: 'user-shield', icon: [640, 512, [], "f505", ["M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"]] }; var faUsers = { prefix: 'fad', iconName: 'users', icon: [640, 512, [], "f0c0", ["M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"]] }; var _iconsCache = { faAbacus: faAbacus, faAlignSlash: faAlignSlash, faAtomAlt: faAtomAlt, faBadgeCheck: faBadgeCheck, faBell: faBell, faBooks: faBooks, faBracketsCurly: faBracketsCurly, faChartNetwork: faChartNetwork, faChartScatter: faChartScatter, faCheck: faCheck, faCircle: faCircle, faClouds: faClouds, faCogs: faCogs, faCommentDots: faCommentDots, faConciergeBell: faConciergeBell, faDotCircle: faDotCircle, faEnvelope: faEnvelope, faExchangeAlt: faExchangeAlt, faFileAlt: faFileAlt, faFileCode: faFileCode, faGlobe: faGlobe, faGlobeAfrica: faGlobeAfrica, faGlobeAmericas: faGlobeAmericas, faGlobeAsia: faGlobeAsia, faGlobeEurope: faGlobeEurope, faGraduationCap: faGraduationCap, faHistory: faHistory, faKey: faKey, faKeySkeleton: faKeySkeleton, faLaptop: faLaptop, faLaptopCode: faLaptopCode, faLaptopHouse: faLaptopHouse, faLifeRing: faLifeRing, faLightbulb: faLightbulb, faListAlt: faListAlt, faListUl: faListUl, faLockAlt: faLockAlt, faMapMarkerAlt: faMapMarkerAlt, faMoonStars: faMoonStars, faNetworkWired: faNetworkWired, faPlanetRinged: faPlanetRinged, faQuestionCircle: faQuestionCircle, faQuoteLeft: faQuoteLeft, faRandom: faRandom, faRocket: faRocket, faSearch: faSearch, faServer: faServer, faSignOut: faSignOut, faSirenOn: faSirenOn, faSmile: faSmile, faSnowman: faSnowman, faSun: faSun, faTasks: faTasks, faUniversity: faUniversity, faUser: faUser, faUserHardHat: faUserHardHat, faUserShield: faUserShield, faUsers: faUsers }; export { _iconsCache as fad, prefix, faAbacus, faAlignSlash, faAtomAlt, faBadgeCheck, faBell, faBooks, faBracketsCurly, faChartNetwork, faChartScatter, faCheck, faCircle, faClouds, faCogs, faCommentDots, faConciergeBell, faDotCircle, faEnvelope, faExchangeAlt, faFileAlt, faFileCode, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGraduationCap, faHistory, faKey, faKeySkeleton, faLaptop, faLaptopCode, faLaptopHouse, faLifeRing, faLightbulb, faListAlt, faListUl, faLockAlt, faMapMarkerAlt, faMoonStars, faNetworkWired, faPlanetRinged, faQuestionCircle, faQuoteLeft, faRandom, faRocket, faSearch, faServer, faSignOut, faSirenOn, faSmile, faSnowman, faSun, faTasks, faUniversity, faUser, faUserHardHat, faUserShield, faUsers }; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/index.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (factory((global['pro-duotone-svg-icons'] = {}))); }(this, (function (exports) { 'use strict'; var prefix = "fad"; var faAbacus = { prefix: 'fad', iconName: 'abacus', icon: [576, 512, [], "f640", ["M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z"]] }; var faAlignSlash = { prefix: 'fad', iconName: 'align-slash', icon: [640, 512, [], "f846", ["M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z"]] }; var faAtomAlt = { prefix: 'fad', iconName: 'atom-alt', icon: [448, 512, [], "f5d3", ["M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z"]] }; var faBadgeCheck = { prefix: 'fad', iconName: 'badge-check', icon: [512, 512, [], "f336", ["M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z"]] }; var faBell = { prefix: 'fad', iconName: 'bell', icon: [448, 512, [], "f0f3", ["M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z"]] }; var faBooks = { prefix: 'fad', iconName: 'books', icon: [576, 512, [], "f5db", ["M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z"]] }; var faBracketsCurly = { prefix: 'fad', iconName: 'brackets-curly', icon: [576, 512, [], "f7ea", ["M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]] }; var faChartNetwork = { prefix: 'fad', iconName: 'chart-network', icon: [640, 512, [], "f78a", ["M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]] }; var faChartScatter = { prefix: 'fad', iconName: 'chart-scatter', icon: [512, 512, [], "f7ee", ["M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]] }; var faCheck = { prefix: 'fad', iconName: 'check', icon: [512, 512, [], "f00c", ["M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z"]] }; var faCircle = { prefix: 'fad', iconName: 'circle', icon: [512, 512, [], "f111", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z"]] }; var faClouds = { prefix: 'fad', iconName: 'clouds', icon: [640, 512, [], "f744", ["M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z"]] }; var faCogs = { prefix: 'fad', iconName: 'cogs', icon: [640, 512, [], "f085", ["M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z"]] }; var faCommentDots = { prefix: 'fad', iconName: 'comment-dots', icon: [512, 512, [], "f4ad", ["M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"]] }; var faConciergeBell = { prefix: 'fad', iconName: 'concierge-bell', icon: [512, 512, [], "f562", ["M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z"]] }; var faDotCircle = { prefix: 'fad', iconName: 'dot-circle', icon: [512, 512, [], "f192", ["M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z"]] }; var faEnvelope = { prefix: 'fad', iconName: 'envelope', icon: [512, 512, [], "f0e0", ["M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z"]] }; var faExchangeAlt = { prefix: 'fad', iconName: 'exchange-alt', icon: [512, 512, [], "f362", ["M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z"]] }; var faFileAlt = { prefix: 'fad', iconName: 'file-alt', icon: [384, 512, [], "f15c", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z"]] }; var faFileCode = { prefix: 'fad', iconName: 'file-code', icon: [384, 512, [], "f1c9", ["M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z"]] }; var faGlobe = { prefix: 'fad', iconName: 'globe', icon: [496, 512, [], "f0ac", ["M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z"]] }; var faGlobeAfrica = { prefix: 'fad', iconName: 'globe-africa', icon: [496, 512, [], "f57c", ["M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z"]] }; var faGlobeAmericas = { prefix: 'fad', iconName: 'globe-americas', icon: [496, 512, [], "f57d", ["M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z"]] }; var faGlobeAsia = { prefix: 'fad', iconName: 'globe-asia', icon: [496, 512, [], "f57e", ["M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z"]] }; var faGlobeEurope = { prefix: 'fad', iconName: 'globe-europe', icon: [496, 512, [], "f7a2", ["M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z"]] }; var faGraduationCap = { prefix: 'fad', iconName: 'graduation-cap', icon: [640, 512, [], "f19d", ["M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z"]] }; var faHistory = { prefix: 'fad', iconName: 'history', icon: [512, 512, [], "f1da", ["M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z"]] }; var faKey = { prefix: 'fad', iconName: 'key', icon: [512, 512, [], "f084", ["M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]] }; var faKeySkeleton = { prefix: 'fad', iconName: 'key-skeleton', icon: [512, 512, [], "f6f3", ["M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z"]] }; var faLaptop = { prefix: 'fad', iconName: 'laptop', icon: [640, 512, [], "f109", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]] }; var faLaptopCode = { prefix: 'fad', iconName: 'laptop-code', icon: [640, 512, [], "f5fc", ["M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z"]] }; var faLaptopHouse = { prefix: 'fad', iconName: 'laptop-house', icon: [640, 512, [], "e066", ["M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]] }; var faLifeRing = { prefix: 'fad', iconName: 'life-ring', icon: [512, 512, [], "f1cd", ["M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z"]] }; var faLightbulb = { prefix: 'fad', iconName: 'lightbulb', icon: [352, 512, [], "f0eb", ["M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z"]] }; var faListAlt = { prefix: 'fad', iconName: 'list-alt', icon: [512, 512, [], "f022", ["M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z"]] }; var faListUl = { prefix: 'fad', iconName: 'list-ul', icon: [512, 512, [], "f0ca", ["M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z"]] }; var faLockAlt = { prefix: 'fad', iconName: 'lock-alt', icon: [448, 512, [], "f30d", ["M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z"]] }; var faMapMarkerAlt = { prefix: 'fad', iconName: 'map-marker-alt', icon: [384, 512, [], "f3c5", ["M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]] }; var faMoonStars = { prefix: 'fad', iconName: 'moon-stars', icon: [512, 512, [], "f755", ["M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z"]] }; var faNetworkWired = { prefix: 'fad', iconName: 'network-wired', icon: [640, 512, [], "f6ff", ["M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z"]] }; var faPlanetRinged = { prefix: 'fad', iconName: 'planet-ringed', icon: [512, 512, [], "e020", ["M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z"]] }; var faQuestionCircle = { prefix: 'fad', iconName: 'question-circle', icon: [512, 512, [], "f059", ["M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z"]] }; var faQuoteLeft = { prefix: 'fad', iconName: 'quote-left', icon: [512, 512, [], "f10d", ["M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z"]] }; var faRandom = { prefix: 'fad', iconName: 'random', icon: [512, 512, [], "f074", ["M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z"]] }; var faRocket = { prefix: 'fad', iconName: 'rocket', icon: [512, 512, [], "f135", ["M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z"]] }; var faSearch = { prefix: 'fad', iconName: 'search', icon: [512, 512, [], "f002", ["M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z"]] }; var faServer = { prefix: 'fad', iconName: 'server', icon: [512, 512, [], "f233", ["M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z"]] }; var faSignOut = { prefix: 'fad', iconName: 'sign-out', icon: [512, 512, [], "f08b", ["M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z"]] }; var faSirenOn = { prefix: 'fad', iconName: 'siren-on', icon: [640, 512, [], "e02e", ["M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z"]] }; var faSmile = { prefix: 'fad', iconName: 'smile', icon: [496, 512, [], "f118", ["M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z"]] }; var faSnowman = { prefix: 'fad', iconName: 'snowman', icon: [512, 512, [], "f7d0", ["M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z"]] }; var faSun = { prefix: 'fad', iconName: 'sun', icon: [512, 512, [], "f185", ["M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z"]] }; var faTasks = { prefix: 'fad', iconName: 'tasks', icon: [512, 512, [], "f0ae", ["M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z"]] }; var faUniversity = { prefix: 'fad', iconName: 'university', icon: [512, 512, [], "f19c", ["M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z"]] }; var faUser = { prefix: 'fad', iconName: 'user', icon: [448, 512, [], "f007", ["M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z"]] }; var faUserHardHat = { prefix: 'fad', iconName: 'user-hard-hat', icon: [448, 512, [], "f82c", ["M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z"]] }; var faUserShield = { prefix: 'fad', iconName: 'user-shield', icon: [640, 512, [], "f505", ["M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z"]] }; var faUsers = { prefix: 'fad', iconName: 'users', icon: [640, 512, [], "f0c0", ["M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z"]] }; var _iconsCache = { faAbacus: faAbacus, faAlignSlash: faAlignSlash, faAtomAlt: faAtomAlt, faBadgeCheck: faBadgeCheck, faBell: faBell, faBooks: faBooks, faBracketsCurly: faBracketsCurly, faChartNetwork: faChartNetwork, faChartScatter: faChartScatter, faCheck: faCheck, faCircle: faCircle, faClouds: faClouds, faCogs: faCogs, faCommentDots: faCommentDots, faConciergeBell: faConciergeBell, faDotCircle: faDotCircle, faEnvelope: faEnvelope, faExchangeAlt: faExchangeAlt, faFileAlt: faFileAlt, faFileCode: faFileCode, faGlobe: faGlobe, faGlobeAfrica: faGlobeAfrica, faGlobeAmericas: faGlobeAmericas, faGlobeAsia: faGlobeAsia, faGlobeEurope: faGlobeEurope, faGraduationCap: faGraduationCap, faHistory: faHistory, faKey: faKey, faKeySkeleton: faKeySkeleton, faLaptop: faLaptop, faLaptopCode: faLaptopCode, faLaptopHouse: faLaptopHouse, faLifeRing: faLifeRing, faLightbulb: faLightbulb, faListAlt: faListAlt, faListUl: faListUl, faLockAlt: faLockAlt, faMapMarkerAlt: faMapMarkerAlt, faMoonStars: faMoonStars, faNetworkWired: faNetworkWired, faPlanetRinged: faPlanetRinged, faQuestionCircle: faQuestionCircle, faQuoteLeft: faQuoteLeft, faRandom: faRandom, faRocket: faRocket, faSearch: faSearch, faServer: faServer, faSignOut: faSignOut, faSirenOn: faSirenOn, faSmile: faSmile, faSnowman: faSnowman, faSun: faSun, faTasks: faTasks, faUniversity: faUniversity, faUser: faUser, faUserHardHat: faUserHardHat, faUserShield: faUserShield, faUsers: faUsers }; exports.fad = _iconsCache; exports.prefix = prefix; exports.faAbacus = faAbacus; exports.faAlignSlash = faAlignSlash; exports.faAtomAlt = faAtomAlt; exports.faBadgeCheck = faBadgeCheck; exports.faBell = faBell; exports.faBooks = faBooks; exports.faBracketsCurly = faBracketsCurly; exports.faChartNetwork = faChartNetwork; exports.faChartScatter = faChartScatter; exports.faCheck = faCheck; exports.faCircle = faCircle; exports.faClouds = faClouds; exports.faCogs = faCogs; exports.faCommentDots = faCommentDots; exports.faConciergeBell = faConciergeBell; exports.faDotCircle = faDotCircle; exports.faEnvelope = faEnvelope; exports.faExchangeAlt = faExchangeAlt; exports.faFileAlt = faFileAlt; exports.faFileCode = faFileCode; exports.faGlobe = faGlobe; exports.faGlobeAfrica = faGlobeAfrica; exports.faGlobeAmericas = faGlobeAmericas; exports.faGlobeAsia = faGlobeAsia; exports.faGlobeEurope = faGlobeEurope; exports.faGraduationCap = faGraduationCap; exports.faHistory = faHistory; exports.faKey = faKey; exports.faKeySkeleton = faKeySkeleton; exports.faLaptop = faLaptop; exports.faLaptopCode = faLaptopCode; exports.faLaptopHouse = faLaptopHouse; exports.faLifeRing = faLifeRing; exports.faLightbulb = faLightbulb; exports.faListAlt = faListAlt; exports.faListUl = faListUl; exports.faLockAlt = faLockAlt; exports.faMapMarkerAlt = faMapMarkerAlt; exports.faMoonStars = faMoonStars; exports.faNetworkWired = faNetworkWired; exports.faPlanetRinged = faPlanetRinged; exports.faQuestionCircle = faQuestionCircle; exports.faQuoteLeft = faQuoteLeft; exports.faRandom = faRandom; exports.faRocket = faRocket; exports.faSearch = faSearch; exports.faServer = faServer; exports.faSignOut = faSignOut; exports.faSirenOn = faSirenOn; exports.faSmile = faSmile; exports.faSnowman = faSnowman; exports.faSun = faSun; exports.faTasks = faTasks; exports.faUniversity = faUniversity; exports.faUser = faUser; exports.faUserHardHat = faUserHardHat; exports.faUserShield = faUserShield; exports.faUsers = faUsers; Object.defineProperty(exports, '__esModule', { value: true }); }))); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-duotone-svg-icons/package.json ================================================ { "description": "The iconic font, CSS, and SVG framework", "keywords": [ "font", "awesome", "fontawesome", "icon", "svg", "bootstrap" ], "homepage": "https://fontawesome.com", "bugs": { "url": "http://github.com/FortAwesome/Font-Awesome/issues" }, "author": { "name": "Dave Gandy", "email": "dave@fontawesome.com", "web": "http://twitter.com/davegandy" }, "contributors": [ { "name": "Brian Talbot", "web": "http://twitter.com/talbs" }, { "name": "Travis Chase", "web": "http://twitter.com/supercodepoet" }, { "name": "Rob Madole", "web": "http://twitter.com/robmadole" }, { "name": "Geremia Taglialatela", "web": "http://twitter.com/gtagliala" }, { "name": "Mike Wilkerson", "web": "http://twitter.com/mw77" } ], "repository": { "type": "git", "url": "https://github.com/FortAwesome/Font-Awesome" }, "engines": { "node": ">=6" }, "dependencies": { "@fortawesome/fontawesome-common-types": "^0.2.36" }, "version": "5.15.4", "name": "@fortawesome/pro-duotone-svg-icons", "main": "index.js", "module": "index.es.js", "jsnext:main": "index.es.js", "license": "UNLICENSED", "types": "./index.d.ts", "sideEffects": false, "scripts": { "postinstall": "node attribution.js" } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/LICENSE.txt ================================================ Font Awesome Pro License ------------------------ Font Awesome Pro is commercial software that requires a paid license. Full Font Awesome Pro license: https://fontawesome.com/license. # Commercial License The Font Awesome Pro commercial license allows you to pay for FA Pro once, own it, and use it just about everywhere you'd like. # Attribution Attribution is not required by the Font Awesome Pro commercial license. # Brand Icons All brand icons are trademarks of their respective owners. The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa. **Please do not use brand logos for any purpose except to represent the company, product, or service to which they refer.** ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/README.md ================================================ # @fortawesome/pro-regular-svg-icons - SVG with JavaScript version > "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum" [![npm](https://img.shields.io/npm/v/@fortawesome/pro-regular-svg-icons.svg?style=flat-square)](https://www.npmjs.com/package/@fortawesome/pro-regular-svg-icons) ## Installation ``` $ npm i --save @fortawesome/pro-regular-svg-icons ``` Or ``` $ yarn add @fortawesome/pro-regular-svg-icons ``` ## Documentation Get started [here](https://fontawesome.com/how-to-use/on-the-web/setup/getting-started). Continue your journey [here](https://fontawesome.com/how-to-use/on-the-web/advanced). Or go straight to the [API documentation](https://fontawesome.com/how-to-use/with-the-api). ## Issues and support Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to. ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/attribution.js ================================================ console.log(`Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) `) ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faCheckCircle.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCheckCircle: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faCheckCircle.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'check-circle'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f058'; var svgPathData = 'M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCheckCircle = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faDesktop.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faDesktop: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faDesktop.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'desktop'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f108'; var svgPathData = 'M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faDesktop = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faEye.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faEye: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faEye.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'eye'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f06e'; var svgPathData = 'M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faEye = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faFileCode.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faFileCode: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faFileCode.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'file-code'; var width = 384; var height = 512; var ligatures = []; var unicode = 'f1c9'; var svgPathData = 'M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faFileCode = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faInfo.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faInfo: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faInfo.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'info'; var width = 256; var height = 512; var ligatures = []; var unicode = 'f129'; var svgPathData = 'M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faInfo = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faInfoCircle.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faInfoCircle: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faInfoCircle.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'info-circle'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f05a'; var svgPathData = 'M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faInfoCircle = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faPlus.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faPlus: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faPlus.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'plus'; var width = 384; var height = 512; var ligatures = []; var unicode = 'f067'; var svgPathData = 'M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faPlus = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faQuestionCircle.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faQuestionCircle: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faQuestionCircle.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'question-circle'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f059'; var svgPathData = 'M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faQuestionCircle = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faRocket.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faRocket: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faRocket.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'rocket'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f135'; var svgPathData = 'M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faRocket = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faSave.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSave: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faSave.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'save'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f0c7'; var svgPathData = 'M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSave = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faSlash.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSlash: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faSlash.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'slash'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f715'; var svgPathData = 'M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSlash = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faTimes.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faTimes: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faTimes.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'times'; var width = 320; var height = 512; var ligatures = []; var unicode = 'f00d'; var svgPathData = 'M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faTimes = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUndo.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUndo: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUndo.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'undo'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f0e2'; var svgPathData = 'M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUndo = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUndoAlt.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUndoAlt: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUndoAlt.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'undo-alt'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f2ea'; var svgPathData = 'M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUndoAlt = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUser.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUser: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUser.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'user'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f007'; var svgPathData = 'M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUser = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUserFriends.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUserFriends: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUserFriends.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'user-friends'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f500'; var svgPathData = 'M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUserFriends = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUsers.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUsers: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/faUsers.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'far'; var iconName = 'users'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f0c0'; var svgPathData = 'M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUsers = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/index.d.ts ================================================ export const faCheckCircle: IconDefinition; export const faDesktop: IconDefinition; export const faEye: IconDefinition; export const faFileCode: IconDefinition; export const faInfo: IconDefinition; export const faInfoCircle: IconDefinition; export const faPlus: IconDefinition; export const faQuestionCircle: IconDefinition; export const faRocket: IconDefinition; export const faSave: IconDefinition; export const faSlash: IconDefinition; export const faTimes: IconDefinition; export const faUndo: IconDefinition; export const faUndoAlt: IconDefinition; export const faUser: IconDefinition; export const faUserFriends: IconDefinition; export const faUsers: IconDefinition; import { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types'; export { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types'; export const prefix: IconPrefix; export const far: IconPack; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/index.es.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ var prefix = "far"; var faCheckCircle = { prefix: 'far', iconName: 'check-circle', icon: [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"] }; var faDesktop = { prefix: 'far', iconName: 'desktop', icon: [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"] }; var faEye = { prefix: 'far', iconName: 'eye', icon: [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"] }; var faFileCode = { prefix: 'far', iconName: 'file-code', icon: [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"] }; var faInfo = { prefix: 'far', iconName: 'info', icon: [256, 512, [], "f129", "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"] }; var faInfoCircle = { prefix: 'far', iconName: 'info-circle', icon: [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"] }; var faPlus = { prefix: 'far', iconName: 'plus', icon: [384, 512, [], "f067", "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"] }; var faQuestionCircle = { prefix: 'far', iconName: 'question-circle', icon: [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"] }; var faRocket = { prefix: 'far', iconName: 'rocket', icon: [512, 512, [], "f135", "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"] }; var faSave = { prefix: 'far', iconName: 'save', icon: [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"] }; var faSlash = { prefix: 'far', iconName: 'slash', icon: [640, 512, [], "f715", "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"] }; var faTimes = { prefix: 'far', iconName: 'times', icon: [320, 512, [], "f00d", "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"] }; var faUndo = { prefix: 'far', iconName: 'undo', icon: [512, 512, [], "f0e2", "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"] }; var faUndoAlt = { prefix: 'far', iconName: 'undo-alt', icon: [512, 512, [], "f2ea", "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"] }; var faUser = { prefix: 'far', iconName: 'user', icon: [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"] }; var faUserFriends = { prefix: 'far', iconName: 'user-friends', icon: [640, 512, [], "f500", "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"] }; var faUsers = { prefix: 'far', iconName: 'users', icon: [640, 512, [], "f0c0", "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"] }; var _iconsCache = { faCheckCircle: faCheckCircle, faDesktop: faDesktop, faEye: faEye, faFileCode: faFileCode, faInfo: faInfo, faInfoCircle: faInfoCircle, faPlus: faPlus, faQuestionCircle: faQuestionCircle, faRocket: faRocket, faSave: faSave, faSlash: faSlash, faTimes: faTimes, faUndo: faUndo, faUndoAlt: faUndoAlt, faUser: faUser, faUserFriends: faUserFriends, faUsers: faUsers }; export { _iconsCache as far, prefix, faCheckCircle, faDesktop, faEye, faFileCode, faInfo, faInfoCircle, faPlus, faQuestionCircle, faRocket, faSave, faSlash, faTimes, faUndo, faUndoAlt, faUser, faUserFriends, faUsers }; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/index.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (factory((global['pro-regular-svg-icons'] = {}))); }(this, (function (exports) { 'use strict'; var prefix = "far"; var faCheckCircle = { prefix: 'far', iconName: 'check-circle', icon: [512, 512, [], "f058", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"] }; var faDesktop = { prefix: 'far', iconName: 'desktop', icon: [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z"] }; var faEye = { prefix: 'far', iconName: 'eye', icon: [576, 512, [], "f06e", "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"] }; var faFileCode = { prefix: 'far', iconName: 'file-code', icon: [384, 512, [], "f1c9", "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"] }; var faInfo = { prefix: 'far', iconName: 'info', icon: [256, 512, [], "f129", "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"] }; var faInfoCircle = { prefix: 'far', iconName: 'info-circle', icon: [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"] }; var faPlus = { prefix: 'far', iconName: 'plus', icon: [384, 512, [], "f067", "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"] }; var faQuestionCircle = { prefix: 'far', iconName: 'question-circle', icon: [512, 512, [], "f059", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"] }; var faRocket = { prefix: 'far', iconName: 'rocket', icon: [512, 512, [], "f135", "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z"] }; var faSave = { prefix: 'far', iconName: 'save', icon: [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"] }; var faSlash = { prefix: 'far', iconName: 'slash', icon: [640, 512, [], "f715", "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z"] }; var faTimes = { prefix: 'far', iconName: 'times', icon: [320, 512, [], "f00d", "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"] }; var faUndo = { prefix: 'far', iconName: 'undo', icon: [512, 512, [], "f0e2", "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z"] }; var faUndoAlt = { prefix: 'far', iconName: 'undo-alt', icon: [512, 512, [], "f2ea", "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z"] }; var faUser = { prefix: 'far', iconName: 'user', icon: [448, 512, [], "f007", "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"] }; var faUserFriends = { prefix: 'far', iconName: 'user-friends', icon: [640, 512, [], "f500", "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z"] }; var faUsers = { prefix: 'far', iconName: 'users', icon: [640, 512, [], "f0c0", "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z"] }; var _iconsCache = { faCheckCircle: faCheckCircle, faDesktop: faDesktop, faEye: faEye, faFileCode: faFileCode, faInfo: faInfo, faInfoCircle: faInfoCircle, faPlus: faPlus, faQuestionCircle: faQuestionCircle, faRocket: faRocket, faSave: faSave, faSlash: faSlash, faTimes: faTimes, faUndo: faUndo, faUndoAlt: faUndoAlt, faUser: faUser, faUserFriends: faUserFriends, faUsers: faUsers }; exports.far = _iconsCache; exports.prefix = prefix; exports.faCheckCircle = faCheckCircle; exports.faDesktop = faDesktop; exports.faEye = faEye; exports.faFileCode = faFileCode; exports.faInfo = faInfo; exports.faInfoCircle = faInfoCircle; exports.faPlus = faPlus; exports.faQuestionCircle = faQuestionCircle; exports.faRocket = faRocket; exports.faSave = faSave; exports.faSlash = faSlash; exports.faTimes = faTimes; exports.faUndo = faUndo; exports.faUndoAlt = faUndoAlt; exports.faUser = faUser; exports.faUserFriends = faUserFriends; exports.faUsers = faUsers; Object.defineProperty(exports, '__esModule', { value: true }); }))); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-regular-svg-icons/package.json ================================================ { "description": "The iconic font, CSS, and SVG framework", "keywords": [ "font", "awesome", "fontawesome", "icon", "svg", "bootstrap" ], "homepage": "https://fontawesome.com", "bugs": { "url": "http://github.com/FortAwesome/Font-Awesome/issues" }, "author": { "name": "Dave Gandy", "email": "dave@fontawesome.com", "web": "http://twitter.com/davegandy" }, "contributors": [ { "name": "Brian Talbot", "web": "http://twitter.com/talbs" }, { "name": "Travis Chase", "web": "http://twitter.com/supercodepoet" }, { "name": "Rob Madole", "web": "http://twitter.com/robmadole" }, { "name": "Geremia Taglialatela", "web": "http://twitter.com/gtagliala" }, { "name": "Mike Wilkerson", "web": "http://twitter.com/mw77" } ], "repository": { "type": "git", "url": "https://github.com/FortAwesome/Font-Awesome" }, "engines": { "node": ">=6" }, "dependencies": { "@fortawesome/fontawesome-common-types": "^0.2.36" }, "version": "5.15.4", "name": "@fortawesome/pro-regular-svg-icons", "main": "index.js", "module": "index.es.js", "jsnext:main": "index.es.js", "license": "UNLICENSED", "types": "./index.d.ts", "sideEffects": false, "scripts": { "postinstall": "node attribution.js" } } ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/LICENSE.txt ================================================ Font Awesome Pro License ------------------------ Font Awesome Pro is commercial software that requires a paid license. Full Font Awesome Pro license: https://fontawesome.com/license. # Commercial License The Font Awesome Pro commercial license allows you to pay for FA Pro once, own it, and use it just about everywhere you'd like. # Attribution Attribution is not required by the Font Awesome Pro commercial license. # Brand Icons All brand icons are trademarks of their respective owners. The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa. **Please do not use brand logos for any purpose except to represent the company, product, or service to which they refer.** ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/README.md ================================================ # @fortawesome/pro-solid-svg-icons - SVG with JavaScript version > "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum" [![npm](https://img.shields.io/npm/v/@fortawesome/pro-solid-svg-icons.svg?style=flat-square)](https://www.npmjs.com/package/@fortawesome/pro-solid-svg-icons) ## Installation ``` $ npm i --save @fortawesome/pro-solid-svg-icons ``` Or ``` $ yarn add @fortawesome/pro-solid-svg-icons ``` ## Documentation Get started [here](https://fontawesome.com/how-to-use/on-the-web/setup/getting-started). Continue your journey [here](https://fontawesome.com/how-to-use/on-the-web/advanced). Or go straight to the [API documentation](https://fontawesome.com/how-to-use/with-the-api). ## Issues and support Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to. ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/attribution.js ================================================ console.log(`Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) `) ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faAlarmExclamation.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faAlarmExclamation: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faAlarmExclamation.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'alarm-exclamation'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f843'; var svgPathData = 'M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faAlarmExclamation = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faAlignLeft.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faAlignLeft: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faAlignLeft.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'align-left'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f036'; var svgPathData = 'M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faAlignLeft = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faBookDead.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faBookDead: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faBookDead.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'book-dead'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f6b7'; var svgPathData = 'M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faBookDead = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCheck.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCheck: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCheck.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'check'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f00c'; var svgPathData = 'M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCheck = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCircle.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCircle: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCircle.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'circle'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f111'; var svgPathData = 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCircle = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCloud.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCloud: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCloud.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'cloud'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f0c2'; var svgPathData = 'M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCloud = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCreditCard.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faCreditCard: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faCreditCard.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'credit-card'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f09d'; var svgPathData = 'M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faCreditCard = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faDesktop.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faDesktop: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faDesktop.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'desktop'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f108'; var svgPathData = 'M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faDesktop = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faEnvelope.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faEnvelope: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faEnvelope.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'envelope'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f0e0'; var svgPathData = 'M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faEnvelope = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faEye.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faEye: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faEye.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'eye'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f06e'; var svgPathData = 'M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faEye = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faFingerprint.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faFingerprint: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faFingerprint.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'fingerprint'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f577'; var svgPathData = 'M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faFingerprint = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faHistory.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faHistory: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faHistory.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'history'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f1da'; var svgPathData = 'M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faHistory = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faHome.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faHome: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faHome.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'home'; var width = 576; var height = 512; var ligatures = []; var unicode = 'f015'; var svgPathData = 'M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faHome = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faPlus.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faPlus: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faPlus.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'plus'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f067'; var svgPathData = 'M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faPlus = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faRobot.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faRobot: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faRobot.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'robot'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f544'; var svgPathData = 'M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faRobot = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faRocket.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faRocket: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faRocket.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'rocket'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f135'; var svgPathData = 'M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faRocket = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSave.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSave: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSave.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'save'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f0c7'; var svgPathData = 'M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSave = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSlash.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSlash: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSlash.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'slash'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f715'; var svgPathData = 'M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSlash = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSpinnerThird.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSpinnerThird: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSpinnerThird.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'spinner-third'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f3f4'; var svgPathData = 'M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSpinnerThird = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSquareFull.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faSquareFull: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faSquareFull.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'square-full'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f45c'; var svgPathData = 'M512 512H0V0h512v512z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faSquareFull = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faTimes.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faTimes: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faTimes.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'times'; var width = 352; var height = 512; var ligatures = []; var unicode = 'f00d'; var svgPathData = 'M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faTimes = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faTimesCircle.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faTimesCircle: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faTimesCircle.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'times-circle'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f057'; var svgPathData = 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faTimesCircle = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUndo.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUndo: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUndo.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'undo'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f0e2'; var svgPathData = 'M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUndo = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUndoAlt.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUndoAlt: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUndoAlt.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'undo-alt'; var width = 512; var height = 512; var ligatures = []; var unicode = 'f2ea'; var svgPathData = 'M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUndoAlt = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUser.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUser: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUser.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'user'; var width = 448; var height = 512; var ligatures = []; var unicode = 'f007'; var svgPathData = 'M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUser = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUsers.d.ts ================================================ import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types"; export const definition: IconDefinition; export const faUsers: IconDefinition; export const prefix: IconPrefix; export const iconName: IconName; export const width: number; export const height: number; export const ligatures: string[]; export const unicode: string; export const svgPathData: string; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/faUsers.js ================================================ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var prefix = 'fas'; var iconName = 'users'; var width = 640; var height = 512; var ligatures = []; var unicode = 'f0c0'; var svgPathData = 'M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'; exports.definition = { prefix: prefix, iconName: iconName, icon: [ width, height, ligatures, unicode, svgPathData ]}; exports.faUsers = exports.definition; exports.prefix = prefix; exports.iconName = iconName; exports.width = width; exports.height = height; exports.ligatures = ligatures; exports.unicode = unicode; exports.svgPathData = svgPathData; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/index.d.ts ================================================ export const faAlarmExclamation: IconDefinition; export const faAlignLeft: IconDefinition; export const faBookDead: IconDefinition; export const faCheck: IconDefinition; export const faCircle: IconDefinition; export const faCloud: IconDefinition; export const faCreditCard: IconDefinition; export const faDesktop: IconDefinition; export const faEnvelope: IconDefinition; export const faEye: IconDefinition; export const faFingerprint: IconDefinition; export const faHistory: IconDefinition; export const faHome: IconDefinition; export const faPlus: IconDefinition; export const faRobot: IconDefinition; export const faRocket: IconDefinition; export const faSave: IconDefinition; export const faSlash: IconDefinition; export const faSpinnerThird: IconDefinition; export const faSquareFull: IconDefinition; export const faTimes: IconDefinition; export const faTimesCircle: IconDefinition; export const faUndo: IconDefinition; export const faUndoAlt: IconDefinition; export const faUser: IconDefinition; export const faUsers: IconDefinition; import { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types'; export { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types'; export const prefix: IconPrefix; export const fas: IconPack; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/index.es.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ var prefix = "fas"; var faAlarmExclamation = { prefix: 'fas', iconName: 'alarm-exclamation', icon: [512, 512, [], "f843", "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"] }; var faAlignLeft = { prefix: 'fas', iconName: 'align-left', icon: [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"] }; var faBookDead = { prefix: 'fas', iconName: 'book-dead', icon: [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"] }; var faCheck = { prefix: 'fas', iconName: 'check', icon: [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"] }; var faCircle = { prefix: 'fas', iconName: 'circle', icon: [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"] }; var faCloud = { prefix: 'fas', iconName: 'cloud', icon: [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"] }; var faCreditCard = { prefix: 'fas', iconName: 'credit-card', icon: [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"] }; var faDesktop = { prefix: 'fas', iconName: 'desktop', icon: [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"] }; var faEnvelope = { prefix: 'fas', iconName: 'envelope', icon: [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"] }; var faEye = { prefix: 'fas', iconName: 'eye', icon: [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"] }; var faFingerprint = { prefix: 'fas', iconName: 'fingerprint', icon: [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"] }; var faHistory = { prefix: 'fas', iconName: 'history', icon: [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"] }; var faHome = { prefix: 'fas', iconName: 'home', icon: [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"] }; var faPlus = { prefix: 'fas', iconName: 'plus', icon: [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"] }; var faRobot = { prefix: 'fas', iconName: 'robot', icon: [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"] }; var faRocket = { prefix: 'fas', iconName: 'rocket', icon: [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"] }; var faSave = { prefix: 'fas', iconName: 'save', icon: [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"] }; var faSlash = { prefix: 'fas', iconName: 'slash', icon: [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"] }; var faSpinnerThird = { prefix: 'fas', iconName: 'spinner-third', icon: [512, 512, [], "f3f4", "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"] }; var faSquareFull = { prefix: 'fas', iconName: 'square-full', icon: [512, 512, [], "f45c", "M512 512H0V0h512v512z"] }; var faTimes = { prefix: 'fas', iconName: 'times', icon: [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"] }; var faTimesCircle = { prefix: 'fas', iconName: 'times-circle', icon: [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"] }; var faUndo = { prefix: 'fas', iconName: 'undo', icon: [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"] }; var faUndoAlt = { prefix: 'fas', iconName: 'undo-alt', icon: [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"] }; var faUser = { prefix: 'fas', iconName: 'user', icon: [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"] }; var faUsers = { prefix: 'fas', iconName: 'users', icon: [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"] }; var _iconsCache = { faAlarmExclamation: faAlarmExclamation, faAlignLeft: faAlignLeft, faBookDead: faBookDead, faCheck: faCheck, faCircle: faCircle, faCloud: faCloud, faCreditCard: faCreditCard, faDesktop: faDesktop, faEnvelope: faEnvelope, faEye: faEye, faFingerprint: faFingerprint, faHistory: faHistory, faHome: faHome, faPlus: faPlus, faRobot: faRobot, faRocket: faRocket, faSave: faSave, faSlash: faSlash, faSpinnerThird: faSpinnerThird, faSquareFull: faSquareFull, faTimes: faTimes, faTimesCircle: faTimesCircle, faUndo: faUndo, faUndoAlt: faUndoAlt, faUser: faUser, faUsers: faUsers }; export { _iconsCache as fas, prefix, faAlarmExclamation, faAlignLeft, faBookDead, faCheck, faCircle, faCloud, faCreditCard, faDesktop, faEnvelope, faEye, faFingerprint, faHistory, faHome, faPlus, faRobot, faRocket, faSave, faSlash, faSpinnerThird, faSquareFull, faTimes, faTimesCircle, faUndo, faUndoAlt, faUser, faUsers }; ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/index.js ================================================ /*! * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Commercial License) */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (factory((global['pro-solid-svg-icons'] = {}))); }(this, (function (exports) { 'use strict'; var prefix = "fas"; var faAlarmExclamation = { prefix: 'fas', iconName: 'alarm-exclamation', icon: [512, 512, [], "f843", "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z"] }; var faAlignLeft = { prefix: 'fas', iconName: 'align-left', icon: [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"] }; var faBookDead = { prefix: 'fas', iconName: 'book-dead', icon: [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"] }; var faCheck = { prefix: 'fas', iconName: 'check', icon: [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"] }; var faCircle = { prefix: 'fas', iconName: 'circle', icon: [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"] }; var faCloud = { prefix: 'fas', iconName: 'cloud', icon: [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"] }; var faCreditCard = { prefix: 'fas', iconName: 'credit-card', icon: [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"] }; var faDesktop = { prefix: 'fas', iconName: 'desktop', icon: [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"] }; var faEnvelope = { prefix: 'fas', iconName: 'envelope', icon: [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"] }; var faEye = { prefix: 'fas', iconName: 'eye', icon: [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"] }; var faFingerprint = { prefix: 'fas', iconName: 'fingerprint', icon: [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"] }; var faHistory = { prefix: 'fas', iconName: 'history', icon: [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"] }; var faHome = { prefix: 'fas', iconName: 'home', icon: [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"] }; var faPlus = { prefix: 'fas', iconName: 'plus', icon: [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"] }; var faRobot = { prefix: 'fas', iconName: 'robot', icon: [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"] }; var faRocket = { prefix: 'fas', iconName: 'rocket', icon: [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"] }; var faSave = { prefix: 'fas', iconName: 'save', icon: [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"] }; var faSlash = { prefix: 'fas', iconName: 'slash', icon: [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"] }; var faSpinnerThird = { prefix: 'fas', iconName: 'spinner-third', icon: [512, 512, [], "f3f4", "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z"] }; var faSquareFull = { prefix: 'fas', iconName: 'square-full', icon: [512, 512, [], "f45c", "M512 512H0V0h512v512z"] }; var faTimes = { prefix: 'fas', iconName: 'times', icon: [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"] }; var faTimesCircle = { prefix: 'fas', iconName: 'times-circle', icon: [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"] }; var faUndo = { prefix: 'fas', iconName: 'undo', icon: [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"] }; var faUndoAlt = { prefix: 'fas', iconName: 'undo-alt', icon: [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"] }; var faUser = { prefix: 'fas', iconName: 'user', icon: [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"] }; var faUsers = { prefix: 'fas', iconName: 'users', icon: [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"] }; var _iconsCache = { faAlarmExclamation: faAlarmExclamation, faAlignLeft: faAlignLeft, faBookDead: faBookDead, faCheck: faCheck, faCircle: faCircle, faCloud: faCloud, faCreditCard: faCreditCard, faDesktop: faDesktop, faEnvelope: faEnvelope, faEye: faEye, faFingerprint: faFingerprint, faHistory: faHistory, faHome: faHome, faPlus: faPlus, faRobot: faRobot, faRocket: faRocket, faSave: faSave, faSlash: faSlash, faSpinnerThird: faSpinnerThird, faSquareFull: faSquareFull, faTimes: faTimes, faTimesCircle: faTimesCircle, faUndo: faUndo, faUndoAlt: faUndoAlt, faUser: faUser, faUsers: faUsers }; exports.fas = _iconsCache; exports.prefix = prefix; exports.faAlarmExclamation = faAlarmExclamation; exports.faAlignLeft = faAlignLeft; exports.faBookDead = faBookDead; exports.faCheck = faCheck; exports.faCircle = faCircle; exports.faCloud = faCloud; exports.faCreditCard = faCreditCard; exports.faDesktop = faDesktop; exports.faEnvelope = faEnvelope; exports.faEye = faEye; exports.faFingerprint = faFingerprint; exports.faHistory = faHistory; exports.faHome = faHome; exports.faPlus = faPlus; exports.faRobot = faRobot; exports.faRocket = faRocket; exports.faSave = faSave; exports.faSlash = faSlash; exports.faSpinnerThird = faSpinnerThird; exports.faSquareFull = faSquareFull; exports.faTimes = faTimes; exports.faTimesCircle = faTimesCircle; exports.faUndo = faUndo; exports.faUndoAlt = faUndoAlt; exports.faUser = faUser; exports.faUsers = faUsers; Object.defineProperty(exports, '__esModule', { value: true }); }))); ================================================ FILE: public/fonts/font-awesome/js-packages/@fortawesome/pro-solid-svg-icons/package.json ================================================ { "description": "The iconic font, CSS, and SVG framework", "keywords": [ "font", "awesome", "fontawesome", "icon", "svg", "bootstrap" ], "homepage": "https://fontawesome.com", "bugs": { "url": "http://github.com/FortAwesome/Font-Awesome/issues" }, "author": { "name": "Dave Gandy", "email": "dave@fontawesome.com", "web": "http://twitter.com/davegandy" }, "contributors": [ { "name": "Brian Talbot", "web": "http://twitter.com/talbs" }, { "name": "Travis Chase", "web": "http://twitter.com/supercodepoet" }, { "name": "Rob Madole", "web": "http://twitter.com/robmadole" }, { "name": "Geremia Taglialatela", "web": "http://twitter.com/gtagliala" }, { "name": "Mike Wilkerson", "web": "http://twitter.com/mw77" } ], "repository": { "type": "git", "url": "https://github.com/FortAwesome/Font-Awesome" }, "engines": { "node": ">=6" }, "dependencies": { "@fortawesome/fontawesome-common-types": "^0.2.36" }, "version": "5.15.4", "name": "@fortawesome/pro-solid-svg-icons", "main": "index.js", "module": "index.es.js", "jsnext:main": "index.es.js", "license": "UNLICENSED", "types": "./index.d.ts", "sideEffects": false, "scripts": { "postinstall": "node attribution.js" } } ================================================ FILE: public/fonts/font-awesome/less/_animated.less ================================================ // Animated Icons // -------------------------- .@{fa-css-prefix}-spin { animation: fa-spin 2s infinite linear; } .@{fa-css-prefix}-pulse { animation: fa-spin 1s infinite steps(8); } @keyframes fa-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } ================================================ FILE: public/fonts/font-awesome/less/_bordered-pulled.less ================================================ // Bordered & Pulled // ------------------------- .@{fa-css-prefix}-border { border-radius: .1em; border: solid .08em @fa-border-color; padding: .2em .25em .15em; } .@{fa-css-prefix}-pull-left { float: left; } .@{fa-css-prefix}-pull-right { float: right; } .@{fa-css-prefix}, .fas, .far, .fal, .fab { &.@{fa-css-prefix}-pull-left { margin-right: .3em; } &.@{fa-css-prefix}-pull-right { margin-left: .3em; } } ================================================ FILE: public/fonts/font-awesome/less/_core.less ================================================ // Base Class Definition // ------------------------- .@{fa-css-prefix}, .fas, .far, .fal, .fad, .fab { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; font-style: normal; font-variant: normal; text-rendering: auto; line-height: 1; } ================================================ FILE: public/fonts/font-awesome/less/_fixed-width.less ================================================ // Fixed Width Icons // ------------------------- .@{fa-css-prefix}-fw { text-align: center; width: (20em / 16); } ================================================ FILE: public/fonts/font-awesome/less/_icons.less ================================================ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ .@{fa-css-prefix}-abacus:before { content: @fa-var-abacus; } .@{fa-css-prefix}-alarm-exclamation:before { content: @fa-var-alarm-exclamation; } .@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } .@{fa-css-prefix}-align-slash:before { content: @fa-var-align-slash; } .@{fa-css-prefix}-atom-alt:before { content: @fa-var-atom-alt; } .@{fa-css-prefix}-aws:before { content: @fa-var-aws; } .@{fa-css-prefix}-badge-check:before { content: @fa-var-badge-check; } .@{fa-css-prefix}-bell:before { content: @fa-var-bell; } .@{fa-css-prefix}-book-dead:before { content: @fa-var-book-dead; } .@{fa-css-prefix}-books:before { content: @fa-var-books; } .@{fa-css-prefix}-brackets-curly:before { content: @fa-var-brackets-curly; } .@{fa-css-prefix}-cc-amazon-pay:before { content: @fa-var-cc-amazon-pay; } .@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } .@{fa-css-prefix}-cc-apple-pay:before { content: @fa-var-cc-apple-pay; } .@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } .@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } .@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } .@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } .@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } .@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } .@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } .@{fa-css-prefix}-chart-network:before { content: @fa-var-chart-network; } .@{fa-css-prefix}-chart-scatter:before { content: @fa-var-chart-scatter; } .@{fa-css-prefix}-check:before { content: @fa-var-check; } .@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } .@{fa-css-prefix}-circle:before { content: @fa-var-circle; } .@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } .@{fa-css-prefix}-clouds:before { content: @fa-var-clouds; } .@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } .@{fa-css-prefix}-comment-dots:before { content: @fa-var-comment-dots; } .@{fa-css-prefix}-concierge-bell:before { content: @fa-var-concierge-bell; } .@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } .@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } .@{fa-css-prefix}-discourse:before { content: @fa-var-discourse; } .@{fa-css-prefix}-docker:before { content: @fa-var-docker; } .@{fa-css-prefix}-dot-circle:before { content: @fa-var-dot-circle; } .@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } .@{fa-css-prefix}-exchange-alt:before { content: @fa-var-exchange-alt; } .@{fa-css-prefix}-eye:before { content: @fa-var-eye; } .@{fa-css-prefix}-file-alt:before { content: @fa-var-file-alt; } .@{fa-css-prefix}-file-code:before { content: @fa-var-file-code; } .@{fa-css-prefix}-fingerprint:before { content: @fa-var-fingerprint; } .@{fa-css-prefix}-github:before { content: @fa-var-github; } .@{fa-css-prefix}-globe:before { content: @fa-var-globe; } .@{fa-css-prefix}-globe-africa:before { content: @fa-var-globe-africa; } .@{fa-css-prefix}-globe-americas:before { content: @fa-var-globe-americas; } .@{fa-css-prefix}-globe-asia:before { content: @fa-var-globe-asia; } .@{fa-css-prefix}-globe-europe:before { content: @fa-var-globe-europe; } .@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } .@{fa-css-prefix}-history:before { content: @fa-var-history; } .@{fa-css-prefix}-home:before { content: @fa-var-home; } .@{fa-css-prefix}-info:before { content: @fa-var-info; } .@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } .@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } .@{fa-css-prefix}-key:before { content: @fa-var-key; } .@{fa-css-prefix}-key-skeleton:before { content: @fa-var-key-skeleton; } .@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } .@{fa-css-prefix}-laptop-code:before { content: @fa-var-laptop-code; } .@{fa-css-prefix}-laptop-house:before { content: @fa-var-laptop-house; } .@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } .@{fa-css-prefix}-lightbulb:before { content: @fa-var-lightbulb; } .@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } .@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } .@{fa-css-prefix}-lock-alt:before { content: @fa-var-lock-alt; } .@{fa-css-prefix}-map-marker-alt:before { content: @fa-var-map-marker-alt; } .@{fa-css-prefix}-microsoft:before { content: @fa-var-microsoft; } .@{fa-css-prefix}-moon-stars:before { content: @fa-var-moon-stars; } .@{fa-css-prefix}-network-wired:before { content: @fa-var-network-wired; } .@{fa-css-prefix}-planet-ringed:before { content: @fa-var-planet-ringed; } .@{fa-css-prefix}-plus:before { content: @fa-var-plus; } .@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } .@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } .@{fa-css-prefix}-random:before { content: @fa-var-random; } .@{fa-css-prefix}-rev:before { content: @fa-var-rev; } .@{fa-css-prefix}-robot:before { content: @fa-var-robot; } .@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } .@{fa-css-prefix}-save:before { content: @fa-var-save; } .@{fa-css-prefix}-search:before { content: @fa-var-search; } .@{fa-css-prefix}-server:before { content: @fa-var-server; } .@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } .@{fa-css-prefix}-siren-on:before { content: @fa-var-siren-on; } .@{fa-css-prefix}-slack:before { content: @fa-var-slack; } .@{fa-css-prefix}-slash:before { content: @fa-var-slash; } .@{fa-css-prefix}-smile:before { content: @fa-var-smile; } .@{fa-css-prefix}-snowman:before { content: @fa-var-snowman; } .@{fa-css-prefix}-spinner-third:before { content: @fa-var-spinner-third; } .@{fa-css-prefix}-square-full:before { content: @fa-var-square-full; } .@{fa-css-prefix}-sun:before { content: @fa-var-sun; } .@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } .@{fa-css-prefix}-times:before { content: @fa-var-times; } .@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } .@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } .@{fa-css-prefix}-undo:before { content: @fa-var-undo; } .@{fa-css-prefix}-undo-alt:before { content: @fa-var-undo-alt; } .@{fa-css-prefix}-university:before { content: @fa-var-university; } .@{fa-css-prefix}-user:before { content: @fa-var-user; } .@{fa-css-prefix}-user-friends:before { content: @fa-var-user-friends; } .@{fa-css-prefix}-user-hard-hat:before { content: @fa-var-user-hard-hat; } .@{fa-css-prefix}-user-shield:before { content: @fa-var-user-shield; } .@{fa-css-prefix}-users:before { content: @fa-var-users; } ================================================ FILE: public/fonts/font-awesome/less/_larger.less ================================================ // Icon Sizes // ------------------------- .larger(@factor) when (@factor > 0) { .larger((@factor - 1)); .@{fa-css-prefix}-@{factor}x { font-size: (@factor * 1em); } } /* makes the font 33% larger relative to the icon container */ .@{fa-css-prefix}-lg { font-size: (4em / 3); line-height: (3em / 4); vertical-align: -.0667em; } .@{fa-css-prefix}-xs { font-size: .75em; } .@{fa-css-prefix}-sm { font-size: .875em; } .larger(10); ================================================ FILE: public/fonts/font-awesome/less/_list.less ================================================ // List Icons // ------------------------- .@{fa-css-prefix}-ul { list-style-type: none; margin-left: (@fa-li-width * 5/4); padding-left: 0; > li { position: relative; } } .@{fa-css-prefix}-li { left: -@fa-li-width; position: absolute; text-align: center; width: @fa-li-width; line-height: inherit; } ================================================ FILE: public/fonts/font-awesome/less/_mixins.less ================================================ // Mixins // -------------------------- .fa-icon() { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; font-style: normal; font-variant: normal; font-weight: normal; line-height: 1; } .fa-icon-rotate(@degrees, @rotation) { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; transform: rotate(@degrees); } .fa-icon-flip(@horiz, @vert, @rotation) { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; transform: scale(@horiz, @vert); } // Only display content to screen readers. A la Bootstrap 4. // // See: http://a11yproject.com/posts/how-to-hide-content/ .sr-only() { border: 0; clip: rect(0,0,0,0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } // Use in conjunction with .sr-only to only display content when it's focused. // // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 // // Credit: HTML5 Boilerplate .sr-only-focusable() { &:active, &:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } } ================================================ FILE: public/fonts/font-awesome/less/_rotated-flipped.less ================================================ // Rotated & Flipped Icons // ------------------------- .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } .@{fa-css-prefix}-flip-both, .@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(-1, -1, 2); } // Hook for IE8-9 // ------------------------- :root { .@{fa-css-prefix}-rotate-90, .@{fa-css-prefix}-rotate-180, .@{fa-css-prefix}-rotate-270, .@{fa-css-prefix}-flip-horizontal, .@{fa-css-prefix}-flip-vertical, .@{fa-css-prefix}-flip-both { filter: none; } } ================================================ FILE: public/fonts/font-awesome/less/_screen-reader.less ================================================ // Screen Readers // ------------------------- .sr-only { .sr-only(); } .sr-only-focusable { .sr-only-focusable(); } ================================================ FILE: public/fonts/font-awesome/less/_stacked.less ================================================ // Stacked Icons // ------------------------- .@{fa-css-prefix}-stack { display: inline-block; height: 2em; line-height: 2em; position: relative; vertical-align: middle; width: 2em; } .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { left: 0; position: absolute; text-align: center; width: 100%; } .@{fa-css-prefix}-stack-1x { line-height: inherit; } .@{fa-css-prefix}-stack-2x { font-size: 2em; } .@{fa-css-prefix}-inverse { color: @fa-inverse; } ================================================ FILE: public/fonts/font-awesome/less/_variables.less ================================================ // Variables // -------------------------- @fa-font-path: "../webfonts"; @fa-font-size-base: 16px; @fa-font-display: block; @fa-line-height-base: 1; @fa-css-prefix: fa; @fa-version: "5.15.4"; @fa-border-color: #eee; @fa-inverse: #fff; @fa-li-width: 2em; @fa-primary-opacity: 1; @fa-secondary-opacity: .4; @fa-var-abacus: "\f640"; @fa-var-alarm-exclamation: "\f843"; @fa-var-align-left: "\f036"; @fa-var-align-slash: "\f846"; @fa-var-atom-alt: "\f5d3"; @fa-var-aws: "\f375"; @fa-var-badge-check: "\f336"; @fa-var-bell: "\f0f3"; @fa-var-book-dead: "\f6b7"; @fa-var-books: "\f5db"; @fa-var-brackets-curly: "\f7ea"; @fa-var-cc-amazon-pay: "\f42d"; @fa-var-cc-amex: "\f1f3"; @fa-var-cc-apple-pay: "\f416"; @fa-var-cc-diners-club: "\f24c"; @fa-var-cc-discover: "\f1f2"; @fa-var-cc-jcb: "\f24b"; @fa-var-cc-mastercard: "\f1f1"; @fa-var-cc-paypal: "\f1f4"; @fa-var-cc-stripe: "\f1f5"; @fa-var-cc-visa: "\f1f0"; @fa-var-chart-network: "\f78a"; @fa-var-chart-scatter: "\f7ee"; @fa-var-check: "\f00c"; @fa-var-check-circle: "\f058"; @fa-var-circle: "\f111"; @fa-var-cloud: "\f0c2"; @fa-var-clouds: "\f744"; @fa-var-cogs: "\f085"; @fa-var-comment-dots: "\f4ad"; @fa-var-concierge-bell: "\f562"; @fa-var-credit-card: "\f09d"; @fa-var-desktop: "\f108"; @fa-var-discourse: "\f393"; @fa-var-docker: "\f395"; @fa-var-dot-circle: "\f192"; @fa-var-envelope: "\f0e0"; @fa-var-exchange-alt: "\f362"; @fa-var-eye: "\f06e"; @fa-var-file-alt: "\f15c"; @fa-var-file-code: "\f1c9"; @fa-var-fingerprint: "\f577"; @fa-var-github: "\f09b"; @fa-var-globe: "\f0ac"; @fa-var-globe-africa: "\f57c"; @fa-var-globe-americas: "\f57d"; @fa-var-globe-asia: "\f57e"; @fa-var-globe-europe: "\f7a2"; @fa-var-graduation-cap: "\f19d"; @fa-var-history: "\f1da"; @fa-var-home: "\f015"; @fa-var-info: "\f129"; @fa-var-info-circle: "\f05a"; @fa-var-instagram: "\f16d"; @fa-var-key: "\f084"; @fa-var-key-skeleton: "\f6f3"; @fa-var-laptop: "\f109"; @fa-var-laptop-code: "\f5fc"; @fa-var-laptop-house: "\e066"; @fa-var-life-ring: "\f1cd"; @fa-var-lightbulb: "\f0eb"; @fa-var-list-alt: "\f022"; @fa-var-list-ul: "\f0ca"; @fa-var-lock-alt: "\f30d"; @fa-var-map-marker-alt: "\f3c5"; @fa-var-microsoft: "\f3ca"; @fa-var-moon-stars: "\f755"; @fa-var-network-wired: "\f6ff"; @fa-var-planet-ringed: "\e020"; @fa-var-plus: "\f067"; @fa-var-question-circle: "\f059"; @fa-var-quote-left: "\f10d"; @fa-var-random: "\f074"; @fa-var-rev: "\f5b2"; @fa-var-robot: "\f544"; @fa-var-rocket: "\f135"; @fa-var-save: "\f0c7"; @fa-var-search: "\f002"; @fa-var-server: "\f233"; @fa-var-sign-out: "\f08b"; @fa-var-siren-on: "\e02e"; @fa-var-slack: "\f198"; @fa-var-slash: "\f715"; @fa-var-smile: "\f118"; @fa-var-snowman: "\f7d0"; @fa-var-spinner-third: "\f3f4"; @fa-var-square-full: "\f45c"; @fa-var-sun: "\f185"; @fa-var-tasks: "\f0ae"; @fa-var-times: "\f00d"; @fa-var-times-circle: "\f057"; @fa-var-twitter: "\f099"; @fa-var-undo: "\f0e2"; @fa-var-undo-alt: "\f2ea"; @fa-var-university: "\f19c"; @fa-var-user: "\f007"; @fa-var-user-friends: "\f500"; @fa-var-user-hard-hat: "\f82c"; @fa-var-user-shield: "\f505"; @fa-var-users: "\f0c0"; ================================================ FILE: public/fonts/font-awesome/less/brands.less ================================================ @import "_variables.less"; @font-face { font-family: 'Font Awesome 5 Brands'; font-style: normal; font-weight: 400; font-display: @fa-font-display; src: url('@{fa-font-path}/fa-brands-400.eot'); src: url('@{fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'), url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'), url('@{fa-font-path}/fa-brands-400.woff') format('woff'), url('@{fa-font-path}/fa-brands-400.ttf') format('truetype'), url('@{fa-font-path}/fa-brands-400.svg#fontawesome') format('svg'); } .fab { font-family: 'Font Awesome 5 Brands'; font-weight: 400; } ================================================ FILE: public/fonts/font-awesome/less/duotone.less ================================================ @import "_variables.less"; @font-face { font-family: 'Font Awesome 5 Duotone'; font-style: normal; font-weight: 900; font-display: @fa-font-display; src: url('@{fa-font-path}/fa-duotone-900.eot'); src: url('@{fa-font-path}/fa-duotone-900.eot?#iefix') format('embedded-opentype'), url('@{fa-font-path}/fa-duotone-900.woff2') format('woff2'), url('@{fa-font-path}/fa-duotone-900.woff') format('woff'), url('@{fa-font-path}/fa-duotone-900.ttf') format('truetype'), url('@{fa-font-path}/fa-duotone-900.svg#fontawesome') format('svg'); } .fad { position: relative; font-family: 'Font Awesome 5 Duotone'; font-weight: 900; } .fad:before { position: absolute; color: ~'var(--@{fa-css-prefix}-primary-color, inherit)'; opacity: @fa-primary-opacity; opacity: ~'var(--@{fa-css-prefix}-primary-opacity, @{fa-primary-opacity})'; } .fad:after { color: ~'var(--@{fa-css-prefix}-secondary-color, inherit)'; opacity: @fa-secondary-opacity; opacity: ~'var(--@{fa-css-prefix}-secondary-opacity, @{fa-secondary-opacity})'; } .@{fa-css-prefix}-swap-opacity .fad:before, .fad.@{fa-css-prefix}-swap-opacity:before { opacity: @fa-secondary-opacity; opacity: ~'var(--@{fa-css-prefix}-secondary-opacity, @{fa-secondary-opacity})'; } .@{fa-css-prefix}-swap-opacity .fad:after, .fad.@{fa-css-prefix}-swap-opacity:after { opacity: @fa-primary-opacity; opacity: ~'var(--@{fa-css-prefix}-primary-opacity, @{fa-primary-opacity})'; } .fad.@{fa-css-prefix}-inverse { color: @fa-inverse; } .fad.@{fa-css-prefix}-stack-1x, .fad.@{fa-css-prefix}-stack-2x { position: absolute; } .fad.@{fa-css-prefix}-stack-1x:before, .fad.@{fa-css-prefix}-stack-2x:before, .fad.@{fa-css-prefix}-fw:before { left: 50%; transform: translateX(-50%); } .fad.@{fa-css-prefix}-abacus:after { content: "\10f640"; } .fad.@{fa-css-prefix}-align-slash:after { content: "\10f846"; } .fad.@{fa-css-prefix}-atom-alt:after { content: "\10f5d3"; } .fad.@{fa-css-prefix}-badge-check:after { content: "\10f336"; } .fad.@{fa-css-prefix}-bell:after { content: "\10f0f3"; } .fad.@{fa-css-prefix}-books:after { content: "\10f5db"; } .fad.@{fa-css-prefix}-brackets-curly:after { content: "\10f7ea"; } .fad.@{fa-css-prefix}-chart-network:after { content: "\10f78a"; } .fad.@{fa-css-prefix}-chart-scatter:after { content: "\10f7ee"; } .fad.@{fa-css-prefix}-check:after { content: "\10f00c"; } .fad.@{fa-css-prefix}-circle:after { content: "\10f111"; } .fad.@{fa-css-prefix}-clouds:after { content: "\10f744"; } .fad.@{fa-css-prefix}-cogs:after { content: "\10f085"; } .fad.@{fa-css-prefix}-comment-dots:after { content: "\10f4ad"; } .fad.@{fa-css-prefix}-concierge-bell:after { content: "\10f562"; } .fad.@{fa-css-prefix}-dot-circle:after { content: "\10f192"; } .fad.@{fa-css-prefix}-envelope:after { content: "\10f0e0"; } .fad.@{fa-css-prefix}-exchange-alt:after { content: "\10f362"; } .fad.@{fa-css-prefix}-file-alt:after { content: "\10f15c"; } .fad.@{fa-css-prefix}-file-code:after { content: "\10f1c9"; } .fad.@{fa-css-prefix}-globe:after { content: "\10f0ac"; } .fad.@{fa-css-prefix}-globe-africa:after { content: "\10f57c"; } .fad.@{fa-css-prefix}-globe-americas:after { content: "\10f57d"; } .fad.@{fa-css-prefix}-globe-asia:after { content: "\10f57e"; } .fad.@{fa-css-prefix}-globe-europe:after { content: "\10f7a2"; } .fad.@{fa-css-prefix}-graduation-cap:after { content: "\10f19d"; } .fad.@{fa-css-prefix}-history:after { content: "\10f1da"; } .fad.@{fa-css-prefix}-key:after { content: "\10f084"; } .fad.@{fa-css-prefix}-key-skeleton:after { content: "\10f6f3"; } .fad.@{fa-css-prefix}-laptop:after { content: "\10f109"; } .fad.@{fa-css-prefix}-laptop-code:after { content: "\10f5fc"; } .fad.@{fa-css-prefix}-laptop-house:after { content: "\10e066"; } .fad.@{fa-css-prefix}-life-ring:after { content: "\10f1cd"; } .fad.@{fa-css-prefix}-lightbulb:after { content: "\10f0eb"; } .fad.@{fa-css-prefix}-list-alt:after { content: "\10f022"; } .fad.@{fa-css-prefix}-list-ul:after { content: "\10f0ca"; } .fad.@{fa-css-prefix}-lock-alt:after { content: "\10f30d"; } .fad.@{fa-css-prefix}-map-marker-alt:after { content: "\10f3c5"; } .fad.@{fa-css-prefix}-moon-stars:after { content: "\10f755"; } .fad.@{fa-css-prefix}-network-wired:after { content: "\10f6ff"; } .fad.@{fa-css-prefix}-planet-ringed:after { content: "\10e020"; } .fad.@{fa-css-prefix}-question-circle:after { content: "\10f059"; } .fad.@{fa-css-prefix}-quote-left:after { content: "\10f10d"; } .fad.@{fa-css-prefix}-random:after { content: "\10f074"; } .fad.@{fa-css-prefix}-rocket:after { content: "\10f135"; } .fad.@{fa-css-prefix}-search:after { content: "\10f002"; } .fad.@{fa-css-prefix}-server:after { content: "\10f233"; } .fad.@{fa-css-prefix}-sign-out:after { content: "\10f08b"; } .fad.@{fa-css-prefix}-siren-on:after { content: "\10e02e"; } .fad.@{fa-css-prefix}-smile:after { content: "\10f118"; } .fad.@{fa-css-prefix}-snowman:after { content: "\10f7d0"; } .fad.@{fa-css-prefix}-sun:after { content: "\10f185"; } .fad.@{fa-css-prefix}-tasks:after { content: "\10f0ae"; } .fad.@{fa-css-prefix}-university:after { content: "\10f19c"; } .fad.@{fa-css-prefix}-user:after { content: "\10f007"; } .fad.@{fa-css-prefix}-user-hard-hat:after { content: "\10f82c"; } .fad.@{fa-css-prefix}-user-shield:after { content: "\10f505"; } .fad.@{fa-css-prefix}-users:after { content: "\10f0c0"; } ================================================ FILE: public/fonts/font-awesome/less/fontawesome.less ================================================ @import "_variables.less"; @import "_mixins.less"; @import "_core.less"; @import "_larger.less"; @import "_fixed-width.less"; @import "_list.less"; @import "_bordered-pulled.less"; @import "_animated.less"; @import "_rotated-flipped.less"; @import "_stacked.less"; @import "_icons.less"; @import "_screen-reader.less"; ================================================ FILE: public/fonts/font-awesome/less/regular.less ================================================ @import "_variables.less"; @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 400; font-display: @fa-font-display; src: url('@{fa-font-path}/fa-regular-400.eot'); src: url('@{fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'), url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'), url('@{fa-font-path}/fa-regular-400.woff') format('woff'), url('@{fa-font-path}/fa-regular-400.ttf') format('truetype'), url('@{fa-font-path}/fa-regular-400.svg#fontawesome') format('svg'); } .far { font-family: 'Font Awesome 5 Pro'; font-weight: 400; } ================================================ FILE: public/fonts/font-awesome/less/solid.less ================================================ @import "_variables.less"; @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 900; font-display: @fa-font-display; src: url('@{fa-font-path}/fa-solid-900.eot'); src: url('@{fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'), url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'), url('@{fa-font-path}/fa-solid-900.woff') format('woff'), url('@{fa-font-path}/fa-solid-900.ttf') format('truetype'), url('@{fa-font-path}/fa-solid-900.svg#fontawesome') format('svg'); } .fa, .fas { font-family: 'Font Awesome 5 Pro'; font-weight: 900; } ================================================ FILE: public/fonts/font-awesome/metadata/categories.yml ================================================ accessibility: icons: - question-circle label: Accessibility alert: icons: - alarm-exclamation - bell label: Alert animals: icons: [] label: Animals arrows: icons: - exchange-alt - history - random - sign-out - undo - undo-alt label: Arrows audio-video: icons: - circle - random - undo - undo-alt label: Audio & Video automotive: icons: [] label: Automotive autumn: icons: [] label: Autumn beverage: icons: [] label: Beverage buildings: icons: - home - university label: Buildings business: icons: - badge-check - chart-network - chart-scatter - envelope - file-alt - globe - laptop-house - save - tasks label: Business camping: icons: [] label: Camping charity: icons: - globe label: Charity chat: icons: - comment-dots - quote-left - smile label: Chat chess: icons: - square-full label: Chess childhood: icons: - robot - snowman label: Childhood clothing: icons: - graduation-cap label: Clothing code: icons: - brackets-curly - file-alt - file-code - laptop-code label: Code communication: icons: - bell - envelope label: Communication computers: icons: - brackets-curly - desktop - laptop - laptop-house - save - server label: Computers construction: icons: - user-hard-hat label: Construction currency: icons: [] label: Currency date-time: icons: - alarm-exclamation - bell label: Date & Time design: icons: - eye - save label: Design editors: icons: - align-left - align-slash - file-alt - list-alt - list-ul - quote-left - tasks - undo - undo-alt label: Editors education: icons: - atom-alt - bell - books - graduation-cap - laptop-code label: Education emoji: icons: - smile label: Emoji energy: icons: - atom-alt - lightbulb - sun label: Energy files: icons: - file-alt - file-code - save label: Files finance: icons: - credit-card label: Finance fitness: icons: [] label: Fitness food: icons: [] label: Food fruit-vegetable: icons: [] label: Fruits & Vegetables games: icons: [] label: Games gaming-tabletop: icons: - book-dead label: Tabletop Gaming gender: icons: [] label: Genders halloween: icons: - book-dead - key-skeleton label: Halloween hands: icons: [] label: Hands health: icons: [] label: Health holiday: icons: - snowman label: Holiday hotel: icons: - concierge-bell - key label: Hotel household: icons: - bell - books - laptop-house - lightbulb - siren-on label: Household images: icons: - eye label: Images interfaces: icons: - badge-check - bell - check - check-circle - circle - cloud - cogs - dot-circle - envelope - eye - file-alt - fingerprint - history - home - info - info-circle - plus - question-circle - quote-left - save - search - sign-out - smile - times - times-circle - undo - undo-alt - user label: Interfaces logistics: icons: - user-hard-hat label: Logistics maps: icons: - bell - eye - globe - graduation-cap - home - info - info-circle - key - life-ring - lightbulb - map-marker-alt - plus - rocket - search - university label: Maps maritime: icons: [] label: Maritime marketing: icons: - badge-check - lightbulb label: Marketing mathematics: icons: - abacus - plus - times label: Mathematics medical: icons: - plus label: Medical moving: icons: [] label: Moving music: icons: [] label: Music objects: icons: - bell - book-dead - cloud - cogs - envelope - eye - file-alt - globe - graduation-cap - home - key - laptop - life-ring - lightbulb - lock-alt - map-marker-alt - rocket - save - search - sun - university label: Objects payments-shopping: icons: - badge-check - bell - cc-amazon-pay - cc-amex - cc-apple-pay - cc-diners-club - cc-discover - cc-jcb - cc-mastercard - cc-paypal - cc-stripe - cc-visa - credit-card - key label: Payments & Shopping pharmacy: icons: - history label: Pharmacy political: icons: [] label: Political religion: icons: [] label: Religion science: icons: - atom-alt - chart-network - chart-scatter - key-skeleton label: Science science-fiction: icons: - atom-alt - globe - moon-stars - planet-ringed - robot - rocket label: Science Fiction security: icons: - eye - fingerprint - key - key-skeleton - lock-alt - siren-on - user-shield label: Security shapes: icons: - circle - cloud label: Shapes shopping: icons: - badge-check label: Shopping social: icons: - bell - envelope - map-marker-alt - user - user-friends - users label: Social spinners: icons: - atom-alt - life-ring - slash - spinner-third - sun label: Spinners sports: icons: [] label: Sports spring: icons: [] label: Spring status: icons: - badge-check - bell - eye - file-alt - info - info-circle - lightbulb - lock-alt - map-marker-alt - plus - question-circle - sign-out - user label: Status summer: icons: - sun label: Summer toggle: icons: - check-circle - circle - dot-circle label: Toggle travel: icons: - concierge-bell - globe-africa - globe-americas - globe-asia - globe-europe label: Travel users-people: icons: - smile - user - user-friends - user-hard-hat - user-shield - users label: Users & People vehicles: icons: - rocket label: Vehicles weather: icons: - cloud - clouds - moon-stars - sun label: Weather winter: icons: [] label: Winter writing: icons: - envelope - file-alt - quote-left label: Writing ================================================ FILE: public/fonts/font-awesome/metadata/icons.json ================================================ { "abacus": { "changes": [ "5.3.0" ], "ligatures": [], "search": { "terms": [ "addition", "ancient", "arithmetic", "calculator", "counting", "hexadecimal", "math", "subtraction" ] }, "styles": [ "duotone" ], "unicode": "f640", "label": "Abacus", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": [ "M192 440h-32v-48h32zM160 72v48h32V72zm96 160v48h32v-48zm-96 0v48h32v-48zm96 208h160v-48H256zm96-160h128v-48H352zM544 0a32 32 0 0 0-32 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM416 72H256v48h160zM32 0A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V32A32 32 0 0 0 32 0z", "M144 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 160h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zM464 32h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM144 352h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm224 0h-32a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16z" ] } }, "free": [] }, "alarm-exclamation": { "changes": [ "5.9.0" ], "ligatures": [], "search": { "terms": [ "alert", "date", "late", "reminder", "sleep", "snooze", "timer", "timestamp", "watch" ] }, "styles": [ "solid" ], "unicode": "f843", "label": "Alarm Exclamation", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z" } }, "free": [] }, "align-left": { "changes": [ "1", "5.0.0", "5.9.0" ], "ligatures": [], "search": { "terms": [ "format", "paragraph", "text" ] }, "styles": [ "solid" ], "unicode": "f036", "label": "align-left", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z" } }, "free": [ "solid" ] }, "align-slash": { "changes": [ "5.9.0" ], "ligatures": [], "search": { "terms": [ "cancel", "format", "paragraph", "remove" ] }, "styles": [ "duotone" ], "unicode": "f846", "label": "Align Slash", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": [ "M528 352h-31.46l-82.81-64H528a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16zM96 304v32a16 16 0 0 0 16 16h175.21l-82.8-64H112a16 16 0 0 0-16 16zM528 96a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L165.31 96zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm416-256H248.12l82.81 64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M633.82 458.1L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45z" ] } }, "free": [] }, "atom-alt": { "changes": [ "5.2.0", "5.12.0" ], "ligatures": [], "search": { "terms": [ "atheism", "chemistry", "electron", "ion", "isotope", "neutron", "nuclear", "proton", "science", "space" ] }, "styles": [ "duotone" ], "unicode": "f5d3", "label": "Atom Alt", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": [ "M424.37305,55.69141C408.294,39.61914,385.50879,32,358.58252,32,319.82764,32,272.43359,48.127,224,77.14453a493.86641,493.86641,0,0,0-58.042,41.03711C140.58252,138.875,114.57666,162.5918,85.75635,197.916a374.25237,374.25237,0,0,0,35.70263,58.082A505.23427,505.23427,0,0,1,224,153.65625a377.23937,377.23937,0,0,1,58.042-35.47266c70.01221-34.334,95.22461-19.07421,97.0625-17.23632,9.54248,9.543,7.67432,46.94531-16.86084,96.96875A492.27615,492.27615,0,0,1,403.06543,256C452.27637,173.91992,463.59277,94.90039,424.37305,55.69141ZM224,358.3418a377.44678,377.44678,0,0,1-58.042,35.47461c-70.01221,34.334-95.22461,19.07421-97.0625,17.23632-9.54248-9.543-7.67432-46.94335,16.86084-96.96875A492.27615,492.27615,0,0,1,44.93457,256C-4.27637,338.08008-15.59277,417.09961,23.627,456.30664,39.70605,472.38086,62.49121,480,89.41748,480c38.75488,0,86.14893-16.127,134.58252-45.14453a493.86641,493.86641,0,0,0,58.042-41.03711c25.38965-20.70508,51.42285-44.45606,80.20166-79.73438A373.962,373.962,0,0,0,326.541,256,505.23427,505.23427,0,0,1,224,358.3418Z", "M224,287.98828a31.99414,31.99414,0,1,0-32-31.99414A31.98908,31.98908,0,0,0,224,287.98828ZM121.46094,255.99805A374.13921,374.13921,0,0,1,85.7583,197.916c-24.53906-50.02344-26.40625-87.42579-16.86328-96.9668,1.83984-1.83789,27.05078-17.10156,97.062,17.23242A494.241,494.241,0,0,1,224,77.14453C175.5625,48.13086,128.16406,32,89.41846,32c-26.9336,0-49.707,7.61523-65.793,23.69141C-15.59326,94.90039-4.27686,173.91992,44.93408,256A492.0174,492.0174,0,0,0,85.7583,314.084c28.79639,35.30274,54.85889,59.07227,80.19873,79.73243A377.429,377.429,0,0,0,224,358.3418,505.131,505.131,0,0,1,121.46094,255.99805ZM403.06592,256a492.0174,492.0174,0,0,0-40.82422-58.084c-28.84326-35.35547-54.89795-59.10352-80.19873-79.73243A377.4073,377.4073,0,0,0,224,153.65625,505.20556,505.20556,0,0,1,326.53906,256a373.849,373.849,0,0,1,35.70264,58.084c24.53906,50.02149,26.40625,87.42383,16.86328,96.9668-1.83984,1.83789-27.05078,17.10156-97.062-17.23242A494.241,494.241,0,0,1,224,434.85547C272.4375,463.86914,319.83594,480,358.58154,480c26.9336,0,49.707-7.61523,65.793-23.69336C463.59326,417.09961,452.27686,338.08008,403.06592,256Z" ] } }, "free": [] }, "aws": { "changes": [ "5.0.0", "5.1.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f375", "label": "Amazon Web Services (AWS)", "voted": false, "svg": { "brands": { "last_modified": 1546440860000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": "M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z" } }, "free": [ "brands" ] }, "badge-check": { "changes": [ "5.0.0" ], "ligatures": [], "search": { "terms": [ "accept", "achievement", "agree", "award", "confirm", "correct", "done", "ok", "security", "select", "success", "verified", "verify", "winner", "yes" ] }, "styles": [ "duotone" ], "unicode": "f336", "label": "Check Badge", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z", "M367.2 211.75l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.06 15.56z" ] } }, "free": [] }, "bell": { "changes": [ "2", "5.0.0", "5.2.0", "5.11.0" ], "ligatures": [], "search": { "terms": [ "alarm", "alert", "chime", "notification", "reminder" ] }, "styles": [ "duotone" ], "unicode": "f0f3", "label": "bell", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": [ "M448 384c-.1 16.4-13 32-32.1 32H32.08C13 416 .09 400.4 0 384a31.25 31.25 0 0 1 8.61-21.71c19.32-20.76 55.47-52 55.47-154.29 0-77.7 54.48-139.9 127.94-155.16V32a32 32 0 1 1 64 0v20.84C329.42 68.1 383.9 130.3 383.9 208c0 102.3 36.15 133.53 55.47 154.29A31.27 31.27 0 0 1 448 384z", "M160 448h128a64 64 0 0 1-128 0z" ] } }, "free": [ "solid", "regular" ] }, "book-dead": { "changes": [ "5.4.0" ], "ligatures": [], "search": { "terms": [ "Dungeons & Dragons", "crossbones", "d&d", "dark arts", "death", "dnd", "documentation", "evil", "fantasy", "halloween", "holiday", "necronomicon", "read", "skull", "spell" ] }, "styles": [ "solid" ], "unicode": "f6b7", "label": "Book of the Dead", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z" } }, "free": [ "solid" ] }, "books": { "changes": [ "5.2.0", "5.10.1" ], "ligatures": [], "search": { "terms": [ "diary", "documentation", "journal", "library", "read" ] }, "styles": [ "duotone" ], "unicode": "f5db", "label": "Books", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": [ "M96 0H32A32 32 0 0 0 0 32v64h128V32A32 32 0 0 0 96 0zM0 384h128V128H0zm0 96a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H0zm513.62-17.78L401.08 42.71l-60.26 16.14 112.35 418.8c.11.39.2.79.29 1.18l60.29-16.15c-.04-.15-.09-.3-.13-.46zM160 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H160zM256 0h-64a32 32 0 0 0-32 32v64h124.79l-8-29.65a23.94 23.94 0 0 1 11.17-27V32A32 32 0 0 0 256 0zm-96 384h128V128H160z", "M0 416h128v-32H0zm0-288h128V96H0zm575.17 317.65L460.39 17.78a23.89 23.89 0 0 0-29.18-17h-.09L415.73 5a24 24 0 0 0-16.9 29.36l114.79 427.86a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.35zM160 416h128v-32H160zM338.39 49.78a23.89 23.89 0 0 0-29.18-17h-.09L293.73 37a24 24 0 0 0-16.9 29.36l8 29.65H160v32h128V108l103.62 386.22a23.89 23.89 0 0 0 29.18 17h.09l15.38-4.22a24 24 0 0 0 16.9-29.33z" ] } }, "free": [] }, "brackets-curly": { "changes": [ "5.7.0" ], "ligatures": [], "search": { "terms": [ "code", "developer", "development", "parentheses" ] }, "styles": [ "duotone" ], "unicode": "f7ea", "label": "Curly Brackets", "voted": true, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": [ "M566.64 233.37a32 32 0 0 1 0 45.25l-45.25 45.25a32 32 0 0 0-9.39 22.64V384a96 96 0 0 1-96 96h-48a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h48a32 32 0 0 0 32-32v-37.48a96 96 0 0 1 28.13-67.89L498.76 256l-22.62-22.62A96 96 0 0 1 448 165.47V128a32 32 0 0 0-32-32h-48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h48a96 96 0 0 1 96 96v37.48a32 32 0 0 0 9.38 22.65l45.25 45.24z", "M208 32h-48a96 96 0 0 0-96 96v37.48a32.12 32.12 0 0 1-9.38 22.65L9.38 233.37a32 32 0 0 0 0 45.25l45.25 45.25A32.05 32.05 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.26 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z" ] } }, "free": [] }, "cc-amazon-pay": { "changes": [ "5.0.2" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f42d", "label": "Amazon Pay Credit Card", "voted": false, "svg": { "brands": { "last_modified": 1546440860000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z" } }, "free": [ "brands" ] }, "cc-amex": { "changes": [ "4.2", "5.0.0", "5.7.0" ], "ligatures": [], "search": { "terms": [ "amex" ] }, "styles": [ "brands" ], "unicode": "f1f3", "label": "American Express Credit Card", "voted": false, "svg": { "brands": { "last_modified": 1548364699000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z" } }, "free": [ "brands" ] }, "cc-apple-pay": { "changes": [ "5.0.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f416", "label": "Apple Pay Credit Card", "voted": false, "svg": { "brands": { "last_modified": 1546440860000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z" } }, "free": [ "brands" ] }, "cc-diners-club": { "changes": [ "4.4", "5.0.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f24c", "label": "Diner's Club Credit Card", "voted": false, "svg": { "brands": { "last_modified": 1546440860000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z" } }, "free": [ "brands" ] }, "cc-discover": { "changes": [ "4.2", "5.0.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f1f2", "label": "Discover Credit Card", "voted": false, "svg": { "brands": { "last_modified": 1548363722000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z" } }, "free": [ "brands" ] }, "cc-jcb": { "changes": [ "4.4", "5.0.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f24b", "label": "JCB Credit Card", "voted": false, "svg": { "brands": { "last_modified": 1546440860000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z" } }, "free": [ "brands" ] }, "cc-mastercard": { "changes": [ "4.2", "5.0.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f1f1", "label": "MasterCard Credit Card", "voted": false, "svg": { "brands": { "last_modified": 1546440860000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z" } }, "free": [ "brands" ] }, "cc-paypal": { "changes": [ "4.2", "5.0.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f1f4", "label": "Paypal Credit Card", "voted": false, "svg": { "brands": { "last_modified": 1546440860000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z" } }, "free": [ "brands" ] }, "cc-stripe": { "changes": [ "4.2", "5.0.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f1f5", "label": "Stripe Credit Card", "voted": false, "svg": { "brands": { "last_modified": 1548363722000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z" } }, "free": [ "brands" ] }, "cc-visa": { "changes": [ "4.2", "5.0.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f1f0", "label": "Visa Credit Card", "voted": false, "svg": { "brands": { "last_modified": 1546440860000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z" } }, "free": [ "brands" ] }, "chart-network": { "changes": [ "5.6.0" ], "ligatures": [], "search": { "terms": [ "activity", "analytics", "association", "dashboard", "diagram", "distribution", "map", "network" ] }, "styles": [ "duotone" ], "unicode": "f78a", "label": "Network Chart", "voted": true, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": [ "M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z", "M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z" ] } }, "free": [] }, "chart-scatter": { "changes": [ "5.7.0" ], "ligatures": [], "search": { "terms": [ "analytics", "chart", "diagram", "graph", "plot" ] }, "styles": [ "duotone" ], "unicode": "f7ee", "label": "Scatter Chart", "voted": true, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M512 400v32a16 16 0 0 1-16 16H32a32 32 0 0 1-32-32V80a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v304h432a16 16 0 0 1 16 16z", "M160 256a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 96a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-224 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm192 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-96-64a32 32 0 1 0 32 32 32 32 0 0 0-32-32z" ] } }, "free": [] }, "check": { "changes": [ "1", "5.0.0" ], "ligatures": [], "search": { "terms": [ "accept", "agree", "checkmark", "confirm", "correct", "done", "notice", "notification", "notify", "ok", "select", "success", "tick", "todo", "yes" ] }, "styles": [ "duotone", "solid" ], "unicode": "f00c", "label": "Check", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M504.5 144.42L264.75 385.5 192 312.59l240.11-241a25.49 25.49 0 0 1 36.06-.14l.14.14L504.5 108a25.86 25.86 0 0 1 0 36.42z", "M264.67 385.59l-54.57 54.87a25.5 25.5 0 0 1-36.06.14l-.14-.14L7.5 273.1a25.84 25.84 0 0 1 0-36.41l36.2-36.41a25.49 25.49 0 0 1 36-.17l.16.17z" ] }, "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z" } }, "free": [ "solid" ] }, "check-circle": { "changes": [ "1", "5.0.0" ], "ligatures": [], "search": { "terms": [ "accept", "agree", "confirm", "correct", "done", "ok", "select", "success", "tick", "todo", "yes" ] }, "styles": [ "regular" ], "unicode": "f058", "label": "Check Circle", "voted": false, "svg": { "regular": { "last_modified": 1628277665000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z" } }, "free": [ "solid", "regular" ] }, "circle": { "changes": [ "3", "5.0.0", "5.10.1", "5.10.2" ], "ligatures": [], "search": { "terms": [ "circle-thin", "diameter", "dot", "ellipse", "notification", "round" ] }, "styles": [ "duotone", "solid" ], "unicode": "f111", "label": "Circle", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 424c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z", "M256 432c-97.06 0-176-79-176-176S158.94 80 256 80s176 79 176 176-78.94 176-176 176z" ] }, "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z" } }, "free": [ "solid", "regular" ] }, "cloud": { "changes": [ "2", "5.0.0", "5.0.11" ], "ligatures": [], "search": { "terms": [ "atmosphere", "fog", "overcast", "save", "upload", "weather" ] }, "styles": [ "solid" ], "unicode": "f0c2", "label": "Cloud", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z" } }, "free": [ "solid" ] }, "clouds": { "changes": [ "5.5.0" ], "ligatures": [], "search": { "terms": [ "cloudy", "fog", "haze", "overcast", "smoke", "storm", "weather" ] }, "styles": [ "duotone" ], "unicode": "f744", "label": "Clouds", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": [ "M161.6 288H96a96 96 0 0 1 0-192c.6 0 1.1.2 1.6.2C105.3 41.9 151.6 0 208 0a111.61 111.61 0 0 1 104.5 72.7A95.07 95.07 0 0 1 352 64a96 96 0 0 1 96 96 93 93 0 0 1-7 34.7 110.5 110.5 0 0 0-31.6 11.8A142.54 142.54 0 0 0 304 160c-73.9 0-134.3 56.2-142.4 128z", "M640 416a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96c0-42.5 27.8-78.2 66.1-90.8A113.72 113.72 0 0 1 192 304a111.94 111.94 0 0 1 112-112c43.2 0 80.4 24.9 99 60.8 14.7-17.5 36.4-28.8 61-28.8a80 80 0 0 1 80 80 78.09 78.09 0 0 1-1.6 16.2c.5 0 1-.2 1.6-.2a96 96 0 0 1 96 96z" ] } }, "free": [] }, "cogs": { "changes": [ "1", "5.0.0" ], "ligatures": [], "search": { "terms": [ "gears", "mechanical", "settings", "sprocket", "wheel" ] }, "styles": [ "duotone" ], "unicode": "f085", "label": "cogs", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": [ "M638.41 387a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4L602 335a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6 12.36 12.36 0 0 0-15.1 5.4l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 44.9c-29.6-38.5 14.3-82.4 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79zm136.8-343.8a12.34 12.34 0 0 0-12.2-10.3h-16.5a86.33 86.33 0 0 0-15.9-27.4l8.2-14.3a12.42 12.42 0 0 0-2.8-15.7 110.5 110.5 0 0 0-32.1-18.6A12.36 12.36 0 0 0 552 7.19l-8.2 14.3a88.86 88.86 0 0 0-31.7 0l-8.2-14.3a12.36 12.36 0 0 0-15.1-5.4 111.83 111.83 0 0 0-32.1 18.6 12.3 12.3 0 0 0-2.8 15.7l8.2 14.3a86.33 86.33 0 0 0-15.9 27.4h-16.5a12.43 12.43 0 0 0-12.2 10.4 112.66 112.66 0 0 0 0 37.1 12.34 12.34 0 0 0 12.2 10.3h16.5a86.33 86.33 0 0 0 15.9 27.4l-8.2 14.3a12.42 12.42 0 0 0 2.8 15.7 110.5 110.5 0 0 0 32.1 18.6 12.36 12.36 0 0 0 15.1-5.4l8.2-14.3a88.86 88.86 0 0 0 31.7 0l8.2 14.3a12.36 12.36 0 0 0 15.1 5.4 111.83 111.83 0 0 0 32.1-18.6 12.3 12.3 0 0 0 2.8-15.7l-8.2-14.3a86.33 86.33 0 0 0 15.9-27.4h16.5a12.43 12.43 0 0 0 12.2-10.4 112.66 112.66 0 0 0 .01-37.1zm-136.8 45c-29.6-38.5 14.3-82.5 52.8-52.8 29.59 38.49-14.3 82.39-52.8 52.79z", "M420 303.79L386.31 287a173.78 173.78 0 0 0 0-63.5l33.7-16.8c10.1-5.9 14-18.2 10-29.1-8.9-24.2-25.9-46.4-42.1-65.8a23.93 23.93 0 0 0-30.3-5.3l-29.1 16.8a173.66 173.66 0 0 0-54.9-31.7V58a24 24 0 0 0-20-23.6 228.06 228.06 0 0 0-76 .1A23.82 23.82 0 0 0 158 58v33.7a171.78 171.78 0 0 0-54.9 31.7L74 106.59a23.91 23.91 0 0 0-30.3 5.3c-16.2 19.4-33.3 41.6-42.2 65.8a23.84 23.84 0 0 0 10.5 29l33.3 16.9a173.24 173.24 0 0 0 0 63.4L12 303.79a24.13 24.13 0 0 0-10.5 29.1c8.9 24.1 26 46.3 42.2 65.7a23.93 23.93 0 0 0 30.3 5.3l29.1-16.7a173.66 173.66 0 0 0 54.9 31.7v33.6a24 24 0 0 0 20 23.6 224.88 224.88 0 0 0 75.9 0 23.93 23.93 0 0 0 19.7-23.6v-33.6a171.78 171.78 0 0 0 54.9-31.7l29.1 16.8a23.91 23.91 0 0 0 30.3-5.3c16.2-19.4 33.7-41.6 42.6-65.8a24 24 0 0 0-10.5-29.1zm-151.3 4.3c-77 59.2-164.9-28.7-105.7-105.7 77-59.2 164.91 28.7 105.71 105.7z" ] } }, "free": [ "solid" ] }, "comment-dots": { "changes": [ "5.0.9" ], "ligatures": [], "search": { "terms": [ "bubble", "chat", "commenting", "conversation", "feedback", "message", "more", "note", "notification", "reply", "sms", "speech", "texting" ] }, "styles": [ "duotone" ], "unicode": "f4ad", "label": "Comment Dots", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5a8 8 0 0 0-1.5 8.7A7.83 7.83 0 0 0 8 480c66.3 0 116-31.8 140.6-51.4A305 305 0 0 0 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32z", "M128 208a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 0a32 32 0 1 0 32 32 32 32 0 0 0-32-32z" ] } }, "free": [ "solid", "regular" ] }, "concierge-bell": { "changes": [ "5.1.0" ], "ligatures": [], "search": { "terms": [ "attention", "hotel", "receptionist", "service", "support" ] }, "styles": [ "duotone" ], "unicode": "f562", "label": "Concierge Bell", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M512 400v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h480a16 16 0 0 1 16 16zM208 112h16v18.29a224.73 224.73 0 0 1 64 0V112h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z", "M480 352H32c0-123.71 100.29-224 224-224s224 100.29 224 224z" ] } }, "free": [ "solid" ] }, "credit-card": { "changes": [ "2", "5.0.0" ], "ligatures": [], "search": { "terms": [ "buy", "checkout", "credit-card-alt", "debit", "money", "payment", "purchase" ] }, "styles": [ "solid" ], "unicode": "f09d", "label": "Credit Card", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z" } }, "free": [ "solid", "regular" ] }, "desktop": { "changes": [ "3", "5.0.0" ], "ligatures": [], "search": { "terms": [ "computer", "cpu", "demo", "desktop", "device", "imac", "machine", "monitor", "pc", "screen" ] }, "styles": [ "solid", "regular" ], "unicode": "f108", "label": "Desktop", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z" }, "regular": { "last_modified": 1628277665000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z" } }, "free": [ "solid" ] }, "discourse": { "changes": [ "5.0.0", "5.0.3" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f393", "label": "Discourse", "voted": false, "svg": { "brands": { "last_modified": 1546440860000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": "M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z" } }, "free": [ "brands" ] }, "docker": { "changes": [ "5.0.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f395", "label": "Docker", "voted": false, "svg": { "brands": { "last_modified": 1546440860000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": "M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z" } }, "free": [ "brands" ] }, "dot-circle": { "changes": [ "4", "5.0.0" ], "ligatures": [], "search": { "terms": [ "bullseye", "notification", "target" ] }, "styles": [ "duotone" ], "unicode": "f192", "label": "Dot Circle", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm124.45 372.45A176 176 0 1 1 432 256a174.85 174.85 0 0 1-51.55 124.45z", "M256 336a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80z" ] } }, "free": [ "solid", "regular" ] }, "envelope": { "changes": [ "2", "5.0.0", "5.10.1", "5.10.2" ], "ligatures": [], "search": { "terms": [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ] }, "styles": [ "solid", "duotone" ], "unicode": "f0e0", "label": "Envelope", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z" }, "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M256.47 352h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V183.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52zM464 64H48a48 48 0 0 0-48 48v19a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4 23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131v-19a48 48 0 0 0-48-48z", "M512 131v52.36c-24.46 19.17-169.4 125.34-173 128.12-22.12 17.1-52.43 40.52-82.53 40.52h-.94c-30.1 0-60.41-23.42-82.54-40.52C169.39 308.7 24.77 202.7 0 183.33V131a24.08 24.08 0 0 0 9.2 18.9c30.6 23.9 40.7 32.4 173.4 128.7 16.69 12.12 49.75 41.4 72.93 41.4h.94c23.18 0 56.24-29.28 72.93-41.4 132.7-96.3 142.8-104.7 173.4-128.7A23.93 23.93 0 0 0 512 131z" ] } }, "free": [ "solid", "regular" ] }, "exchange-alt": { "changes": [ "5.0.0" ], "ligatures": [], "search": { "terms": [ "arrow", "arrows", "exchange", "reciprocate", "return", "swap", "transfer" ] }, "styles": [ "duotone" ], "unicode": "f362", "label": "Alternate Exchange", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M128 272v48h360a24 24 0 0 1 24 24v16a24 24 0 0 1-24 24H128v48c0 21.44-25.94 32-41 17L7 369a24 24 0 0 1 0-33.94l80-80c15.14-15.12 41-4.35 41 16.94z", "M505 143.05a24 24 0 0 1 0 33.95l-80 80c-15 15-41 4.49-41-17v-48H24a24 24 0 0 1-24-24v-16a24 24 0 0 1 24-24h360V80c0-21.36 25.9-32 41-17z" ] } }, "free": [ "solid" ] }, "eye": { "changes": [ "1", "5.0.0", "5.7.0" ], "ligatures": [], "search": { "terms": [ "look", "optic", "see", "seen", "show", "sight", "views", "visible" ] }, "styles": [ "solid", "regular" ], "unicode": "f06e", "label": "Eye", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z" }, "regular": { "last_modified": 1628277665000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z" } }, "free": [ "solid", "regular" ] }, "file-alt": { "changes": [ "3.2", "5.0.0", "5.10.2" ], "ligatures": [], "search": { "terms": [ "document", "file-text", "invoice", "new", "page", "pdf" ] }, "styles": [ "duotone" ], "unicode": "f15c", "label": "Alternate File", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "384", "512" ], "width": 384, "height": 512, "path": [ "M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zm-96 244a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12zm0-64a12 12 0 0 1-12 12H108a12 12 0 0 1-12-12v-8a12 12 0 0 1 12-12h168a12 12 0 0 1 12 12z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM276 352H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12zm0-64H108a12 12 0 0 0-12 12v8a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-8a12 12 0 0 0-12-12z" ] } }, "free": [ "solid", "regular" ] }, "file-code": { "changes": [ "4.1", "5.0.0", "5.10.2" ], "ligatures": [], "search": { "terms": [ "css", "development", "document", "html" ] }, "styles": [ "duotone", "regular" ], "unicode": "f1c9", "label": "Code File", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "384", "512" ], "width": 384, "height": 512, "path": [ "M384 128H272a16 16 0 0 1-16-16V0H24A23.94 23.94 0 0 0 0 23.88V488a23.94 23.94 0 0 0 23.88 24H360a23.94 23.94 0 0 0 24-23.88V128zM141.79 379.54l-19.58 20.84a5.41 5.41 0 0 1-7.64.24l-64.86-60.69a5.37 5.37 0 0 1-.24-7.6l.25-.25 64.86-60.7a5.42 5.42 0 0 1 7.64.24l19.58 20.85a5.4 5.4 0 0 1-.25 7.62l-.13.12L100.65 336l40.76 35.8a5.4 5.4 0 0 1 .49 7.62zm31.71 71.25l-27.45-8a5.38 5.38 0 0 1-3.67-6.67l61.49-211.24a5.38 5.38 0 0 1 6.68-3.64l27.45 8a5.4 5.4 0 0 1 3.63 6.67l-61.45 211.2a5.4 5.4 0 0 1-6.68 3.68zm161-111.12l-.25.25-64.86 60.69a5.42 5.42 0 0 1-7.64-.23l-19.58-20.84a5.37 5.37 0 0 1 .26-7.6l.13-.12L283.35 336l-40.76-35.8a5.4 5.4 0 0 1-.49-7.62l.11-.12 19.58-20.85a5.42 5.42 0 0 1 7.64-.24l64.86 60.7a5.36 5.36 0 0 1 .25 7.6z", "M377 105L279.1 7a24 24 0 0 0-17-7H256v112a16 16 0 0 0 16 16h112v-6.1a23.9 23.9 0 0 0-7-16.9zM141.41 371.8L100.65 336l40.76-35.8.13-.12a5.4 5.4 0 0 0 .25-7.62l-19.58-20.85a5.42 5.42 0 0 0-7.64-.24l-64.86 60.7-.25.25a5.37 5.37 0 0 0 .24 7.6l64.86 60.69a5.41 5.41 0 0 0 7.64-.24l19.58-20.84.11-.12a5.4 5.4 0 0 0-.48-7.61zm100.22-135.93a5.4 5.4 0 0 0-3.63-6.67l-27.45-8a5.38 5.38 0 0 0-6.68 3.64l-61.5 211.29a5.38 5.38 0 0 0 3.63 6.67l27.45 8a5.4 5.4 0 0 0 6.68-3.68l61.44-211.22zm92.66 96.2l-64.86-60.7a5.42 5.42 0 0 0-7.64.24l-19.58 20.85-.11.12a5.4 5.4 0 0 0 .49 7.62l40.76 35.8-40.76 35.8-.13.12a5.37 5.37 0 0 0-.26 7.6l19.58 20.84a5.42 5.42 0 0 0 7.64.23l64.86-60.69.25-.25a5.36 5.36 0 0 0-.25-7.6z" ] }, "regular": { "last_modified": 1628277665000, "raw": "", "viewBox": [ "0", "0", "384", "512" ], "width": 384, "height": 512, "path": "M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z" } }, "free": [ "solid", "regular" ] }, "fingerprint": { "changes": [ "5.1.0" ], "ligatures": [], "search": { "terms": [ "human", "id", "identification", "lock", "smudge", "touch", "unique", "unlock" ] }, "styles": [ "solid" ], "unicode": "f577", "label": "Fingerprint", "voted": true, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z" } }, "free": [ "solid" ] }, "github": { "changes": [ "2", "5.0.0" ], "ligatures": [], "search": { "terms": [ "octocat" ] }, "styles": [ "brands" ], "unicode": "f09b", "label": "GitHub", "voted": false, "svg": { "brands": { "last_modified": 1546440860000, "raw": "", "viewBox": [ "0", "0", "496", "512" ], "width": 496, "height": 512, "path": "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z" } }, "free": [ "brands" ] }, "globe": { "changes": [ "2", "5.0.0", "5.0.9", "5.11.0", "5.11.1" ], "ligatures": [], "search": { "terms": [ "all", "coordinates", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ] }, "styles": [ "duotone" ], "unicode": "f0ac", "label": "Globe", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "496", "512" ], "width": 496, "height": 512, "path": [ "M340.45,320H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256,575,575,0,0,1,340.45,320ZM160.2,160H335.8c-.41-2.31-.84-4.62-1.28-6.91-6-30.85-14.42-58.37-25.13-81.78C299.54,49.77,288,32.54,276.05,21.48,266.38,12.53,256.94,8,248,8s-18.38,4.53-28,13.48c-12,11.06-23.49,28.29-33.34,49.83C176,94.72,167.5,122.24,161.53,153.09,161,155.38,160.61,157.69,160.2,160ZM120,256a608,608,0,0,1,3.34-64H8.35a249.52,249.52,0,0,0,0,128h115A608,608,0,0,1,120,256Zm367.62-64h-115A608.06,608.06,0,0,1,376,256a608,608,0,0,1-3.34,64h115a249.52,249.52,0,0,0,0-128ZM476.7,160A248.62,248.62,0,0,0,315.58,17.32c24.13,33,42.89,83.15,52.75,142.68ZM315.58,494.68A248.59,248.59,0,0,0,476.71,352H368.33C358.47,411.53,339.71,461.68,315.58,494.68ZM335.8,352H160.2c.41,2.31.84,4.62,1.28,6.91,6,30.85,14.42,58.37,25.13,81.78,9.85,21.54,21.38,38.77,33.34,49.83,9.67,9,19.11,13.48,28.05,13.48s18.38-4.53,28.05-13.48c12-11.06,23.49-28.29,33.34-49.83,10.71-23.41,19.16-50.93,25.13-81.78C335,356.62,335.39,354.31,335.8,352ZM180.42,17.32A248.59,248.59,0,0,0,19.29,160H127.67C137.53,100.47,156.29,50.32,180.42,17.32ZM19.29,352A248.59,248.59,0,0,0,180.42,494.68c-24.13-33-42.89-83.15-52.75-142.68Z", "M376,256a608,608,0,0,0-3.34-64h115a245.72,245.72,0,0,0-10.92-32H368.33c-9.86-59.53-28.62-109.68-52.75-142.68A248.23,248.23,0,0,0,248,8c8.94,0,18.38,4.53,28.05,13.48,12,11.06,23.49,28.29,33.34,49.83,10.71,23.41,19.16,50.93,25.13,81.78.44,2.29.87,4.6,1.28,6.91H160.2c.41-2.31.84-4.62,1.28-6.91,6-30.85,14.42-58.37,25.13-81.78C196.46,49.77,208,32.54,220,21.48,229.62,12.53,239.06,8,248,8a248.23,248.23,0,0,0-67.58,9.32c-24.13,33-42.89,83.15-52.75,142.68H19.29A245.72,245.72,0,0,0,8.37,192h115a613.93,613.93,0,0,0,0,128H8.37a245.72,245.72,0,0,0,10.92,32H127.67c9.86,59.53,28.62,109.68,52.75,142.68A248.23,248.23,0,0,0,248,504c-8.94,0-18.38-4.53-28.05-13.48-12-11.06-23.49-28.29-33.34-49.83-10.71-23.41-19.16-50.93-25.13-81.78-.44-2.29-.87-4.6-1.28-6.91H335.8c-.41,2.31-.84,4.62-1.28,6.91-6,30.85-14.42,58.37-25.13,81.78-9.85,21.54-21.38,38.77-33.34,49.83-9.67,9-19.11,13.48-28.05,13.48a248.23,248.23,0,0,0,67.58-9.32c24.13-33,42.89-83.15,52.75-142.68H476.71a245.72,245.72,0,0,0,10.92-32h-115A605.37,605.37,0,0,0,376,256Zm-35.54,64H155.55a579.08,579.08,0,0,1,0-128h184.9A575,575,0,0,1,344,256a575,575,0,0,1-3.55,64Z" ] } }, "free": [ "solid" ] }, "globe-africa": { "changes": [ "5.1.0", "5.11.0", "5.11.1" ], "ligatures": [], "search": { "terms": [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ] }, "styles": [ "duotone" ], "unicode": "f57c", "label": "Globe with Africa shown", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "496", "512" ], "width": 496, "height": 512, "path": [ "M491.33,208H423.5A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05A249.89,249.89,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256A249.51,249.51,0,0,0,491.33,208Z", "M423.5,208A15.5,15.5,0,0,0,408,223.5h0v6.93a15.49,15.49,0,0,1-8.57,13.86L384,252a15.49,15.49,0,0,1-15.53-1L350.3,238.88a15.52,15.52,0,0,0-13.5-1.81l-2.65.88a15.47,15.47,0,0,0-9.83,19.56,15.83,15.83,0,0,0,1.83,3.74l13.24,19.86a15.49,15.49,0,0,0,12.89,6.9h8.21a15.5,15.5,0,0,1,15.5,15.5v11.34a15.52,15.52,0,0,1-3.1,9.3l-18.74,25a15.57,15.57,0,0,0-2.83,6.43L347,378.39a15.53,15.53,0,0,1-4.76,8.56,159.61,159.61,0,0,0-25,29.16l-13,19.55a27.77,27.77,0,0,1-47.91-3A78.82,78.82,0,0,1,248,397.39V367.5A15.5,15.5,0,0,0,232.5,352H206.62A54.63,54.63,0,0,1,152,297.37V283.31a54.65,54.65,0,0,1,21.85-43.7l27.58-20.69A54.6,54.6,0,0,1,234.2,208h.89a54.52,54.52,0,0,1,24.43,5.77l14.72,7.36a15.49,15.49,0,0,0,11.83.84l47.31-15.77a15.5,15.5,0,0,0-4.9-30.2H318.39a15.5,15.5,0,0,1-11-4.54l-6.92-6.92a15.5,15.5,0,0,0-11-4.54h-90A15.5,15.5,0,0,1,184,144.5v-4.4a15.52,15.52,0,0,1,11.74-15l14.45-3.61a15.53,15.53,0,0,0,9.14-6.44l8.08-12.11A15.47,15.47,0,0,1,240.3,96h24.21A15.5,15.5,0,0,0,280,80.49V10.05C386,23.7,471,104.24,491.34,208Z" ] } }, "free": [ "solid" ] }, "globe-americas": { "changes": [ "5.1.0", "5.11.0", "5.11.1" ], "ligatures": [], "search": { "terms": [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ] }, "styles": [ "duotone" ], "unicode": "f57d", "label": "Globe with Americas shown", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "496", "512" ], "width": 496, "height": 512, "path": [ "M489.55,312.41C464,422.22,365.59,504,248,504,111,504,0,393,0,256A247,247,0,0,1,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311l-13.71-13.67A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A247,247,0,0,1,248,8C351.83,8,440.71,71.76,477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1Z", "M321.39,297.36A32,32,0,0,0,298.76,288H232c-9.41-4.71-21.48-32-32-32a67.72,67.72,0,0,1-30.31-7.16l-11.08-5.54a12,12,0,0,1,1.56-22l31.17-10.39A16,16,0,0,1,206.9,214l9.28,8.06a8,8,0,0,0,5.24,2h5.64a8,8,0,0,0,7.15-11.58l-15.59-31.19A8,8,0,0,1,220.2,172l9.92-9.65A8,8,0,0,1,235.7,160h9a8,8,0,0,0,5.66-2.34l8-8a8,8,0,0,0,0-11.31l-4.69-4.69a8,8,0,0,1,0-11.31L264,112l4.69-4.68a16,16,0,0,0,0-22.63h0l-24.4-24.4a12.38,12.38,0,0,0-9.55-3.61c-2.53.17-5.05.38-7.58.65A12.41,12.41,0,0,0,216,69.66a16.35,16.35,0,0,1-11.59,15.83,16,16,0,0,1-11.57-1.07,66.09,66.09,0,0,1-16-11.24L136.26,34.54A249,249,0,0,0,56,99v45.71a50,50,0,0,0,8.55,27.95c11.72,17.39,28.38,42.07,35.67,52.77a114.79,114.79,0,0,0,18.06,20.74l.8.72a144.26,144.26,0,0,0,31.65,21.75c14,7.05,34.44,18.16,48.81,26.11a31.9,31.9,0,0,1,16.46,28v32a32,32,0,0,0,9.37,22.63c15,15,24.32,38.63,22.63,51.25V457.7a21,21,0,0,0,23.49,20.85c1.75-.21,3.49-.44,5.23-.7a20.91,20.91,0,0,0,17.17-15.76L308,404.46c2-5.49,3.26-11.21,4.77-16.87A23.9,23.9,0,0,1,319,376.88c3.32-3.33,7.41-7.4,11.31-11.28a46.46,46.46,0,0,0,13.72-33A30.49,30.49,0,0,0,335.1,311ZM477.67,162.27l-36.51,3.15a76.22,76.22,0,0,0-27.48,7.74,24.05,24.05,0,0,0-9.24,8.15l-19.59,29.38a24,24,0,0,0,0,26.62l18,27a24,24,0,0,0,10.54,8.78l20.52,10.1,55.64,29.22a249.21,249.21,0,0,0-11.88-150.14Z" ] } }, "free": [ "solid" ] }, "globe-asia": { "changes": [ "5.1.0", "5.11.0", "5.11.1" ], "ligatures": [], "search": { "terms": [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ] }, "styles": [ "duotone" ], "unicode": "f57e", "label": "Globe with Asia shown", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "496", "512" ], "width": 496, "height": 512, "path": [ "M312,16.35V50.73a28,28,0,0,1-11.12,22.35l-41.41,31.27a8,8,0,0,0,.86,13.81l10.83,5.41A16,16,0,0,1,280,137.88V216a8,8,0,0,1-8,8h-3.06a8,8,0,0,1-7.15-4.42,4.47,4.47,0,0,0-1.72-1.86,4.42,4.42,0,0,0-6.06,1.54h0l-17.34,29A16,16,0,0,1,222.94,256h-.31a16,16,0,0,0-11.32,4.69l-5.66,5.66a8,8,0,0,0,0,11.31l5.66,5.66A16,16,0,0,1,216,294.63V304a16,16,0,0,1-16,16h-6.1a16,16,0,0,1-14.28-8.85L157,265.92a8,8,0,0,0-10.72-3.6h0a8.14,8.14,0,0,0-2.11,1.53l-19.47,19.46A16,16,0,0,1,113.38,288H2.05C17.74,409.88,121.84,504,248,504c137,0,248-111,248-248C496,141.13,418,44.56,312,16.35Zm96,342.08a16,16,0,0,1-4.69,11.31l-9.57,9.57A16,16,0,0,1,382.43,384H367.27a16,16,0,0,1-11.36-4.74l-13-13a26.78,26.78,0,0,0-25.42-7l-21.27,5.32a15.86,15.86,0,0,1-3.88.48H282a16,16,0,0,1-11.24-4.69l-11.91-11.91a8,8,0,0,1-2.34-5.66V332.6a8,8,0,0,1,5-7.43l39.34-15.74a26.35,26.35,0,0,0,5.59-3.05l23.71-16.89a8,8,0,0,1,4.64-1.48h12.14a8,8,0,0,1,7.39,4.93l5.35,12.85a4,4,0,0,0,3.69,2.46h3.8a4,4,0,0,0,3.84-2.88l4.16-14.49A4,4,0,0,1,379,288h6.06a4,4,0,0,1,4,4v13a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,1,408,333.83Z", "M260.07,217.72a4.47,4.47,0,0,1,1.72,1.86,8,8,0,0,0,7.15,4.42H272a8,8,0,0,0,8-8V137.88a16,16,0,0,0-8.84-14.31l-10.83-5.41a8,8,0,0,1-.86-13.81l41.41-31.27A28,28,0,0,0,312,50.73V16.35A248.23,248.23,0,0,0,248,8C111,8,0,119,0,256a249.89,249.89,0,0,0,2.05,32H113.38a16,16,0,0,0,11.31-4.69l19.47-19.46A8,8,0,0,1,157,265.92l22.62,45.23A16,16,0,0,0,193.9,320H200a16,16,0,0,0,16-16v-9.37a16,16,0,0,0-4.69-11.31l-5.66-5.66a8,8,0,0,1,0-11.31l5.66-5.66A16,16,0,0,1,222.63,256h.31a16,16,0,0,0,13.72-7.77L254,219.28a4.42,4.42,0,0,1,6.05-1.57Zm143.24,104.8L391.4,310.61a8,8,0,0,1-2.34-5.66V292a4,4,0,0,0-4-4H379a4,4,0,0,0-3.84,2.88L371,305.37a4,4,0,0,1-3.84,2.88h-3.8a4,4,0,0,1-3.69-2.46l-5.35-12.85a8,8,0,0,0-7.39-4.93H334.79a8,8,0,0,0-4.64,1.48l-23.71,16.89a26.35,26.35,0,0,1-5.59,3.05l-39.34,15.74a8,8,0,0,0-5,7.43v10.2a8,8,0,0,0,2.34,5.66l11.91,11.91A16,16,0,0,0,282,365.06h10.34a15.86,15.86,0,0,0,3.88-.48l21.27-5.32a26.78,26.78,0,0,1,25.42,7l13,13A16,16,0,0,0,367.27,384h15.16a16,16,0,0,0,11.31-4.69l9.57-9.57A16,16,0,0,0,408,358.43v-24.6a16,16,0,0,0-4.69-11.31Z" ] } }, "free": [ "solid" ] }, "globe-europe": { "changes": [ "5.6.0", "5.11.0", "5.11.1" ], "ligatures": [], "search": { "terms": [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ] }, "styles": [ "duotone" ], "unicode": "f7a2", "label": "Globe with Europe shown", "voted": true, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "496", "512" ], "width": 496, "height": 512, "path": [ "M487.54,320.4H438.9a15.8,15.8,0,0,1-11.4-4.8l-32-32.6a11.92,11.92,0,0,1,.1-16.7l12.5-12.5v-8.7a11.37,11.37,0,0,0-3.3-8l-9.4-9.4a11.37,11.37,0,0,0-8-3.3h-16a11.31,11.31,0,0,1-8-19.3l9.4-9.4a11.37,11.37,0,0,1,8-3.3h32a11.35,11.35,0,0,0,11.3-11.3v-9.4a11.35,11.35,0,0,0-11.3-11.3H376.1a16,16,0,0,0-16,16v4.5a16,16,0,0,1-10.9,15.2l-31.6,10.5a8,8,0,0,0-5.5,7.6v2.2a8,8,0,0,1-8,8h-16a8,8,0,0,1-8-8,8,8,0,0,0-8-8H269a8.14,8.14,0,0,0-7.2,4.4l-9.4,18.7a15.94,15.94,0,0,1-14.3,8.8H216a16,16,0,0,1-16-16V199a16,16,0,0,1,4.7-11.3l20.1-20.1a24.77,24.77,0,0,0,7.2-17.5,8,8,0,0,1,5.5-7.6l40-13.3a11.66,11.66,0,0,0,4.4-2.7l26.8-26.8a11.31,11.31,0,0,0-8-19.3H280l-16,16v8a8,8,0,0,1-8,8H240a8,8,0,0,1-8-8v-20a8.05,8.05,0,0,1,3.2-6.4l82.42-60.08A247.79,247.79,0,0,0,248,8C111,8,0,119,0,256S111,504,248,504a251.57,251.57,0,0,0,32.1-2.06V448.4a16,16,0,0,0-16-16H243.9c-10.8,0-26.7-5.3-35.4-11.8l-22.2-16.7a45.42,45.42,0,0,1-18.2-36.4V343.6a45.46,45.46,0,0,1,22.1-39l42.9-25.7a46.13,46.13,0,0,1,23.4-6.5h31.2a45.62,45.62,0,0,1,29.6,10.9l43.2,37.1h18.3a32,32,0,0,1,22.6,9.4l17.3,17.3.08.08C432,359.06,440,375.62,440,393.37V413A247.11,247.11,0,0,0,487.54,320.4ZM187.4,157.1a11.37,11.37,0,0,1-8,3.3h-16a11.31,11.31,0,0,1-8-19.3l25.4-25.4a11.31,11.31,0,0,1,19.3,8v16a11.37,11.37,0,0,1-3.3,8Z", "M187.4,157.1l9.4-9.4a11.37,11.37,0,0,0,3.3-8v-16a11.31,11.31,0,0,0-19.3-8l-25.4,25.4a11.31,11.31,0,0,0,8,19.3h16A11.37,11.37,0,0,0,187.4,157.1ZM418.78,347.18l-.08-.08-17.3-17.3a32,32,0,0,0-22.6-9.4H360.5l-43.2-37.1a45.62,45.62,0,0,0-29.6-10.9H256.5a46.13,46.13,0,0,0-23.4,6.5l-42.9,25.7a45.46,45.46,0,0,0-22.1,39v23.9a45.42,45.42,0,0,0,18.2,36.4l22.2,16.7c8.7,6.5,24.6,11.8,35.4,11.8h20.2a16,16,0,0,1,16,16v53.54A247.57,247.57,0,0,0,440,413V393.37C440,375.62,432,359.06,418.78,347.18ZM317.62,17.92,235.2,78a8.05,8.05,0,0,0-3.2,6.4v20a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-8l16-16h20.7a11.31,11.31,0,0,1,8,19.3l-26.8,26.8a11.66,11.66,0,0,1-4.4,2.7l-40,13.3a8,8,0,0,0-5.5,7.6,24.77,24.77,0,0,1-7.2,17.5l-20.1,20.1A16,16,0,0,0,200,199v25.3a16,16,0,0,0,16,16h22.1a15.94,15.94,0,0,0,14.3-8.8l9.4-18.7a8.14,8.14,0,0,1,7.2-4.4h3.1a8,8,0,0,1,8,8,8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-2.2a8,8,0,0,1,5.5-7.6l31.6-10.5a16,16,0,0,0,10.9-15.2v-4.5a16,16,0,0,1,16-16h36.7a11.35,11.35,0,0,1,11.3,11.3v9.4a11.35,11.35,0,0,1-11.3,11.3h-32a11.37,11.37,0,0,0-8,3.3l-9.4,9.4a11.31,11.31,0,0,0,8,19.3h16a11.37,11.37,0,0,1,8,3.3l9.4,9.4a11.37,11.37,0,0,1,3.3,8v8.7l-12.5,12.5a11.92,11.92,0,0,0-.1,16.7l32,32.6a15.8,15.8,0,0,0,11.4,4.8h48.64A248.29,248.29,0,0,0,496,256C496,143.18,420.71,48,317.62,17.92Z" ] } }, "free": [ "solid" ] }, "graduation-cap": { "changes": [ "4.1", "5.0.0", "5.2.0", "5.10.1" ], "ligatures": [], "search": { "terms": [ "ceremony", "college", "graduate", "learning", "school", "student" ] }, "styles": [ "duotone" ], "unicode": "f19d", "label": "Graduation Cap", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": [ "M323.07 175.7L118.8 215.6a48.1 48.1 0 0 0-38.74 44.73 32 32 0 0 1 2.21 53.94l25.4 114.26A16 16 0 0 1 92 448H35.94a16 16 0 0 1-15.61-19.47l25.39-114.27a32 32 0 0 1 2.33-54 80.16 80.16 0 0 1 64.62-76.07l204.26-39.89a16 16 0 1 1 6.14 31.4z", "M622.33 198.8l-279 85.7a80 80 0 0 1-46.79 0L99.67 224a47.84 47.84 0 0 1 19.13-8.39l204.27-39.9a16 16 0 1 0-6.14-31.4l-204.26 39.88a79.87 79.87 0 0 0-47.57 29.18l-47.44-14.58c-23.54-7.23-23.54-38.36 0-45.59L296.6 67.5a79.92 79.92 0 0 1 46.8 0l278.93 85.7c23.55 7.24 23.55 38.36 0 45.6zM352.79 315.09a111.94 111.94 0 0 1-65.59 0l-145-44.55L128 384c0 35.35 86 64 192 64s192-28.65 192-64l-14.19-113.47z" ] } }, "free": [ "solid" ] }, "history": { "changes": [ "4.1", "5.0.0" ], "ligatures": [], "search": { "terms": [ "Rewind", "clock", "reverse", "time", "time machine" ] }, "styles": [ "solid", "duotone" ], "unicode": "f1da", "label": "History", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z" }, "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M141.68 400.23a184 184 0 1 0-11.75-278.3l50.76 50.76c10.08 10.08 2.94 27.31-11.32 27.31H24a16 16 0 0 1-16-16V38.63c0-14.26 17.23-21.4 27.31-11.32l49.38 49.38A247.14 247.14 0 0 1 256 8c136.81 0 247.75 110.78 248 247.53S392.82 503.9 256.18 504a247 247 0 0 1-155.82-54.91 24 24 0 0 1-1.84-35.61l11.27-11.27a24 24 0 0 1 31.89-1.98z", "M288 152v104.35L328.7 288a24 24 0 0 1 4.21 33.68l-9.82 12.62a24 24 0 0 1-33.68 4.21L224 287.65V152a24 24 0 0 1 24-24h16a24 24 0 0 1 24 24z" ] } }, "free": [ "solid" ] }, "home": { "changes": [ "1", "5.0.0", "5.7.0" ], "ligatures": [], "search": { "terms": [ "abode", "building", "house", "main" ] }, "styles": [ "solid" ], "unicode": "f015", "label": "home", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "576", "512" ], "width": 576, "height": 512, "path": "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z" } }, "free": [ "solid" ] }, "info": { "changes": [ "3.1", "5.0.0", "5.10.1", "5.10.2" ], "ligatures": [], "search": { "terms": [ "details", "help", "information", "more", "support" ] }, "styles": [ "regular" ], "unicode": "f129", "label": "Info", "voted": false, "svg": { "regular": { "last_modified": 1628277665000, "raw": "", "viewBox": [ "0", "0", "256", "512" ], "width": 256, "height": 512, "path": "M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z" } }, "free": [ "solid" ] }, "info-circle": { "changes": [ "1", "5.0.0" ], "ligatures": [], "search": { "terms": [ "details", "help", "information", "more", "support" ] }, "styles": [ "regular" ], "unicode": "f05a", "label": "Info Circle", "voted": false, "svg": { "regular": { "last_modified": 1628277665000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z" } }, "free": [ "solid" ] }, "instagram": { "changes": [ "4.6", "5.0.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f16d", "label": "Instagram", "voted": false, "svg": { "brands": { "last_modified": 1546440860000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z" } }, "free": [ "brands" ] }, "key": { "changes": [ "1", "5.0.0", "5.10.1" ], "ligatures": [], "search": { "terms": [ "lock", "password", "private", "secret", "unlock" ] }, "styles": [ "duotone" ], "unicode": "f084", "label": "key", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M303.06 348.91l.1.09-24 27a24 24 0 0 1-17.94 8H224v40a24 24 0 0 1-24 24h-40v40a24 24 0 0 1-24 24H24a24 24 0 0 1-24-24v-78a24 24 0 0 1 7-17l161.83-161.83-.11-.35a176.24 176.24 0 0 0 134.34 118.09z", "M336 0a176 176 0 1 0 176 176A176 176 0 0 0 336 0zm48 176a48 48 0 1 1 48-48 48 48 0 0 1-48 48z" ] } }, "free": [ "solid" ] }, "key-skeleton": { "changes": [ "5.4.0" ], "ligatures": [], "search": { "terms": [ "halloween", "lock", "password", "private", "secret", "unlock" ] }, "styles": [ "duotone" ], "unicode": "f6f3", "label": "Key Skeleton", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M251.31 372.91a16 16 0 0 1 0 22.63l-15.77 15.77a16 16 0 0 1-22.62 0L176 374.4l-30.87 30.86 36.11 36.11a16 16 0 0 1 0 22.63l-43.16 43.17a16 16 0 0 1-22.62 0l-36.12-36.11-36.26 36.25a16 16 0 0 1-22.62 0L4.69 491.54a16 16 0 0 1 0-22.63l255.12-255.12a64.18 64.18 0 0 0 38.4 38.4L214.4 336l36.91 36.91z", "M448 0H320a64 64 0 0 0-64 64v128a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-73.37 182.63a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25zm64-64a32 32 0 1 1 0-45.25 32 32 0 0 1 0 45.25z" ] } }, "free": [] }, "laptop": { "changes": [ "3", "5.0.0", "5.2.0" ], "ligatures": [], "search": { "terms": [ "computer", "cpu", "dell", "demo", "device", "mac", "macbook", "machine", "pc" ] }, "styles": [ "duotone" ], "unicode": "f109", "label": "Laptop", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": [ "M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M512 64H128v256h384zm112 352H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z" ] } }, "free": [ "solid" ] }, "laptop-code": { "changes": [ "5.2.0" ], "ligatures": [], "search": { "terms": [ "computer", "cpu", "dell", "demo", "develop", "device", "mac", "macbook", "machine", "pc" ] }, "styles": [ "duotone" ], "unicode": "f5fc", "label": "Laptop Code", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": [ "M528 0H112a48.14 48.14 0 0 0-48 48v336h512V48a48.14 48.14 0 0 0-48-48zm-16 320H128V64h384z", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16zM512 64H128v256h384zM289 250.34l-11.31 11.31a16 16 0 0 1-22.63 0l-58.35-58.34a16 16 0 0 1 0-22.63L255 122.34a16 16 0 0 1 22.63 0L289 133.65a16 16 0 0 1 0 22.63L253.25 192 289 227.71a16 16 0 0 1 0 22.63zm154.35-47L385 261.66a16 16 0 0 1-22.63 0L351 250.35a16 16 0 0 1 0-22.63L386.75 192 351 156.29a16 16 0 0 1 0-22.63l11.31-11.31a16 16 0 0 1 22.63 0l58.34 58.34a16 16 0 0 1 .04 22.63z" ] } }, "free": [ "solid" ] }, "laptop-house": { "changes": [ "5.13.0", "5.14.0" ], "ligatures": [], "search": { "terms": [ "computer", "covid-19", "device", "office", "remote", "work from home" ] }, "styles": [ "duotone" ], "unicode": "e066", "label": "Laptop House", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": [ "M272,416H96a32,32,0,0,1-32-32V219.88L42.34,239A16.51,16.51,0,0,1,33,242.48a16.22,16.22,0,0,1-10.63-4.78L3.55,216.42A16.4,16.4,0,0,1,0,207a16.15,16.15,0,0,1,4.78-10.61L216.58,8.92C222.12,4,232.64,0,240.05,0S258,4,263.5,8.92L352,87.3V48a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v96l59.24,52.42A16.31,16.31,0,0,1,480,207a16.51,16.51,0,0,1-3.58,9.44L469.74,224H332.8c-17.8,0-33.69,8.24-44.82,21.12V208a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h64Z", "M629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z" ] } }, "free": [ "solid" ] }, "life-ring": { "changes": [ "4.1", "5.0.0" ], "ligatures": [], "search": { "terms": [ "coast guard", "help", "overboard", "save", "support" ] }, "styles": [ "duotone" ], "unicode": "f1cd", "label": "Life Ring", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M292.08 167l-.41-.17zm-66.62-2a96.5 96.5 0 0 1 61.08 0l112-112a248 248 0 0 0-285 0zm68.67 2.92l.52.22zm2.49 1.12l.46.21zM186.25 322l-.19-.21zm-5.51-6.36l.21.26zm1.65 2c.12.14.23.28.35.41-.12-.15-.23-.29-.35-.43zm1.74 2l.36.4zm135.51-135.51l.4.36zM177.51 311.29l-.1-.15zM304.18 173l.34.19zm11.42 7.78l.26.21zm6.36 5.51l-.21-.19zm-3.96-3.55l-.42-.35zm-11.6-8.43l.47.29zm4.68 3.09l.17.12zm-2-1.35l-.43-.29zm-9.71-5.68l-.1-.05zm-123.61 32.91c.1-.14.19-.28.28-.42-.04.14-.18.28-.28.42zm-1.45 2.28l.29-.46zm-1.31 2.25l.19-.32zm-2.6 4.77zm10.38-16.18l.21-.26zm2-2.43c-.12.13-.23.27-.35.41.08-.14.19-.28.31-.38zm-5.33 6.89l.1-.15zm-8.2 14.07c-.07.14-.13.29-.2.43.03-.14.09-.29.16-.43zm5.39 92l-.29-.46zm-4.27-7.53v.05zm2.82 5.14l-.19-.32zm2.61 4.21c.1.14.19.28.28.42-.08-.17-.22-.31-.32-.45zm-6.8-12.11c.07.14.13.29.2.43-.06-.14-.12-.29-.2-.43zm-2-76.7c0 .13-.1.25-.16.38.07-.13.16-.25.16-.38zm1.09-2.58c-.07.17-.15.34-.22.5.13-.16.13-.33.23-.5zm-.22 76.78c.07.16.15.33.22.5-.09-.17-.09-.34-.21-.5zm-1-2.46c.06.13.11.25.16.38-.03-.13-.12-.25-.18-.38zm172-84.19l.19.32zM327.51 320l.36-.4zm-1.57 1.71l-.19.21zM325.75 190l.19.21zm3.51 128c.12-.13.23-.27.35-.41-.12.17-.23.31-.35.41zm2-121.63l-.21-.26zm0 119.2l-.21.26zm-1.65-121.22c-.12-.14-.23-.28-.35-.41.12.16.23.3.35.44zm-1.74-2l-.36-.4zm6.62 8.35l.1.15zm.1 110.43l-.1.15zM398.49 53q2 1.41 4 2.85-2-1.43-4-2.85zM343.9 294.64c.07-.17.15-.34.22-.5-.07.16-.12.33-.22.5zm1.09-2.58c.05-.13.1-.25.16-.38-.06.13-.15.25-.15.38zm-3.35 7.36v-.05zm-5.4 9.3l-.28.42zm1.45-2.28l-.29.46zm1.35-2.25l-.19.32zm3.75-7.12c.07-.14.13-.29.2-.43-.07.14-.13.29-.2.43zM449 100.21q-1.41-1.75-2.85-3.46 1.39 1.71 2.85 3.46zM445.49 96c-1-1.18-2-2.35-3-3.51 1 1.19 2.01 2.36 3 3.51zm6.87 8.5q-1.36-1.74-2.76-3.5 1.4 1.76 2.76 3.53zm3.36 4.44c-.91-1.23-1.83-2.44-2.75-3.65.92 1.24 1.84 2.45 2.75 3.71zm-119.48 94.34l-.28-.42zm66.76-147q1.85 1.36 3.66 2.76-1.78-1.39-3.66-2.76zm12.23 9.62q-1.72-1.44-3.47-2.85 1.77 1.41 3.5 2.85zM411 62.4q-1.74-1.4-3.51-2.77Q409.24 61 411 62.4zm8.5 7.13q-1.74-1.53-3.51-3 1.75 1.47 3.49 3zm-75.38 148.33c-.07-.16-.15-.33-.22-.5.1.17.15.34.22.5zM184.49 192l-.36.4zM343 215.36c-.07-.14-.13-.29-.2-.43.06.14.12.29.2.43zm113.16-105.8c1 1.31 1.9 2.62 2.84 3.94-.95-1.32-1.89-2.63-2.85-3.94zM337.4 205.1l.29.46zm82.53-135.18a248.82 248.82 0 0 1 22.14 22.15 250.17 250.17 0 0 0-22.14-22.15zm-74.78 150.4a6.15 6.15 0 0 1-.16-.38c.01.13.1.25.16.38zM459 398.49a248 248 0 0 0 0-285L347 225.46a96.5 96.5 0 0 1 0 61.08zM341.67 212.63zM220.33 345.15l-.41-.17zm-2.46-1l-.52-.22zm-5.3-2.49l.1.05zM322 325.75l-.21.19zM309.14 336l-.43.29zm2-1.35l.17-.12zm4.48-3.34l.26-.21zm4-3.39l.4-.36zm-1.6 1.39l-.42.35zM215.38 343l-.46-.21zm-19-11.74l-.26-.21zm-4-3.39l-.4-.36zm-6.3-137.62l.19-.21zm4 135.5l.21.19zm15.52 11.94l-.47-.29zm2.26 1.35l-.34-.19zm78.72 8a96.5 96.5 0 0 1-61.08 0L113.51 459a248 248 0 0 0 285 0zM202.86 336l.43.29zm-2-1.35l-.17-.12zM416 445.49q1.77-1.49 3.51-3-1.77 1.51-3.51 3zm43-47c-.93 1.33-1.88 2.64-2.84 3.95.95-1.31 1.9-2.62 2.84-3.95zM411.79 449q1.74-1.41 3.47-2.85-1.72 1.39-3.47 2.85zm-4.32 3.42q1.77-1.38 3.51-2.77-1.74 1.35-3.51 2.72zM455.72 403q-1.37 1.85-2.76 3.66 1.4-1.78 2.76-3.66zm-10.23 13c-1 1.18-2 2.35-3 3.51 1-1.19 2.01-2.36 3-3.51zm3.46-4.18q-1.41 1.74-2.85 3.47 1.44-1.75 2.9-3.5zm.65-.81q1.39-1.74 2.77-3.51-1.37 1.74-2.77 3.5zm-150.17-69.38a.31.31 0 0 1-.1.05.31.31 0 0 0 .1-.05zm-5.3 2.49l.52-.22zm12.31-6.43l.47-.29zm-9.82 5.31l.46-.21zm7.56-4l.34-.19zm137.9 80.89a248.94 248.94 0 0 1-22.15 22.15 248.94 248.94 0 0 0 22.15-22.11zm-39.63 36.21q-2 1.44-4 2.85 2.04-1.37 4-2.81zM292.08 345l-.41.17zM403 455.72q1.85-1.37 3.66-2.76-1.78 1.4-3.66 2.76zM194 329.26l.42.35zM69.93 92.07a248.82 248.82 0 0 1 22.14-22.15 250.17 250.17 0 0 0-22.14 22.15zm30.28-29q-1.74 1.41-3.47 2.85 1.73-1.46 3.47-2.87zm90 123l-.21.19zm4.13-3.67l-.42.35zM109.55 55.86q2-1.44 4-2.85-2.03 1.41-4 2.85zM196.14 181l.26-.21zM104.53 59.63Q102.76 61 101 62.4q1.76-1.4 3.53-2.77zm.78-.59q1.81-1.4 3.66-2.76-1.84 1.37-3.66 2.72zm87.05 125.09l-.4.36zm22.56-14.92l.46-.21zm-2.25 1.11l-.1.05zm4.68-2.22l.52-.22zm2.57-1.08l.41-.17zm-17.06 9l.43-.29zm5-3.09l-.34.19zm-7.11 4.56l.17-.12zm4.38-2.92l.47-.29zM96.74 446.1q1.73 1.44 3.47 2.85-1.74-1.41-3.47-2.85zm-33.69-34.31q1.41 1.74 2.85 3.47-1.44-1.72-2.85-3.47zm3.46 4.21c1 1.18 2 2.35 3 3.51-1-1.19-2.01-2.36-3-3.51zm-10.23-13q1.36 1.85 2.76 3.66-1.39-1.78-2.76-3.66zm3.35 4.44q1.37 1.8 2.77 3.56-1.4-1.76-2.77-3.53zm32.89 35q1.74 1.53 3.51 3-1.77-1.44-3.51-2.97zM105.31 453q1.81 1.4 3.66 2.76-1.84-1.4-3.66-2.76zm8.2 6q-2-1.41-4-2.85 2.01 1.43 4 2.85zM101 449.6q1.74 1.39 3.51 2.77-1.75-1.37-3.51-2.77zm-45.15-47.16c-1-1.31-1.9-2.62-2.84-3.95.99 1.33 1.88 2.64 2.84 3.95zM65.9 96.75q-1.44 1.71-2.85 3.46 1.41-1.75 2.85-3.46zM56.29 109c.9-1.23 1.82-2.45 2.74-3.65-.92 1.17-1.84 2.39-2.74 3.65zm6.11-8q-1.4 1.74-2.76 3.51Q61 102.76 62.4 101zm7.12-8.5c-1 1.16-2 2.33-3 3.51.98-1.16 1.99-2.33 3-3.49zm23-23q1.74-1.53 3.51-3-1.77 1.5-3.51 3.03zm-.45 372.55a248.94 248.94 0 0 1-22.15-22.15 248.94 248.94 0 0 0 22.15 22.18zM165 286.54a96.5 96.5 0 0 1 0-61.08L53 113.51a248 248 0 0 0 0 285zm-109.11-177q-1.44 2-2.84 3.93 1.36-1.95 2.8-3.9z", "M347 225.46l112-111.95A249.4 249.4 0 0 0 398.49 53L286.54 165A96.26 96.26 0 0 1 347 225.46zm-182 61.08l-112 112a249.4 249.4 0 0 0 60.5 60.5L225.46 347A96.26 96.26 0 0 1 165 286.54zm-112-173l112 112a96.26 96.26 0 0 1 60.5-60.5L113.51 53A249.4 249.4 0 0 0 53 113.51zM286.54 347l112 112a249.4 249.4 0 0 0 60.5-60.5L347 286.54A96.26 96.26 0 0 1 286.54 347z" ] } }, "free": [ "solid", "regular" ] }, "lightbulb": { "changes": [ "3", "5.0.0", "5.3.0" ], "ligatures": [], "search": { "terms": [ "energy", "idea", "inspiration", "light" ] }, "styles": [ "duotone" ], "unicode": "f0eb", "label": "Lightbulb", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "352", "512" ], "width": 352, "height": 512, "path": [ "M175.45 0C73.44.31 0 83 0 176a175 175 0 0 0 43.56 115.78c16.52 18.85 42.36 58.22 52.21 91.45 0 .26.07.52.11.78h160.24c0-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45A175.9 175.9 0 0 0 175.45 0zm.55 96a80.09 80.09 0 0 0-80 80 16 16 0 0 1-32 0A112.12 112.12 0 0 1 176 64a16 16 0 0 1 0 32z", "M96.06 454.35L96 416h160v38.35a32 32 0 0 1-5.41 17.65l-17.09 25.73A32 32 0 0 1 206.86 512h-61.71a32 32 0 0 1-26.64-14.28L101.42 472a32 32 0 0 1-5.36-17.65z" ] } }, "free": [ "solid", "regular" ] }, "list-alt": { "changes": [ "1", "5.0.0" ], "ligatures": [], "search": { "terms": [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ] }, "styles": [ "duotone" ], "unicode": "f022", "label": "Alternate List", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M464 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM128 392a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm0-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm288 168a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12zm0-96a12 12 0 0 1-12 12H204a12 12 0 0 1-12-12v-32a12 12 0 0 1 12-12h200a12 12 0 0 1 12 12z", "M128 200a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm0 16a40 40 0 1 0 40 40 40 40 0 0 0-40-40zm0 96a40 40 0 1 0 40 40 40 40 0 0 0-40-40z" ] } }, "free": [ "solid", "regular" ] }, "list-ul": { "changes": [ "2", "5.0.0", "5.9.0" ], "ligatures": [], "search": { "terms": [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ] }, "styles": [ "duotone" ], "unicode": "f0ca", "label": "list-ul", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M496 384H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48z" ] } }, "free": [ "solid" ] }, "lock-alt": { "changes": [ "5.0.0" ], "ligatures": [], "search": { "terms": [ "admin", "lock", "open", "password", "private", "protect", "security" ] }, "styles": [ "duotone" ], "unicode": "f30d", "label": "Alternate Lock", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": [ "M152 225H72v-72C72 69.2 140.2 1 224 1s152 68.2 152 152v72h-80v-72a72 72 0 0 0-144 0z", "M400 225H48a48 48 0 0 0-48 48v192a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V273a48 48 0 0 0-48-48zM264 392a40 40 0 0 1-80 0v-48a40 40 0 0 1 80 0z" ] } }, "free": [] }, "map-marker-alt": { "changes": [ "5.0.0" ], "ligatures": [], "search": { "terms": [ "address", "coordinates", "destination", "gps", "localize", "location", "map", "navigation", "paper", "pin", "place", "point of interest", "position", "route", "travel" ] }, "styles": [ "duotone" ], "unicode": "f3c5", "label": "Alternate Map Marker", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "384", "512" ], "width": 384, "height": 512, "path": [ "M192 0C86 0 0 86 0 192c0 77.41 27 99 172.27 309.67a24 24 0 0 0 39.46 0C357 291 384 269.41 384 192 384 86 298 0 192 0zm0 288a96 96 0 1 1 96-96 96 96 0 0 1-96 96z", "M192 256a64 64 0 1 1 64-64 64 64 0 0 1-64 64z" ] } }, "free": [ "solid" ] }, "microsoft": { "changes": [ "5.0.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f3ca", "label": "Microsoft", "voted": true, "svg": { "brands": { "last_modified": 1546440861000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z" } }, "free": [ "brands" ] }, "moon-stars": { "changes": [ "5.5.0" ], "ligatures": [], "search": { "terms": [ "clear", "crescent", "lunar", "space", "star" ] }, "styles": [ "duotone" ], "unicode": "f755", "label": "Moon with Stars", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M320 32L304 0l-16 32-32 16 32 16 16 32 16-32 32-16zm138.7 149.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208z", "M332.2 426.4c8.1-1.6 13.9 8 8.6 14.5a191.18 191.18 0 0 1-149 71.1C85.8 512 0 426 0 320c0-120 108.7-210.6 227-188.8 8.2 1.6 10.1 12.6 2.8 16.7a150.3 150.3 0 0 0-76.1 130.8c0 94 85.4 165.4 178.5 147.7z" ] } }, "free": [] }, "network-wired": { "changes": [ "5.4.0" ], "ligatures": [], "search": { "terms": [ "computer", "connect", "ethernet", "internet", "intranet" ] }, "styles": [ "duotone" ], "unicode": "f6ff", "label": "Wired Network", "voted": true, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": [ "M624 232H344v-40h-48v40H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h104v40h48v-40h304v40h48v-40h104a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z", "M224 192h192a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32zm32-128h128v64H256zm320 256H416a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128h-96v-64h96zM224 320H64a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zm-32 128H96v-64h96z" ] } }, "free": [ "solid" ] }, "planet-ringed": { "changes": [ "5.12.0", "5.14.0" ], "ligatures": [], "search": { "terms": [ "orbit", "saturn", "solar system", "space", "universe" ] }, "styles": [ "duotone" ], "unicode": "e020", "label": "Ringed Planet", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M323.33815,323.33517C186.95939,459.71018,46.2602,540.11093,9.06777,502.9165c-23.48893-23.4909.01172-88.30917,54.81792-167.21379a206.56361,206.56361,0,0,0,25.02022,43.78446c-22.45765,34.20607-32.036,58.99194-23.71941,67.31053,18.59817,18.59624,119.10094-51.75539,224.47885-157.13342C395.04325,184.2882,465.39675,83.78336,446.79858,65.18712c-8.32054-8.3186-33.10638,1.26176-67.31045,23.71748a206.52984,206.52984,0,0,0-43.78245-25.0183C414.61019,9.082,479.42839-14.42259,502.91732,9.06832,540.10975,46.2608,459.70909,186.96211,323.33815,323.33517Z", "M448.0994,176.28016c-31.96573,46.02281-74.52549,96.81528-124.76125,147.055-50.24357,50.24168-101.034,92.79954-147.05874,124.76531,75.41614,31.25675,165.47721,16.29343,226.79531-45.02474S479.35807,251.69834,448.0994,176.28016Zm-25.02022-43.78251A208.22535,208.22535,0,0,0,403.07472,108.911c-81.2288-81.23281-212.93555-81.23281-294.16435,0-81.22881,81.23085-81.22881,212.93385,0,294.1647A208.25527,208.25527,0,0,0,132.497,423.08023c42.25117-27.73908,98.93242-75.1799,157.1684-133.41595C347.90133,231.43018,395.34013,174.75473,423.07918,132.49765Z" ] } }, "free": [] }, "plus": { "changes": [ "1", "5.0.0", "5.0.13" ], "ligatures": [], "search": { "terms": [ "add", "create", "expand", "new", "positive", "shape" ] }, "styles": [ "regular", "solid" ], "unicode": "f067", "label": "plus", "voted": false, "svg": { "regular": { "last_modified": 1628277665000, "raw": "", "viewBox": [ "0", "0", "384", "512" ], "width": 384, "height": 512, "path": "M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z" }, "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z" } }, "free": [ "solid" ] }, "question-circle": { "changes": [ "1", "5.0.0" ], "ligatures": [], "search": { "terms": [ "help", "information", "support", "unknown" ] }, "styles": [ "duotone", "regular" ], "unicode": "f059", "label": "Question Circle", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 422a46 46 0 1 1 46-46 46.05 46.05 0 0 1-46 46zm40-131.33V300a12 12 0 0 1-12 12h-56a12 12 0 0 1-12-12v-4c0-41.06 31.13-57.47 54.65-70.66 20.17-11.31 32.54-19 32.54-34 0-19.82-25.27-33-45.7-33-27.19 0-39.44 13.14-57.3 35.79a12 12 0 0 1-16.67 2.13L148.82 170a12 12 0 0 1-2.71-16.26C173.4 113 208.16 90 262.66 90c56.34 0 116.53 44 116.53 102 0 77-83.19 78.21-83.19 106.67z", "M256 338a46 46 0 1 0 46 46 46 46 0 0 0-46-46zm6.66-248c-54.5 0-89.26 23-116.55 63.76a12 12 0 0 0 2.71 16.24l34.7 26.31a12 12 0 0 0 16.67-2.13c17.86-22.65 30.11-35.79 57.3-35.79 20.43 0 45.7 13.14 45.7 33 0 15-12.37 22.66-32.54 34C247.13 238.53 216 254.94 216 296v4a12 12 0 0 0 12 12h56a12 12 0 0 0 12-12v-1.33c0-28.46 83.19-29.67 83.19-106.67 0-58-60.19-102-116.53-102z" ] }, "regular": { "last_modified": 1628277665000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z" } }, "free": [ "solid", "regular" ] }, "quote-left": { "changes": [ "3", "5.0.0", "5.0.9" ], "ligatures": [], "search": { "terms": [ "mention", "note", "phrase", "text", "type" ] }, "styles": [ "duotone" ], "unicode": "f10d", "label": "quote-left", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M464 256h-80v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H448a160 160 0 0 0-160 160v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z", "M176 256H96v-64a64.06 64.06 0 0 1 64-64h8a23.94 23.94 0 0 0 24-23.88V56a23.94 23.94 0 0 0-23.88-24H160A160 160 0 0 0 0 192v240a48 48 0 0 0 48 48h128a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48z" ] } }, "free": [ "solid" ] }, "random": { "changes": [ "1", "5.0.0" ], "ligatures": [], "search": { "terms": [ "arrows", "shuffle", "sort", "swap", "switch", "transfer" ] }, "styles": [ "duotone" ], "unicode": "f074", "label": "random", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M505 359l-80-80c-15-15-41-4.47-41 17v40h-32l-52.78-56.55-53.33 57.14 70.55 75.6a12 12 0 0 0 8.77 3.81H384v40c0 21.46 26 32 41 17l80-80a24 24 0 0 0 0-34zM122.79 96H12a12 12 0 0 0-12 12v56a12 12 0 0 0 12 12h84l52.78 56.55 53.33-57.14-70.55-75.6a12 12 0 0 0-8.77-3.81z", "M505 119a24 24 0 0 1 0 34l-80 80c-15 15-41 4.48-41-17v-40h-32L131.56 412.19a12 12 0 0 1-8.77 3.81H12a12 12 0 0 1-12-12v-56a12 12 0 0 1 12-12h84L316.44 99.81a12 12 0 0 1 8.78-3.81H384V56c0-21.44 25.94-32 41-17z" ] } }, "free": [ "solid" ] }, "rev": { "changes": [ "5.1.0", "5.1.1", "5.8.0" ], "ligatures": [], "search": { "terms": [] }, "styles": [ "brands" ], "unicode": "f5b2", "label": "Rev.io", "voted": false, "svg": { "brands": { "last_modified": 1558987775000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": "M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z" } }, "free": [ "brands" ] }, "robot": { "changes": [ "5.0.13", "5.12.0" ], "ligatures": [], "search": { "terms": [ "android", "automate", "computer", "cyborg" ] }, "styles": [ "solid" ], "unicode": "f544", "label": "Robot", "voted": true, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z" } }, "free": [ "solid" ] }, "rocket": { "changes": [ "3.1", "5.0.0", "5.7.0", "5.12.0" ], "ligatures": [], "search": { "terms": [ "aircraft", "app", "jet", "launch", "nasa", "space" ] }, "styles": [ "duotone", "solid", "regular" ], "unicode": "f135", "label": "rocket", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M51.94117,154.48438,2.531,253.29688A28.125,28.125,0,0,0-.00023,264a24.00619,24.00619,0,0,0,24,24H117.4607c23.44141-47.41211,61.01172-123.373,77.89063-157.32812.51953-.91407,1-1.76758,1.52344-2.67188H94.82008C78.47633,128.01562,59.28883,139.875,51.94117,154.48438Zm172.0586,240.1621V488.209A24.12394,24.12394,0,0,0,247.9607,512a28.02965,28.02965,0,0,0,10.625-2.53125l98.72657-49.39063c14.625-7.3125,26.5-26.5,26.5-42.85937V315.70312c.0664-.041.125-.08789.1875-.1289v-.52734c-.90625.51953-1.7461,1.002-2.66407,1.52539C347.37477,333.58008,271.2732,371.252,223.99977,394.64648Z", "M505.15992,19.51562A16.73971,16.73971,0,0,0,492.62477,6.94531C460.22633,0,434.37477,0,409.48414,0,320.3357,0,252.80836,40.61523,196.97633,127.81836c-.5586.97852-1.07031,1.877-1.625,2.85352-19.59766,39.42578-67.20313,135.70312-88.04688,177.877a31.91421,31.91421,0,0,0,6.09766,36.76172L167.05445,398.709a31.88923,31.88923,0,0,0,36.64844,5.98047l14.17578-7.01367c46.57422-23.04883,128.06641-63.3789,163.457-81.10351.96094-.54883,1.832-1.04883,2.78907-1.59766,87.23437-56.06055,127.85937-123.51172,127.85937-212.27734C512.06227,77.60742,512.12867,52.08789,505.15992,19.51562ZM367.99977,192a48,48,0,1,1,48-48.00195A48.02156,48.02156,0,0,1,367.99977,192Z" ] }, "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z" }, "regular": { "last_modified": 1628277665000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z" } }, "free": [ "solid" ] }, "save": { "changes": [ "2", "5.0.0", "5.10.2" ], "ligatures": [], "search": { "terms": [ "disk", "download", "floppy", "floppy-o" ] }, "styles": [ "solid", "regular" ], "unicode": "f0c7", "label": "Save", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z" }, "regular": { "last_modified": 1628277665000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z" } }, "free": [ "solid", "regular" ] }, "search": { "changes": [ "1", "5.0.0" ], "ligatures": [], "search": { "terms": [ "bigger", "enlarge", "find", "magnify", "preview", "zoom" ] }, "styles": [ "duotone" ], "unicode": "f002", "label": "Search", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M208 80a128 128 0 1 1-90.51 37.49A127.15 127.15 0 0 1 208 80m0-80C93.12 0 0 93.12 0 208s93.12 208 208 208 208-93.12 208-208S322.88 0 208 0z", "M504.9 476.7L476.6 505a23.9 23.9 0 0 1-33.9 0L343 405.3a24 24 0 0 1-7-17V372l36-36h16.3a24 24 0 0 1 17 7l99.7 99.7a24.11 24.11 0 0 1-.1 34z" ] } }, "free": [ "solid" ] }, "server": { "changes": [ "4.3", "5.0.0" ], "ligatures": [], "search": { "terms": [ "computer", "cpu", "database", "hardware", "network" ] }, "styles": [ "duotone" ], "unicode": "f233", "label": "Server", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M432 120a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm0 272a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm48-200H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z", "M456 256a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm24-224H32A32 32 0 0 0 0 64v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm48 232H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm-112 88a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm64 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z" ] } }, "free": [ "solid" ] }, "sign-out": { "changes": [ "1", "5.0.0" ], "ligatures": [], "search": { "terms": [ "arrow", "exit", "leave", "log out", "logout" ] }, "styles": [ "duotone" ], "unicode": "f08b", "label": "Sign Out", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M180 448H96a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12H96a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h84a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12z", "M353 88.3l151.9 150.6a24 24 0 0 1 0 34.1l-152 150.8a24.08 24.08 0 0 1-33.9-.1l-21.9-21.9a24.07 24.07 0 0 1 .8-34.7l77.6-71.1H184a23.94 23.94 0 0 1-24-24v-32a23.94 23.94 0 0 1 24-24h191.5l-77.6-71.1a24 24 0 0 1-.7-34.6l21.9-21.9a24 24 0 0 1 33.9-.1z" ] } }, "free": [] }, "siren-on": { "changes": [ "5.12.0", "5.14.0" ], "ligatures": [], "search": { "terms": [ "alarm", "alert", "ambulance", "loud", "police", "warning" ] }, "styles": [ "duotone" ], "unicode": "e02e", "label": "Siren On", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": [ "M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54Z", "M528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z" ] } }, "free": [] }, "slack": { "changes": [ "4.1", "5.0.0", "5.7.0" ], "ligatures": [], "search": { "terms": [ "anchor", "hash", "hashtag" ] }, "styles": [ "brands" ], "unicode": "f198", "label": "Slack Logo", "voted": false, "svg": { "brands": { "last_modified": 1548363722000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": "M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z" } }, "free": [ "brands" ] }, "slash": { "changes": [ "5.4.0" ], "ligatures": [], "search": { "terms": [ "cancel", "close", "mute", "off", "stop", "x" ] }, "styles": [ "solid", "regular" ], "unicode": "f715", "label": "Slash", "voted": true, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z" }, "regular": { "last_modified": 1628277665000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": "M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z" } }, "free": [ "solid" ] }, "smile": { "changes": [ "3.1", "5.0.0", "5.0.9", "5.1.0", "5.11.0", "5.11.1" ], "ligatures": [], "search": { "terms": [ "approve", "emoticon", "face", "happy", "rating", "satisfied" ] }, "styles": [ "duotone" ], "unicode": "f118", "label": "Smiling Face", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "496", "512" ], "width": 496, "height": 512, "path": [ "M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8Zm80,168a32,32,0,1,1-32,32A32,32,0,0,1,328,176Zm-160,0a32,32,0,1,1-32,32A32,32,0,0,1,168,176ZM362.8,346.2a149.38,149.38,0,0,1-229.6,0c-13.6-16.3,11-36.7,24.6-20.5a117.5,117.5,0,0,0,180.4,0C351.6,309.5,376.3,329.9,362.8,346.2Z", "M328,176a32,32,0,1,0,32,32A32,32,0,0,0,328,176Zm-160,0a32,32,0,1,0,32,32A32,32,0,0,0,168,176Z" ] } }, "free": [ "solid", "regular" ] }, "snowman": { "changes": [ "5.6.0" ], "ligatures": [], "search": { "terms": [ "decoration", "frost", "frosty", "holiday" ] }, "styles": [ "duotone" ], "unicode": "f7d0", "label": "Snowman", "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M363.76 268.8a108.77 108.77 0 0 0 4.2-28.7v-.1a112.68 112.68 0 0 0-.73-12.8c-.11-1-.24-2-.38-3-.29-2-.62-4-1-6-.2-1-.4-1.95-.62-2.92-.22-1-.45-1.93-.7-2.9-.24-1-.5-1.91-.77-2.85-.27-.95-.55-1.89-.84-2.83-.3-.94-.6-1.87-.92-2.8-.32-.93-.65-1.86-1-2.77-.34-.92-.69-1.83-1.06-2.74-.36-.9-.74-1.8-1.13-2.7-.39-.89-.79-1.78-1.19-2.66-.41-.88-.83-1.76-1.26-2.63q-1.31-2.62-2.73-5.16c-.48-.85-1-1.68-1.46-2.51a112.44 112.44 0 0 0-21.62-26.19 96 96 0 1 0-149.16 0 112.49 112.49 0 0 0-21.68 26.28q-.74 1.23-1.44 2.49c-.48.84-.94 1.69-1.39 2.54-.45.85-.89 1.7-1.32 2.57-.43.87-.85 1.74-1.25 2.62-.41.88-.8 1.76-1.19 2.66-.39.89-.76 1.79-1.12 2.69-.36.91-.71 1.82-1.05 2.74-.34.92-.67 1.84-1 2.76a111.63 111.63 0 0 0-5.22 23.28A113 113 0 0 0 144 240h.06v.1a110.27 110.27 0 0 0 4.2 28.9A151.18 151.18 0 0 0 104 376.1c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2a65.1 65.1 0 0 0 37.2-11.7c46.5-32.3 74.4-89.4 62.9-152.6-5.54-30.2-20.54-57.6-41.64-79zM224 96.1a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 272a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm0-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm1.7-64.1a15.19 15.19 0 0 1-3.48 0 16 16 0 1 1 3.48 0zm-1.7-87.9s-16-23.2-16-32a16 16 0 1 1 32 0c0 8.8-16 32-16 32zm32-56a16 16 0 1 1 16-16 16 16 0 0 1-16 16z", "M510.86 152.4L505 137.9a16.15 16.15 0 0 0-20.8-8.7L456 140.7v-29a15.84 15.84 0 0 0-16-15.6h-16a15.84 15.84 0 0 0-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.1 22.54a111.21 111.21 0 0 1 15.07 44.56L502 172.7a15.57 15.57 0 0 0 8.86-20.3zm-407.1 6.2v-46.9c.2-8.6-7-15.6-15.8-15.6H72a15.84 15.84 0 0 0-16 15.6v29l-28.1-11.5a16.15 16.15 0 0 0-20.8 8.7l-5.9 14.5a15.48 15.48 0 0 0 8.9 20.3l134.67 54.49a111.3 111.3 0 0 1 15-44.46l-56.31-22.63a8 8 0 0 0 .3-1.5zM256 336.1a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm0-64a16 16 0 1 0 16 16 16 16 0 0 0-16-16z" ] } }, "free": [ "solid" ] }, "spinner-third": { "changes": [ "5.0.0", "5.10.2" ], "ligatures": [], "search": { "terms": [ "circle", "loading", "progress" ] }, "styles": [ "solid" ], "unicode": "f3f4", "label": "Spinner Third", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z" } }, "free": [] }, "square-full": { "changes": [ "5.0.5", "5.10.2" ], "ligatures": [], "search": { "terms": [ "block", "box", "shape" ] }, "styles": [ "solid" ], "unicode": "f45c", "label": "Square Full", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M512 512H0V0h512v512z" } }, "free": [ "solid" ] }, "sun": { "changes": [ "3.2", "5.0.0", "5.5.0" ], "ligatures": [], "search": { "terms": [ "brighten", "contrast", "day", "lighter", "sol", "solar", "star", "weather" ] }, "styles": [ "duotone" ], "unicode": "f185", "label": "Sun", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M502.42 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.41-94.8a17.31 17.31 0 0 0-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4a17.31 17.31 0 0 0 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.41-33.5 47.3 94.7a17.31 17.31 0 0 0 31 0l47.31-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3a17.33 17.33 0 0 0 .2-31.1zm-155.9 106c-49.91 49.9-131.11 49.9-181 0a128.13 128.13 0 0 1 0-181c49.9-49.9 131.1-49.9 181 0a128.13 128.13 0 0 1 0 181z", "M352 256a96 96 0 1 1-96-96 96.15 96.15 0 0 1 96 96z" ] } }, "free": [ "solid", "regular" ] }, "tasks": { "changes": [ "2", "5.0.0", "5.9.0" ], "ligatures": [], "search": { "terms": [ "checklist", "downloading", "downloads", "loading", "progress", "project management", "settings", "to do" ] }, "styles": [ "duotone" ], "unicode": "f0ae", "label": "Tasks", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M496 384H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96z" ] } }, "free": [ "solid" ] }, "times": { "changes": [ "1", "5.0.0", "5.0.13", "5.11.0", "5.11.1" ], "ligatures": [], "search": { "terms": [ "close", "cross", "error", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x" ] }, "styles": [ "solid", "regular" ], "unicode": "f00d", "label": "Times", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "352", "512" ], "width": 352, "height": 512, "path": "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z" }, "regular": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "320", "512" ], "width": 320, "height": 512, "path": "M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z" } }, "free": [ "solid" ] }, "times-circle": { "changes": [ "1", "5.0.0" ], "ligatures": [], "search": { "terms": [ "close", "cross", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x" ] }, "styles": [ "solid" ], "unicode": "f057", "label": "Times Circle", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z" } }, "free": [ "solid", "regular" ] }, "twitter": { "changes": [ "2", "5.0.0" ], "ligatures": [], "search": { "terms": [ "social network", "tweet" ] }, "styles": [ "brands" ], "unicode": "f099", "label": "Twitter", "voted": false, "svg": { "brands": { "last_modified": 1546440861000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z" } }, "free": [ "brands" ] }, "undo": { "changes": [ "2", "5.0.0" ], "ligatures": [], "search": { "terms": [ "back", "control z", "exchange", "oops", "return", "rotate", "swap" ] }, "styles": [ "solid", "regular" ], "unicode": "f0e2", "label": "Undo", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z" }, "regular": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z" } }, "free": [ "solid" ] }, "undo-alt": { "changes": [ "5.0.0" ], "ligatures": [], "search": { "terms": [ "back", "control z", "exchange", "oops", "return", "swap" ] }, "styles": [ "regular", "solid" ], "unicode": "f2ea", "label": "Alternate Undo", "voted": false, "svg": { "regular": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z" }, "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z" } }, "free": [ "solid" ] }, "university": { "changes": [ "4.1", "5.0.0", "5.0.3", "5.11.0", "5.11.1" ], "ligatures": [], "search": { "terms": [ "bank", "building", "college", "higher education - students", "institution" ] }, "styles": [ "duotone" ], "unicode": "f19c", "label": "University", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "512", "512" ], "width": 512, "height": 512, "path": [ "M160,192V384h64V192h64V384h64V192h64V384h36a12,12,0,0,1,12,12v20H48V396a12,12,0,0,1,12-12H96V192Z", "M491.06,120.61l-232-88a8,8,0,0,0-6.12,0l-232,88A8,8,0,0,0,16,128v16a8,8,0,0,0,8,8H48v12a12,12,0,0,0,12,12H452a12,12,0,0,0,12-12V152h24a8,8,0,0,0,8-8V128A8,8,0,0,0,491.06,120.61ZM472,432H40a24,24,0,0,0-24,24v16a8,8,0,0,0,8,8H488a8,8,0,0,0,8-8V456A24,24,0,0,0,472,432Z" ] } }, "free": [ "solid" ] }, "user": { "changes": [ "1", "5.0.0", "5.0.3", "5.0.11" ], "ligatures": [], "search": { "terms": [ "account", "avatar", "head", "human", "man", "person", "profile" ] }, "styles": [ "solid", "duotone", "regular" ], "unicode": "f007", "label": "User", "voted": false, "svg": { "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z" }, "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": [ "M352 128A128 128 0 1 1 224 0a128 128 0 0 1 128 128z", "M313.6 288h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6A134.43 134.43 0 0 0 313.6 288z" ] }, "regular": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": "M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z" } }, "free": [ "solid", "regular" ] }, "user-friends": { "changes": [ "5.0.11" ], "ligatures": [], "search": { "terms": [ "group", "people", "person", "team", "users" ] }, "styles": [ "regular" ], "unicode": "f500", "label": "User Friends", "voted": false, "svg": { "regular": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": "M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z" } }, "free": [ "solid" ] }, "user-hard-hat": { "changes": [ "5.7.0" ], "ligatures": [], "search": { "terms": [ "construction", "hardhat", "helmet", "safety" ] }, "styles": [ "duotone" ], "unicode": "f82c", "label": "Construction Worker", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "448", "512" ], "width": 448, "height": 512, "path": [ "M97.61 208h252.78c-7.95 63.06-61.17 112-126.39 112S105.56 271.06 97.61 208z", "M313.6 352h-16.7a174.1 174.1 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z" ] } }, "free": [] }, "user-shield": { "changes": [ "5.0.11" ], "ligatures": [], "search": { "terms": [ "admin", "person", "private", "protect", "safe" ] }, "styles": [ "duotone" ], "unicode": "f505", "label": "User Shield", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": [ "M622.3 271.1l-115.2-45a31 31 0 0 0-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9a31 31 0 0 0 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8z", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h352a49.22 49.22 0 0 0 19.2-4c-54-42.9-99.2-116.7-99.2-212z" ] } }, "free": [ "solid" ] }, "users": { "changes": [ "2", "5.0.0", "5.0.3", "5.0.11" ], "ligatures": [], "search": { "terms": [ "friends", "group", "people", "persons", "profiles", "team" ] }, "styles": [ "duotone", "solid", "regular" ], "unicode": "f0c0", "label": "Users", "voted": false, "svg": { "duotone": { "last_modified": 1628277664000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": [ "M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm480 32h-64a63.81 63.81 0 0 0-45.1 18.6A146.27 146.27 0 0 1 542 384h66a32 32 0 0 0 32-32v-32a64.06 64.06 0 0 0-64-64zm-512 0a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4A63.81 63.81 0 0 0 128 256zm480-32a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64z", "M396.8 288h-8.3a157.53 157.53 0 0 1-68.5 16c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-28.8A115.23 115.23 0 0 0 396.8 288zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112z" ] }, "solid": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z" }, "regular": { "last_modified": 1628277666000, "raw": "", "viewBox": [ "0", "0", "640", "512" ], "width": 640, "height": 512, "path": "M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z" } }, "free": [ "solid" ] } } ================================================ FILE: public/fonts/font-awesome/metadata/icons.yml ================================================ abacus: changes: - 5.3.0 label: Abacus search: terms: - addition - ancient - arithmetic - calculator - counting - hexadecimal - math - subtraction styles: - duotone unicode: f640 voted: false alarm-exclamation: changes: - 5.9.0 label: Alarm Exclamation search: terms: - alert - date - late - reminder - sleep - snooze - timer - timestamp - watch styles: - solid unicode: f843 voted: false align-left: changes: - '1' - 5.0.0 - 5.9.0 label: align-left search: terms: - format - paragraph - text styles: - solid unicode: f036 voted: false align-slash: changes: - 5.9.0 label: Align Slash search: terms: - cancel - format - paragraph - remove styles: - duotone unicode: f846 voted: false atom-alt: changes: - 5.2.0 - 5.12.0 label: Atom Alt search: terms: - atheism - chemistry - electron - ion - isotope - neutron - nuclear - proton - science - space styles: - duotone unicode: f5d3 voted: false aws: changes: - 5.0.0 - 5.1.0 label: Amazon Web Services (AWS) search: terms: [] styles: - brands unicode: f375 voted: false badge-check: changes: - 5.0.0 label: Check Badge search: terms: - accept - achievement - agree - award - confirm - correct - done - ok - security - select - success - verified - verify - winner - 'yes' styles: - duotone unicode: f336 voted: false bell: changes: - '2' - 5.0.0 - 5.2.0 - 5.11.0 label: bell search: terms: - alarm - alert - chime - notification - reminder styles: - duotone unicode: f0f3 voted: false book-dead: changes: - 5.4.0 label: Book of the Dead search: terms: - Dungeons & Dragons - crossbones - d&d - dark arts - death - dnd - documentation - evil - fantasy - halloween - holiday - necronomicon - read - skull - spell styles: - solid unicode: f6b7 voted: false books: changes: - 5.2.0 - 5.10.1 label: Books search: terms: - diary - documentation - journal - library - read styles: - duotone unicode: f5db voted: false brackets-curly: changes: - 5.7.0 label: Curly Brackets search: terms: - code - developer - development - parentheses styles: - duotone unicode: f7ea voted: true cc-amazon-pay: changes: - 5.0.2 label: Amazon Pay Credit Card search: terms: [] styles: - brands unicode: f42d voted: false cc-amex: changes: - '4.2' - 5.0.0 - 5.7.0 label: American Express Credit Card search: terms: - amex styles: - brands unicode: f1f3 voted: false cc-apple-pay: changes: - 5.0.0 label: Apple Pay Credit Card search: terms: [] styles: - brands unicode: f416 voted: false cc-diners-club: changes: - '4.4' - 5.0.0 label: Diner's Club Credit Card search: terms: [] styles: - brands unicode: f24c voted: false cc-discover: changes: - '4.2' - 5.0.0 label: Discover Credit Card search: terms: [] styles: - brands unicode: f1f2 voted: false cc-jcb: changes: - '4.4' - 5.0.0 label: JCB Credit Card search: terms: [] styles: - brands unicode: f24b voted: false cc-mastercard: changes: - '4.2' - 5.0.0 label: MasterCard Credit Card search: terms: [] styles: - brands unicode: f1f1 voted: false cc-paypal: changes: - '4.2' - 5.0.0 label: Paypal Credit Card search: terms: [] styles: - brands unicode: f1f4 voted: false cc-stripe: changes: - '4.2' - 5.0.0 label: Stripe Credit Card search: terms: [] styles: - brands unicode: f1f5 voted: false cc-visa: changes: - '4.2' - 5.0.0 label: Visa Credit Card search: terms: [] styles: - brands unicode: f1f0 voted: false chart-network: changes: - 5.6.0 label: Network Chart search: terms: - activity - analytics - association - dashboard - diagram - distribution - map - network styles: - duotone unicode: f78a voted: true chart-scatter: changes: - 5.7.0 label: Scatter Chart search: terms: - analytics - chart - diagram - graph - plot styles: - duotone unicode: f7ee voted: true check: changes: - '1' - 5.0.0 label: Check search: terms: - accept - agree - checkmark - confirm - correct - done - notice - notification - notify - ok - select - success - tick - todo - 'yes' styles: - duotone - solid unicode: f00c voted: false check-circle: changes: - '1' - 5.0.0 label: Check Circle search: terms: - accept - agree - confirm - correct - done - ok - select - success - tick - todo - 'yes' styles: - regular unicode: f058 voted: false circle: changes: - '3' - 5.0.0 - 5.10.1 - 5.10.2 label: Circle search: terms: - circle-thin - diameter - dot - ellipse - notification - round styles: - duotone - solid unicode: f111 voted: false cloud: changes: - '2' - 5.0.0 - 5.0.11 label: Cloud search: terms: - atmosphere - fog - overcast - save - upload - weather styles: - solid unicode: f0c2 voted: false clouds: changes: - 5.5.0 label: Clouds search: terms: - cloudy - fog - haze - overcast - smoke - storm - weather styles: - duotone unicode: f744 voted: false cogs: changes: - '1' - 5.0.0 label: cogs search: terms: - gears - mechanical - settings - sprocket - wheel styles: - duotone unicode: f085 voted: false comment-dots: changes: - 5.0.9 label: Comment Dots search: terms: - bubble - chat - commenting - conversation - feedback - message - more - note - notification - reply - sms - speech - texting styles: - duotone unicode: f4ad voted: false concierge-bell: changes: - 5.1.0 label: Concierge Bell search: terms: - attention - hotel - receptionist - service - support styles: - duotone unicode: f562 voted: false credit-card: changes: - '2' - 5.0.0 label: Credit Card search: terms: - buy - checkout - credit-card-alt - debit - money - payment - purchase styles: - solid unicode: f09d voted: false desktop: changes: - '3' - 5.0.0 label: Desktop search: terms: - computer - cpu - demo - desktop - device - imac - machine - monitor - pc - screen styles: - solid - regular unicode: f108 voted: false discourse: changes: - 5.0.0 - 5.0.3 label: Discourse search: terms: [] styles: - brands unicode: f393 voted: false docker: changes: - 5.0.0 label: Docker search: terms: [] styles: - brands unicode: f395 voted: false dot-circle: changes: - '4' - 5.0.0 label: Dot Circle search: terms: - bullseye - notification - target styles: - duotone unicode: f192 voted: false envelope: changes: - '2' - 5.0.0 - 5.10.1 - 5.10.2 label: Envelope search: terms: - e-mail - email - letter - mail - message - notification - support styles: - solid - duotone unicode: f0e0 voted: false exchange-alt: changes: - 5.0.0 label: Alternate Exchange search: terms: - arrow - arrows - exchange - reciprocate - return - swap - transfer styles: - duotone unicode: f362 voted: false eye: changes: - '1' - 5.0.0 - 5.7.0 label: Eye search: terms: - look - optic - see - seen - show - sight - views - visible styles: - solid - regular unicode: f06e voted: false file-alt: changes: - '3.2' - 5.0.0 - 5.10.2 label: Alternate File search: terms: - document - file-text - invoice - new - page - pdf styles: - duotone unicode: f15c voted: false file-code: changes: - '4.1' - 5.0.0 - 5.10.2 label: Code File search: terms: - css - development - document - html styles: - duotone - regular unicode: f1c9 voted: false fingerprint: changes: - 5.1.0 label: Fingerprint search: terms: - human - id - identification - lock - smudge - touch - unique - unlock styles: - solid unicode: f577 voted: true github: changes: - '2' - 5.0.0 label: GitHub search: terms: - octocat styles: - brands unicode: f09b voted: false globe: changes: - '2' - 5.0.0 - 5.0.9 - 5.11.0 - 5.11.1 label: Globe search: terms: - all - coordinates - country - earth - global - gps - language - localize - location - map - online - place - planet - translate - travel - world styles: - duotone unicode: f0ac voted: false globe-africa: changes: - 5.1.0 - 5.11.0 - 5.11.1 label: Globe with Africa shown search: terms: - all - country - earth - global - gps - language - localize - location - map - online - place - planet - translate - travel - world styles: - duotone unicode: f57c voted: false globe-americas: changes: - 5.1.0 - 5.11.0 - 5.11.1 label: Globe with Americas shown search: terms: - all - country - earth - global - gps - language - localize - location - map - online - place - planet - translate - travel - world styles: - duotone unicode: f57d voted: false globe-asia: changes: - 5.1.0 - 5.11.0 - 5.11.1 label: Globe with Asia shown search: terms: - all - country - earth - global - gps - language - localize - location - map - online - place - planet - translate - travel - world styles: - duotone unicode: f57e voted: false globe-europe: changes: - 5.6.0 - 5.11.0 - 5.11.1 label: Globe with Europe shown search: terms: - all - country - earth - global - gps - language - localize - location - map - online - place - planet - translate - travel - world styles: - duotone unicode: f7a2 voted: true graduation-cap: changes: - '4.1' - 5.0.0 - 5.2.0 - 5.10.1 label: Graduation Cap search: terms: - ceremony - college - graduate - learning - school - student styles: - duotone unicode: f19d voted: false history: changes: - '4.1' - 5.0.0 label: History search: terms: - Rewind - clock - reverse - time - time machine styles: - solid - duotone unicode: f1da voted: false home: changes: - '1' - 5.0.0 - 5.7.0 label: home search: terms: - abode - building - house - main styles: - solid unicode: f015 voted: false info: changes: - '3.1' - 5.0.0 - 5.10.1 - 5.10.2 label: Info search: terms: - details - help - information - more - support styles: - regular unicode: f129 voted: false info-circle: changes: - '1' - 5.0.0 label: Info Circle search: terms: - details - help - information - more - support styles: - regular unicode: f05a voted: false instagram: changes: - '4.6' - 5.0.0 label: Instagram search: terms: [] styles: - brands unicode: f16d voted: false key: changes: - '1' - 5.0.0 - 5.10.1 label: key search: terms: - lock - password - private - secret - unlock styles: - duotone unicode: f084 voted: false key-skeleton: changes: - 5.4.0 label: Key Skeleton search: terms: - halloween - lock - password - private - secret - unlock styles: - duotone unicode: f6f3 voted: false laptop: changes: - '3' - 5.0.0 - 5.2.0 label: Laptop search: terms: - computer - cpu - dell - demo - device - mac - macbook - machine - pc styles: - duotone unicode: f109 voted: false laptop-code: changes: - 5.2.0 label: Laptop Code search: terms: - computer - cpu - dell - demo - develop - device - mac - macbook - machine - pc styles: - duotone unicode: f5fc voted: false laptop-house: changes: - 5.13.0 - 5.14.0 label: Laptop House search: terms: - computer - covid-19 - device - office - remote - work from home styles: - duotone unicode: e066 voted: false life-ring: changes: - '4.1' - 5.0.0 label: Life Ring search: terms: - coast guard - help - overboard - save - support styles: - duotone unicode: f1cd voted: false lightbulb: changes: - '3' - 5.0.0 - 5.3.0 label: Lightbulb search: terms: - energy - idea - inspiration - light styles: - duotone unicode: f0eb voted: false list-alt: changes: - '1' - 5.0.0 label: Alternate List search: terms: - checklist - completed - done - finished - ol - todo - ul styles: - duotone unicode: f022 voted: false list-ul: changes: - '2' - 5.0.0 - 5.9.0 label: list-ul search: terms: - checklist - completed - done - finished - ol - todo - ul styles: - duotone unicode: f0ca voted: false lock-alt: changes: - 5.0.0 label: Alternate Lock search: terms: - admin - lock - open - password - private - protect - security styles: - duotone unicode: f30d voted: false map-marker-alt: changes: - 5.0.0 label: Alternate Map Marker search: terms: - address - coordinates - destination - gps - localize - location - map - navigation - paper - pin - place - point of interest - position - route - travel styles: - duotone unicode: f3c5 voted: false microsoft: changes: - 5.0.0 label: Microsoft search: terms: [] styles: - brands unicode: f3ca voted: true moon-stars: changes: - 5.5.0 label: Moon with Stars search: terms: - clear - crescent - lunar - space - star styles: - duotone unicode: f755 voted: false network-wired: changes: - 5.4.0 label: Wired Network search: terms: - computer - connect - ethernet - internet - intranet styles: - duotone unicode: f6ff voted: true planet-ringed: changes: - 5.12.0 - 5.14.0 label: Ringed Planet search: terms: - orbit - saturn - solar system - space - universe styles: - duotone unicode: e020 voted: false plus: changes: - '1' - 5.0.0 - 5.0.13 label: plus search: terms: - add - create - expand - new - positive - shape styles: - regular - solid unicode: f067 voted: false question-circle: changes: - '1' - 5.0.0 label: Question Circle search: terms: - help - information - support - unknown styles: - duotone - regular unicode: f059 voted: false quote-left: changes: - '3' - 5.0.0 - 5.0.9 label: quote-left search: terms: - mention - note - phrase - text - type styles: - duotone unicode: f10d voted: false random: changes: - '1' - 5.0.0 label: random search: terms: - arrows - shuffle - sort - swap - switch - transfer styles: - duotone unicode: f074 voted: false rev: changes: - 5.1.0 - 5.1.1 - 5.8.0 label: Rev.io search: terms: [] styles: - brands unicode: f5b2 voted: false robot: changes: - 5.0.13 - 5.12.0 label: Robot search: terms: - android - automate - computer - cyborg styles: - solid unicode: f544 voted: true rocket: changes: - '3.1' - 5.0.0 - 5.7.0 - 5.12.0 label: rocket search: terms: - aircraft - app - jet - launch - nasa - space styles: - duotone - solid - regular unicode: f135 voted: false save: changes: - '2' - 5.0.0 - 5.10.2 label: Save search: terms: - disk - download - floppy - floppy-o styles: - solid - regular unicode: f0c7 voted: false search: changes: - '1' - 5.0.0 label: Search search: terms: - bigger - enlarge - find - magnify - preview - zoom styles: - duotone unicode: f002 voted: false server: changes: - '4.3' - 5.0.0 label: Server search: terms: - computer - cpu - database - hardware - network styles: - duotone unicode: f233 voted: false sign-out: changes: - '1' - 5.0.0 label: Sign Out search: terms: - arrow - exit - leave - log out - logout styles: - duotone unicode: f08b voted: false siren-on: changes: - 5.12.0 - 5.14.0 label: Siren On search: terms: - alarm - alert - ambulance - loud - police - warning styles: - duotone unicode: e02e voted: false slack: changes: - '4.1' - 5.0.0 - 5.7.0 label: Slack Logo search: terms: - anchor - hash - hashtag styles: - brands unicode: f198 voted: false slash: changes: - 5.4.0 label: Slash search: terms: - cancel - close - mute - 'off' - stop - x styles: - solid - regular unicode: f715 voted: true smile: changes: - '3.1' - 5.0.0 - 5.0.9 - 5.1.0 - 5.11.0 - 5.11.1 label: Smiling Face search: terms: - approve - emoticon - face - happy - rating - satisfied styles: - duotone unicode: f118 voted: false snowman: changes: - 5.6.0 label: Snowman search: terms: - decoration - frost - frosty - holiday styles: - duotone unicode: f7d0 spinner-third: changes: - 5.0.0 - 5.10.2 label: Spinner Third search: terms: - circle - loading - progress styles: - solid unicode: f3f4 voted: false square-full: changes: - 5.0.5 - 5.10.2 label: Square Full search: terms: - block - box - shape styles: - solid unicode: f45c voted: false sun: changes: - '3.2' - 5.0.0 - 5.5.0 label: Sun search: terms: - brighten - contrast - day - lighter - sol - solar - star - weather styles: - duotone unicode: f185 voted: false tasks: changes: - '2' - 5.0.0 - 5.9.0 label: Tasks search: terms: - checklist - downloading - downloads - loading - progress - project management - settings - to do styles: - duotone unicode: f0ae voted: false times: changes: - '1' - 5.0.0 - 5.0.13 - 5.11.0 - 5.11.1 label: Times search: terms: - close - cross - error - exit - incorrect - notice - notification - notify - problem - wrong - x styles: - solid - regular unicode: f00d voted: false times-circle: changes: - '1' - 5.0.0 label: Times Circle search: terms: - close - cross - exit - incorrect - notice - notification - notify - problem - wrong - x styles: - solid unicode: f057 voted: false twitter: changes: - '2' - 5.0.0 label: Twitter search: terms: - social network - tweet styles: - brands unicode: f099 voted: false undo: changes: - '2' - 5.0.0 label: Undo search: terms: - back - control z - exchange - oops - return - rotate - swap styles: - solid - regular unicode: f0e2 voted: false undo-alt: changes: - 5.0.0 label: Alternate Undo search: terms: - back - control z - exchange - oops - return - swap styles: - regular - solid unicode: f2ea voted: false university: changes: - '4.1' - 5.0.0 - 5.0.3 - 5.11.0 - 5.11.1 label: University search: terms: - bank - building - college - higher education - students - institution styles: - duotone unicode: f19c voted: false user: changes: - '1' - 5.0.0 - 5.0.3 - 5.0.11 label: User search: terms: - account - avatar - head - human - man - person - profile styles: - solid - duotone - regular unicode: f007 voted: false user-friends: changes: - 5.0.11 label: User Friends search: terms: - group - people - person - team - users styles: - regular unicode: f500 voted: false user-hard-hat: changes: - 5.7.0 label: Construction Worker search: terms: - construction - hardhat - helmet - safety styles: - duotone unicode: f82c voted: false user-shield: changes: - 5.0.11 label: User Shield search: terms: - admin - person - private - protect - safe styles: - duotone unicode: f505 voted: false users: changes: - '2' - 5.0.0 - 5.0.3 - 5.0.11 label: Users search: terms: - friends - group - people - persons - profiles - team styles: - duotone - solid - regular unicode: f0c0 voted: false ================================================ FILE: public/fonts/font-awesome/metadata/sponsors.yml ================================================ amazon-web-services: icons: - aws label: Amazon Web Services url: 'https://aws.amazon.com' discourse: icons: - discourse label: Discourse url: 'https://discourse.org' harvard-medical-school: icons: - plus label: Harvard Medical School url: 'https://hms.harvard.edu' mylogin-info: icons: - user-shield label: mylogin.info url: 'https://www.mylogin.info' rev-io: icons: - rev label: Rev.io url: 'https://rev.io' rocket-chat: icons: - comment-dots - quote-left - smile label: Rocket.Chat url: 'https://rocket.chat' supple: icons: - badge-check label: Supple url: 'https://supple.com.au' the-us-sunnah-foundation: icons: - globe label: The us-Sunnah Foundation url: 'https://www.ussunnah.org' ================================================ FILE: public/fonts/font-awesome/otfs/README.md ================================================ A HEADS UP ABOUT DUOTONE ICONS ON THE DESKTOP --------------------------------------------- Duotone icons are a bit different to use than other Font Awesome icons at the moment. * We currently recommend using the Duotone-specific optimized .svg vector files. These can be found in the /svgs/duotone folder of this download. * Using Ligatures with Duotone Icons is NOT currently recommended - while we've included a Duotone ligature-based font file in our Pro desktop download, we can't recommend it as a way to use our icons on the desktop. Read the special instructions for using duotones with ligatures here - https://fontawesome.com/how-to-use/on-the-desktop/referencing-icons/duotone-icons#using-ligatures. You can read the nitty gritty on the current limitations desktop apps have that made our Duotone ligature implementation diferent there as well. And our full Duotone Desktop docs are available at: https://fontawesome.com/how-to-use/on-the-desktop/referencing-icons/duotone-icons. ================================================ FILE: public/fonts/font-awesome/scss/_animated.scss ================================================ // Animated Icons // -------------------------- .#{$fa-css-prefix}-spin { animation: fa-spin 2s infinite linear; } .#{$fa-css-prefix}-pulse { animation: fa-spin 1s infinite steps(8); } @keyframes fa-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } ================================================ FILE: public/fonts/font-awesome/scss/_bordered-pulled.scss ================================================ // Bordered & Pulled // ------------------------- .#{$fa-css-prefix}-border { border: solid .08em $fa-border-color; border-radius: .1em; padding: .2em .25em .15em; } .#{$fa-css-prefix}-pull-left { float: left; } .#{$fa-css-prefix}-pull-right { float: right; } .#{$fa-css-prefix}, .fas, .far, .fal, .fab { &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } } ================================================ FILE: public/fonts/font-awesome/scss/_core.scss ================================================ // Base Class Definition // ------------------------- .#{$fa-css-prefix}, .fas, .far, .fal, .fad, .fab { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: inline-block; font-style: normal; font-variant: normal; text-rendering: auto; line-height: 1; } %fa-icon { @include fa-icon; } ================================================ FILE: public/fonts/font-awesome/scss/_fixed-width.scss ================================================ // Fixed Width Icons // ------------------------- .#{$fa-css-prefix}-fw { text-align: center; width: $fa-fw-width; } ================================================ FILE: public/fonts/font-awesome/scss/_icons.scss ================================================ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ .#{$fa-css-prefix}-abacus:before { content: fa-content($fa-var-abacus); } .#{$fa-css-prefix}-alarm-exclamation:before { content: fa-content($fa-var-alarm-exclamation); } .#{$fa-css-prefix}-align-left:before { content: fa-content($fa-var-align-left); } .#{$fa-css-prefix}-align-slash:before { content: fa-content($fa-var-align-slash); } .#{$fa-css-prefix}-atom-alt:before { content: fa-content($fa-var-atom-alt); } .#{$fa-css-prefix}-aws:before { content: fa-content($fa-var-aws); } .#{$fa-css-prefix}-badge-check:before { content: fa-content($fa-var-badge-check); } .#{$fa-css-prefix}-bell:before { content: fa-content($fa-var-bell); } .#{$fa-css-prefix}-book-dead:before { content: fa-content($fa-var-book-dead); } .#{$fa-css-prefix}-books:before { content: fa-content($fa-var-books); } .#{$fa-css-prefix}-brackets-curly:before { content: fa-content($fa-var-brackets-curly); } .#{$fa-css-prefix}-cc-amazon-pay:before { content: fa-content($fa-var-cc-amazon-pay); } .#{$fa-css-prefix}-cc-amex:before { content: fa-content($fa-var-cc-amex); } .#{$fa-css-prefix}-cc-apple-pay:before { content: fa-content($fa-var-cc-apple-pay); } .#{$fa-css-prefix}-cc-diners-club:before { content: fa-content($fa-var-cc-diners-club); } .#{$fa-css-prefix}-cc-discover:before { content: fa-content($fa-var-cc-discover); } .#{$fa-css-prefix}-cc-jcb:before { content: fa-content($fa-var-cc-jcb); } .#{$fa-css-prefix}-cc-mastercard:before { content: fa-content($fa-var-cc-mastercard); } .#{$fa-css-prefix}-cc-paypal:before { content: fa-content($fa-var-cc-paypal); } .#{$fa-css-prefix}-cc-stripe:before { content: fa-content($fa-var-cc-stripe); } .#{$fa-css-prefix}-cc-visa:before { content: fa-content($fa-var-cc-visa); } .#{$fa-css-prefix}-chart-network:before { content: fa-content($fa-var-chart-network); } .#{$fa-css-prefix}-chart-scatter:before { content: fa-content($fa-var-chart-scatter); } .#{$fa-css-prefix}-check:before { content: fa-content($fa-var-check); } .#{$fa-css-prefix}-check-circle:before { content: fa-content($fa-var-check-circle); } .#{$fa-css-prefix}-circle:before { content: fa-content($fa-var-circle); } .#{$fa-css-prefix}-cloud:before { content: fa-content($fa-var-cloud); } .#{$fa-css-prefix}-clouds:before { content: fa-content($fa-var-clouds); } .#{$fa-css-prefix}-cogs:before { content: fa-content($fa-var-cogs); } .#{$fa-css-prefix}-comment-dots:before { content: fa-content($fa-var-comment-dots); } .#{$fa-css-prefix}-concierge-bell:before { content: fa-content($fa-var-concierge-bell); } .#{$fa-css-prefix}-credit-card:before { content: fa-content($fa-var-credit-card); } .#{$fa-css-prefix}-desktop:before { content: fa-content($fa-var-desktop); } .#{$fa-css-prefix}-discourse:before { content: fa-content($fa-var-discourse); } .#{$fa-css-prefix}-docker:before { content: fa-content($fa-var-docker); } .#{$fa-css-prefix}-dot-circle:before { content: fa-content($fa-var-dot-circle); } .#{$fa-css-prefix}-envelope:before { content: fa-content($fa-var-envelope); } .#{$fa-css-prefix}-exchange-alt:before { content: fa-content($fa-var-exchange-alt); } .#{$fa-css-prefix}-eye:before { content: fa-content($fa-var-eye); } .#{$fa-css-prefix}-file-alt:before { content: fa-content($fa-var-file-alt); } .#{$fa-css-prefix}-file-code:before { content: fa-content($fa-var-file-code); } .#{$fa-css-prefix}-fingerprint:before { content: fa-content($fa-var-fingerprint); } .#{$fa-css-prefix}-github:before { content: fa-content($fa-var-github); } .#{$fa-css-prefix}-globe:before { content: fa-content($fa-var-globe); } .#{$fa-css-prefix}-globe-africa:before { content: fa-content($fa-var-globe-africa); } .#{$fa-css-prefix}-globe-americas:before { content: fa-content($fa-var-globe-americas); } .#{$fa-css-prefix}-globe-asia:before { content: fa-content($fa-var-globe-asia); } .#{$fa-css-prefix}-globe-europe:before { content: fa-content($fa-var-globe-europe); } .#{$fa-css-prefix}-graduation-cap:before { content: fa-content($fa-var-graduation-cap); } .#{$fa-css-prefix}-history:before { content: fa-content($fa-var-history); } .#{$fa-css-prefix}-home:before { content: fa-content($fa-var-home); } .#{$fa-css-prefix}-info:before { content: fa-content($fa-var-info); } .#{$fa-css-prefix}-info-circle:before { content: fa-content($fa-var-info-circle); } .#{$fa-css-prefix}-instagram:before { content: fa-content($fa-var-instagram); } .#{$fa-css-prefix}-key:before { content: fa-content($fa-var-key); } .#{$fa-css-prefix}-key-skeleton:before { content: fa-content($fa-var-key-skeleton); } .#{$fa-css-prefix}-laptop:before { content: fa-content($fa-var-laptop); } .#{$fa-css-prefix}-laptop-code:before { content: fa-content($fa-var-laptop-code); } .#{$fa-css-prefix}-laptop-house:before { content: fa-content($fa-var-laptop-house); } .#{$fa-css-prefix}-life-ring:before { content: fa-content($fa-var-life-ring); } .#{$fa-css-prefix}-lightbulb:before { content: fa-content($fa-var-lightbulb); } .#{$fa-css-prefix}-list-alt:before { content: fa-content($fa-var-list-alt); } .#{$fa-css-prefix}-list-ul:before { content: fa-content($fa-var-list-ul); } .#{$fa-css-prefix}-lock-alt:before { content: fa-content($fa-var-lock-alt); } .#{$fa-css-prefix}-map-marker-alt:before { content: fa-content($fa-var-map-marker-alt); } .#{$fa-css-prefix}-microsoft:before { content: fa-content($fa-var-microsoft); } .#{$fa-css-prefix}-moon-stars:before { content: fa-content($fa-var-moon-stars); } .#{$fa-css-prefix}-network-wired:before { content: fa-content($fa-var-network-wired); } .#{$fa-css-prefix}-planet-ringed:before { content: fa-content($fa-var-planet-ringed); } .#{$fa-css-prefix}-plus:before { content: fa-content($fa-var-plus); } .#{$fa-css-prefix}-question-circle:before { content: fa-content($fa-var-question-circle); } .#{$fa-css-prefix}-quote-left:before { content: fa-content($fa-var-quote-left); } .#{$fa-css-prefix}-random:before { content: fa-content($fa-var-random); } .#{$fa-css-prefix}-rev:before { content: fa-content($fa-var-rev); } .#{$fa-css-prefix}-robot:before { content: fa-content($fa-var-robot); } .#{$fa-css-prefix}-rocket:before { content: fa-content($fa-var-rocket); } .#{$fa-css-prefix}-save:before { content: fa-content($fa-var-save); } .#{$fa-css-prefix}-search:before { content: fa-content($fa-var-search); } .#{$fa-css-prefix}-server:before { content: fa-content($fa-var-server); } .#{$fa-css-prefix}-sign-out:before { content: fa-content($fa-var-sign-out); } .#{$fa-css-prefix}-siren-on:before { content: fa-content($fa-var-siren-on); } .#{$fa-css-prefix}-slack:before { content: fa-content($fa-var-slack); } .#{$fa-css-prefix}-slash:before { content: fa-content($fa-var-slash); } .#{$fa-css-prefix}-smile:before { content: fa-content($fa-var-smile); } .#{$fa-css-prefix}-snowman:before { content: fa-content($fa-var-snowman); } .#{$fa-css-prefix}-spinner-third:before { content: fa-content($fa-var-spinner-third); } .#{$fa-css-prefix}-square-full:before { content: fa-content($fa-var-square-full); } .#{$fa-css-prefix}-sun:before { content: fa-content($fa-var-sun); } .#{$fa-css-prefix}-tasks:before { content: fa-content($fa-var-tasks); } .#{$fa-css-prefix}-times:before { content: fa-content($fa-var-times); } .#{$fa-css-prefix}-times-circle:before { content: fa-content($fa-var-times-circle); } .#{$fa-css-prefix}-twitter:before { content: fa-content($fa-var-twitter); } .#{$fa-css-prefix}-undo:before { content: fa-content($fa-var-undo); } .#{$fa-css-prefix}-undo-alt:before { content: fa-content($fa-var-undo-alt); } .#{$fa-css-prefix}-university:before { content: fa-content($fa-var-university); } .#{$fa-css-prefix}-user:before { content: fa-content($fa-var-user); } .#{$fa-css-prefix}-user-friends:before { content: fa-content($fa-var-user-friends); } .#{$fa-css-prefix}-user-hard-hat:before { content: fa-content($fa-var-user-hard-hat); } .#{$fa-css-prefix}-user-shield:before { content: fa-content($fa-var-user-shield); } .#{$fa-css-prefix}-users:before { content: fa-content($fa-var-users); } ================================================ FILE: public/fonts/font-awesome/scss/_larger.scss ================================================ // Icon Sizes // ------------------------- // makes the font 33% larger relative to the icon container .#{$fa-css-prefix}-lg { font-size: (4em / 3); line-height: (3em / 4); vertical-align: -.0667em; } .#{$fa-css-prefix}-xs { font-size: .75em; } .#{$fa-css-prefix}-sm { font-size: .875em; } @for $i from 1 through 10 { .#{$fa-css-prefix}-#{$i}x { font-size: $i * 1em; } } ================================================ FILE: public/fonts/font-awesome/scss/_list.scss ================================================ // List Icons // ------------------------- .#{$fa-css-prefix}-ul { list-style-type: none; margin-left: $fa-li-width * 5/4; padding-left: 0; > li { position: relative; } } .#{$fa-css-prefix}-li { left: -$fa-li-width; position: absolute; text-align: center; width: $fa-li-width; line-height: inherit; } ================================================ FILE: public/fonts/font-awesome/scss/_mixins.scss ================================================ // Mixins // -------------------------- @mixin fa-icon { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; font-style: normal; font-variant: normal; font-weight: normal; line-height: 1; } @mixin fa-icon-rotate($degrees, $rotation) { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; transform: rotate($degrees); } @mixin fa-icon-flip($horiz, $vert, $rotation) { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; transform: scale($horiz, $vert); } // Only display content to screen readers. A la Bootstrap 4. // // See: http://a11yproject.com/posts/how-to-hide-content/ @mixin sr-only { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } // Use in conjunction with .sr-only to only display content when it's focused. // // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 // // Credit: HTML5 Boilerplate @mixin sr-only-focusable { &:active, &:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } } ================================================ FILE: public/fonts/font-awesome/scss/_rotated-flipped.scss ================================================ // Rotated & Flipped Icons // ------------------------- .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } .#{$fa-css-prefix}-flip-both, .#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(-1, -1, 2); } // Hook for IE8-9 // ------------------------- :root { .#{$fa-css-prefix}-rotate-90, .#{$fa-css-prefix}-rotate-180, .#{$fa-css-prefix}-rotate-270, .#{$fa-css-prefix}-flip-horizontal, .#{$fa-css-prefix}-flip-vertical, .#{$fa-css-prefix}-flip-both { filter: none; } } ================================================ FILE: public/fonts/font-awesome/scss/_screen-reader.scss ================================================ // Screen Readers // ------------------------- .sr-only { @include sr-only; } .sr-only-focusable { @include sr-only-focusable; } ================================================ FILE: public/fonts/font-awesome/scss/_stacked.scss ================================================ // Stacked Icons // ------------------------- .#{$fa-css-prefix}-stack { display: inline-block; height: 2em; line-height: 2em; position: relative; vertical-align: middle; width: ($fa-fw-width*2); } .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { left: 0; position: absolute; text-align: center; width: 100%; } .#{$fa-css-prefix}-stack-1x { line-height: inherit; } .#{$fa-css-prefix}-stack-2x { font-size: 2em; } .#{$fa-css-prefix}-inverse { color: $fa-inverse; } ================================================ FILE: public/fonts/font-awesome/scss/_variables.scss ================================================ // Variables // -------------------------- $fa-font-path: "../webfonts" !default; $fa-font-size-base: 16px !default; $fa-font-display: block !default; $fa-css-prefix: fa !default; $fa-version: "5.15.4" !default; $fa-border-color: #eee !default; $fa-inverse: #fff !default; $fa-li-width: 2em !default; $fa-fw-width: (20em / 16); $fa-primary-opacity: 1 !default; $fa-secondary-opacity: .4 !default; // Convenience function used to set content property @function fa-content($fa-var) { @return unquote("\"#{ $fa-var }\""); } $fa-var-abacus: \f640; $fa-var-alarm-exclamation: \f843; $fa-var-align-left: \f036; $fa-var-align-slash: \f846; $fa-var-atom-alt: \f5d3; $fa-var-aws: \f375; $fa-var-badge-check: \f336; $fa-var-bell: \f0f3; $fa-var-book-dead: \f6b7; $fa-var-books: \f5db; $fa-var-brackets-curly: \f7ea; $fa-var-cc-amazon-pay: \f42d; $fa-var-cc-amex: \f1f3; $fa-var-cc-apple-pay: \f416; $fa-var-cc-diners-club: \f24c; $fa-var-cc-discover: \f1f2; $fa-var-cc-jcb: \f24b; $fa-var-cc-mastercard: \f1f1; $fa-var-cc-paypal: \f1f4; $fa-var-cc-stripe: \f1f5; $fa-var-cc-visa: \f1f0; $fa-var-chart-network: \f78a; $fa-var-chart-scatter: \f7ee; $fa-var-check: \f00c; $fa-var-check-circle: \f058; $fa-var-circle: \f111; $fa-var-cloud: \f0c2; $fa-var-clouds: \f744; $fa-var-cogs: \f085; $fa-var-comment-dots: \f4ad; $fa-var-concierge-bell: \f562; $fa-var-credit-card: \f09d; $fa-var-desktop: \f108; $fa-var-discourse: \f393; $fa-var-docker: \f395; $fa-var-dot-circle: \f192; $fa-var-envelope: \f0e0; $fa-var-exchange-alt: \f362; $fa-var-eye: \f06e; $fa-var-file-alt: \f15c; $fa-var-file-code: \f1c9; $fa-var-fingerprint: \f577; $fa-var-github: \f09b; $fa-var-globe: \f0ac; $fa-var-globe-africa: \f57c; $fa-var-globe-americas: \f57d; $fa-var-globe-asia: \f57e; $fa-var-globe-europe: \f7a2; $fa-var-graduation-cap: \f19d; $fa-var-history: \f1da; $fa-var-home: \f015; $fa-var-info: \f129; $fa-var-info-circle: \f05a; $fa-var-instagram: \f16d; $fa-var-key: \f084; $fa-var-key-skeleton: \f6f3; $fa-var-laptop: \f109; $fa-var-laptop-code: \f5fc; $fa-var-laptop-house: \e066; $fa-var-life-ring: \f1cd; $fa-var-lightbulb: \f0eb; $fa-var-list-alt: \f022; $fa-var-list-ul: \f0ca; $fa-var-lock-alt: \f30d; $fa-var-map-marker-alt: \f3c5; $fa-var-microsoft: \f3ca; $fa-var-moon-stars: \f755; $fa-var-network-wired: \f6ff; $fa-var-planet-ringed: \e020; $fa-var-plus: \f067; $fa-var-question-circle: \f059; $fa-var-quote-left: \f10d; $fa-var-random: \f074; $fa-var-rev: \f5b2; $fa-var-robot: \f544; $fa-var-rocket: \f135; $fa-var-save: \f0c7; $fa-var-search: \f002; $fa-var-server: \f233; $fa-var-sign-out: \f08b; $fa-var-siren-on: \e02e; $fa-var-slack: \f198; $fa-var-slash: \f715; $fa-var-smile: \f118; $fa-var-snowman: \f7d0; $fa-var-spinner-third: \f3f4; $fa-var-square-full: \f45c; $fa-var-sun: \f185; $fa-var-tasks: \f0ae; $fa-var-times: \f00d; $fa-var-times-circle: \f057; $fa-var-twitter: \f099; $fa-var-undo: \f0e2; $fa-var-undo-alt: \f2ea; $fa-var-university: \f19c; $fa-var-user: \f007; $fa-var-user-friends: \f500; $fa-var-user-hard-hat: \f82c; $fa-var-user-shield: \f505; $fa-var-users: \f0c0; ================================================ FILE: public/fonts/font-awesome/scss/brands.scss ================================================ @import 'variables'; @font-face { font-family: 'Font Awesome 5 Brands'; font-style: normal; font-weight: 400; font-display: $fa-font-display; src: url('#{$fa-font-path}/fa-brands-400.eot'); src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'), url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'), url('#{$fa-font-path}/fa-brands-400.woff') format('woff'), url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'), url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg'); } .fab { font-family: 'Font Awesome 5 Brands'; font-weight: 400; } ================================================ FILE: public/fonts/font-awesome/scss/duotone.scss ================================================ @import 'variables'; @font-face { font-family: 'Font Awesome 5 Duotone'; font-style: normal; font-weight: 900; font-display: $fa-font-display; src: url('#{$fa-font-path}/fa-duotone-900.eot'); src: url('#{$fa-font-path}/fa-duotone-900.eot?#iefix') format('embedded-opentype'), url('#{$fa-font-path}/fa-duotone-900.woff2') format('woff2'), url('#{$fa-font-path}/fa-duotone-900.woff') format('woff'), url('#{$fa-font-path}/fa-duotone-900.ttf') format('truetype'), url('#{$fa-font-path}/fa-duotone-900.svg#fontawesome') format('svg'); } .fad { position: relative; font-family: 'Font Awesome 5 Duotone'; font-weight: 900; } .fad:before { position: absolute; color: var(--#{$fa-css-prefix}-primary-color, inherit); opacity: $fa-primary-opacity; opacity: var(--#{$fa-css-prefix}-primary-opacity, #{$fa-primary-opacity}); } .fad:after { color: var(--#{$fa-css-prefix}-secondary-color, inherit); opacity: $fa-secondary-opacity; opacity: var(--#{$fa-css-prefix}-secondary-opacity, #{$fa-secondary-opacity}); } .#{$fa-css-prefix}-swap-opacity .fad:before, .fad.#{$fa-css-prefix}-swap-opacity:before { opacity: $fa-secondary-opacity; opacity: var(--#{$fa-css-prefix}-secondary-opacity, #{$fa-secondary-opacity}); } .#{$fa-css-prefix}-swap-opacity .fad:after, .fad.#{$fa-css-prefix}-swap-opacity:after { opacity: $fa-primary-opacity; opacity: var(--#{$fa-css-prefix}-primary-opacity, #{$fa-primary-opacity}); } .fad.#{$fa-css-prefix}-inverse { color: $fa-inverse; } .fad.#{$fa-css-prefix}-stack-1x, .fad.#{$fa-css-prefix}-stack-2x { position: absolute; } .fad.#{$fa-css-prefix}-stack-1x:before, .fad.#{$fa-css-prefix}-stack-2x:before, .fad.#{$fa-css-prefix}-fw:before { left: 50%; transform: translateX(-50%); } .fad.#{$fa-css-prefix}-abacus:after { content: fa-content(\10f640); } .fad.#{$fa-css-prefix}-align-slash:after { content: fa-content(\10f846); } .fad.#{$fa-css-prefix}-atom-alt:after { content: fa-content(\10f5d3); } .fad.#{$fa-css-prefix}-badge-check:after { content: fa-content(\10f336); } .fad.#{$fa-css-prefix}-bell:after { content: fa-content(\10f0f3); } .fad.#{$fa-css-prefix}-books:after { content: fa-content(\10f5db); } .fad.#{$fa-css-prefix}-brackets-curly:after { content: fa-content(\10f7ea); } .fad.#{$fa-css-prefix}-chart-network:after { content: fa-content(\10f78a); } .fad.#{$fa-css-prefix}-chart-scatter:after { content: fa-content(\10f7ee); } .fad.#{$fa-css-prefix}-check:after { content: fa-content(\10f00c); } .fad.#{$fa-css-prefix}-circle:after { content: fa-content(\10f111); } .fad.#{$fa-css-prefix}-clouds:after { content: fa-content(\10f744); } .fad.#{$fa-css-prefix}-cogs:after { content: fa-content(\10f085); } .fad.#{$fa-css-prefix}-comment-dots:after { content: fa-content(\10f4ad); } .fad.#{$fa-css-prefix}-concierge-bell:after { content: fa-content(\10f562); } .fad.#{$fa-css-prefix}-dot-circle:after { content: fa-content(\10f192); } .fad.#{$fa-css-prefix}-envelope:after { content: fa-content(\10f0e0); } .fad.#{$fa-css-prefix}-exchange-alt:after { content: fa-content(\10f362); } .fad.#{$fa-css-prefix}-file-alt:after { content: fa-content(\10f15c); } .fad.#{$fa-css-prefix}-file-code:after { content: fa-content(\10f1c9); } .fad.#{$fa-css-prefix}-globe:after { content: fa-content(\10f0ac); } .fad.#{$fa-css-prefix}-globe-africa:after { content: fa-content(\10f57c); } .fad.#{$fa-css-prefix}-globe-americas:after { content: fa-content(\10f57d); } .fad.#{$fa-css-prefix}-globe-asia:after { content: fa-content(\10f57e); } .fad.#{$fa-css-prefix}-globe-europe:after { content: fa-content(\10f7a2); } .fad.#{$fa-css-prefix}-graduation-cap:after { content: fa-content(\10f19d); } .fad.#{$fa-css-prefix}-history:after { content: fa-content(\10f1da); } .fad.#{$fa-css-prefix}-key:after { content: fa-content(\10f084); } .fad.#{$fa-css-prefix}-key-skeleton:after { content: fa-content(\10f6f3); } .fad.#{$fa-css-prefix}-laptop:after { content: fa-content(\10f109); } .fad.#{$fa-css-prefix}-laptop-code:after { content: fa-content(\10f5fc); } .fad.#{$fa-css-prefix}-laptop-house:after { content: fa-content(\10e066); } .fad.#{$fa-css-prefix}-life-ring:after { content: fa-content(\10f1cd); } .fad.#{$fa-css-prefix}-lightbulb:after { content: fa-content(\10f0eb); } .fad.#{$fa-css-prefix}-list-alt:after { content: fa-content(\10f022); } .fad.#{$fa-css-prefix}-list-ul:after { content: fa-content(\10f0ca); } .fad.#{$fa-css-prefix}-lock-alt:after { content: fa-content(\10f30d); } .fad.#{$fa-css-prefix}-map-marker-alt:after { content: fa-content(\10f3c5); } .fad.#{$fa-css-prefix}-moon-stars:after { content: fa-content(\10f755); } .fad.#{$fa-css-prefix}-network-wired:after { content: fa-content(\10f6ff); } .fad.#{$fa-css-prefix}-planet-ringed:after { content: fa-content(\10e020); } .fad.#{$fa-css-prefix}-question-circle:after { content: fa-content(\10f059); } .fad.#{$fa-css-prefix}-quote-left:after { content: fa-content(\10f10d); } .fad.#{$fa-css-prefix}-random:after { content: fa-content(\10f074); } .fad.#{$fa-css-prefix}-rocket:after { content: fa-content(\10f135); } .fad.#{$fa-css-prefix}-search:after { content: fa-content(\10f002); } .fad.#{$fa-css-prefix}-server:after { content: fa-content(\10f233); } .fad.#{$fa-css-prefix}-sign-out:after { content: fa-content(\10f08b); } .fad.#{$fa-css-prefix}-siren-on:after { content: fa-content(\10e02e); } .fad.#{$fa-css-prefix}-smile:after { content: fa-content(\10f118); } .fad.#{$fa-css-prefix}-snowman:after { content: fa-content(\10f7d0); } .fad.#{$fa-css-prefix}-sun:after { content: fa-content(\10f185); } .fad.#{$fa-css-prefix}-tasks:after { content: fa-content(\10f0ae); } .fad.#{$fa-css-prefix}-university:after { content: fa-content(\10f19c); } .fad.#{$fa-css-prefix}-user:after { content: fa-content(\10f007); } .fad.#{$fa-css-prefix}-user-hard-hat:after { content: fa-content(\10f82c); } .fad.#{$fa-css-prefix}-user-shield:after { content: fa-content(\10f505); } .fad.#{$fa-css-prefix}-users:after { content: fa-content(\10f0c0); } ================================================ FILE: public/fonts/font-awesome/scss/fontawesome.scss ================================================ @import 'variables'; @import 'mixins'; @import 'core'; @import 'larger'; @import 'fixed-width'; @import 'list'; @import 'bordered-pulled'; @import 'animated'; @import 'rotated-flipped'; @import 'stacked'; @import 'icons'; @import 'screen-reader'; ================================================ FILE: public/fonts/font-awesome/scss/regular.scss ================================================ @import 'variables'; @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 400; font-display: $fa-font-display; src: url('#{$fa-font-path}/fa-regular-400.eot'); src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'), url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'), url('#{$fa-font-path}/fa-regular-400.woff') format('woff'), url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'), url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg'); } .far { font-family: 'Font Awesome 5 Pro'; font-weight: 400; } ================================================ FILE: public/fonts/font-awesome/scss/solid.scss ================================================ @import 'variables'; @font-face { font-family: 'Font Awesome 5 Pro'; font-style: normal; font-weight: 900; font-display: $fa-font-display; src: url('#{$fa-font-path}/fa-solid-900.eot'); src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'), url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'), url('#{$fa-font-path}/fa-solid-900.woff') format('woff'), url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'), url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg'); } .fa, .fas { font-family: 'Font Awesome 5 Pro'; font-weight: 900; } ================================================ FILE: public/fonts/fonts.css ================================================ @font-face { font-family: 'Material Icons'; font-style: normal; font-weight: 400; src: url('./material-icons.ttf') format('truetype'); } @font-face { font-family: 'Material Icons Outlined'; font-style: normal; font-weight: 400; src: url('./material-icons-outlined.otf') format('opentype'); } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 100; src: url('./roboto-100.ttf') format('truetype'); } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 300; src: url('./roboto-300.ttf') format('truetype'); } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; src: url('./roboto-400.ttf') format('truetype'); } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; src: url('./roboto-500.ttf') format('truetype'); } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; src: url('./roboto-700.ttf') format('truetype'); } .material-icons { font-family: 'Material Icons'; font-weight: normal; font-style: normal; font-size: 24px; line-height: 1; letter-spacing: normal; text-transform: none; display: inline-block; white-space: nowrap; word-wrap: normal; direction: ltr; } .material-icons-outlined { font-family: 'Material Icons Outlined'; font-weight: normal; font-style: normal; font-size: 24px; line-height: 1; letter-spacing: normal; text-transform: none; display: inline-block; white-space: nowrap; word-wrap: normal; direction: ltr; } ================================================ FILE: public/index.html ================================================ Prefect
================================================ FILE: public/settings.json ================================================ { "server_url": "PREFECT_SERVER__APOLLO_URL", "base_url": "PREFECT_SERVER__BASE_URL" } ================================================ FILE: public/site.webmanifest ================================================ { "name": "Prefect", "short_name": "Prefect", "icons": [ { "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }, { "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" } ], "theme_color": "#ffffff", "background_color": "#ffffff", "display": "standalone" } ================================================ FILE: requirements.txt ================================================ prefect == 0.12.4 ================================================ FILE: runtime.txt ================================================ 3.8 ================================================ FILE: src/App.vue ================================================ ================================================ FILE: src/__mocks__/apollo.js ================================================ /* global jest */ export const query = jest.fn() export const mutate = jest.fn() export const Client = jest.fn(() => { return { query: query, mutate: mutate } }) export default Client ================================================ FILE: src/apollo.js ================================================ import { ApolloClient } from '@apollo/client/core' import { HttpLink, from } from '@apollo/client' import { onError } from 'apollo-link-error' import { InMemoryCache } from 'apollo-cache-inmemory' const cache = new InMemoryCache() const errorAfterware = onError( ({ response, operation, graphQLErrors, networkError, forward }) => { if (process.env.NODE_ENV !== 'production') { /* eslint-disable no-console */ console.groupCollapsed( `%c${operation.operationName || 'Unnamed Query'} error`, 'color: #D64292; font-weight:bold;' ) console.log('Operation: ', operation) if (graphQLErrors?.length > 0) { console.group('%cGraphQL Errors', 'color: #CA9800; font-weight:bold;') graphQLErrors?.forEach(error => { console.group( `%c${error.extensions?.code || 'ERROR'}`, 'color: #B11A04; font-weight:bold;' ) console.log(`Message: ${error.message}`) console.log('Full log: ', error) console.groupEnd() }) console.groupEnd() } if (networkError) { console.group('%cNetwork Error', 'color: #CA9800; font-weight:bold;') console.log(networkError) console.log(response) console.log(graphQLErrors) console.groupEnd() } console.groupEnd() /* eslint-enable no-console */ } if (response) { response.errors = null } // Can return Observable.of returned from error link to supress errors // otherwise return forward(operation) // for a single retry of the failure // if (process.env.NODE_ENV !== 'production') return Observable.of() return forward(operation) } ) const link = from([ errorAfterware, new HttpLink({ uri: process.env.VUE_APP_CLOUD_URL }) ]) const options = { cache: cache, link: link, queryDeduplication: false, defaultOptions: { mutate: { errorPolicy: 'all' } } } // // Create apollo client export const Client = name => new ApolloClient({ name: name, version: '1.3', ...options }) ================================================ FILE: src/app.js ================================================ // Base imports import Vue from 'vue' import vuetify from '@/plugins/vuetify' import Router from 'vue-router' import App from '@/App.vue' // Plugins import store from '@/store' import { defaultApolloProvider } from '@/vue-apollo' // eslint-disable-next-line // import okta from '@/plugins/okta' import { createRouter } from '@/router' import VueMeta from 'vue-meta' import LogRocket from 'logrocket' // Filters import duration from '@/filters/duration' import { roundWhole, roundTenths, roundHundredths, roundThousandths, roundTens, roundHundreds, roundThousands } from '@/filters/round' import shorten from '@/filters/shorten' import filterOnePercent from '@/filters/filterOnePercent' import { insertedActions, updatedActions } from '@/directives/disable-read-only' // Functional Components import TransitionHeight from '@/components/Functional/Transition-Height' import TruncatedSpan from '@/components/Functional/TruncatedSpan' import GetCloud from '@/components/GetCloud' import '@/styles/atelier-sulphurpool-light.scss' // Prefect icon font import '@/assets/fonts/prefect-icons/style.scss' // Global and functional styles import '@/styles/global.scss' Vue.config.productionTip = false Vue.config.devtools = true Vue.config.performance = true if ( process.env.VUE_APP_ENVIRONMENT == 'staging' || process.env.VUE_APP_ENVIRONMENT == 'dev' ) { Vue.config.devtools = true Vue.config.performance = true } Vue.directive('disable-read-only-user', { inserted: (el, binding) => insertedActions(el, binding), update: (el, binding) => updatedActions(el, binding) }) // Router Vue.use(Router) // Meta data plugin Vue.use(VueMeta, { refreshOnceOnNavigation: true, debounceWait: 500 }) Vue.prototype.$globalApolloQueries = {} // Vue Global Error Handler Vue.config.errorHandler = function(error, vm, trace) { if (error?.message?.includes("'_observe'")) return if (process.env.NODE_ENV === 'development') // eslint-disable-next-line no-console console.log('Vue Global Error Handler', { error, vm, trace }) LogRocket.captureException(error) LogRocket.log('Related to error', vm, error) } Vue.config.warnHandler = function(error, vm, trace) { if (error?.message?.includes("'_observe'")) return if (process.env.NODE_ENV === 'development') // eslint-disable-next-line no-console console.log('Vue Global Warn Handler', { error, vm, trace }) } // Catch the rest window.onerror = function(error) { if (process.env.NODE_ENV === 'development') // eslint-disable-next-line no-console console.log('Window Error Handler', error) LogRocket.captureException(error) } // Add Filters Vue.filter('duration', duration) Vue.filter('shorten', shorten) Vue.filter('filterOnePercent', filterOnePercent) Vue.filter('roundWhole', roundWhole) Vue.filter('roundTenths', roundTenths) Vue.filter('roundHundredths', roundHundredths) Vue.filter('roundThousandths', roundThousandths) Vue.filter('roundTens', roundTens) Vue.filter('roundHundreds', roundHundreds) Vue.filter('roundThousands', roundThousands) Vue.component('HeightTransition', TransitionHeight) Vue.component('Truncate', TruncatedSpan) Vue.component('GetCloud', GetCloud) // This is a global mixin used to clean up any // references a component may have after it's destroyed. // It's a pretty heavy-handed approach to what we're trying // to accomplish but Vue doesn't seem to be removing all references // itself, which is leading to large memory leaks on data-heavy pages // as Apollo polls and when navigating between pages. // This could be more elegant and may be fixed by upgrading to Vue 3. const blockedProps = [ '$data', '$listeners', 'theme', '$attrs', '$props', 'timeline', 'windowGroup', 'expansionPanel', 'expansionPanels', 'tabsBar', 'listItemGroup', 'btnToggle' ] Vue.mixin({ destroyed() { const prepForGC = () => { try { this.$el?.remove() this.elm = null this.$el = null this.parent = null this.$parent = null this.data = null // this.$data = null // Unsetting this throws internal Vue errors // this.options = null // Unsetting this throws internal Vue errors this.$options = null this.$vnode = null this.listeners = null // this.$listeners = null // Unsetting this throws internal Vue errors this._vnode = null this._watcher = null this._watchers = null this._computedWatchers = null this.$slots = null this.slots = null this.$scopedSlots = null this.scopedSlots = null this.$children = null this.children = null this.store = null this.$store = null // $apollo has no setter so we clear props instead if (this.$apollo) { this.$apollo.vm = null } Object.keys(this).forEach(key => { try { !blockedProps.includes(key) && !(key in this[key]?.$props) && (this[key] = null) } catch { /* */ } }) } catch (e) { if ( process.env.VUE_APP_ENVIRONMENT == 'staging' || process.env.VUE_APP_ENVIRONMENT == 'dev' ) { // eslint-disable-next-line no-console console.error('Error in destroyed garbage collector mixin', e) } } } // If the element has already been removed from the DOM // we run the GC prep method immediately if (!document.body.contains(this.$el)) { prepForGC() return } // Otherwise we can assume there's some sort of transition // on the component and we wait for it to complete // Note: this is obviously rough but Observer methods // were performing poorly. setTimeout(prepForGC, 1500) } }) try { if (navigator?.platform !== 'MacIntel') { document.body.classList.add('not-mac') } } catch { // eslint-disable-next-line no-console console.info('Unable to apply platform-specific scrollbar styles.') } // eslint-disable-next-line no-unused-vars let PrefectUI export const CreatePrefectUI = () => { try { if ( process.env.VUE_APP_LOG_ROCKET_PUBLIC_ID && process.env.VUE_APP_BACKEND === 'CLOUD' && store.getters['auth/user'] ) { LogRocket.identify(store.getters['auth/user'].sub, { name: store.getters['auth/user'].user.fullName, email: store.getters['auth/user'].email }) } } catch (e) { // eslint-disable-next-line no-console console.log(e) } const loader = document.querySelector('div.loading') loader.style.display = 'none' // eslint-disable-next-line no-unused-vars PrefectUI = new Vue({ vuetify, router: createRouter(), store, publicPath: './', apolloProvider: defaultApolloProvider, render: h => h(App) }).$mount('#app') } ================================================ FILE: src/assets/demo-flow/demo-flow.json ================================================ { "name": "Welcome Flow", "type": "prefect.core.flow.Flow", "schedule": null, "parameters": [], "tasks": [ { "name": "Welcome", "retry_delay": null, "type": "prefect.tasks.core.function.FunctionTask", "inputs": {}, "max_retries": 0, "skip_on_upstream_skip": true, "outputs": "typing.Any", "trigger": { "fn": "prefect.triggers.all_successful", "kwargs": {} }, "cache_key": null, "slug": "welcome-task", "tags": [], "auto_generated": false, "cache_for": null, "cache_validator": { "fn": "prefect.engine.cache_validators.never_use", "kwargs": {} }, "timeout": null, "__version__": "0.6.1+310.gc1dc5c0a" } ], "edges": [], "reference_tasks": [], "environment": { "executor": "prefect.engine.executors.LocalExecutor", "executor_kwargs": {}, "__version__": "0.6.1+310.gc1dc5c0a", "type": "RemoteEnvironment" }, "__version__": "0.6.1+310.gc1dc5c0a", "storage": { "prefect_version": "master", "image_name": "flows", "registry_url": "prefecthq", "image_tag": "welcome-flow", "flows": { "Welcome Flow": "/root/.prefect/welcome-flow.prefect" }, "__version__": "0.6.1+310.gc1dc5c0a", "type": "Docker" } } ================================================ FILE: src/assets/fonts/prefect-icons/style.scss ================================================ @import 'variables'; @font-face { font-display: block; font-family: '#{$prefect-font-family}'; font-style: normal; font-weight: normal; // stylelint-disable src: url('#{$prefect-font-path}/#{$prefect-font-family}.eot?higzvn'); src: url('#{$prefect-font-path}/#{$prefect-font-family}.eot?higzvn#iefix') format('embedded-opentype'), url('#{$prefect-font-path}/#{$prefect-font-family}.ttf?higzvn') format('truetype'), url('#{$prefect-font-path}/#{$prefect-font-family}.woff?higzvn') format('woff'), url('#{$prefect-font-path}/#{$prefect-font-family}.svg?higzvn##{$prefect-font-family}') format('svg'); // stylelint-enable } [class^='pi-'], [class*=' pi-'] { /* use !important to prevent issues with browser extensions that change fonts */ font-family: '#{$prefect-font-family}' !important; font-size: 24px; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-style: normal; font-variant: normal; font-weight: normal; line-height: 1rem; text-transform: none; } // stylelint-disable a11y/content-property-no-static-value .pi-agent { &::before { content: $pi-agent; } } .pi-flow-run { &::before { content: $pi-flow-run; } } .pi-flow { &::before { content: $pi-flow; } } .pi-gantt { &::before { content: $pi-gantt; } } .pi-project { &::before { content: $pi-project; } } .pi-kubernetes { &::before { content: $pi-kubernetes; } } .pi-schematic { &::before { content: $pi-schematic; } } .pi-task-run { &::before { content: $pi-task-run; } } .pi-task { &::before { content: $pi-task; } } .pi-lg { font-size: 1.33333em !important; line-height: 0.75em; vertical-align: -0.0667em; } .pi-xs { font-size: 0.75em !important; } .pi-sm { font-size: 0.875em !important; } .pi-1x { font-size: 1em !important; } .pi-2x { font-size: 2em !important; } .pi-3x { font-size: 3em !important; } .pi-4x { font-size: 4em !important; } .pi-5x { font-size: 5em !important; } .pi-6x { font-size: 6em !important; } .pi-7x { font-size: 7em !important; } .pi-8x { font-size: 8em !important; } .pi-9x { font-size: 9em; } .pi-10x { font-size: 10em !important; } .pi-fw { display: inline-block; height: 1em; text-align: center; vertical-align: -0.25em; width: 1.25em; } ================================================ FILE: src/assets/fonts/prefect-icons/variables.scss ================================================ $prefect-font-family: 'prefect-icons' !default; $prefect-font-path: 'fonts' !default; $pi-agent: '\e900'; $pi-flow-run: '\e901'; $pi-flow: '\e902'; $pi-gantt: '\e903'; $pi-kubernetes: '\e908'; $pi-project: '\e904'; $pi-schematic: '\e905'; $pi-task-run: '\e906'; $pi-task: '\e907'; ================================================ FILE: src/auth/authentication.js ================================================ import { OktaAuth } from '@okta/okta-auth-js' const { VUE_APP_PUBLIC_CLIENT_ID, VUE_APP_PUBLIC_ISSUER, VUE_APP_ENVIRONMENT } = process.env const storageTypes = ['memory', 'sessionStorage', 'cookie', 'localStorage'] export const authClient = new OktaAuth({ clientId: VUE_APP_PUBLIC_CLIENT_ID, issuer: VUE_APP_PUBLIC_ISSUER, redirectUri: window.location.origin, postLogoutRedirectUri: window.location.origin + '/logout', scopes: ['openid', 'profile', 'email'], testing: { disableHttpsCheck: VUE_APP_ENVIRONMENT !== 'production' }, tokenManager: { autoRenew: true }, pkce: OktaAuth.features.isPKCESupported(), storageManager: { token: { storageType: 'memory', storageTypes: storageTypes, useMultipleCookies: true }, cache: { storageType: 'memory', storageTypes: storageTypes }, transaction: { storageType: 'sessionStorage', storageTypes: storageTypes } } }) authClient.start() export const authenticate = async () => { const isLoginRedirect = await authClient.isLoginRedirect() const redirectRoute = sessionStorage.getItem('redirectRoute') if (isLoginRedirect) { const { tokens } = await authClient.token.parseFromUrl() authClient.tokenManager.setTokens(tokens) if (redirectRoute) { history.replaceState(null, null, redirectRoute) sessionStorage.removeItem('redirectRoute') } return tokens } else { if (window.location?.pathname && !redirectRoute) { sessionStorage.setItem( 'redirectRoute', window.location.pathname + window.location.search ) } } const tokens = await authClient.tokenManager.getTokens() if (tokens?.idToken) { if (authClient.tokenManager.hasExpired(tokens.idToken)) { try { const idToken = await authClient.tokenManager.renew('idToken') tokens.idToken = idToken } catch { return await authClient.token.getWithRedirect({ responseType: ['token', 'id_token'] }) } } return tokens } await authClient.token.getWithRedirect({ responseType: ['token', 'id_token'] }) } ================================================ FILE: src/auth/authorization.js ================================================ import { Client } from '@/apollo.js' const client = Client('authorization') const headers = { 'X-PREFECT-UI': true, 'X-Backend': 'cloud' } export const authorize = async idToken => { if (!idToken) { throw new Error('No ID token passed to authorize') } const res = await client.mutate({ mutation: require('@/graphql/log-in.gql'), variables: { input: { id_token: idToken } }, context: { headers: headers }, errorPolicy: 'all', fetchPolicy: 'no-cache' }) return res?.data?.log_in } export const refreshTokens = async (accessToken, refreshToken) => { if (!accessToken || !refreshToken) { throw new Error('No access or refresh token passed to refreshTokens') } const res = await client.mutate({ mutation: require('@/graphql/refresh-token.gql'), variables: { input: { access_token: accessToken } }, context: { headers: { ...headers, authorization: `Bearer ${refreshToken}` } }, fetchPolicy: 'no-cache' }) return res?.data?.refresh_token } export const authorizeTenant = async (accessToken, tenantId) => { if (!accessToken || !tenantId) { throw new Error('No access token or no tenant id passed to authorizeTenant') } const res = await client.mutate({ mutation: require('@/graphql/Tenant/tenant-token.gql'), variables: { tenantId: tenantId }, context: { headers: { ...headers, authorization: `Bearer ${accessToken}` } }, fetchPolicy: 'no-cache' }) return res?.data?.switch_tenant } export const revokeTokens = async (accessToken, refreshToken) => { if (!accessToken) { throw new Error('No access token passed to revokeToken') } const res = await client.mutate({ mutation: require('@/graphql/log-out.gql'), variables: { input: { access_token: accessToken } }, context: { headers: { ...headers, authorization: `Bearer ${refreshToken}` } }, errorPolicy: 'all', fetchPolicy: 'no-cache' }) return res?.data?.success } ================================================ FILE: src/auth/index.js ================================================ import { promiseChannel } from '@/workers/util/worker-interface.js' import { authenticate, authClient } from '@/auth/authentication.js' import { authorize, authorizeTenant, refreshTokens, revokeTokens } from '@/auth/authorization.js' import store from '@/store' import LogRocket from 'logrocket' import jwt_decode from 'jwt-decode' let TokenWorker if (typeof window.SharedWorker !== 'undefined') { // // Initializes the shared service worker that handles token refresh TokenWorker = new SharedWorker('@/workers/auth.worker.js', { type: 'module' }) } else { // eslint-disable-next-line no-console console.log( "Shared service worker couldn't be registered, falling back to legacy auth pattern." ) // workers aren't supported; we'll fall back to the legacy auth pattern } if (TokenWorker?.port) { TokenWorker.port.onmessage = async e => { const type = e.data?.type const payload = e.data?.payload // console.log(type, payload) switch (type) { case 'idToken': commitTokens({ idToken: payload }) break case 'authorizationToken': commitTokens({ authorizationTokens: payload }) break case 'clear': authClient.tokenManager.clear() unsetTokens() authClient.signOut() break case 'logout': authClient.signOut() unsetTokens() break case 'switch-tenant': if ( store.getters['tenant/tenant']?.id !== payload.tenantId && !store.getters['tenant/isLoadingTenant'] && !window.location.pathname?.includes('team-switched') ) { window.location.href = '/team-switched' } else { if (process.env.VUE_APP_BACKEND === 'CLOUD') { store.dispatch('license/getLicense') } } break case 'accessDenied': await authClient.signOut({ clientId: process.env.VUE_APP_PUBLIC_CLIENT_ID, idToken: payload, postLogoutRedirectUri: window.location.origin + '/access-denied?reason=invalid_sso' }) break case 'console': // This should only be used for debugging // eslint-disable-next-line no-console // console.log('TokenWorker console', payload) LogRocket.track('TokenWorker console', payload) break case 'error': // eslint-disable-next-line no-console console.log('TokenWorker error', payload) LogRocket.captureException(payload) break default: // This should only be used for debugging // eslint-disable-next-line no-console // console.log('default', payload) LogRocket.track('TokenWorker Message', payload) break } } TokenWorker.onerror = e => { // eslint-disable-next-line no-console console.log('Error message received from Token Worker', e) LogRocket.captureException(e) } TokenWorker.port.start() } export { TokenWorker } export const commitTokens = tokens => { if (!tokens) return if (tokens.idToken) { const idToken = tokens.idToken store.commit('auth/idToken', idToken.idToken) store.commit('auth/idTokenExpiry', idToken.expiresAt * 1000) store.commit('auth/user', idToken.claims) store.commit('user/setOktaUser', idToken.claims) } if (tokens.authorizationTokens) { const authToken = tokens.authorizationTokens.access_token const expiry = new Date(tokens.authorizationTokens.expires_at).getTime() const refreshToken = tokens.authorizationTokens.refresh_token store.commit('auth/authorizationToken', authToken) store.commit('auth/refreshToken', refreshToken) store.commit('auth/authorizationTokenExpiry', expiry) store.commit('auth/refreshTokenExpiry', jwt_decode(refreshToken).exp * 1000) } } export const unsetTokens = () => { store.commit('auth/unsetIdToken') store.commit('auth/unsetIdTokenExpiry') store.commit('auth/unsetUser') store.commit('auth/unsetAuthorizationToken') store.commit('auth/unsetAuthorizationTokenExpiry') store.commit('auth/unsetRefreshToken') store.commit('auth/unsetRefreshTokenExpiry') } let refreshTimeout const refresh = tokens => { clearTimeout(refreshTimeout) const expiration = new Date(tokens.expires_at) const timeout = ((expiration - Date.now()) * 3) / 4 refreshTimeout = setTimeout(async () => { const refreshedTokens = await refreshTokens( tokens.access_token, tokens.refresh_token ) commitTokens({ authorizationTokens: refreshedTokens }) refresh(refreshedTokens) }, timeout || 15000) } authClient.tokenManager.on('renewed', (key, idToken) => { if (key === 'idToken' && idToken) { commitTokens({ idToken: idToken }) if (TokenWorker) { TokenWorker.port.postMessage({ type: 'idToken', payload: idToken }) } } }) export const login = async (fallback = false) => { // try getting a token from the service worker // if we have a service worker, ping that for a token // otherwise we go through the okta login process directly let idToken, authorizationTokens, source try { if (TokenWorker && !fallback) { idToken = await promiseChannel(TokenWorker, 'login') source = 'TokenWorker' if (!idToken || idToken.expiresAt * 1000 < Date.now()) { const loginResponse = await authenticate() idToken = loginResponse?.idToken source = 'AuthClient <> TokenWorker' TokenWorker.port.postMessage({ type: 'idToken', payload: idToken }) } if (idToken && (idToken.idToken || idToken.value)) { authorizationTokens = await promiseChannel( TokenWorker, 'authorize', idToken.idToken || idToken.value ) } } else { const loginResponse = await authenticate() source = 'AuthClient <> InMemory' idToken = loginResponse?.idToken if (idToken && (idToken.idToken || idToken.value)) { authorizationTokens = await authorize(idToken.idToken || idToken.value) refresh(authorizationTokens) } } } catch (e) { // eslint-disable-next-line no-console console.error('Login error', e) LogRocket.captureException(e) } if (idToken && authorizationTokens) { return { idToken: idToken, authorizationTokens: authorizationTokens, source: source } } else { // If this session fails to get idTokens, we call the clear method // to post messages to all other sessions that they need to sign out // This also clears all stored tokens for these sessions if (TokenWorker) { TokenWorker.port.postMessage({ type: 'clear' }) } } } export const switchTenant = async tenantId => { let authorizationTokens if (TokenWorker) { authorizationTokens = await promiseChannel( TokenWorker, 'switch-tenant', tenantId ) } else { authorizationTokens = await authorizeTenant( store.getters['auth/authorizationToken'], tenantId ) } return { authorizationTokens: authorizationTokens } } export const logout = async () => { await revokeTokens( store.getters['auth/authorizationToken'], store.getters['auth/refreshToken'] ) if (TokenWorker) { TokenWorker.port.postMessage({ type: 'logout' }) } else { try { await authClient.signOut() unsetTokens() } catch (e) { // eslint-disable-next-line no-console console.log(e) LogRocket.captureException(e) } } } ================================================ FILE: src/components/AcceptConfirmInputRow.vue ================================================ ================================================ FILE: src/components/Alert.vue ================================================ ================================================ FILE: src/components/Artifacts/Artifact-NodeTree.vue ================================================ ================================================ FILE: src/components/Artifacts/Artifact.vue ================================================ ================================================ FILE: src/components/Artifacts/Artifacts.vue ================================================ ================================================ FILE: src/components/BreadCrumbs.vue ================================================ ================================================ FILE: src/components/CancelButton.vue ================================================ ================================================ FILE: src/components/Card-Title.vue ================================================ ================================================ FILE: src/components/ChartCard/ChartCard.vue ================================================ ================================================ FILE: src/components/ChartCard/ChartCardHeader-Ring.vue ================================================ ================================================ FILE: src/components/ChartCard/ChartCardHeader-Simple.vue ================================================ ================================================ FILE: src/components/CloudHookForm.vue ================================================ ================================================ FILE: src/components/ConcurrencyInfo.vue ================================================ ================================================ FILE: src/components/ConfirmDialog.vue ================================================ ================================================ FILE: src/components/CustomInputs/BaseCodeTextarea.vue ================================================ ================================================ FILE: src/components/CustomInputs/BaseDictInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/CheckboxDictInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/CodeInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/DictInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/DictInput2.vue ================================================ ================================================ FILE: src/components/CustomInputs/Highlight.vue ================================================ ================================================ FILE: src/components/CustomInputs/JsonInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/JsonInput2.vue ================================================ ================================================ FILE: src/components/CustomInputs/KeyValueInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/KeyValueTypeInputs/ArrayInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/KeyValueTypeInputs/BooleanInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/KeyValueTypeInputs/DateInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/KeyValueTypeInputs/JsonParsingInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/KeyValueTypeInputs/NullInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/KeyValueTypeInputs/NumberInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/KeyValueTypeInputs/ObjectInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/KeyValueTypeInputs/StringInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/KeyValueTypeInputs/index.js ================================================ import NullInput from '@/components/CustomInputs/KeyValueTypeInputs/NullInput' import JsonParsingInput from '@/components/CustomInputs/KeyValueTypeInputs/JsonParsingInput' import BooleanInput from '@/components/CustomInputs/KeyValueTypeInputs/BooleanInput' import NumberInput from '@/components/CustomInputs/KeyValueTypeInputs/NumberInput' import StringInput from '@/components/CustomInputs/KeyValueTypeInputs/StringInput' import ObjectInput from '@/components/CustomInputs/KeyValueTypeInputs/ObjectInput' import ArrayInput from '@/components/CustomInputs/KeyValueTypeInputs/ArrayInput' import DateInput from '@/components/CustomInputs/KeyValueTypeInputs/DateInput' export default { NullInput, JsonParsingInput, BooleanInput, NumberInput, StringInput, ObjectInput, ArrayInput, DateInput } ================================================ FILE: src/components/CustomInputs/ListInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/MultiLineInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/ResettableWrapper.vue ================================================ ================================================ FILE: src/components/CustomInputs/YamlInput.vue ================================================ ================================================ FILE: src/components/CustomInputs/YamlInput2.vue ================================================ ================================================ FILE: src/components/CustomInputs/readonlyProps.js ================================================ const readonlyProps = { readonlyKey: { type: Boolean, required: false, default: false }, readonlyType: { type: Boolean, required: false, default: false }, readonlyValue: { type: Boolean, required: false, default: false }, disableAdd: { type: Boolean, required: false, default: false }, disableRemove: { type: Boolean, required: false, default: false } } export default readonlyProps ================================================ FILE: src/components/DateTime.vue ================================================ ================================================ FILE: src/components/DeleteFlowButton.vue ================================================ ================================================ FILE: src/components/DurationSpan.vue ================================================ ================================================ FILE: src/components/EditableTextField.vue ================================================ ================================================ FILE: src/components/EmphasizedIcon.vue ================================================ ================================================ FILE: src/components/EndOfLifeBanner.vue ================================================ ================================================ FILE: src/components/ExternalLink.vue ================================================ ================================================ FILE: src/components/Feedback.vue ================================================ ================================================ FILE: src/components/Footer.vue ================================================ ================================================ FILE: src/components/FullPagination.vue ================================================ ================================================ FILE: src/components/Functional/CronClock.vue ================================================ ================================================ FILE: src/components/Functional/IntervalClock.vue ================================================ ================================================ FILE: src/components/Functional/Transition-Height.js ================================================ import Velocity from 'velocity-animate' export default { functional: true, render: function(createElement, context) { const data = { props: { name: 'HeightTransition', mode: 'out-in' }, on: { beforeEnter: function(el) { el.style['max-height'] = 0 el.style.opacity = 0 }, enter: function(el, done) { // This will try to find a parent component // whose height isn't set to auto, up to 2 levels // above the transitioning components let parent = getComputedStyle(el.parentElement)?.height == 'auto' ? el.parentElement.parentElement : el.parentElement let elHeight = getComputedStyle(el).height let height = parseFloat(getComputedStyle(parent).height) + parseFloat(elHeight) + 'px' Velocity(parent, { 'max-height': height }, { complete: done }) Velocity( el, { opacity: 1, 'max-height': elHeight }, { complete: done } ) }, leave: function(el, done) { let delay = el.dataset.index * 150 let parent = getComputedStyle(el.parentElement)?.height == 'auto' ? el.parentElement.parentElement : el.parentElement let height = parseFloat(getComputedStyle(parent).height) - parseFloat(getComputedStyle(el).height) + 'px' Velocity(el, { opacity: 0, 'max-height': 0 }, { complete: done }) setTimeout(function() { Velocity(parent, { 'max-height': height }, { complete: done }) }, delay) } } } return createElement('transition-group', data, context.children) } } ================================================ FILE: src/components/Functional/TruncatedSpan.vue ================================================ ================================================ FILE: src/components/GetCloud.vue ================================================ ================================================ FILE: src/components/GlobalSearchBar/GlobalSearch.vue ================================================ ================================================ FILE: src/components/GlobalSearchBar/GlobalSearchIcon.vue ================================================ ================================================ FILE: src/components/GlobalSearchBar/GlobalSearchResult.vue ================================================ ================================================ FILE: src/components/GlobalSearchBar/MResult.vue ================================================ ================================================ FILE: src/components/HavingTrouble.vue ================================================ ================================================ FILE: src/components/HeartbeatTimeline.vue ================================================ ================================================ FILE: src/components/Icons/Hashicorp.vue ================================================ ================================================ FILE: src/components/Icons/Nomad.vue ================================================ ================================================ FILE: src/components/Icons/PagerDuty.vue ================================================ ================================================ FILE: src/components/Icons/Prefect.vue ================================================ ================================================ FILE: src/components/Icons/mr.vue ================================================ ================================================ FILE: src/components/Icons/newPagerDuty.vue ================================================ ================================================ FILE: src/components/Icons/twilio.vue ================================================ ================================================ FILE: src/components/KeyValueTable.vue ================================================ ================================================ FILE: src/components/Label.vue ================================================ ================================================ FILE: src/components/LabelEdit.vue ================================================ ================================================ FILE: src/components/LabelWarning.vue ================================================ ================================================ FILE: src/components/LastTenRuns.vue ================================================ ================================================ FILE: src/components/License/ChangePlanDialog.vue ================================================ ================================================ FILE: src/components/License/UpgradeAlert.vue ================================================ ================================================ FILE: src/components/LogsCard/DownloadMenu.vue ================================================ ================================================ FILE: src/components/LogsCard/FilterMenu.vue ================================================ ================================================ FILE: src/components/LogsCard/LogRow.vue ================================================ ================================================ FILE: src/components/LogsCard/LogsCard.vue ================================================ ================================================ FILE: src/components/MenuTooltip.vue ================================================ ================================================ FILE: src/components/Nav/ApplicationNav.vue ================================================ ================================================ FILE: src/components/Nav/ChatLauncher.vue ================================================ ================================================ FILE: src/components/Nav/ConnectionMenu.vue ================================================ ================================================ FILE: src/components/Nav/CurrentTime.vue ================================================ ================================================ FILE: src/components/Nav/HelpMenu.vue ================================================ ================================================ FILE: src/components/Nav/Links.vue ================================================ ================================================ FILE: src/components/Nav/MenuLink.vue ================================================ ================================================ FILE: src/components/Nav/NotificationMenu.vue ================================================ ================================================ FILE: src/components/Nav/TeamMenu.vue ================================================ ================================================ FILE: src/components/Nav/TeamSideNav.vue ================================================ ================================================ FILE: src/components/Nav/TeamSideNavButton.vue ================================================ ================================================ FILE: src/components/Nav/TeamSwitcher.vue ================================================ ================================================ FILE: src/components/Nav/UserMenu.vue ================================================ ================================================ FILE: src/components/NavTabBar.vue ================================================ ================================================ FILE: src/components/Parameters.vue ================================================ ================================================ FILE: src/components/ParametersForm.vue ================================================ ================================================ FILE: src/components/PaymentCard.vue ================================================ ================================================ FILE: src/components/PlanCard.vue ================================================ ================================================ FILE: src/components/Plans/CardDetails.vue ================================================ ================================================ FILE: src/components/Plans/Enterprise.vue ================================================ ================================================ FILE: src/components/Plans/PlanSelectionForm.vue ================================================ ================================================ FILE: src/components/Plans/Standard.vue ================================================ ================================================ FILE: src/components/Plans/Starter.vue ================================================ ================================================ FILE: src/components/PrefectSchedule.vue ================================================ ================================================ FILE: src/components/ResumeButton.vue ================================================ ================================================ FILE: src/components/RunConfig/ArgumentHeading.vue ================================================ ================================================ FILE: src/components/RunConfig/ArgumentInput.vue ================================================ ================================================ FILE: src/components/RunConfig/ArgumentReference.vue ================================================ ================================================ FILE: src/components/RunConfig/DateTimeSelector.vue ================================================ ================================================ FILE: src/components/RunConfig/DockerRunForm.vue ================================================ ================================================ FILE: src/components/RunConfig/EcsRunForm.vue ================================================ ================================================ FILE: src/components/RunConfig/KubernetesRunForm.vue ================================================ ================================================ FILE: src/components/RunConfig/LocalRunForm.vue ================================================ ================================================ FILE: src/components/RunConfig/RunConfig.vue ================================================ ================================================ FILE: src/components/RunConfig/RunConfigTypeButton.vue ================================================ ================================================ FILE: src/components/RunConfig/RunConfigTypeSelect.vue ================================================ ================================================ FILE: src/components/RunConfig/UniversalRunForm.vue ================================================ ================================================ FILE: src/components/RunConfig/adjectives.js ================================================ // Adapted from the coolname Python project: https://github.com/alexanderlukanin13/coolname export const adjectives = [ 'acrid', 'ambrosial', 'amorphous', 'armored', 'aromatic', 'bald', 'blazing', 'boisterous', 'bouncy', 'brawny', 'bulky', 'camouflaged', 'caped', 'elastic', 'ethereal', 'feathered', 'fiery', 'fluffy', 'foamy', 'fragrant', 'furry', 'fuzzy', 'glaring', 'hairy', 'heavy', 'hissing', 'horned', 'icy', 'imaginary', 'invisible', 'lean', 'loud', 'loutish', 'lumpy', 'lush', 'masked', 'meaty', 'messy', 'misty', 'nebulous', 'noisy', 'nondescript', 'organic', 'purring', 'quiet', 'quirky', 'radiant', 'roaring', 'ruddy', 'rustling', 'screeching', 'shaggy', 'shapeless', 'shiny', 'silent', 'silky', 'singing', 'skinny', 'smooth', 'soft', 'spicy', 'spiked', 'statuesque', 'sticky', 'tacky', 'tall', 'tangible', 'tentacled', 'thundering', 'venomous', 'warm', 'weightless', 'whispering', 'winged', 'wooden', 'adorable', 'affable', 'amazing', 'amiable', 'attractive', 'beautiful', 'calm', 'charming', 'cherubic', 'classic', 'classy', 'convivial', 'cordial', 'cuddly', 'curly', 'cute', 'debonair', 'elegant', 'famous', 'fresh', 'friendly', 'funny', 'gorgeous', 'graceful', 'gregarious', 'grinning', 'handsome', 'hilarious', 'hot', 'interesting', 'kind', 'laughing', 'lovely', 'meek', 'mellow', 'merciful', 'neat', 'nifty', 'notorious', 'poetic', 'pretty', 'refined', 'refreshing', 'smiling', 'sociable', 'spiffy', 'stylish', 'sweet', 'tactful', 'whimsical', 'abiding', 'accurate', 'adamant', 'adaptable', 'adventurous', 'alluring', 'aloof', 'ambitious', 'amusing', 'annoying', 'arrogant', 'aspiring', 'belligerent', 'benign', 'berserk', 'benevolent', 'bold', 'brave', 'cheerful', 'chirpy', 'cocky', 'congenial', 'courageous', 'cryptic', 'curious', 'daft', 'dainty', 'daring', 'defiant', 'delicate', 'delightful', 'determined', 'devout', 'didactic', 'diligent', 'discreet', 'dramatic', 'dynamic', 'eager', 'eccentric', 'elated', 'encouraging', 'enigmatic', 'enthusiastic', 'evasive', 'faithful', 'fair', 'fanatic', 'fearless', 'fervent', 'festive', 'fierce', 'fine', 'free', 'gabby', 'garrulous', 'gentle', 'glistening', 'greedy', 'grumpy', 'happy', 'honest', 'hopeful', 'hospitable', 'impetuous', 'independent', 'industrious', 'innocent', 'intrepid', 'jolly', 'jovial', 'just', 'lively', 'loose', 'loyal', 'merry', 'modest', 'mysterious', 'nice', 'obedient', 'optimistic', 'orthodox', 'outgoing', 'outrageous', 'overjoyed', 'passionate', 'perky', 'placid', 'polite', 'positive', 'proud', 'prudent', 'puzzling', 'quixotic', 'quizzical', 'rebel', 'resolute', 'rampant', 'righteous', 'romantic', 'rough', 'rousing', 'sassy', 'satisfied', 'sly', 'sincere', 'snobbish', 'spirited', 'spry', 'stalwart', 'stirring', 'swinging', 'tasteful', 'thankful', 'tidy', 'tremendous', 'truthful', 'unselfish', 'upbeat', 'uppish', 'valiant', 'vehement', 'vengeful', 'vigorous', 'vivacious', 'zealous', 'zippy', 'able', 'adept', 'analytic', 'astute', 'attentive', 'brainy', 'busy', 'calculating', 'capable', 'careful', 'cautious', 'certain', 'clever', 'competent', 'conscious', 'cooperative', 'crafty', 'crazy', 'cunning', 'daffy', 'devious', 'discerning', 'efficient', 'expert', 'functional', 'gifted', 'helpful', 'enlightened', 'idealistic', 'impartial', 'industrious', 'ingenious', 'inquisitive', 'intelligent', 'inventive', 'judicious', 'keen', 'knowing', 'literate', 'logical', 'masterful', 'mindful', 'nonchalant', 'observant', 'omniscient', 'poised', 'practical', 'pragmatic', 'proficient', 'provocative', 'qualified', 'radical', 'rational', 'realistic', 'resourceful', 'savvy', 'skeptical', 'sensible', 'serious', 'shrewd', 'skilled', 'slick', 'slim', 'smart', 'sophisticated', 'stoic', 'succinct', 'talented', 'thoughtful', 'tricky', 'unbiased', 'uptight', 'versatile', 'versed', 'visionary', 'wise', 'witty', 'accelerated', 'active', 'agile', 'athletic', 'dashing', 'deft', 'dexterous', 'energetic', 'fast', 'frisky', 'hasty', 'hypersonic', 'meteoric', 'mighty', 'muscular', 'nimble', 'powerful', 'prompt', 'quick', 'rapid', 'resilient', 'robust', 'rugged', 'solid', 'speedy', 'steadfast', 'steady', 'strong', 'sturdy', 'tireless', 'tough', 'unyielding', 'rich', 'wealthy', 'meticulous', 'precise', 'rigorous', 'scrupulous', 'strict', 'airborne', 'burrowing', 'crouching', 'flying', 'hidden', 'hopping', 'jumping', 'lurking', 'tunneling', 'warping', 'aboriginal', 'amphibian', 'aquatic', 'arboreal', 'polar', 'terrestrial', 'urban', 'accomplished', 'astonishing', 'authentic', 'awesome', 'delectable', 'excellent', 'exotic', 'exuberant', 'fabulous', 'fantastic', 'fascinating', 'flawless', 'fortunate', 'glorious', 'groovy', 'honored', 'illustrious', 'imposing', 'important', 'impressive', 'incredible', 'invaluable', 'majestic', 'magnificent', 'marvellous', 'monumental', 'perfect', 'phenomenal', 'pompous', 'precious', 'premium', 'private', 'remarkable', 'spectacular', 'splendid', 'successful', 'wonderful', 'wondrous', 'offbeat', 'original', 'outstanding', 'quaint', 'unique', 'ancient', 'antique', 'prehistoric', 'primitive', 'abstract', 'acoustic', 'angelic', 'arcane', 'archetypal', 'augmented', 'auspicious', 'axiomatic', 'beneficial', 'bipedal', 'bizarre', 'complex', 'dancing', 'dangerous', 'divergent', 'economic', 'electric', 'elite', 'eminent', 'enchanted', 'esoteric', 'finicky', 'fractal', 'futuristic', 'gainful', 'hallowed', 'heavenly', 'holistic', 'hungry', 'hypnotic', 'hysterical', 'illegal', 'imperial', 'imported', 'impossible', 'inescapable', 'liberal', 'ludicrous', 'lyrical', 'magnetic', 'manipulative', 'mature', 'military', 'macho', 'married', 'melodic', 'natural', 'naughty', 'nocturnal', 'nostalgic', 'optimal', 'pastoral', 'peculiar', 'piquant', 'pristine', 'prophetic', 'psychedelic', 'quantum', 'rare', 'real', 'secret', 'simple', 'spectral', 'spiritual', 'stereotyped', 'stimulating', 'straight', 'strange', 'tested', 'therapeutic', 'true', 'ubiquitous', 'uncovered', 'unnatural', 'utopian', 'vagabond', 'vague', 'vegan', 'victorious', 'vigilant', 'voracious', 'wakeful', 'wandering', 'watchful', 'wild', 'bright', 'brilliant', 'colorful', 'crystal', 'dark', 'dazzling', 'fluorescent', 'glittering', 'glossy', 'gleaming', 'light', 'mottled', 'neon', 'opalescent', 'pastel', 'smoky', 'sparkling', 'spotted', 'striped', 'translucent', 'transparent', 'vivid' ] ================================================ FILE: src/components/RunConfig/animals.js ================================================ // Adapted from the coolname Python project: https://github.com/alexanderlukanin13/coolname export const animals = [ 'earthworm', 'leech', 'worm', 'scorpion', 'spider', 'tarantula', 'barnacle', 'crab', 'crayfish', 'lobster', 'pillbug', 'prawn', 'shrimp', 'ant', 'bee', 'beetle', 'bug', 'bumblebee', 'butterfly', 'caterpillar', 'cicada', 'cricket', 'dragonfly', 'earwig', 'firefly', 'grasshopper', 'honeybee', 'hornet', 'inchworm', 'ladybug', 'locust', 'mantis', 'mayfly', 'mosquito', 'moth', 'sawfly', 'silkworm', 'termite', 'wasp', 'woodlouse', 'centipede', 'millipede', 'pronghorn', 'antelope', 'bison', 'buffalo', 'bull', 'chamois', 'cow', 'gazelle', 'gaur', 'goat', 'ibex', 'impala', 'kudu', 'markhor', 'mouflon', 'muskox', 'nyala', 'sheep', 'wildebeest', 'yak', 'zebu', 'alpaca', 'camel', 'llama', 'vicugna', 'caribou', 'chital', 'deer', 'elk', 'moose', 'pudu', 'reindeer', 'sambar', 'wapiti', 'beluga', 'dolphin', 'narwhal', 'orca', 'porpoise', 'whale', 'donkey', 'horse', 'stallion', 'zebra', 'giraffe', 'okapi', 'hippo', 'rhino', 'boar', 'hog', 'pig', 'swine', 'warthog', 'peccary', 'buzzard', 'eagle', 'goshawk', 'harrier', 'hawk', 'vulture', 'duck', 'goose', 'swan', 'teal', 'bird', 'hummingbird', 'swift', 'kiwi', 'potoo', 'seriema', 'cassowary', 'emu', 'condor', 'auk', 'avocet', 'guillemot', 'kittiwake', 'puffin', 'seagull', 'skua', 'stork', 'dodo', 'dove', 'pigeon', 'kingfisher', 'tody', 'bustard', 'coua', 'coucal', 'cuckoo', 'koel', 'malkoha', 'roadrunner', 'kagu', 'caracara', 'falcon', 'kestrel', 'chachalaca', 'chicken', 'curassow', 'grouse', 'guan', 'junglefowl', 'partridge', 'peacock', 'pheasant', 'quail', 'rooster', 'turkey', 'loon', 'coot', 'crane', 'turaco', 'hoatzin', 'bullfinch', 'crow', 'jackdaw', 'jaybird', 'finch', 'lyrebird', 'magpie', 'myna', 'nightingale', 'nuthatch', 'oriole', 'oxpecker', 'raven', 'robin', 'rook', 'skylark', 'sparrow', 'starling', 'swallow', 'waxbill', 'wren', 'heron', 'ibis', 'jacamar', 'piculet', 'toucan', 'toucanet', 'woodpecker', 'flamingo', 'grebe', 'albatross', 'fulmar', 'petrel', 'spoonbill', 'ara', 'cockatoo', 'kakapo', 'lorikeet', 'macaw', 'parakeet', 'parrot', 'penguin', 'ostrich', 'boobook', 'owl', 'cormorant', 'frigatebird', 'pelican', 'quetzal', 'trogon', 'axolotl', 'bullfrog', 'frog', 'newt', 'salamander', 'toad', 'angelfish', 'barracuda', 'carp', 'catfish', 'dogfish', 'goldfish', 'guppy', 'eel', 'flounder', 'herring', 'lionfish', 'mackerel', 'oarfish', 'perch', 'salmon', 'seahorse', 'sturgeon', 'sunfish', 'tench', 'trout', 'tuna', 'wrasse', 'sawfish', 'shark', 'stingray', 'jellyfish', 'alligator', 'caiman', 'crocodile', 'gharial', 'starfish', 'urchin', 'hedgehog', 'coyote', 'dingo', 'dog', 'fennec', 'fox', 'hound', 'jackal', 'tanuki', 'wolf', 'bobcat', 'caracal', 'cat', 'cougar', 'jaguar', 'jaguarundi', 'leopard', 'lion', 'lynx', 'manul', 'ocelot', 'panther', 'puma', 'serval', 'smilodon', 'tiger', 'wildcat', 'aardwolf', 'binturong', 'cheetah', 'civet', 'fossa', 'hyena', 'meerkat', 'mongoose', 'badger', 'coati', 'ermine', 'ferret', 'marten', 'mink', 'otter', 'polecat', 'skunk', 'stoat', 'weasel', 'wolverine', 'seal', 'walrus', 'raccoon', 'ringtail', 'bear', 'panda', 'bat', 'armadillo', 'elephant', 'mammoth', 'mastodon', 'mole', 'hyrax', 'bandicoot', 'bettong', 'cuscus', 'kangaroo', 'koala', 'numbat', 'quokka', 'quoll', 'wallaby', 'wombat', 'echidna', 'platypus', 'tapir', 'anteater', 'sloth', 'agouti', 'capybara', 'chinchilla', 'chipmunk', 'degu', 'dormouse', 'gerbil', 'gopher', 'groundhog', 'jackrabbit', 'jerboa', 'hamster', 'hare', 'lemming', 'marmot', 'mouse', 'muskrat', 'porcupine', 'rabbit', 'rat', 'squirrel', 'vole', 'ape', 'baboon', 'bonobo', 'capuchin', 'chimpanzee', 'galago', 'gibbon', 'gorilla', 'lemur', 'lori', 'macaque', 'mandrill', 'marmoset', 'monkey', 'orangutan', 'tamarin', 'tarsier', 'uakari', 'dugong', 'manatee', 'shrew', 'aardwark', 'clam', 'cockle', 'mussel', 'oyster', 'scallop', 'shellfish', 'ammonite', 'cuttlefish', 'nautilus', 'octopus', 'squid', 'limpet', 'slug', 'snail', 'sponge', 'tuatara', 'agama', 'chameleon', 'dragon', 'gecko', 'iguana', 'lizard', 'pogona', 'skink', 'adder', 'anaconda', 'asp', 'boa', 'cobra', 'copperhead', 'mamba', 'python', 'rattlesnake', 'sidewinder', 'snake', 'taipan', 'viper', 'tortoise', 'turtle', 'dinosaur', 'raptor', 'mushroom' ] ================================================ FILE: src/components/RunStateTooltip.vue ================================================ ================================================ FILE: src/components/ScheduleToggle.vue ================================================ ================================================ FILE: src/components/Schematics/Legend.vue ================================================ ================================================ FILE: src/components/Schematics/Preview-Dynamic.vue ================================================ ================================================ FILE: src/components/Schematics/Preview-SearchResult.vue ================================================ ================================================ FILE: src/components/Schematics/Preview-Static.vue ================================================ ================================================ FILE: src/components/Schematics/Preview-Tile.vue ================================================ ================================================ FILE: src/components/Schematics/Schematic-Flow.vue ================================================ ================================================ FILE: src/components/Schematics/Schematic-Node.vue ================================================ ================================================ FILE: src/components/Schematics/Tooltip.vue ================================================ ================================================ FILE: src/components/SetStateDialog.vue ================================================ ================================================ FILE: src/components/Snackbars/Snackbars.vue ================================================ ================================================ FILE: src/components/SupportBanner.vue ================================================ ================================================ FILE: src/components/SystemActions/CancelAll.vue ================================================ ================================================ FILE: src/components/SystemActions/ClearLate.vue ================================================ ================================================ FILE: src/components/SystemActions/WorkQueue.vue ================================================ ================================================ FILE: src/components/TaskRunMenu.vue ================================================ ================================================ FILE: src/components/TaskRunTooltip.vue ================================================ ================================================ FILE: src/components/TeamListItem.vue ================================================ ================================================ FILE: src/components/TimelineTooltip.vue ================================================ ================================================ FILE: src/components/Tree/Tree.vue ================================================ ================================================ FILE: src/components/TutorialBanner.vue ================================================ ================================================ FILE: src/components/UpgradeBadge.vue ================================================ ================================================ FILE: src/components/Visualizations/BarChart.vue ================================================ ================================================ FILE: src/components/Visualizations/RingChart.vue ================================================ ================================================ FILE: src/components/Visualizations/StackedLineChart.vue ================================================ ================================================ FILE: src/components/Visualizations/Timeline/Bar.js ================================================ ================================================ FILE: src/components/Visualizations/Timeline.vue ================================================ ================================================ FILE: src/components/WorkQueueBanner.vue ================================================ ================================================ FILE: src/directives/disable-read-only.js ================================================ import store from '@/store' export const insertedActions = (el, binding) => { //checks again after all data loads (for component level disabling) const readOnly = store.getters['tenant/role'] === 'READ_ONLY_USER' if (readOnly || binding.value) { if (el.classList.contains('blue')) { el.classList.remove('blue') el.classList.remove('white--text') el.classList.add('needBlue') } if (el.classList.contains('primary')) { el.classList.remove('primary') el.classList.add('needPrimary') } if (el.style.color === 'primary') { el.classList.add('needPrimary') } el.disabled = true el.style.color = 'grey' el.style.backgroundColor = 'lightgrey' el.style.boxShadow = 'none' } } export const updatedActions = (el, binding) => { //checks again after all data loads (for component level disabling) const readOnly = store.getters['tenant/role'] === 'READ_ONLY_USER' if (readOnly || binding.value) { if (el.classList.contains('blue')) { el.classList.remove('blue') el.classList.remove('white--text') el.classList.add('needBlue') } if (el.classList.contains('primary')) { el.classList.remove('primary') el.classList.add('needPrimary') } if (el.style.color === 'primary') { el.classList.add('needPrimary') } el.disabled = true el.style.color = 'grey' } else { //set back if new data (in component) means button should not be disabled el.disabled = false if (el.classList.contains('needBlue')) { el.classList.remove('needBlue') el.classList.add('blue') el.classList.add('white--text') } else if (el.classList.contains('needPrimary' || 'primary')) { el.classList.remove('needPrimary') el.classList.add('primary') el.classList.add('white--text') } else { el.style.color = 'black' } } } ================================================ FILE: src/filters/duration.js ================================================ import { durationToEnglish } from '@/utils/dateTime' export default function(duration) { return durationToEnglish(duration) } ================================================ FILE: src/filters/filterOnePercent.js ================================================ export default function(x) { return x < 1 ? '< 1' : x } ================================================ FILE: src/filters/round.js ================================================ import round from 'lodash/round' export function roundWhole(x) { if (!x || typeof x !== 'number') { // eslint-disable-next-line no-console console.warn( `Value ${x} is a ${typeof x}, roundWhole filter requires a number instead.` ) return x } return round(x) } export function roundTenths(x) { if (!x || typeof x !== 'number') { // eslint-disable-next-line no-console console.warn( `Value ${x} is a ${typeof x}, roundTenths filter requires a number instead.` ) return x } return round(x, 1) } export function roundHundredths(x) { if (!x || typeof x !== 'number') { // eslint-disable-next-line no-console console.warn( `Value ${x} is a ${typeof x}, roundHundredths filter requires a number instead.` ) return x } return round(x, 2) } export function roundThousandths(x) { if (!x || typeof x !== 'number') { // eslint-disable-next-line no-console console.warn( `Value ${x} is a ${typeof x}, roundThousandths filter requires a number instead.` ) return x } return round(x, 3) } export function roundTens(x) { if (!x || typeof x !== 'number') { // eslint-disable-next-line no-console console.warn( `Value ${x} is a ${typeof x}, roundTens filter requires a number instead.` ) return x } return round(x, -1) } export function roundHundreds(x) { if (!x || typeof x !== 'number') { // eslint-disable-next-line no-console console.warn( `Value ${x} is a ${typeof x}, roundHundreds filter requires a number instead.` ) return x } return round(x, -2) } export function roundThousands(x) { if (!x || typeof x !== 'number') { // eslint-disable-next-line no-console console.warn( `Value ${x} is a ${typeof x}, roundThousands filter requires a number instead.` ) return x } return round(x, 3) } ================================================ FILE: src/filters/shorten.js ================================================ export default function(string, numberOfCharacters = 8, startingIndex = 0) { if (!(typeof string === 'string') || !string) { return '' } return string.substring(startingIndex, startingIndex + numberOfCharacters) } ================================================ FILE: src/graphql/Account/invitations.gql ================================================ query AccountMembershipInvitations { membership_invitation { id created email role } } ================================================ FILE: src/graphql/Account/license-users.gql ================================================ query LicenseUsers { license_users { id first_name last_name username email memberships { tenant_id membership_id role_id } } } ================================================ FILE: src/graphql/Agent/FlowRuns.gql ================================================ query AgentSubmittableRuns { flow_run (where: {state: {_eq: "Scheduled"}}) { id name state labels scheduled_start_time version flow_id flow { id name } } } ================================================ FILE: src/graphql/Agent/agent-hooks.gql ================================================ query AgentHooks{ hook (where: {event_type: {_eq: "AgentSLAFailedEvent"}}){ event_tags action { id name action_type } event_type } } ================================================ FILE: src/graphql/Agent/agents.js ================================================ import gql from 'graphql-tag' export default function(isCloud) { return gql` query Agents { agent { id agent_config_id core_version created name labels last_queried type ${ isCloud ? ` token_name token_id` : '' } } }` } ================================================ FILE: src/graphql/Agent/delete-agent.gql ================================================ mutation DeleteAgent($agentId: UUID!) { delete_agent(input: { agent_id: $agentId }) { success } } ================================================ FILE: src/graphql/Agent/in-progress-flow-runs.gql ================================================ query InProgressFlowRuns($agentId: uuid) { flow_run( where: { agent_id: { _eq: $agentId }, state: { _in: ["Running", "Submitted", "Cancelling"] } } order_by: { start_time: desc } ) { id name start_time state state_timestamp flow { id name flow_group_id } updated } } ================================================ FILE: src/graphql/Agent/recent-runs.gql ================================================ query RecentRuns($agentId: uuid, $day: timestamptz) { flow_run( where: { _and: [ {state: { _neq: "Scheduled" }}, {agent_id: { _eq: $agentId}}, ], _or:[ {scheduled_start_time:{ _gt: $day}}, {start_time: { _gt: $day}} ] } order_by: { start_time: desc_nulls_last } limit: 10 ) { id name end_time flow_id start_time state agent_id } } ================================================ FILE: src/graphql/Agent/table-flow-runs-count.gql ================================================ query TableFlowRunsCount( $agent_id: uuid $name: String $state: [String!] ) { flow_run_aggregate( where: { agent_id: {_eq: $agent_id} name: { _ilike: $name } state: { _in: $state, _neq: "Scheduled" } } ) { aggregate { count } } } ================================================ FILE: src/graphql/Agent/table-flow-runs.gql ================================================ query TableFlowRuns( $name: String $limit: Int $offset: Int $orderBy: [flow_run_order_by!] $agent_id: uuid $state: [String!] ) { flow_run( where: { agent_id: {_eq: $agent_id} name: { _ilike: $name } state: { _in: $state, _neq: "Scheduled" } } order_by: $orderBy limit: $limit offset: $offset ) { id name end_time scheduled_start_time start_time state flow { name id } } } ================================================ FILE: src/graphql/Agent/timeline-flow-runs.gql ================================================ query AgentTimelineFlowRuns($agent_id: uuid) { flow_run( where: { agent_id: { _eq: $agent_id } } limit: 100 order_by: { scheduled_start_time: desc } ) { id name flow_id end_time start_time scheduled_start_time state } } ================================================ FILE: src/graphql/Artifacts/task-run-artifacts-aggregate.gql ================================================ query TaskRunArtifacts($taskRunIds: [uuid!]) { task_run_artifact_aggregate(where: { task_run_id: { _in: $taskRunIds } }) { aggregate { count } } } ================================================ FILE: src/graphql/Artifacts/task-run-artifacts.gql ================================================ query TaskRunArtifacts($taskRunIds: [uuid!]) { task_run_artifact(where: { task_run_id: { _in: $taskRunIds } }) { id created data kind task_run { id name state task { id name } } } } ================================================ FILE: src/graphql/Artifacts/task-run-ids.gql ================================================ query TaskRunIds($where: task_run_bool_exp!, $limit: Int, $offset: Int) { task_run(where: $where, limit: $limit, offset: $offset) { id } } ================================================ FILE: src/graphql/Automations/actions.gql ================================================ query Actions {action { id name action_type action_config }} ================================================ FILE: src/graphql/Automations/agent-config-by-pk.gql ================================================ query AgentConfig($agentConfigId: uuid!) { agent_config_by_pk(id: $agentConfigId) { id name agents { id type name } } } ================================================ FILE: src/graphql/Automations/agent-config.gql ================================================ query AgentConfig { agent_config { id name } } ================================================ FILE: src/graphql/Automations/delete-agent-config.gql ================================================ mutation deleteAgentConfig($agentConfigInput: delete_agent_config_input!){ delete_agent_config( input: $agentConfigInput ) { error success } } ================================================ FILE: src/graphql/Automations/flow-config-by-pk.gql ================================================ query FlowSLAConfig($flowSLAConfigId: uuid!) { flow_sla_config_by_pk(id: $flowSLAConfigId) { flow_groups { id flow_group_id } kind duration_seconds } } ================================================ FILE: src/graphql/Automations/flow-only-hooks.gql ================================================ query Actions { hook(where: { event_type: { _neq: "AgentSLAFailedEvent" } }) { id event_tags created event_type __typename action { name id action_config action_type } } } ================================================ FILE: src/graphql/Automations/flows.gql ================================================ query ActionFlows ($project: uuid, $flowGroupIds: [uuid!]) { flow(distinct_on: flow_group_id, where: {_and: [{project_id: {_eq: $project}, archived: {_eq: false}, flow_group_id: {_in: $flowGroupIds}}]}) { id archived name flow_group_id version_group_id project { name id } } } ================================================ FILE: src/graphql/Automations/hooks.gql ================================================ query Actions { hook{ id event_tags created event_type __typename action { name id action_config action_type } } } ================================================ FILE: src/graphql/Calendar/calendar-day-flow-runs.gql ================================================ query CalendarDayFlowRuns($startTime: timestamptz, $endTime: timestamptz, $flowId: uuid!) { flow_run ( where: { _and: [ {flow_id: { _eq: $flowId}}, {start_time: { _gt: $startTime}}, {start_time: { _lt: $endTime}} ] } ) { id flow_id name end_time start_time scheduled_start_time state state_message } } ================================================ FILE: src/graphql/Calendar/calendar-day-ongoing-flow-runs.gql ================================================ query CalendarDayOngoingFlowRuns($flowId: uuid!, $startTime:timestamptz, $endTime: timestamptz) { flow_run ( where: { _and: [ {flow_id: { _eq: $flowId}}, {start_time: {_lt: $startTime}} {end_time: {_gt: $endTime}} ] } ) { id flow_id name end_time start_time scheduled_start_time state state_message } } ================================================ FILE: src/graphql/Calendar/calendar-day-running-flow-runs.gql ================================================ query CalendarDayRunningFlowRuns($flowId: uuid!, $startTime:timestamptz) { flow_run ( where: { _and: [ {flow_id: { _eq: $flowId}}, {state: { _eq: "Running"}}, {start_time: {_lt: $startTime}} ] } ) { id flow_id name end_time start_time scheduled_start_time state state_message } } ================================================ FILE: src/graphql/Calendar/calendar-day-scheduled-flow-runs.gql ================================================ query CalendarDayScheduledFlowRuns($startTime: timestamptz, $endTime: timestamptz, $flowId: uuid!) { flow_run ( where: { _and: [ {scheduled_start_time: { _gt: $startTime}}, {scheduled_start_time: { _lt: $endTime}}, {start_time: {_is_null: true}}, {flow_id: { _eq: $flowId}} ] } ) { id flow_id name end_time start_time scheduled_start_time state state_message } } ================================================ FILE: src/graphql/Calendar/calendar-flow-groups.gql ================================================ query flowGroups { flow_group { id name flows (where: {archived: {_eq: false}}) { name id version } } } ================================================ FILE: src/graphql/Calendar/calendar-flow-runs.gql ================================================ query CalendarFlowRuns($startTime: timestamptz, $endTime: timestamptz) { flow_run ( where: { _and: [ {start_time: { _gt: $startTime}}, {start_time: { _lt: $endTime}} ] } ) { id flow_id } } ================================================ FILE: src/graphql/Calendar/calendar-flows.gql ================================================ query CalendarFlow( $id: uuid!) { flow_by_pk(id: $id) { id name is_schedule_active } } ================================================ FILE: src/graphql/Calendar/calendar-ongoing-flow-runs.gql ================================================ query CalendarOngoingFlowRuns($startTime:timestamptz, $endTime: timestamptz) { flow_run ( where: { _and: [ {start_time: {_lt: $startTime}} {end_time: {_gte: $endTime}} ] } distinct_on: flow_id limit: 1 ) { id flow_id } } ================================================ FILE: src/graphql/Calendar/calendar-running-flow-runs.gql ================================================ query CalendarRunningFlowRuns($startTime:timestamptz) { flow_run ( where: { _and: [ {state: { _eq: "Running"}}, {start_time: {_lt: $startTime}} ] } limit: 1 distinct_on: flow_id ) { id flow_id } } ================================================ FILE: src/graphql/Calendar/calendar-scheduled-flow-runs.gql ================================================ query CalendarScheduledFlowRuns($startTime: timestamptz, $endTime: timestamptz) { flow_run ( where: { _and: [ {scheduled_start_time: { _gt: $startTime}}, {scheduled_start_time: { _lt: $endTime}}, {start_time: {_is_null: true}}, ] } ) { id flow_id } } ================================================ FILE: src/graphql/Dashboard/committed-usage.gql ================================================ query Usage($license_id: uuid) { usage: billing_usage(where: { license_id: { _eq: $license_id } }) { id kind runs tenant_id timestamp usage_last_updated } } ================================================ FILE: src/graphql/Dashboard/failures-count.gql ================================================ query FailureCount($heartbeat: timestamptz, $projectId: uuid) { flow_aggregate( where: { flow_runs: { state: { _eq: "Failed" }, updated: { _gte: $heartbeat } } project_id: { _eq: $projectId } } ) { aggregate { count } } } ================================================ FILE: src/graphql/Dashboard/failures-drawer.gql ================================================ query FailDetails($heartbeat: timestamptz, $projectIds: [uuid!]) { flow_run( where: { state: { _eq: "Failed" } updated: { _gte: $heartbeat } flow: { project_id: { _in: $projectIds } } } distinct_on: flow_id order_by: [{ flow_id: asc }, { updated: desc }] ) { id name scheduled_start_time start_time end_time flow { id name failed_runs_count: flow_runs_aggregate( where: { state: { _eq: "Failed" }, updated: { _gte: $heartbeat } } ) { aggregate { count } } runs_count: flow_runs_aggregate( where: { updated: { _gte: $heartbeat } } ) { aggregate { count } } } } } ================================================ FILE: src/graphql/Dashboard/flow-count.gql ================================================ query FlowCount($searchParams: flow_bool_exp) { flowCount: flow_aggregate(where: $searchParams) { aggregate { count } } } ================================================ FILE: src/graphql/Dashboard/flow-failures.gql ================================================ query FlowFailures($projectId: uuid, $heartbeat: timestamptz, $tenantId: uuid) { flow_run( where: { tenant_id: { _eq: $tenantId } flow: { project_id: { _eq: $projectId } } state: { _eq: "Failed" } scheduled_start_time: { _gte: $heartbeat } } distinct_on: flow_id order_by: { flow_id: asc, scheduled_start_time: desc } ) { flow_id state_timestamp flow { id name flow_group_id } scheduled_start_time } } ================================================ FILE: src/graphql/Dashboard/flow-run-drawer.gql ================================================ query FlowRun($id: uuid!) { flow_run_by_pk(id: $id) { id name state context auto_scheduled state_message created_by { username } start_time end_time flow { id name version } parameters scheduled_start_time } } ================================================ FILE: src/graphql/Dashboard/flow-runs-count.gql ================================================ query FlowRunsCount($projectIds: [uuid!], $heartbeat: timestamptz) { flow_run_aggregate( where: { flow: { project_id: { _in: $projectIds } } updated: { _gte: $heartbeat } state: { _neq: "Scheduled" } } ) { aggregate { count } } } ================================================ FILE: src/graphql/Dashboard/flow-runs.gql ================================================ query FlowRuns($projectId: uuid, $heartbeat: timestamptz) { Success: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Success" } } ) { aggregate { count } } Running: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Running" } } ) { aggregate { count } } Pending: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Pending" } } ) { aggregate { count } } Failed: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Failed" } } ) { aggregate { count } } ClientFailed: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "ClientFailed" } } ) { aggregate { count } } Submitted: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Submitted" } } ) { aggregate { count } } Queued: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Queued" } } ) { aggregate { count } } Resume: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Resume" } } ) { aggregate { count } } Retrying: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Retrying" } } ) { aggregate { count } } Looped: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Looped" } } ) { aggregate { count } } Cached: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Cached" } } ) { aggregate { count } } Mapped: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Mapped" } } ) { aggregate { count } } TimedOut: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "TimedOut" } } ) { aggregate { count } } TriggerFailed: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "TriggerFailed" } } ) { aggregate { count } } Skipped: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Skipped" } } ) { aggregate { count } } Finished: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Finished" } } ) { aggregate { count } } Cancelled: flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } scheduled_start_time: { _gte: $heartbeat } state: { _eq: "Cancelled" } } ) { aggregate { count } } } ================================================ FILE: src/graphql/Dashboard/flows.js ================================================ import gql from 'graphql-tag' export default function(isCloud) { return gql` query Flows( $limit: Int $offset: Int $orderBy: [flow_order_by!] $searchParams: flow_bool_exp ) { flow( where: $searchParams limit: $limit offset: $offset order_by: $orderBy ) { id flow_group_id archived core_version created ${ isCloud ? ` created_by { id username }` : '' } description environment flow_group { id created name schedule } is_schedule_active name parameters project { id name } schedule storage updated version version_group_id } } ` } ================================================ FILE: src/graphql/Dashboard/heartbeat.gql ================================================ query Heartbeat($projectId: uuid, $timestamp: timestamptz, $state: String, $filterOutStates: [String!]) { flow_run( limit: 10 where: { flow: { project_id: { _eq: $projectId } } state_timestamp: { _gte: $timestamp } state: { _eq: $state, _nin: $filterOutStates } } order_by: { updated: desc_nulls_last } ) { id name scheduled_start_time state state_timestamp flow { id name } __typename } } ================================================ FILE: src/graphql/Dashboard/in-progress-flow-runs.gql ================================================ query InProgressFlowRuns($projectId: uuid) { flow_run( where: { flow: { project_id: { _eq: $projectId } } state: { _in: ["Running", "Submitted", "Cancelling"] } } order_by: { start_time: desc } ) { id name start_time state state_timestamp flow { id name flow_group_id } updated } } ================================================ FILE: src/graphql/Dashboard/invoice.gql ================================================ query Invoice($licenseId: UUID!) { preview_invoice(license_id: $licenseId) } ================================================ FILE: src/graphql/Dashboard/last-flow-runs.gql ================================================ query LastFlowRuns($flowId: uuid) { flow_run( where: { flow_id: { _eq: $flowId }, state: { _neq: "Scheduled" } } order_by: { start_time: desc_nulls_last } limit: 10 ) { id end_time flow_id start_time state } } ================================================ FILE: src/graphql/Dashboard/project-name.gql ================================================ query Project($id: uuid!) { project: project_by_pk(id: $id) { id name } } ================================================ FILE: src/graphql/Dashboard/project.gql ================================================ query Project($id: uuid!) { project: project_by_pk(id: $id) { id name description created } } ================================================ FILE: src/graphql/Dashboard/projects.gql ================================================ query Projects { project { id name } } ================================================ FILE: src/graphql/Dashboard/task-failures.gql ================================================ query FailedTasks($heartbeat: timestamptz) { task_run( where: { state: { _eq: "Failed" }, updated: { _gte: $heartbeat } } distinct_on: task_id ) { id updated task { id name flow { name } } } } ================================================ FILE: src/graphql/Dashboard/timeline-flow-runs.gql ================================================ query TimelineFlowRuns($limit: Int, $project_id: uuid, $date: timestamptz) { flow_run( where: { flow: { project_id: { _eq: $project_id } } state: { _neq: "Scheduled" } scheduled_start_time: { _gte: $date } } limit: $limit order_by: { scheduled_start_time: desc } ) { id flow_id name end_time start_time scheduled_start_time state } } ================================================ FILE: src/graphql/Dashboard/timeline-flow.gql ================================================ query TimelineFlow($flowId: uuid!) { flow_by_pk(id: $flowId) { id name project { name } } } ================================================ FILE: src/graphql/Dashboard/timeline-scheduled-flow-runs.gql ================================================ query TimelineFlowRuns($project_id: uuid) { flow_run( where: { flow: { project_id: { _eq: $project_id } } state: { _eq: "Scheduled" } } limit: 10 order_by: { scheduled_start_time: asc_nulls_last } ) { id flow_id name end_time start_time scheduled_start_time state } } ================================================ FILE: src/graphql/Dashboard/upcoming-flow-runs-count.gql ================================================ query UpcomingFlowRunsCount($projectId: uuid) { flow_run_aggregate( where: { flow: { project_id: { _eq: $projectId } } state: { _eq: "Scheduled" } } ) { aggregate { count } } } ================================================ FILE: src/graphql/Dashboard/upcoming-flow-runs.gql ================================================ query UpcomingFlowRuns($projectId: uuid) { flow_run( where: { flow: { project_id: { _eq: $projectId } } state: { _eq: "Scheduled" } } order_by: [{ scheduled_start_time: asc }, { flow: { name: asc } }] ) { id name state labels scheduled_start_time version flow { id name schedule environment is_schedule_active } } } ================================================ FILE: src/graphql/Dashboard/usage.gql ================================================ query Usage($from: timestamptz, $to: timestamptz, $license_id: uuid) { usage: billing_usage( where: { timestamp: { _gte: $from, _lte: $to } license_id: { _eq: $license_id } } ) { id kind runs license_id timestamp usage_last_updated } } ================================================ FILE: src/graphql/FirstRunWorkflow/flow-run.gql ================================================ query FlowRun( $id: uuid! $logId: uuid $levels: [String!] $limit: Int = 100 $offset: Int = 0 $searchText: String $timestampFrom: timestamptz $timestampTo: timestamptz ) { flow_run_by_pk(id: $id) { id end_time name scheduled_start_time state start_time logs( limit: $limit offset: $offset order_by: { timestamp: desc } where: { id: { _eq: $logId } level: { _in: $levels } message: { _ilike: $searchText } timestamp: { _gte: $timestampFrom, _lte: $timestampTo } } ) { id level message name timestamp } } } ================================================ FILE: src/graphql/FirstRunWorkflow/project-names.gql ================================================ query { project { id name } } ================================================ FILE: src/graphql/Flow/cloud-hooks.gql ================================================ query CloudHooks($id: String) { cloud_hook(where: { version_group_id: { _eq: $id } }) { id active config created name states type } } ================================================ FILE: src/graphql/Flow/errors.gql ================================================ query Errors( $updated: timestamptz_comparison_exp $flow_group_id: uuid $flow_id: uuid ) { flow_run( where: { updated: $updated flow: { id: { _eq: $flow_id }, flow_group_id: { _eq: $flow_group_id } } } limit: 50 order_by: [{ updated: desc }] ) { id name task_runs(where: { state: { _eq: "Failed" } }){ task{ id name } id state_message state_timestamp } } } ================================================ FILE: src/graphql/Flow/flow-by-pk.gql ================================================ query FlowByPk($flowId: uuid!) { flow_by_pk(id: $flowId) { id name version schedule flow_group_id } } ================================================ FILE: src/graphql/Flow/flow-drawer.gql ================================================ query Flow($id: uuid!) { flow_by_pk(id: $id) { id name description created created_by { username } archived storage environment parameters version schedules { id active schedule schedule_start schedule_end } project { id name } } } ================================================ FILE: src/graphql/Flow/flow-run-by-pk.gql ================================================ query FlowRunByPK($id: uuid!) { flow_run_by_pk(id: $id) { id name } } ================================================ FILE: src/graphql/Flow/flow-runs.gql ================================================ query FlowRuns($flow_group_id: uuid, $flow_id: uuid, $heartbeat: timestamptz) { Success: flow_run_aggregate( where: { flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } } updated: { _gte: $heartbeat } state: { _eq: "Success" } } ) { aggregate { count } } Failed: flow_run_aggregate( where: { flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } } updated: { _gte: $heartbeat } state: { _eq: "Failed" } } ) { aggregate { count } } Submitted: flow_run_aggregate( where: { flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } } updated: { _gte: $heartbeat } state: { _eq: "Submitted" } } ) { aggregate { count } } Paused: flow_run_aggregate( where: { flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } } updated: { _gte: $heartbeat } state: { _eq: "Paused" } } ) { aggregate { count } } Resume: flow_run_aggregate( where: { flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } } updated: { _gte: $heartbeat } state: { _eq: "Resume" } } ) { aggregate { count } } Running: flow_run_aggregate( where: { flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } } updated: { _gte: $heartbeat } state: { _eq: "Running" } } ) { aggregate { count } } Cancelled: flow_run_aggregate( where: { flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } } updated: { _gte: $heartbeat } state: { _eq: "Cancelled" } } ) { aggregate { count } } } ================================================ FILE: src/graphql/Flow/flow-versions-count.gql ================================================ query VersionsCount($flow_group_id: uuid!, $search: Int) { flow_group_by_pk(id: $flow_group_id) { id flows_aggregate(where: { version: { _eq: $search } }) { aggregate { count } } } } ================================================ FILE: src/graphql/Flow/flow-versions-runs.gql ================================================ query VersionsRuns($flow_ids: [uuid!]) { flow(where: { id: { _in: $flow_ids } }) { id name version flow_runs( where: { _and: [{ state: { _neq: "Scheduled" } }, { state: { _neq: "Running" } }] } order_by: { updated: desc } limit: 10 ) { id name start_time end_time state } } } ================================================ FILE: src/graphql/Flow/flow-versions.js ================================================ import gql from 'graphql-tag' export default function(isCloud) { return gql` query Versions( $limit: Int $offset: Int $order_by: [flow_order_by!] $flow_group_id: uuid! $search: Int ) { flow_group_by_pk(id: $flow_group_id) { id flows( order_by: $order_by where: { version: { _eq: $search } } limit: $limit offset: $offset ) { id archived created ${ isCloud ? ` created_by { id username } ` : '' } name version } } } ` } ================================================ FILE: src/graphql/Flow/flow.js ================================================ import gql from 'graphql-tag' export default function(isCloud) { return gql` query Flow($id: uuid!) { flow_group_by_pk(id: $id) { id labels created description name default_parameters schedule flows { id archived core_version created ${ isCloud ? ` created_by { id username }` : '' } description run_config environment flow_group_id is_schedule_active name parameters project { id name } schedule storage updated version version_group_id } settings updated } } ` } ================================================ FILE: src/graphql/Flow/heartbeat.gql ================================================ query Heartbeat($flow_group_id: uuid, $flow_id: uuid, $state: String, $filterOutStates: [String!]) { flow_run( limit: 10 where: { flow: { id: { _eq: $flow_id }, flow_group_id: { _eq: $flow_group_id } } state: { _eq: $state, _nin: $filterOutStates } } order_by: { updated: desc_nulls_last } ) { id name scheduled_start_time state state_message state_timestamp __typename } } ================================================ FILE: src/graphql/Flow/last-flow-run.gql ================================================ query LastFlowRun($id: uuid!) { flow_run( where: { flow_id: { _eq: $id }, state: { _neq: "Scheduled" } } order_by: { scheduled_start_time: desc } limit: 1 ) { id name state } } ================================================ FILE: src/graphql/Flow/past-flow-runs.gql ================================================ query PastFlowRuns($id: uuid!, $heartbeat: timestamptz) { flow_run( where: { flow_id: { _eq: $id } updated: { _gte: $heartbeat } state: { _neq: "Scheduled" } } order_by: { scheduled_start_time: desc } ) { id state } } ================================================ FILE: src/graphql/Flow/project-names.gql ================================================ query { project { id name } } ================================================ FILE: src/graphql/Flow/table-flow-runs-count.gql ================================================ query TableFlowRunsCount( $flow_group_id: uuid $flow_id: uuid $name: String $state: [String!] ) { flow_run_aggregate( where: { flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } } name: { _ilike: $name } state: { _in: $state } } ) { aggregate { count } } } ================================================ FILE: src/graphql/Flow/table-flow-runs.gql ================================================ query TableFlowRuns( $name: String $limit: Int $offset: Int $orderBy: [flow_run_order_by!] $flow_group_id: uuid $flow_id: uuid $state: [String!] ) { flow_run( where: { flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } } name: { _ilike: $name } state: { _in: $state } } order_by: $orderBy limit: $limit offset: $offset ) { id name end_time scheduled_start_time start_time state } } ================================================ FILE: src/graphql/Flow/table-tasks-count.gql ================================================ query TableTasks( $flowId: uuid $name: String $limit: Int $offset: Int $orderBy: [task_order_by!] ) { task_aggregate( where: { flow_id: { _eq: $flowId }, name: { _ilike: $name } } order_by: $orderBy limit: $limit offset: $offset ) { aggregate { count } } } ================================================ FILE: src/graphql/Flow/table-tasks.gql ================================================ query TableTasks( $flowId: uuid $name: String $limit: Int $offset: Int $orderBy: [task_order_by!] ) { task( where: { flow_id: { _eq: $flowId }, name: { _ilike: $name } } order_by: $orderBy limit: $limit offset: $offset ) { id name max_retries retry_delay type trigger } } ================================================ FILE: src/graphql/Flow/timeline-flow-runs.gql ================================================ query TimelineFlowRuns($flow_group_id: uuid, $flow_id: uuid) { flow_run( where: { flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } } } limit: 100 order_by: { scheduled_start_time: desc } ) { id name end_time start_time scheduled_start_time state } } ================================================ FILE: src/graphql/Flow/upcoming-flow-runs.gql ================================================ query UpcomingFlowRuns($flow_group_id: uuid, $flow_id: uuid) { flow_run( where: { flow: { flow_group_id: { _eq: $flow_group_id }, id: { _eq: $flow_id } } state: { _eq: "Scheduled" } } order_by: { scheduled_start_time: asc } ) { id labels name version scheduled_start_time } } ================================================ FILE: src/graphql/Flow/version-group.gql ================================================ query FlowsByVersionGroup($versionGroupId: String) { flow(where: { version_group_id: { _eq: $versionGroupId } }) { id name } } ================================================ FILE: src/graphql/FlowLabelLimit/delete-flow-concurrency-limit.gql ================================================ mutation DeleteFlowConcurrencyLimit($limitId: UUID!) { delete_flow_concurrency_limit(input: { limit_id: $limitId }) { success } } ================================================ FILE: src/graphql/FlowLabelLimit/flow-label-limit.gql ================================================ query FlowLabelLimit { flow_concurrency_limit { id limit name } } ================================================ FILE: src/graphql/FlowLabelLimit/update-flow-concurrency-limit.gql ================================================ mutation UpdateFlowConcurrencyLimit($label: String!, $limit: Int!) { update_flow_concurrency_limit(input: { label: $label, limit: $limit }) { id } } ================================================ FILE: src/graphql/FlowLabelUsage/flow-label-usage.gql ================================================ query FlowLabelUsage($labels: [String!]) { flow_concurrency(labels: $labels) { label usage } } ================================================ FILE: src/graphql/FlowRun/cancel-flow-run.gql ================================================ mutation CancelFlowRun($flowRunId: UUID!) { cancel_flow_run(input: { flow_run_id: $flowRunId }) { state } } ================================================ FILE: src/graphql/FlowRun/failed-task-runs.gql ================================================ query FailedTaskRuns($flowRunId: uuid, $failedStates: [String!]) { task_run( where: { flow_run_id: { _eq: $flowRunId } state: { _in: $failedStates } } ) { id task_id version } } ================================================ FILE: src/graphql/FlowRun/flow-run.js ================================================ import gql from 'graphql-tag' export default function(isCloud) { return gql` query FlowRun( $id: uuid! ) { flow_run_by_pk(id: $id) { id name version labels auto_scheduled ${ isCloud ? ` created_by { id username } ` : '' } auto_scheduled context end_time flow_id name parameters scheduled_start_time start_time state state_message state_timestamp parameters context run_config agent_id states { id state timestamp start_time } flow { id name version version_group_id core_version parameters archived flow_group_id project { id name } } } } ` } ================================================ FILE: src/graphql/FlowRun/gantt-task-runs.gql ================================================ query GanttChart( $id: uuid! $taskRunStates: [String!] $taskName: String $sort: order_by $limit: Int $offset: Int ) { flow_run_by_pk(id: $id) { id name version labels auto_scheduled scheduled_start_time start_time end_time state state_message state_timestamp parameters context agent_id task_run_states: task_runs(distinct_on: state) { state } task_runs_aggregate( where: { state: { _in: $taskRunStates } task: { name: { _ilike: $taskName }, auto_generated: { _eq: false } } } ) { aggregate { count } } task_runs( order_by: { start_time: $sort } where: { state: { _in: $taskRunStates } task: { name: { _ilike: $taskName }, auto_generated: { _eq: false } } } limit: $limit offset: $offset ) { id state state_message state_result state_timestamp start_time end_time map_index version task { id name auto_generated max_retries retry_delay } name } flow { id name version version_group_id core_version project { id name } } } } ================================================ FILE: src/graphql/FlowRun/heartbeat.gql ================================================ query Heartbeat($flowRunId: uuid!, $timestamp: timestamptz, $state: String) { task_run( limit: 10 where: { flow_run_id: { _eq: $flowRunId } state_timestamp: { _gte: $timestamp } state: { _eq: $state } } order_by: { state_timestamp: desc_nulls_last } ) { id map_index state state_message state_timestamp task { id name max_retries } __typename name } } ================================================ FILE: src/graphql/FlowRun/states-aggregate.gql ================================================ query FlowRunStatesAggregate($where: flow_run_state_bool_exp) { flow_run_state_aggregate(where: $where) { aggregate { count } } } ================================================ FILE: src/graphql/FlowRun/states.gql ================================================ query FlowRunStates( $where: flow_run_state_bool_exp $limit: Int! $offset: Int! $orderBy: [flow_run_state_order_by!] ) { flow_run_state( where: $where limit: $limit order_by: $orderBy offset: $offset ) { id state start_time timestamp result message } } ================================================ FILE: src/graphql/FlowRun/table-task-runs-count.gql ================================================ query TableTaskRunsCount( $flowRunId: uuid $name: String $state: [String!] $heartbeat: timestamptz ) { task_run_aggregate( where: { flow_run_id: { _eq: $flowRunId } _or: [{ task: { name: { _ilike: $name } }, state: { _in: $state } }] updated: { _gte: $heartbeat } } ) { aggregate { count } } } ================================================ FILE: src/graphql/FlowRun/table-task-runs.gql ================================================ query TableTaskRuns( $flowRunId: uuid $name: String $state: [String!] $limit: Int $offset: Int $orderBy: [task_run_order_by!] ) { flow_run(where: { id: { _eq: $flowRunId } }) { id name task_runs( where: { task: { name: { _ilike: $name } }, state: { _in: $state } } order_by: $orderBy limit: $limit offset: $offset ) { map_index state id version start_time end_time task { id name } name } } } ================================================ FILE: src/graphql/FlowRun/task-run-drawer.gql ================================================ query TaskRun($id: uuid!) { task_run_by_pk(id: $id) { id created end_time flow_run { id name } updated map_index start_time state state_message state_result task { id name description max_retries retry_delay } version name } } ================================================ FILE: src/graphql/FlowRun/task-run-ids.gql ================================================ query taskRunIds($flowRunId: uuid!, $parentMapIndex: Int, $childMapIndex: Int) { task_run( where: { _and: [ { flow_run_id: { _eq: $flowRunId } } { map_index: { _eq: $parentMapIndex } } { map_index: { _gte: $childMapIndex } } ] } ) { version id map_index } } ================================================ FILE: src/graphql/FlowRun/task-runs-aggregate.gql ================================================ query TaskRunsCount($where: task_run_bool_exp) { task_run_aggregate(where: $where) { aggregate { count } } } ================================================ FILE: src/graphql/FlowRun/task-runs.gql ================================================ query TaskRuns( $limit: Int! $offset: Int! $orderBy: [task_run_order_by!] $where: task_run_bool_exp ) { task_run(where: $where, order_by: $orderBy, limit: $limit, offset: $offset) { id map_index state start_time end_time task { id name } name } } ================================================ FILE: src/graphql/FlowRun/timeline-chart-task-runs.gql ================================================ query TaskRuns($flowRunId: uuid!) { task_run( where: { flow_run_id: { _eq: $flowRunId }, map_index: { _eq: -1 } } ) { id start_time end_time name serialized_state state state_timestamp states { id message state timestamp start_time } task_id version } } ================================================ FILE: src/graphql/FlowRun/timeline-chart-tasks.gql ================================================ query Tasks($flowId: uuid!) { task(where: { flow_id: { _eq: $flowId } }) { id name } } ================================================ FILE: src/graphql/FlowRunLogs/flow-run-metadata.gql ================================================ query FlowRunMetadata($id: uuid!) { flow_run_by_pk(id: $id) { id name flow { id name project { id name } } } } ================================================ FILE: src/graphql/GlobalSearch/search-by-id.gql ================================================ query GlobalSearchByID($id: uuid!) { flow(where:{ _or: [{ id: { _eq: $id } }, {flow_group_id: {_eq: $id}}]}) { id: flow_group_id flow_id: id name project { id name } } flow_run(where: { id: { _eq: $id } }) { id name flow { id name project { id name } } } project(where: { id: { _eq: $id } }) { id name } task(where: { id: { _eq: $id } }) { id name flow { id name project { id name } } } task_run(where: { id: { _eq: $id } }) { id name task { id name flow { id name project { id name } } } } } ================================================ FILE: src/graphql/GlobalSearch/search-by-name.gql ================================================ query GlobalSearchByName($name: String) { flow(where: { name: { _ilike: $name }, archived: { _eq: false } }, limit: 5) { id: flow_group_id name project { id name } __typename } flow_run( where: { name: { _ilike: $name }, flow: { archived: { _eq: false } } } limit: 5 ) { id name flow { id name project { id name } } __typename } project(where: { name: { _ilike: $name } }, limit: 5) { id name } task( where: { name: { _ilike: $name }, flow: { archived: { _eq: false } } } limit: 5 ) { id name flow { id name project { id name } } __typename } task_run( where: { name: { _ilike: $name } } limit: 5 ) { id name __typename } } ================================================ FILE: src/graphql/Integrations/PagerDutyActions.gql ================================================ query pagerdutyactions ($includeIds: [uuid!]) { actions: action (where: {id: {_in: $includeIds}}) { action_type action_config id name } } ================================================ FILE: src/graphql/KV/delete-key-value.gql ================================================ mutation DeleteKV($id: UUID!) { delete_key_value(input: { key_value_id: $id }) { success error } } ================================================ FILE: src/graphql/KV/get-key-value.gql ================================================ query { key_value { key value updated created id } } ================================================ FILE: src/graphql/KV/set-key-value.gql ================================================ mutation SetKV($key: String!, $value: JSON!) { set_key_value(input: { key: $key, value: $value }) { id } } ================================================ FILE: src/graphql/License/create-self-serve-license.gql ================================================ mutation CreateSelfServeLicense( $input: create_self_serve_cloud_license_input! ) { create_self_serve_cloud_license(input: $input) { id } } ================================================ FILE: src/graphql/License/create-usage-based-license.gql ================================================ mutation CreateUsageBasedLicense( $input: create_self_serve_usage_license_input! ) { create_self_serve_usage_license(input: $input) { id } } ================================================ FILE: src/graphql/License/license.gql ================================================ query License { auth_info { license permissions role_id } } ================================================ FILE: src/graphql/License/update-customer.gql ================================================ mutation updateCustomer($email: String!, $source: String, $name: String) { update_stripe_customer(input: { email: $email, source: $source, name: $name}) { id } } ================================================ FILE: src/graphql/License/update-self-serve-cloud-license.gql ================================================ mutation updateLicense ($license_id: String!, $confirm: Boolean!, $users: Int ) { update_self_serve_cloud_license(input: {license_id: $license_id, confirm: $confirm, users: $users}){ success error } } ================================================ FILE: src/graphql/License/update-stripe-customer.gql ================================================ mutation UpdateStripeCustomer($input: update_stripe_customer_input!) { update_stripe_customer(input: $input) { id } } ================================================ FILE: src/graphql/Logs/flow-run-logs-scoping.gql ================================================ query FlowRunLogsScoping( $id: uuid! $limit: Int = 50 $timestamp: timestamptz ) { flow_run_by_pk(id: $id) { id logs_after: logs( where: { timestamp: { _gte: $timestamp } } order_by: { timestamp: asc } limit: $limit ) { timestamp } logs_before: logs( where: { timestamp: { _lte: $timestamp } } order_by: { timestamp: desc } limit: $limit ) { timestamp } } } ================================================ FILE: src/graphql/Logs/flow-run-logs.gql ================================================ query FlowRunLogs( $id: uuid! $logId: uuid $levels: [String!] $limit: Int = 100 $offset: Int = 0 $searchText: String $timestampFrom: timestamptz $timestampTo: timestamptz ) { flow_run_by_pk(id: $id) { id state start_time logs( limit: $limit offset: $offset order_by: { timestamp: desc } where: { id: { _eq: $logId } level: { _in: $levels } message: { _ilike: $searchText } timestamp: { _gte: $timestampFrom, _lte: $timestampTo } } ) { id flow_run_id level message name task_run_id timestamp } } } ================================================ FILE: src/graphql/Logs/retrieve-archived-logs.gql ================================================ mutation ArchivedFlowRunLogs($flowRunId: UUID!, $timestamp: DateTime!) { retrieve_archived_flow_run_logs( input: { flow_run_id: $flowRunId, timestamp: $timestamp } ) { success } } ================================================ FILE: src/graphql/Logs/task-run-logs-scoping.gql ================================================ query TaskRunLogsScoping( $id: uuid! $limit: Int = 50 $timestamp: timestamptz ) { task_run_by_pk(id: $id) { id logs_after: logs( where: { timestamp: { _gte: $timestamp } } order_by: { timestamp: asc } limit: $limit ) { timestamp } logs_before: logs( where: { timestamp: { _lte: $timestamp } } order_by: { timestamp: desc } limit: $limit ) { timestamp } } } ================================================ FILE: src/graphql/Logs/task-run-logs.gql ================================================ query TaskRunLogs( $id: uuid! $logId: uuid $levels: [String!] $limit: Int = 100 $offset: Int = 0 $searchText: String $timestampFrom: timestamptz $timestampTo: timestamptz ) { task_run_by_pk(id: $id) { id flow_run_id start_time state logs( limit: $limit offset: $offset order_by: { timestamp: desc } where: { id: { _eq: $logId } level: { _in: $levels } message: { _ilike: $searchText } timestamp: { _gte: $timestampFrom, _lte: $timestampTo } } ) { id level message name timestamp } } } ================================================ FILE: src/graphql/MappedTasks/mapped-children.gql ================================================ query MappedChildren($taskRunId: UUID!) { mapped_children(task_run_id: $taskRunId) { max_end_time min_start_time state_counts } } ================================================ FILE: src/graphql/Middleware/flow-group.gql ================================================ query Flow($id: uuid!) { flow_group_by_pk(id: $id) { id } } ================================================ FILE: src/graphql/Middleware/flow.gql ================================================ query Flow($id: uuid!) { flow_by_pk(id: $id) { id version flow_group_id } } ================================================ FILE: src/graphql/Mutations/add-config-to-flow.gql ================================================ mutation CreateFlowGroupSLA($input: create_flow_group_sla_input!) { create_flow_group_sla(input: $input) { id } } ================================================ FILE: src/graphql/Mutations/cancel-flow-run.gql ================================================ mutation CancelFlowRun($flowRunId: UUID!) { cancel_flow_run(input: { flow_run_id: $flowRunId }) { state } } ================================================ FILE: src/graphql/Mutations/create-action.gql ================================================ mutation CreateAction($input: create_action_input!) { create_action(input: $input) { id } } ================================================ FILE: src/graphql/Mutations/create-agent-config.gql ================================================ mutation CreateAgentConfig($input: create_agent_config_input!) { create_agent_config(input: $input) { id } } ================================================ FILE: src/graphql/Mutations/create-agent-sla-failed-hook.gql ================================================ mutation CreateAgentSLAFailedHook($input: create_agent_sla_failed_hook_input!) { create_agent_sla_failed_hook(input: $input) { id } } ================================================ FILE: src/graphql/Mutations/create-cloud-hook.gql ================================================ mutation CreateCloudHook($input: create_cloud_hook_input!) { create_cloud_hook(input: $input) { id } } ================================================ FILE: src/graphql/Mutations/create-custom-role.gql ================================================ mutation CreateCustomRole ($input: create_custom_role_input!){ create_custom_role (input: $input) { id } } ================================================ FILE: src/graphql/Mutations/create-flow-run-state-changed-hook.gql ================================================ mutation CreateFlowRunStateChangedHook( $input: create_flow_run_state_changed_hook_input! ) { create_flow_run_state_changed_hook(input: $input) { id } } ================================================ FILE: src/graphql/Mutations/create-flow-run.gql ================================================ mutation CreateFlowRun( $context: JSON $id: UUID! $flowRunName: String $parameters: JSON $scheduledStartTime: DateTime $runConfig: JSON $labels: [String!] ) { create_flow_run( input: { context: $context flow_id: $id flow_run_name: $flowRunName parameters: $parameters scheduled_start_time: $scheduledStartTime run_config: $runConfig labels: $labels } ) { id } } ================================================ FILE: src/graphql/Mutations/create-flow-sla-failed-hook.gql ================================================ mutation CreateFlowSLAFailedHook($input: create_flow_sla_failed_hook_input!) { create_flow_sla_failed_hook(input: $input) { id } } ================================================ FILE: src/graphql/Mutations/create-flow-sla.gql ================================================ mutation CreateFlowSLAConfig($input: create_flow_sla_config_input!) { create_flow_sla_config(input: $input) { id } } ================================================ FILE: src/graphql/Mutations/create-project.gql ================================================ mutation CreateProject($name: String!, $description: String, $tenantId: UUID!) { create_project( input: { name: $name, description: $description, tenant_id: $tenantId } ) { id } } ================================================ FILE: src/graphql/Mutations/create-runner-token.gql ================================================ mutation CreateRunnerToken($name: String!) { create_api_token(input: { name: $name, scope: RUNNER }) { id token } } ================================================ FILE: src/graphql/Mutations/create-tenant.gql ================================================ mutation CreateTenant($input: create_tenant_input!) { create_tenant(input: $input) { id } } ================================================ FILE: src/graphql/Mutations/create-tutorial-flow-run.gql ================================================ mutation CreateFlowRun($flowId: UUID) { create_flow_run(input: { flow_id: $flowId }) { id } } ================================================ FILE: src/graphql/Mutations/delete-cloud-hook.gql ================================================ mutation DeleteCloudHook($input: delete_cloud_hook_input!) { delete_cloud_hook(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/delete-flow-group-schedule.gql ================================================ mutation DeleteFlowGroupSchedule($input: delete_flow_group_schedule_input!) { delete_flow_group_schedule(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/delete-flow-run.gql ================================================ mutation DeleteFlowRun($id: UUID!) { delete_flow_run(input: { flow_run_id: $id }) { success } } ================================================ FILE: src/graphql/Mutations/delete-hook.gql ================================================ mutation deleteHook ($hookId: UUID!) { delete_hook (input: {hook_id: $hookId}) { success } } ================================================ FILE: src/graphql/Mutations/delete_action.gql ================================================ mutation deleteAction ($id: UUID!) { delete_action (input: {action_id: $id}) { success error } } ================================================ FILE: src/graphql/Mutations/delete_custom-role.gql ================================================ mutation DeleteCustomRole ($input: delete_custom_role_input!){ delete_custom_role (input: $input) { success } } ================================================ FILE: src/graphql/Mutations/deploy-flow.gql ================================================ mutation CreateFlow($projectId: UUID!, $serializedFlow: JSON!) { create_flow( input: { project_id: $projectId, serialized_flow: $serializedFlow } ) { id } } ================================================ FILE: src/graphql/Mutations/disable-flow-heartbeat.gql ================================================ mutation DisableFlowHeartbeat($input: disable_flow_heartbeat_input!) { disable_flow_heartbeat(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/disable-flow-lazarus-process.gql ================================================ mutation DisableFlowLazarusProcess( $input: disable_flow_lazarus_process_input! ) { disable_flow_lazarus_process(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/disable-flow-version-lock.gql ================================================ mutation DisableFlowVersionLock($input: disable_flow_version_lock_input!) { disable_flow_version_lock(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/enable-flow-heartbeat.gql ================================================ mutation EnableFlowHeartbeat($input: enable_flow_heartbeat_input!) { enable_flow_heartbeat(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/enable-flow-lazarus-process.gql ================================================ mutation EnableFlowLazarusProcess($input: enable_flow_lazarus_process_input!) { enable_flow_lazarus_process(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/enable-flow-version-lock.gql ================================================ mutation EnableFlowVersionLock($input: enable_flow_version_lock_input!) { enable_flow_version_lock(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/mark-as-read.gql ================================================ mutation MarkMessageAsRead($input: mark_message_as_read_input!) { mark_message_as_read(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/pause-tenant-work-queue.gql ================================================ mutation PauseTenantWorkQueue($tenantId: UUID!) { tenant_work_queue_result: pause_tenant_work_queue( input: { tenant_id: $tenantId } ) { success } } ================================================ FILE: src/graphql/Mutations/resume-tenant-work-queue.gql ================================================ mutation ResumeTenantWorkQueue($tenantId: UUID!) { tenant_work_queue_result: resume_tenant_work_queue( input: { tenant_id: $tenantId } ) { success } } ================================================ FILE: src/graphql/Mutations/set-cloud-hook-active.gql ================================================ mutation SetCloudHookActive($input: set_cloud_hook_active_input!) { set_cloud_hook_active(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/set-cloud-hook-inactive.gql ================================================ mutation SetCloudHookInactive($input: set_cloud_hook_inactive_input!) { set_cloud_hook_inactive(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/set-default-params.gql ================================================ mutation SetDefaultParams($input: set_flow_group_default_parameters_input!){ set_flow_group_default_parameters(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/set-flow-description.gql ================================================ mutation setFlowGroupDescription ($description: String!, $flowGroupId: UUID!) { set_flow_group_description (input: {description: $description, flow_group_id: $flowGroupId}) { success } } ================================================ FILE: src/graphql/Mutations/set-flow-group-schedule.gql ================================================ mutation SetFlowGroupSchedule($input: set_flow_group_schedule_input!) { set_flow_group_schedule(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/set-flow-run-labels.gql ================================================ mutation SetFlowRunLabel ($flowRunId: UUID!, $labelArray: [String!]!) { set_flow_run_labels(input: {flow_run_id: $flowRunId, labels: $labelArray}) { success } } ================================================ FILE: src/graphql/Mutations/set-flow-run-name.gql ================================================ mutation SetFlowRunName($input: set_flow_run_name_input!) { set_flow_run_name(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/set-labels.gql ================================================ mutation SetFlowGroupLabel ($flowGroupId: UUID!, $labelArray: [String!]) { set_flow_group_labels(input: {flow_group_id: $flowGroupId, labels: $labelArray}) { success } } ================================================ FILE: src/graphql/Mutations/set-schedule-active.gql ================================================ mutation SetScheduleActive($id: UUID!) { set_schedule_active(input: { flow_id: $id }) { success } } ================================================ FILE: src/graphql/Mutations/set-schedule-inactive.gql ================================================ mutation SetScheduleInactive($id: UUID!) { set_schedule_inactive(input: { flow_id: $id }) { success } } ================================================ FILE: src/graphql/Mutations/set-task-run-name.gql ================================================ mutation SetTaskRunName($input: set_task_run_name_input!) { set_task_run_name(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/test-cloud-hook.gql ================================================ mutation TestCloudHook($input: test_cloud_hook_input!) { test_cloud_hook(input: $input) { success error } } ================================================ FILE: src/graphql/Mutations/update-custom-role.gql ================================================ mutation UpdateCustomRole ($input: update_custom_role_permissions_input!){ update_custom_role_permissions (input: $input) { success } } ================================================ FILE: src/graphql/Mutations/update-flow-project.gql ================================================ mutation UpdateFlowProject($input: update_flow_project_input!) { update_flow_project(input: $input) { id } } ================================================ FILE: src/graphql/Mutations/update-tenant-settings.gql ================================================ mutation UpdateTenantSettings($settings: JSON!) { update_tenant_settings(input: { settings: $settings }) { id } } ================================================ FILE: src/graphql/Nav/flow-runs.gql ================================================ query FlowRuns($tenantId: uuid!, $states: [String!]) { flow_run(where: { state: { _in: $states }, tenant_id: { _eq: $tenantId } }) { id scheduled_start_time } } ================================================ FILE: src/graphql/Nav/flow.gql ================================================ query Flow($id: uuid) { flow( where: { _or: [{ id: { _eq: $id } }, { flow_group_id: { _eq: $id } }] } ) { id flow_group_id name project_id is_schedule_active } } ================================================ FILE: src/graphql/Nav/flows.gql ================================================ query Flows { flow(where: { archived: { _eq: false } }) { id flow_group_id name project_id is_schedule_active } } ================================================ FILE: src/graphql/Nav/projects.gql ================================================ query Projects { project { id name tenant_id } } ================================================ FILE: src/graphql/Nav/task.gql ================================================ query Task($taskId: uuid!) { task(where: { id: { _eq: $taskId } }) { id flow_id name } } ================================================ FILE: src/graphql/Nav/tasks.gql ================================================ query Tasks($flowId: uuid!) { task(where: { flow_id: { _eq: $flowId } }) { id flow_id name } } ================================================ FILE: src/graphql/Notifications/all-notifications.gql ================================================ query Notifications($where: message_bool_exp) { notifications: message(where: $where) { id } } ================================================ FILE: src/graphql/Notifications/membership-invitation.gql ================================================ query MembershipInvitation($id: uuid!) { membership_invitation_by_pk(id: $id) { id role_detail { id name } email created tenant { id name } } } ================================================ FILE: src/graphql/Notifications/notifications-count-unread.gql ================================================ query NotificationsCountUnread { message_aggregate(where: { read: { _eq: false } }) { aggregate { count } } } ================================================ FILE: src/graphql/Notifications/notifications-count.gql ================================================ query NotificationsCount($where: message_bool_exp) { message_aggregate(where: $where) { aggregate { count } } } ================================================ FILE: src/graphql/Notifications/notifications.js ================================================ import gql from 'graphql-tag' export default function(isCloud) { return gql` query Notifications( $limit: Int $offset: Int $orderBy: [message_order_by!] $where: message_bool_exp ) { notifications: message( where: $where limit: $limit offset: $offset order_by: $orderBy ) { id content created read content tenant_id text type updated ${ isCloud ? ` user { id username } user_id ` : '' } } } ` } ================================================ FILE: src/graphql/Notifications/teams.gql ================================================ query Teams { teams: tenant(order_by: { name: asc }) { id name slug } } ================================================ FILE: src/graphql/Playground/schema.gql ================================================ query IntrospectionQuery { __schema { queryType { name } mutationType { name } subscriptionType { name } types { ...FullType } directives { name description locations args { ...InputValue } } } } fragment FullType on __Type { kind name description fields { name description args { ...InputValue } type { ...TypeRef } isDeprecated deprecationReason } inputFields { ...InputValue } interfaces { ...TypeRef } enumValues { name description isDeprecated deprecationReason } possibleTypes { ...TypeRef } } fragment InputValue on __InputValue { name description type { ...TypeRef } defaultValue } fragment TypeRef on __Type { kind name ofType { kind name ofType { kind name ofType { kind name ofType { kind name ofType { kind name ofType { kind name ofType { kind name } } } } } } } } ================================================ FILE: src/graphql/Project/flow-ids.gql ================================================ query ProjectFlowIds($projectId: uuid!) { project_by_pk(id: $projectId) { flows { id } } } ================================================ FILE: src/graphql/Project/flows-aggregate.gql ================================================ query FlowAggregate($where: flow_bool_exp) { flow_aggregate(where: $where) { aggregate { count } } } ================================================ FILE: src/graphql/Project/flows.gql ================================================ query ProjectFlows( $limit: Int! $offset: Int! $orderBy: [flow_order_by!] $where: flow_bool_exp ) { flow(where: $where, limit: $limit, offset: $offset, order_by: $orderBy) { id name version flow_runs( where: { start_time: { _is_null: false } } order_by: { start_time: desc } limit: 1 ) { id state start_time } } } ================================================ FILE: src/graphql/Project/project.gql ================================================ query Project($id: uuid!) { project_by_pk(id: $id) { id name created } } ================================================ FILE: src/graphql/Projects/projects-aggregate.gql ================================================ query ProjectsAggregate { project_aggregate { aggregate { count } } } ================================================ FILE: src/graphql/Projects/projects.gql ================================================ query Projects( $limit: Int! $offset: Int! $orderBy: [project_order_by!] ) { project(limit: $limit, offset: $offset, order_by: $orderBy) { id name flows_aggregate(where: { archived: { _eq: false } }) { aggregate { count } } } } ================================================ FILE: src/graphql/Schematics/flow-list.gql ================================================ query Flows { flow( order_by: { created: desc } where: { archived: { _eq: false }, name: { _neq: "Welcome Flow" } } ) { id name } } ================================================ FILE: src/graphql/Schematics/flow-run.gql ================================================ query FlowRun($id: uuid!) { flow_run_by_pk(id: $id) { id name state start_time end_time task_runs(where: { map_index: { _eq: -1 } }) { id serialized_state state state_message state_timestamp start_time end_time map_index name task { id name max_retries retry_delay trigger type upstream_edges { upstream_task { id name } downstream_task { id name } } downstream_edges { upstream_task { id name } downstream_task { id name } } __typename } __typename } __typename } } ================================================ FILE: src/graphql/Schematics/flow.gql ================================================ query Flow($id: uuid!) { flow_by_pk(id: $id) { id name tasks_aggregate { aggregate { count } } tasks { id name max_retries retry_delay trigger type upstream_edges { upstream_task { id name } downstream_task { id name } } downstream_edges { upstream_task { id name } downstream_task { id name } } __typename } __typename } } ================================================ FILE: src/graphql/Schematics/task-run.gql ================================================ query TaskRun($id: uuid!) { task_run_by_pk(id: $id) { } flow_run_by_pk(id: $id) { id name state start_time end_time task_runs(where: { map_index: { _eq: -1 } }) { id serialized_state state state_message state_timestamp start_time end_time map_index task { id name max_retries retry_delay trigger type upstream_edges { upstream_task { id name } downstream_task { id name } } downstream_edges { upstream_task { id name } downstream_task { id name } } __typename } __typename } __typename } } ================================================ FILE: src/graphql/Schematics/task.gql ================================================ query Task($id: uuid!) { task(where: { id: { _eq: $id } }) { id name downstream_edges { id downstream_task_id } upstream_edges { id upstream_task_id } slug tags type trigger description auto_generated __typename } } ================================================ FILE: src/graphql/Secrets/delete-secret.gql ================================================ mutation DeleteSecret($name: String!) { delete_secret(input: { name: $name }) { success } } ================================================ FILE: src/graphql/Secrets/set-secret.gql ================================================ mutation SetSecret($name: String!, $value: JSON!) { set_secret(input: { name: $name, value: $value }) { success } } ================================================ FILE: src/graphql/Task/activity.gql ================================================ query Activity( $limit: Int $taskId: uuid! $states: [String!] $timestamp: timestamptz ) { task_run_state( where: { task_run: { task: { id: { _eq: $taskId } } } timestamp: { _gte: $timestamp } state: { _in: $states } } limit: $limit order_by: { timestamp: desc } ) { id state message result timestamp task_run { id state start_time end_time task { id name max_retries } flow_run { id } name } } } ================================================ FILE: src/graphql/Task/heartbeat.gql ================================================ query Heartbeat($taskId: uuid!, $timestamp: timestamptz, $state: String) { task_run( limit: 10 where: { task_id: { _eq: $taskId } updated: { _gte: $timestamp } state: { _eq: $state } } order_by: { updated: desc_nulls_last } ) { id state state_message state_timestamp start_time end_time task { id name max_retries } __typename } } ================================================ FILE: src/graphql/Task/last-task-run.gql ================================================ query LastTaskRun($id: uuid!) { task_run( where: { task_id: { _eq: $id } state: { _neq: "Scheduled" } start_time: { _is_null: false } } order_by: { updated: desc } limit: 1 ) { id state } } ================================================ FILE: src/graphql/Task/table-task-runs-count.gql ================================================ query TableTaskRuns($taskId: uuid, $heartbeat: timestamptz) { task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } } ) { aggregate { count } } } ================================================ FILE: src/graphql/Task/table-task-runs.gql ================================================ query Task( $taskId: uuid! $limit: Int $offset: Int $orderBy: [task_run_order_by!] $heartbeat: timestamptz ) { task_by_pk(id: $taskId) { id name task_runs( where: { flow_run: { state: { _neq: "Scheduled" } } updated: { _gte: $heartbeat } } order_by: $orderBy limit: $limit offset: $offset ) { id map_index end_time start_time state flow_run { name id } } } } ================================================ FILE: src/graphql/Task/task-drawer.gql ================================================ query Task($id: uuid!) { task_by_pk(id: $id) { id name created description slug max_retries retry_delay trigger type flow { id name project { id name } } task_runs( where: { flow_run: { state: { _neq: "Scheduled" } } } order_by: { flow_run: { scheduled_start_time: desc } } limit: 1 ) { id state } } } ================================================ FILE: src/graphql/Task/task-runs-count.gql ================================================ query TaskRunsCount($where: task_run_bool_exp) { task_run_aggregate(where: $where) { aggregate { count } } } ================================================ FILE: src/graphql/Task/task-runs-drawer-count.gql ================================================ query FlowRunsCount($taskId: uuid, $heartbeat: timestamptz, $state: String) { task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: $state } } ) { aggregate { count } } } ================================================ FILE: src/graphql/Task/task-runs-drawer.gql ================================================ query FlowRuns( $taskId: uuid $heartbeat: timestamptz $state: String $limit: Int $offset: Int ) { task_run( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: $state } } limit: $limit offset: $offset ) { id end_time start_time state task { id name } flow_run { id name } } } ================================================ FILE: src/graphql/Task/task-runs.gql ================================================ query TaskRuns($taskId: uuid!, $heartbeat: timestamptz) { Success: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Success" } } order_by: { id: desc } ) { aggregate { count } } Running: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Running" } } order_by: { id: desc } ) { aggregate { count } } Pending: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Pending" } } order_by: { id: desc } ) { aggregate { count } } Paused: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Paused" } } order_by: { id: desc } ) { aggregate { count } } ClientFailed: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "ClientFailed" } } order_by: { id: desc } ) { aggregate { count } } Submitted: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Submitted" } } order_by: { id: desc } ) { aggregate { count } } Queued: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Queued" } } order_by: { id: desc } ) { aggregate { count } } Resume: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Resume" } } order_by: { id: desc } ) { aggregate { count } } Retrying: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Retrying" } } order_by: { id: desc } ) { aggregate { count } } Looped: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Looped" } } order_by: { id: desc } ) { aggregate { count } } Cached: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Cached" } } order_by: { id: desc } ) { aggregate { count } } Mapped: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Mapped" } } order_by: { id: desc } ) { aggregate { count } } Failed: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Failed" } } order_by: { id: desc } ) { aggregate { count } } TimedOut: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "TimedOut" } } order_by: { id: desc } ) { aggregate { count } } TriggerFailed: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "TriggerFailed" } } order_by: { id: desc } ) { aggregate { count } } Skipped: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Skipped" } } order_by: { id: desc } ) { aggregate { count } } Finished: task_run_aggregate( where: { task_id: { _eq: $taskId } updated: { _gte: $heartbeat } flow_run: { state: { _neq: "Scheduled" } } state: { _eq: "Finished" } } order_by: { id: desc } ) { aggregate { count } } } ================================================ FILE: src/graphql/Task/task.gql ================================================ query Task($id: uuid!) { task_by_pk(id: $id) { id name description created retry_delay max_retries trigger type upstream_edges { id upstream_task { id name retry_delay max_retries trigger type } } downstream_edges { id downstream_task { id name retry_delay max_retries trigger type } } flow { id flow_group_id name version project { id name } parameters } } } ================================================ FILE: src/graphql/TaskRun/activity.gql ================================================ query Activity( $limit: Int $taskRunId: uuid! $states: [String!] $timestamp: timestamptz ) { task_run_state( where: { task_run: { id: { _eq: $taskRunId } } timestamp: { _gte: $timestamp } state: { _in: $states } } limit: $limit order_by: { timestamp: desc } ) { id state message result timestamp } } ================================================ FILE: src/graphql/TaskRun/dependencies.gql ================================================ query Dependencies($taskRunId: uuid!, $flowRunId: uuid!) { task_run_by_pk(id: $taskRunId) { id state task { id name upstream_edges { id upstream_task { id name task_runs(where: { flow_run_id: { _eq: $flowRunId } }) { id state } } } downstream_edges { id downstream_task { id name task_runs(where: { flow_run_id: { _eq: $flowRunId } }) { id state } } } } } } ================================================ FILE: src/graphql/TaskRun/heartbeat.gql ================================================ query Heartbeat( $taskRunId: uuid! $timestamp: timestamptz $state: String $limit: Int ) { task_run(where: { id: { _eq: $taskRunId } }) { id states_aggregate { aggregate { count } } states( limit: $limit where: { timestamp: { _gte: $timestamp }, state: { _eq: $state } } order_by: { timestamp: desc_nulls_last } ) { id: timestamp state message timestamp result } } } ================================================ FILE: src/graphql/TaskRun/set-flow-run-states.gql ================================================ mutation SetFlowRunStates($flowRunId: UUID!, $version: Int!, $state: JSON!) { set_flow_run_states( input: { states: [{ flow_run_id: $flowRunId, state: $state, version: $version }] } ) { states { id status message } } } ================================================ FILE: src/graphql/TaskRun/set-task-run-states.gql ================================================ mutation setTaskRunStates($input: [set_task_run_state_input!]!) { set_task_run_states(input: { states: $input }) { states { id } } } ================================================ FILE: src/graphql/TaskRun/table-mapped-task-runs-count.gql ================================================ query TableMappedTaskRunsCount($where: task_run_bool_exp!) { task_run_aggregate(where: $where) { aggregate { count } } } ================================================ FILE: src/graphql/TaskRun/table-mapped-task-runs.gql ================================================ query TableMappedTaskRuns( $where: task_run_bool_exp! $limit: Int $offset: Int $orderBy: [task_run_order_by!] ) { task_run(where: $where, order_by: $orderBy, limit: $limit, offset: $offset) { id name map_index end_time start_time state } } ================================================ FILE: src/graphql/TaskRun/task-run-states-count.gql ================================================ query TaskRunStatesCount($where: task_run_state_bool_exp) { task_run_state_aggregate(where: $where) { aggregate { count } } } ================================================ FILE: src/graphql/TaskRun/task-run-states.gql ================================================ query TaskRunStates( $where: task_run_state_bool_exp $limit: Int! $offset: Int! $orderBy: [task_run_state_order_by!] ) { task_run_state( where: $where limit: $limit order_by: $orderBy offset: $offset ) { id state start_time timestamp result message } } ================================================ FILE: src/graphql/TaskRun/task-run.gql ================================================ query TaskRun($id: uuid!) { task_run_by_pk(id: $id) { id version state state_message state_timestamp updated start_time end_time map_index serialized_state name task { id name retry_delay max_retries trigger type upstream_edges { upstream_task { id name } downstream_task { id name } } downstream_edges { upstream_task { id name } downstream_task { id name } } } flow_run { id name state flow { id flow_group_id name project { id name } } parameters version } } } ================================================ FILE: src/graphql/TaskRun/utility_downstream_tasks.gql ================================================ query taskRunUtilityDownstreamTasks($flowRunId: uuid, $taskIds: _uuid) { utility_downstream_tasks(args: { start_task_ids: $taskIds }) { depth task { task_runs(where: { flow_run_id: { _eq: $flowRunId } }) { id map_index version } } task_id } } ================================================ FILE: src/graphql/TaskTagLimit/delete-task-concurrency-limit.gql ================================================ mutation DeleteTaskConcurrencyLimit($limitId: UUID!) { delete_task_concurrency_limit(input: { limit_id: $limitId }) { success } } ================================================ FILE: src/graphql/TaskTagLimit/task-tag-limit.gql ================================================ query TaskTagLimit { task_concurrency_limit { id limit name } } ================================================ FILE: src/graphql/TaskTagLimit/update-task-concurrency-limit.gql ================================================ mutation UpdateTaskConcurrencyLimit($name: String!, $limit: Int!) { update_task_concurrency_limit(input: { name: $name, limit: $limit }) { id } } ================================================ FILE: src/graphql/TaskTagUsage/task-tag-usage.gql ================================================ query TaskTagUsage($tags: [String!]) { task_concurrency(names: $tags) { name usage } } ================================================ FILE: src/graphql/TeamSettings/actions.gql ================================================ query actions { actions: action { action_type action_config id name } } ================================================ FILE: src/graphql/TeamSettings/cloud-hooks.gql ================================================ query CloudHooks($searchParams: [cloud_hook_bool_exp!]) { cloud_hook(where: { _or: $searchParams }) { id active config created name states tenant_id type updated version_group_id } } ================================================ FILE: src/graphql/TeamSettings/data-to-clear.js ================================================ import gql from 'graphql-tag' export default function(isCloud) { return gql` query DataToClear { project { id } flow(distinct_on: version_group_id, where: { archived: { _eq: false } }) { id } ${ isCloud ? ` secret_names memberships: user_view_same_tenant { id account_type memberships { id } } membershipInvitations: membership_invitation { id } api_token { id } ` : '' } } ` } ================================================ FILE: src/graphql/TeamSettings/delete-action.gql ================================================ mutation DeleteAction ($actionId: UUID!) { delete_action (input: {action_id: $actionId}) { success } } ================================================ FILE: src/graphql/TeamSettings/delete-project.gql ================================================ mutation DeleteProject($projectId: UUID!) { delete_project(input: { project_id: $projectId }) { success } } ================================================ FILE: src/graphql/TeamSettings/flow-version-groups.js ================================================ import gql from 'graphql-tag' export default function(isCloud) { return gql` query FlowVersionGroups { versionGroup: flow(distinct_on: [version_group_id]) { version_group_id id name project { id name } ${ isCloud ? ` created_by { id username }` : '' } } } ` } ================================================ FILE: src/graphql/TeamSettings/flows.gql ================================================ query Flows ($project: uuid) { flow(distinct_on: version_group_id, where: {_and: [{project_id: {_eq: $project}, archived: {_eq: false}}]}) { id archived name flow_group_id version_group_id project { id name } } } ================================================ FILE: src/graphql/TeamSettings/membership-invitation-roles.gql ================================================ query MembershipInvitationRoles { membership_invitation { role_id } } ================================================ FILE: src/graphql/TeamSettings/membership-roles.gql ================================================ query RolesInUse { membership { id role_id } } ================================================ FILE: src/graphql/TeamSettings/memberships.gql ================================================ query Memberships { memberships: user_view_same_tenant { id account_type memberships { id } } membershipInvitations: membership_invitation { id } } ================================================ FILE: src/graphql/TeamSettings/modify-project.gql ================================================ mutation ModifyProject( $projectId: UUID! $projectName: String! $projectDescription: String ) { set_project_name(input: { project_id: $projectId, name: $projectName }) { id } set_project_description( input: { project_id: $projectId, description: $projectDescription } ) { id } } ================================================ FILE: src/graphql/TeamSettings/permissions.gql ================================================ query Permissions { permissions_info { user_permissions_filtered_by_license_features all_permissions_filtered_by_license_features } } ================================================ FILE: src/graphql/TeamSettings/project.gql ================================================ query Project($projectName: String!) { project(where: { name: { _eq: $projectName } }) { id name } } ================================================ FILE: src/graphql/TeamSettings/projects.gql ================================================ query Projects { projects: project { id name description created active_flow_count: flows_aggregate(where: { archived: { _eq: false } }) { aggregate { count } } archived_flow_count: flows_aggregate(where: { archived: { _eq: true } }) { aggregate { count } } } } ================================================ FILE: src/graphql/TeamSettings/roles.gql ================================================ query AuthRoles { auth_role { name permissions created updated tenant_id id } } ================================================ FILE: src/graphql/TeamSettings/test-action.gql ================================================ mutation TestAction ($actionId: UUID!) { test_action (input: {action_id: $actionId}) { success } } ================================================ FILE: src/graphql/TeamSettings/usage.gql ================================================ query Usage($from: timestamptz, $to: timestamptz, $tenant_id: uuid) { usage: billing_usage( where: { timestamp: { _gte: $from, _lte: $to } tenant_id: { _eq: $tenant_id } } ) { id kind runs tenant_id timestamp usage_last_updated } } ================================================ FILE: src/graphql/Tenant/accept-membership-invitation.gql ================================================ mutation AcceptMembershipInvitation($membershipInvitationId: UUID!) { accept_membership_invitation( input: { invitation_id: $membershipInvitationId } ) { id } } ================================================ FILE: src/graphql/Tenant/create-enterprise-tenant.gql ================================================ mutation CreateEnterpriseTenant($input: create_enterprise_tenant_input!) { create_enterprise_tenant(input: $input) { id } } ================================================ FILE: src/graphql/Tenant/create-membership-invitation.gql ================================================ mutation CreateMembershipInvitation( $input: create_membership_invitation_input! ) { create_membership_invitation(input: $input) { id } } ================================================ FILE: src/graphql/Tenant/delete-enterprise-tenant.gql ================================================ mutation DeleteEnterpriseTenant($input: delete_enterprise_tenant_input!) { delete_enterprise_tenant(input: $input) { success error } } ================================================ FILE: src/graphql/Tenant/delete-membership-invitation.gql ================================================ mutation DeleteMembershipInvitation($membershipInvitationId: UUID!) { delete_membership_invitation( input: { invitation_id: $membershipInvitationId } ) { success } } ================================================ FILE: src/graphql/Tenant/delete-membership.gql ================================================ mutation DeleteMembership($membershipId: UUID!) { delete_membership(input: { membership_id: $membershipId }) { success } } ================================================ FILE: src/graphql/Tenant/delete-tenant.gql ================================================ mutation DeleteTenant($input: delete_tenant_input!) { delete_tenant(input: $input) { success } } ================================================ FILE: src/graphql/Tenant/membership-invitation.gql ================================================ query Memberships($id: uuid!) { membership_invitation_by_pk(id: $id ) { id created email role_detail { id name } tenant { id name slug } user { id username email } tenant_id } } ================================================ FILE: src/graphql/Tenant/membership.gql ================================================ query Membership($membershipId: uuid!) { membership(where: { id: { _eq: $membershipId } }) { id role_detail { id name } tenant { id name slug settings stripe_customer prefectAdminSettings: prefect_admin_settings } } } ================================================ FILE: src/graphql/Tenant/pending-invitations-by-email.gql ================================================ query PendingInvitations($email: String!) { pendingInvitations: membership_invitation( where: { email: { _eq: $email } } ) { id role_detail { id name } email created tenant { id name slug } } } ================================================ FILE: src/graphql/Tenant/pending-invitations.gql ================================================ query PendingInvitations { pendingInvitations: membership_invitation { id created email role_detail { id name } tenant { id } } } ================================================ FILE: src/graphql/Tenant/set-membership-role.gql ================================================ mutation SetMembershipRole($input: set_membership_role_input!) { set_membership_role(input: $input) { id } } ================================================ FILE: src/graphql/Tenant/tenant-by-pk.gql ================================================ query Tenant($id: uuid!) { tenant_by_pk(id: $id) { id name info settings slug created } } ================================================ FILE: src/graphql/Tenant/tenant-by-slug.gql ================================================ query CheckTenantSlug($slug: String!) { tenant(where: { slug: { _eq: $slug } }) { id } } ================================================ FILE: src/graphql/Tenant/tenant-id-by-membership-id.gql ================================================ query Membership($membershipId: uuid!) { membership(where: { id: { _eq: $membershipId } }) { id tenant { id } } } ================================================ FILE: src/graphql/Tenant/tenant-secret-names.gql ================================================ query TenantSecretNames { secret_names } ================================================ FILE: src/graphql/Tenant/tenant-token.gql ================================================ mutation SwitchTenant($tenantId: UUID!) { switch_tenant(input: { tenant_id: $tenantId }) { access_token expires_at refresh_token } } ================================================ FILE: src/graphql/Tenant/tenant-users.gql ================================================ query TenantUsers { tenantUsers: user_view_same_tenant { id username email first_name last_name account_type memberships { id tenant_id role_detail { id name } } } } ================================================ FILE: src/graphql/Tenant/tenants.js ================================================ import gql from 'graphql-tag' export default function(isCloud) { return gql` query Tenants { tenant { id created name info settings ${ isCloud ? ` prefectAdminSettings: prefect_admin_settings stripe_customer license_id ` : '' } slug } } ` } ================================================ FILE: src/graphql/Tenant/update-tenant.gql ================================================ mutation UpdateTenant($name: String!, $slug: String!) { update_tenant_name(input: { name: $name }) { id } update_tenant_slug(input: { slug: $slug }) { id } } ================================================ FILE: src/graphql/Tokens/api-keys.gql ================================================ query APIKeys { auth_api_key(order_by: { created: desc }) { id name created expires_at default_tenant_id user_id updated created_by { id username } } } ================================================ FILE: src/graphql/Tokens/api-tokens.gql ================================================ query APITokens { api_token( order_by: { created: desc } where: { scope: { _in: ["TENANT", "RUNNER"] } } ) { id name created_by { id username } created expires_at last_used tenant_id user_id scope } } ================================================ FILE: src/graphql/Tokens/create-api-key.gql ================================================ mutation CreateAPIKey( $user_id: UUID! $name: String! $expires_at: DateTime $tenant_id: UUID ) { create_api_key( input: { user_id: $user_id name: $name expires_at: $expires_at default_tenant_id: $tenant_id } ) { id key } } ================================================ FILE: src/graphql/Tokens/create-api-token.gql ================================================ mutation CreateAPIToken( $name: String! $scope: api_token_scope $expires_at: DateTime ) { create_api_token( input: { name: $name, scope: $scope, expires_at: $expires_at } ) { id token } } ================================================ FILE: src/graphql/Tokens/delete-api-key.gql ================================================ mutation DeleteAPIKey($id: UUID!) { delete_api_key(input: { key_id: $id }) { success } } ================================================ FILE: src/graphql/Tokens/delete-token.gql ================================================ mutation DeleteAPIToken($id: UUID!) { delete_api_token(input: { token_id: $id }) { success } } ================================================ FILE: src/graphql/Tokens/user-tokens.gql ================================================ query APITokens { api_token(order_by: { created: desc }, where: { scope: { _eq: "USER" } }) { id name created expires_at last_used } } ================================================ FILE: src/graphql/Update/write-run-logs.gql ================================================ mutation WriteRunLogs( $flowRunId: UUID! $taskRunId: UUID $message: String $name: String ) { write_run_logs( input: { logs: [ { flow_run_id: $flowRunId task_run_id: $taskRunId name: $name message: $message } ] } ) { success } } ================================================ FILE: src/graphql/User/create-service-account.gql ================================================ mutation CreateServiceAccount($input: create_service_account_input!) { create_service_account(input: $input) { id } } ================================================ FILE: src/graphql/User/delete-service-account.gql ================================================ mutation DeleteServiceAccount($id: UUID!) { delete_service_account(input: { user_id: $id }) { success } } ================================================ FILE: src/graphql/User/update-user-details.gql ================================================ mutation UpdateUserDetails($firstName: String, $lastName: String) { update_user_details(input: { first_name: $firstName, last_name: $lastName }) { id } } ================================================ FILE: src/graphql/User/update-user-settings.gql ================================================ mutation UpdateUserSettings($input: JSON) { update_user_settings(input: { settings: $input }) { id } } ================================================ FILE: src/graphql/User/user.gql ================================================ query User { user { id username email settings default_membership_id first_name last_name memberships { id tenant { id name slug } role_detail { id name } } } } ================================================ FILE: src/graphql/api.gql ================================================ query Api { api { backend mode version core_version release_timestamp } } ================================================ FILE: src/graphql/concurrent-runs.gql ================================================ query ConcurrentRuns { flow_run(where: { state: { _in: ["Running", "Submitted", "Cancelling"] } }) { id } } ================================================ FILE: src/graphql/hello.gql ================================================ query Hello { hello } ================================================ FILE: src/graphql/log-in.gql ================================================ mutation LogIn($input: log_in_input!) { log_in(input: $input) { access_token expires_at refresh_token } } ================================================ FILE: src/graphql/log-out.gql ================================================ mutation LogOut($input: log_out_input!) { log_out(input: $input) { success } } ================================================ FILE: src/graphql/refresh-token.gql ================================================ mutation RefreshToken($input: refresh_token_input!) { refresh_token(input: $input) { access_token expires_at refresh_token } } ================================================ FILE: src/graphql/support/send-feedback.gql ================================================ mutation($type: String!, $message: String!) { send_feedback(input: { type: $type, message: $message }) { success } } ================================================ FILE: src/layouts/AgentLayout.vue ================================================ ================================================ FILE: src/layouts/DashboardLargeActivityLayout.vue ================================================ ================================================ FILE: src/layouts/DashboardLargeChartLayout.vue ================================================ ================================================ FILE: src/layouts/DashboardLayout.vue ================================================ ================================================ FILE: src/layouts/FullPageLayout.vue ================================================ ================================================ FILE: src/layouts/ManagementLayout.vue ================================================ ================================================ FILE: src/layouts/NotificationsLayout.vue ================================================ ================================================ FILE: src/layouts/SubPageNav.vue ================================================ ================================================ FILE: src/layouts/TileLayout-Alternate.vue ================================================ ================================================ FILE: src/layouts/TileLayout-Full.vue ================================================ ================================================ FILE: src/layouts/TileLayout.vue ================================================ ================================================ FILE: src/layouts/TutorialLayout.vue ================================================ ================================================ FILE: src/main.js ================================================ import '@/plugins/logrocket.js' import { login, switchTenant, commitTokens, logout } from '@/auth/index.js' import { CreatePrefectUI } from '@/app.js' import store from '@/store' import jwt_decode from 'jwt-decode' import LogRocket from 'logrocket' export const setStartupTenant = async () => { const path = window.location.pathname const split = path.split('/') const slug = split?.[1] const tenants = store.getters['tenant/tenants'] const slugTenant = tenants.find(t => t.slug == slug) let tenant if (process.env.VUE_APP_BACKEND === 'SERVER') { if (slugTenant) tenant = slugTenant else tenant = tenants[0] } else { const tokenTenantId = jwt_decode(store.getters['auth/authorizationToken']) .tenant_id const tokenTenant = tenants.find(t => t.id == tokenTenantId) let needNewTokens = false // If there's no slug in the URL or the token // tenant matches the intended tenant, we can set the current tenant // to the token tenant; if the token tenant is undefined, // we fallback to the user's first tenant. If all of these fail, // we redirect to a help screen cause the user can't create a tenant // with this token atm if (slugTenant) { if (tokenTenant?.slug !== slug) needNewTokens = true tenant = slugTenant } else if (tokenTenant) { tenant = tokenTenant } else if (tenants?.[0]) { tenant = tenants?.[0] needNewTokens = true } else { // redirect to help screen window.location.href = '/access-denied' } // We want to make sure the URL slug matches // the tenant slug if (slug && slug !== tenant.slug && slugTenant) { window.history.pushState('', '', tenant.slug) } if (needNewTokens) { const tokens = await switchTenant(tenant.id) commitTokens(tokens) } } tenant.role = process.env.VUE_APP_BACKEND === 'CLOUD' ? store.getters['user/memberships'].find( membership => membership.tenant.id == tenant.id )?.role_detail?.name : 'TENANT_ADMIN' store.commit('tenant/setTenant', tenant) if (process.env.VUE_APP_BACKEND === 'CLOUD') { await store.dispatch('license/getLicense') } } const timeout = async (main, fallback, fallbackargs, time) => Promise.race([main, new Promise((_r, rej) => setTimeout(rej, time))]).catch( () => { localStorage.setItem('prefect_fallback_auth', Date.now()) return fallback(...fallbackargs) } ) let loading = false export const start = async () => { if ( window.location.pathname?.includes('logout') || window.location.pathname?.includes('access-denied') ) { CreatePrefectUI() return } const start0 = performance.now() if (process.env.VUE_APP_BACKEND === 'CLOUD') { // we run this when the application starts or a user returns to the page after some time away // this logs into the default tenant so that we can fetch information we need // if the user is requesting a different tenant (indicated by the URL), // we swap out these tokens later loading = true let tokens // We check local storage for a fallback token and compare it against // the curent timestamp - 1 minute. If it falls outside that window // we attempt the normal flow const fallbackTimestamp = localStorage.getItem('prefect_fallback_auth') // We coerce the timestamp because localstorage stores it as a string if (fallbackTimestamp && +fallbackTimestamp > Date.now() - 60000) { tokens = await login(true) } else { tokens = await timeout(login(), login, [true], 10000) } if (tokens) { try { LogRocket.track('Tokens', { source: tokens.source || 'No source', idTokenExpiration: new Date(tokens.idToken?.expiresAt)?.toString() || 'No id token', authorizationTokenExpiration: tokens.authorizationTokens?.expires_at || 'No authorization token' }) } catch (e) { LogRocket.captureException(e) } } else return commitTokens(tokens) loading = false } else { // If we're on Server we fetch settings window.prefect_ui_settings = await fetch('/settings.json') .then(response => response.json()) .then(data => data) .catch(e => e) } try { // This is a good place to implement browser-side InnoDB or other caching await Promise.all([ store.dispatch('user/getUser'), store.dispatch('tenant/getTenants') ]) await setStartupTenant() } catch (e) { // eslint-disable-next-line no-console console.log(e) } const start1 = performance.now() // eslint-disable-next-line no-console console.log('Start total: ', start1 - start0) LogRocket.track('Start', { timeToStart: start1 - start0 }) CreatePrefectUI() } start() // ****************************************************************************************** // Browser visibility API handler for auth // ****************************************************************************************** // Visibility change properties vary between browsers let hidden, visibilityChange const handleVisibilityChange = async () => { if (store.getters['api/isServer'] || loading) return loading = true if (!document[hidden]) { if ( (!store.getters['auth/isAuthenticated'] || !store.getters['auth/isAuthorized']) && !window.location.pathname?.includes('logout') && !window.location.pathname?.includes('access-denied') ) { let tokens // We check local storage for a fallback token and compare it against // the curent timestamp - 1 minute. If it falls outside that window // we attempt the normal flow const fallbackTimestamp = localStorage.getItem('prefect_fallback_auth') // We coerce the timestamp because localstorage stores it as a string if (fallbackTimestamp && +fallbackTimestamp > Date.now() - 60000) { tokens = await login(true) } else { tokens = await timeout(login(), login, [true], 10000) } if (tokens) commitTokens(tokens) else logout() } } loading = false } if (window) { if (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later hidden = 'hidden' visibilityChange = 'visibilitychange' } else if (typeof document.msHidden !== 'undefined') { hidden = 'msHidden' visibilityChange = 'msvisibilitychange' } else if (typeof document.webkitHidden !== 'undefined') { hidden = 'webkitHidden' visibilityChange = 'webkitvisibilitychange' } window.addEventListener(visibilityChange, handleVisibilityChange, false) } ================================================ FILE: src/middleware/flowNavGuard.js ================================================ import { fallbackApolloClient } from '@/vue-apollo' import store from '@/store/index' const flowNavGuard = async (to, from, next) => { const id = to.params?.id const flows = store.getters['data/flows'] const group = flows?.find(flow => flow.flow_group_id == id) if (group) return next() let version try { version = await fallbackApolloClient.query({ query: require('@/graphql/Middleware/flow.gql'), variables: { id: id } }) } catch { return next({ name: 'not-found' }) } if (version?.data?.flow_by_pk?.flow_group_id) { return next({ name: to.name, params: { id: version.data.flow_by_pk.flow_group_id }, query: { version: version.data.flow_by_pk.version, ...to.query } }) } try { await store.dispatch('data/activateFlow', id) const renewedFlows = store.getters['data/flows'] const renewedGroup = renewedFlows?.find(flow => flow.flow_group_id == id) if (renewedGroup) return next() } catch { return next({ name: 'not-found' }) } return next({ name: 'not-found' }) } export default flowNavGuard ================================================ FILE: src/middleware/prefectAuth.js ================================================ import { fallbackApolloClient } from '@/vue-apollo' const prefectAuth = async idToken => { try { const result = await fallbackApolloClient.mutate({ mutation: require('@/graphql/log-in.gql'), variables: { input: { id_token: idToken } }, errorPolicy: 'all' }) if (result?.data?.log_in) { return result.data.log_in } else if (result?.errors) { if ( result.errors[0].message === "We get it, you're reeaally interested. Unfortunately, the timing isn't quite Prefect yet." ) { return null } else { throw new Error(result.errors[0].message) } } } catch (error) { throw new Error('Error authorizing prefectAuth', error) } } const prefectRefresh = async accessToken => { try { const result = await fallbackApolloClient.mutate({ mutation: require('@/graphql/refresh-token.gql'), variables: { input: { access_token: accessToken } } }) if (result?.data?.refresh_token) { return result.data.refresh_token } else if (result.error) { throw new Error(result.error) } else { throw new Error('No token returned') } } catch (error) { throw new Error('Error refreshing token in prefectRefresh', error) } } const prefectUser = async () => { try { const user = await fallbackApolloClient.query({ query: require('@/graphql/User/user.gql'), fetchPolicy: 'no-cache' }) return user.data.user[0] } catch (error) { throw new Error('Error retrieving user in prefectUser', error) } } const prefectTenants = async isCloud => { const result = await fallbackApolloClient.query({ query: require('@/graphql/Tenant/tenants.js').default(isCloud), fetchPolicy: 'no-cache' }) return result.data.tenant } export { prefectAuth, prefectRefresh, prefectUser, prefectTenants } ================================================ FILE: src/mixins/authMixin.js ================================================ import { OktaAuth } from '@okta/okta-auth-js' import { mapActions } from 'vuex' const { VUE_APP_PUBLIC_CLIENT_ID, VUE_APP_PUBLIC_ISSUER } = process.env const authClient = new OktaAuth({ clientId: VUE_APP_PUBLIC_CLIENT_ID, issuer: VUE_APP_PUBLIC_ISSUER, redirectUri: window.location.origin, scopes: ['openid', 'profile', 'email'], responseType: 'token', testing: { disableHttpsCheck: true } }) export const authMixin = { data() { return { email: null, error: null, password: null } }, methods: { ...mapActions('auth', ['authenticate']), async checkSession() { // const session = await authClient.session.exists() }, async getSession() { const sessionExists = await authClient.session.exists() if (sessionExists) { await this.getTokens() } }, async getTokens(sessionToken) { const { tokens } = await authClient.token.getWithoutPrompt({ responseType: 'id_token', sessionToken: sessionToken // this is optional depending on session cookies }) this.authenticate(tokens) }, async login() { const { sessionToken } = await authClient.signInWithCredentials({ username: this.email, password: this.password }) await this.getTokens(sessionToken) this.$router.push({ name: 'dashboard' }) }, loginWithGitHub() {}, loginWithGoogle() {} } } ================================================ FILE: src/mixins/cancelLateRunsMixin.js ================================================ import gql from 'graphql-tag' import { mapActions } from 'vuex' export const cancelLateRunsMixin = { data() { return { // Clearing late runs clearLateRunsError: false, isClearingLateRuns: false, showClearLateRunsDialog: false, individualRuns: [], scheduledRunIds: [] } }, watch: { lateRuns() { if (this.lateRuns?.length === 0 && this.isClearingLateRuns) { this.isClearingLateRuns = false } } }, methods: { ...mapActions('alert', ['setAlert']), handleOpenDialog() { this.IdCheck() this.showClearLateRunsDialog = true }, IdCheck() { return this.lateRuns?.map(run => { if (run.flow?.is_schedule_active) { this.scheduledRunIds.push(run.flow?.id) } else { this.individualRuns.push(run) } }) }, async runMutation(mutationType) { const mutation = gql` mutation CancelLateRuns { ${mutationType} }` await this.$apollo.mutate({ mutation }) }, async clearLateRuns() { try { this.showClearLateRunsDialog = false this.isClearingLateRuns = true if (this.scheduledRunIds.length > 1) { const uniqueIds = [...new Set(this.scheduledRunIds)] const clearMutation = uniqueIds.map( (id, ind) => ` set_schedule_inactive${ind}: set_schedule_inactive(input: { flow_id: "${id}" }) { success, error }` ) await this.runMutation(clearMutation) const resetMutation = uniqueIds.map( (id, ind) => ` set_schedule_active${ind}: set_schedule_active(input: { flow_id: "${id}" }) { success, error }` ) await this.runMutation(resetMutation) // Cancel flow runs & task runs } // There's probably a better way to handle the JSON stringy conversion here. if (this.individualRuns?.length > 0) { const statesMutation = ` set_flow_run_states( input: { states: [${this.individualRuns.map(r => { return `{ flow_run_id: "${r.id}", state: ${JSON.stringify( '{"type": "Cancelled","message": "This run was late and so was cancelled from the UI."}' )}, version: ${r.version} }` })}] } ) { states { status } } ` // Build mutation to delete late flow runs. await this.runMutation(statesMutation) } // Refetch upcoming flows await this.$apollo.queries.upcoming.refetch() } catch (error) { this.clearLateRunsError = true this.setAlert({ alertShow: true, alertMessage: 'Something went wrong while trying to clear your late flow runs. Please try again later.', alertType: 'error' }) throw error } } } } ================================================ FILE: src/mixins/changeStateMixin.js ================================================ import { mapActions, mapGetters } from 'vuex' import { FINISHED_STATES } from '@/utils/states' export const changeStateMixin = { props: { taskRun: { default: null, type: Object }, flowRun: { default: null, type: Object }, dialogType: { required: true, type: String } }, data() { return { setStateDialog: false, markAsLoading: false, resumeLoad: '', reason: '', e1: 1, formError: false, name: 'PrefectUIRunMarkAsButton', setStateError: false, selectedState: '', allTasks: false, cancelLoad: false, setStateSuccessA: false, setStateSuccessB: false, taskRunApproved: false, alertMessage: 'We hit a problem. Please try marking the state again.', taskStates: [ { header: 'Finished States' }, { divider: '...' }, 'Failed', 'Success', 'Cancelled', 'Finished', 'TimedOut', { header: 'Scheduled States - To Re-run Task Run' }, { divider: '...' }, 'Scheduled', 'Resume', { header: 'Pending - to clear the state' }, { divider: '...' }, 'Pending' ], flowStates: [ { header: 'Finished States' }, { divider: '...' }, 'Failed', 'Success', 'Cancelled', 'Finished', { header: 'Scheduled - To Re-run Flow Run' }, { divider: '...' }, 'Scheduled' ] } }, computed: { ...mapGetters('user', ['user']), ...mapGetters('license', ['hasPermission']), activeButton() { return this.hasPermission('update', 'run') }, isFinished() { return FINISHED_STATES.includes(this.flowRun.state) }, isFinishing() { return ( this.flowRun.state == 'Cancelling' || FINISHED_STATES.includes(this.flowRun.state) ) }, filteredStates() { if (this.dialogType === 'task run') { return this.taskStates.filter(state => state !== this.taskRun.state) } else { return this.flowStates.filter(state => state !== this.flowRun.state) } }, checkVersion() { let split = this.flowRun?.flow?.core_version.split('.') let major = parseInt(split[0]), minor = parseInt(split[1]), patch = parseInt(split[2]) return major >= 1 || (minor >= 13 && patch >= 0) } }, methods: { ...mapActions('alert', ['setAlert']), runLogMessage() { if (this.dialogType == 'resume') { return `Task ${this.taskRun.task.name} approved by ${this.user.username}` } else if (this.reason) { return `${this.user.username || 'User'} marked ${this.dialogType} as ${ this.selectedState } because "${this.reason}"` } else { return `${this.user.username || 'User'} marked ${this.dialogType} as ${this.selectedState}` } }, async writeLogs() { const { data } = await this.$apollo.mutate({ mutation: require('@/graphql/Update/write-run-logs.gql'), variables: { flowRunId: this.taskRun ? this.taskRun.flow_run?.id : this.flowRun.id, taskRunId: this.taskRun ? this.taskRun.id : null, name: this.name, message: this.runLogMessage() } }) return data?.write_run_logs?.success }, resumeRun() { this.resumeLoad = this.taskRun.id this.selectedState = 'Resume' this.alertMessage = 'An error occurred when approving this task run. Please try again.' this.changeState() }, async cancelFlowRun() { this.cancelLoad = true this.selectedState = 'Cancelled' this.allTasks = true try { await this.$apollo.mutate({ mutation: require('@/graphql/FlowRun/cancel-flow-run.gql'), variables: { flowRunId: this.flowRun.id } }) this.setAlert({ alertShow: true, alertMessage: 'Your flow run will be cancelled; please allow some time for this to take effect.', alertType: 'success' }) } catch (e) { this.setAlert({ alertShow: true, alertMessage: 'Something went wrong when trying to cancel this flow run, please try again.', alertType: 'error' }) } this.$emit('update') this.cancelLoad = false }, async changeState() { try { //make sure we get the lastest version of each task run this.markAsLoading = true if (this.allTasks) await this.$apollo.queries.taskRunIds.refetch() const logSuccess = this.writeLogs() if (logSuccess) { if ( this.dialogType === 'task run' || this.dialogType == 'resume' || (this.allTasks && this.taskRunIds?.length) ) { let taskState if (this.dialogType === 'task run' || this.dialogType == 'resume') { taskState = { task_run_id: this.taskRun.id, version: this.taskRun.version, state: { type: this.selectedState, message: this.runLogMessage() } } } else { taskState = this.taskRunIds.map(taskRun => { return { version: taskRun.version, task_run_id: taskRun.id, state: { type: this.selectedState, message: this.runLogMessage() } } }) } const result = await this.$apollo.mutate({ mutation: require('@/graphql/TaskRun/set-task-run-states.gql'), variables: { input: taskState } }) this.setStateSuccessA = result?.data?.set_task_run_states?.states?.length if (!this.setStateSuccessA) { this.setStateError = true } if (this.setStateSuccessA && this.dialogType == 'resume') { this.taskRunApproved = true } } if (this.dialogType === 'flow run') { const result = await this.$apollo.mutate({ mutation: require('@/graphql/TaskRun/set-flow-run-states.gql'), variables: { flowRunId: this.flowRun.id, version: this.flowRun.version, state: { type: this.selectedState, message: this.runLogMessage() } } }) this.setStateSuccessB = result?.data?.set_flow_run_states?.states?.length if (!this.setStateSuccessB) { this.setStateError = true } } } else { this.setStateError = true } } catch (error) { this.setStateError = true } if (this.setStateError) { this.setAlert({ alertShow: true, alertMessage: this.alertMessage, alertType: 'error' }) } if ( this.setStateSuccessA && this.setStateSuccessB && this.cancelLoad && !this.setStateError ) { this.setAlert({ alertShow: true, alertMessage: 'Your flow run will be cancelled; please allow some time for this to take effect.', alertType: 'success' }) } if (this.setStateSuccessA && this.childTasks) { this.setAllTaskRuns(this.selectedState) } setTimeout(() => this.reset(), 500) this.$emit('update') }, async setAllTaskRuns(type) { try { const { data } = await this.$apollo.query({ query: require('@/graphql/FlowRun/task-run-ids.gql'), variables: { flowRunId: this.flowRun.id, parentMapIndex: null, childMapIndex: -1 } }) const taskState = data.task_run.map(taskRun => { return { version: taskRun.version, task_run_id: taskRun.id, state: { type: type, message: this.runLogMessage() } } }) await this.$apollo.mutate({ mutation: require('@/graphql/TaskRun/set-task-run-states.gql'), variables: { input: taskState } }) this.childTasks = false } catch (e) { this.setAlert({ alertShow: true, alertMessage: 'An error occured setting the state of mapped task runs', alertType: 'error' }) } this.$emit('update') }, checkContinue() { if (this.selectedState) { this.e1 = 2 } }, reset() { this.setStateDialog = false this.markAsLoading = false this.reason = '' this.form = false this.setStateError = false this.e1 = 1 this.selectedState = '' this.allTasks = false this.cancelLoad = false this.alertMessage = 'We hit a problem. Please try marking the state again.' this.setStateSuccessA = false this.setStateSuccessB = false this.cancelLoad = false this.resumeLoad = '' } } } ================================================ FILE: src/mixins/cloudHookMixin.js ================================================ import { openCloudHookTypes, featureFlaggedCloudHookTypes, GROUP_COLORS, STATES } from '@/utils/cloudHooks' import LogRocket from 'logrocket' import { mapGetters } from 'vuex' export const cloudHookMixin = { data() { return { createNewCloudHook: false, error: { createCloudHook: null }, loading: { createCloudHook: false } } }, computed: { ...mapGetters('tenant', ['tenant']), cloudHookTypes() { if (this.tenant.prefectAdminSettings?.notifications) return featureFlaggedCloudHookTypes return openCloudHookTypes } }, methods: { async _handleSetCloudHookStatusChange(val, item) { item.loading = true try { const updateCloudHookStatus = !val ? await this.$apollo.mutate({ mutation: require('@/graphql/Mutations/set-cloud-hook-inactive.gql'), variables: { input: { cloud_hook_id: item.id } }, errorPolicy: 'all' }) : await this.$apollo.mutate({ mutation: require('@/graphql/Mutations/set-cloud-hook-active.gql'), variables: { input: { cloud_hook_id: item.id } }, errorPolicy: 'all' }) setTimeout(() => { let status = updateCloudHookStatus.data ? updateCloudHookStatus.data.setCloudHookActive || updateCloudHookStatus.data.setCloudHookInactive || updateCloudHookStatus.data.set_cloud_hook_active || updateCloudHookStatus.data.set_cloud_hook_inactive : false if (!status || !status.success) { item.loading = false } else { this.$apollo.queries.cloudHooks.refetch() item.loading = false } }, 500) } catch (e) { LogRocket.captureException(e, { extra: { pageName: 'Flow Settings', stage: 'Cloud Hook Status Update' } }) item.loading = false } }, stateGroup(states) { if (this.stateGroupAll(states)) return 'All' if (this.stateGroupFailed(states)) return 'Failed' if (this.stateGroupFinished(states)) return 'Finished' if (this.stateGroupSuccess(states)) return 'Success' return 'Custom' }, stateGroupAll(states) { return this.cloudHookStateGroup('All', states) }, stateGroupFailed(states) { return this.cloudHookStateGroup('Failed', states) }, stateGroupFinished(states) { return this.cloudHookStateGroup('Finished', states) }, stateGroupSuccess(states) { return this.cloudHookStateGroup('Success', states) }, stateGroupColor(group) { return GROUP_COLORS[group] }, typeIcon(type) { const hook = this.cloudHookTypes.find(t => t.type == type) if (hook) return hook.icon return '' }, typeTitle(type) { const hook = this.cloudHookTypes.find(t => t.type == type) if (hook) return hook.title return type.toLowerCase() }, cloudHookStateGroup(group, states) { return ( STATES[group] && STATES[group].every(state => states?.includes(state)) && STATES[group].length == states.length ) } } } ================================================ FILE: src/mixins/eventsMixin.js ================================================ const expectedEvent = [ 'ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a' ] export const eventsMixin = { data() { return { sequence: [] } }, created() { document.addEventListener('keydown', this.handleEvent) }, beforeDestroy() { document.removeEventListener('keydown', this.handleEvent) }, methods: { checkSequence() { for (let i = 0; i < this.sequence.length; ++i) { let key = this.sequence[i] if (key !== expectedEvent[i]) { this.sequence = [] break } if (i == expectedEvent.length - 1) { this.sequence = [] this.handleSequenceSuccess() } } }, handleEvent(e) { this.sequence.push(e?.key) this.checkSequence() }, handleSequenceSuccess() { const app = document.getElementById('app') app.classList.add('roll') setTimeout(() => { app.classList.remove('roll') }, 5000) } } } ================================================ FILE: src/mixins/flowRunHistoryMixin.js ================================================ import { mapGetters } from 'vuex' import moment from 'moment' export const flowRunHistoryMixin = { data() { return { flowRuns: [], scheduledFlowRuns: [], tooltip: null, tooltipLoading: false, unwatchFlowRuns: null } }, computed: { ...mapGetters('user', ['timezone']), ...mapGetters('tenant', ['tenant']), breaklines() { if (this.reversedRuns.length <= 0) return [] let breaklines = [] let cutoff = null, index = 0 this.reversedRuns.forEach((d, i) => { let future = d.state == 'Scheduled' ? this.getTimeDiff(d.scheduled_start_time)._milliseconds <= 0 : null if (future && !cutoff) { cutoff = d.id index = i } }) let anchor = index > 4 && index < 98 ? 'middle' : index < 98 ? 'start' : 'end' if (cutoff) breaklines.push({ label: '(now)', value: cutoff, anchor: anchor }) if (!cutoff) { let lastIndex = this.reversedRuns.length - 1 breaklines.push({ label: this.getTimeFrom( this.reversedRuns[lastIndex].start_time || this.reversedRuns[lastIndex].scheduled_start_time ), value: this.reversedRuns[lastIndex].id, after: true, anchor: lastIndex > 98 ? 'end' : 'middle' }) if (this.reversedRuns.length > 4) { breaklines.push({ label: this.getTimeFrom( this.reversedRuns[0].start_time || this.reversedRuns[0].scheduled_start_time ), value: this.reversedRuns[0].id, anchor: 'start' }) } } else if (this.reversedRuns.length > 4) { breaklines.push({ label: this.getTimeFrom( this.reversedRuns[0].start_time || this.reversedRuns[0].scheduled_start_time ), value: this.reversedRuns[0].id, anchor: 'start' }) } return breaklines }, canShowTooltip() { return ( this.tooltip && this.reversedRuns.find(f => f.id == this.tooltip.data.id) ) }, reversedRuns() { let runs = [...this.scheduledFlowRuns, ...this.flowRuns] const computedStyle = getComputedStyle(document.documentElement) const notPastRunStates = [ 'Running', 'Scheduled', 'Queued', 'Paused', 'Submitted' ] runs.forEach(d => { let future = this.getTimeDiff(d.scheduled_start_time)._milliseconds if (d.start_time && d.end_time) { let end = new Date(d.end_time), start = new Date(d.start_time) d.duration = end - start } else if (d.start_time && notPastRunStates.includes(d.state)) { let now = new Date(), start = new Date(d.start_time) d.duration = now - start } // We add a filler end_time for instances where a finished // state has been set but the PG trigger to populate end_time // hasn't run yet if ( !d.end_time && d.start_time && !notPastRunStates.includes(d.state) && d.state !== 'Skipped' ) { d.end_time = new Date() } d.finished = !notPastRunStates.includes(d.state) // We do the same for running flows without start_time if (!d.start_time && d.state == 'Running') { d.start_time = new Date() } d.ignore = d.state == 'Scheduled' d.color = computedStyle?.getPropertyValue(`--v-${d.state}-base`) d.usePattern = d.state == 'Scheduled' && future <= 0 d.warningOpacity = d.state !== 'Scheduled' || d.start_time || future <= 10000 ? 0 : 1 }) const pastRuns = runs .filter(r => !notPastRunStates.includes(r.state)) .sort(this.sortTime('end_time', 'scheduled_start_time')) const currentRuns = runs .filter(r => r.state == 'Running' || r.state == 'Paused') .sort(this.sortTime('start_time')) const futureRuns = runs .filter(r => r.state == 'Scheduled') .sort(this.sortTime('scheduled_start_time')) const queuedRuns = runs .filter(r => r.state == 'Queued' || r.state == 'Submitted') .sort(this.sortTime('scheduled_start_time')) // We have to sort again because the server-side sorting // is unstable const toReturn = [ ...pastRuns, ...currentRuns, ...queuedRuns, ...futureRuns ] return toReturn } }, methods: { _barMouseout() { this.setTooltip(null) this.tooltipLoading = false }, async _barMouseover(tooltipData) { this.setTooltip(tooltipData) this.checkFormatTime(tooltipData, 'end_time') this.checkFormatTime(tooltipData, 'start_time') this.checkFormatTime(tooltipData, 'scheduled_start_time') tooltipData.status_style = this.statusStyle(tooltipData.data.state) const flowId = tooltipData.data.flow_id if (!flowId) { this.setTooltip(tooltipData) return } try { this.tooltipLoading = true const { data } = await this.$apollo.query({ query: require('@/graphql/Dashboard/timeline-flow.gql'), variables: { flowId } }) tooltipData.data.flow = data.flow_by_pk } finally { this.tooltipLoading = false // We check this to make sure we're not showing the tooltip // when _barMouseout has already run or a different // bar has been hovered if (this.tooltip && this.tooltip.data.flow_id == flowId) this.setTooltip(tooltipData) } }, _barClick(d) { this.$router.push({ name: 'flow-run', params: { id: d.id, tenant: this.tenant?.slug } }) }, formatTime(timestamp) { if (!timestamp) throw new Error('Did not receive a timestamp') let t = moment(timestamp).tz(this.timezone), shortenedTz = moment() .tz(this.timezone || Intl.DateTimeFormat().resolvedOptions().timeZone) .zoneAbbr() let timeObj = t ? t : moment(timestamp) let formatted = timeObj.calendar(null, { sameDay: 'h:mma', sameElse: 'MMMM D, YYYY [at] h:mma' }) return `${formatted} ${shortenedTz}` }, getTimeDiff(time) { let now, start if (this.timezone) { now = new moment().tz(this.timezone) start = moment(time).tz(this.timezone) } else { now = new moment() start = moment(time) } let diff = moment.duration(now.diff(start)) return diff }, getTimeFrom(time) { let now, _time if (this.timezone) { now = new moment().tz(this.timezone) _time = moment(time).tz(this.timezone) } else { now = new moment() _time = moment(time) } return _time.from(now) }, sortTime(ref, secondaryRef) { return function(a, b) { return ( new Date(a[ref] || a[secondaryRef]) - new Date(b[ref] || b[secondaryRef]) ) } }, statusStyle(state) { return { 'border-radius': '50%', display: 'inline-block', 'background-color': `var(--v-${state}-base)`, height: '1rem', width: '1rem' } }, setTooltip(tooltip) { if (this.unwatchFlowRuns) { this.unwatchFlowRuns() } if (tooltip) { this.unwatchFlowRuns = this.$watch( 'flowRuns', this.validateTooltipIdStillPresent ) } this.tooltip = tooltip }, validateTooltipIdStillPresent() { const exists = this.flowRuns.some(f => f.id == this.tooltip.data.id) if (!exists) { this.setTooltip(null) } }, checkFormatTime(tooltipData, property) { if (tooltipData.data[property]) { const formatted = this.formatTime(tooltipData.data[property]) tooltipData.data[`display_${property}`] = formatted } } } } ================================================ FILE: src/mixins/formatTimeMixin.js ================================================ import moment from '@/utils/moment' import { mapGetters } from 'vuex' export const formatTime = { data() { return { dateFilters: [ { name: '1 Hour', value: 'hour' }, { name: '24 Hours', value: 'day' }, { name: '7 Days', value: 'week' }, { name: '30 Days', value: 'month' } ], // querying failures for over 24 hours either goes into endless loading or returns a 504 so shortening for now shortDateFilters: [ { name: '1 Hour', value: 'hour' }, { name: '24 Hours', value: 'day' }, { name: '7 Days', value: 'week' } ], selectedDateFilter: 'day' } }, computed: { ...mapGetters('user', ['user', 'timezone']) }, methods: { dateDiff(date1, date2) { const a = moment(date1) const b = moment(date2) return b.diff(a, 'days') }, datePartHour(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) return `${timeObj ? timeObj.format('h') : moment(timestamp).format('h')}` }, datePartMinute(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) return `${ timeObj ? timeObj.format('mm') : moment(timestamp).format('mm') }` }, datePartMeridian(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) return `${timeObj ? timeObj.format('a') : moment(timestamp).format('a')}` }, dateParts(timestamp) { if (!timestamp) { return } const timeObj = moment(timestamp).tz(this.timezone) ?? moment(timestamp) return { hour: timeObj.format('h'), minute: timeObj.format('mm'), meridian: timeObj.format('a') } }, formatTimeRelative(timestamp) { let timeObj = moment(timestamp).tz(this.timezone) return timeObj ? timeObj.fromNow() : moment(timestamp).fromNow() }, formatDate(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) return `${ timeObj ? timeObj.format('DD/MM/YY') : moment(timestamp).format('DD/MM/YY') }` }, formatCalendarDate(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) const date = `${ timeObj ? timeObj.format('YYYY-MM-DD') : moment(timestamp).format('YYYY-MM-DD') }` return date }, getHour(timestamp) { let timeObj = moment(timestamp).tz(this.timezone) || moment(timestamp) return timeObj.format('HH') }, formatCalendarTime(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) || moment(timestamp) //Bit of a hack here to make sure that we have timezone but also get the time in milliseconds const updated = timeObj.format('YYYY-MM-DD HH:mm:ss') return moment(updated).valueOf() }, convertCalendarStartTime(timestamp) { const startTime = moment(timestamp).tz(this.timezone) || moment(timestamp) const start = startTime.startOf('day').toISOString() return start }, addTime(timestamp, amount, unit) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) || moment(timestamp) return timeObj.add(amount, unit).format('YYYY-MM-DD HH:mm:ss') }, addTimeNoTz(timestamp, amount, unit) { if (!timestamp) return let timeObj = moment(timestamp) return timeObj.add(amount, unit).format('YYYY-MM-DD HH:mm:ss') }, getMonth(timestamp) { return moment(timestamp).format('MMMM YYYY') }, addDay(timestamp, amount) { if (!timestamp) return const timeObj = moment(timestamp).tz(this.timezone) || moment(timestamp) return timeObj .add(amount, 'days') .startOf('day') .toISOString() }, subtractDay(timestamp, amount) { if (!timestamp) return const timeObj = moment(timestamp).tz(this.timezone) || moment(timestamp) const day = timeObj .subtract(amount, 'days') .startOf('day') .toISOString() return day }, shortTime(timestamp) { if (!timestamp) return let t = moment(timestamp).tz(this.timezone) let timeObj = t ? t : moment(timestamp) let formatted = timeObj.calendar(null, { sameDay: 'h:mma', nextDay: 'D MMM ', nextWeek: 'D MMM ', lastDay: 'D MMM ', lastWeek: 'D MMM ', sameElse: 'D MMM ' }) return `${formatted}` }, formDate(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) return `${ timeObj ? timeObj.format('D MMM YYYY h:mma') : moment(timestamp).format('D MMM YYYY h:mma') }` }, formTimeNoTimeZone(timestamp) { if (!timestamp) return return moment(timestamp).format('hh:mma') }, formTime(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) return `${ timeObj ? timeObj.format('hh:mma') : moment(timestamp).format('hh:mma') }` }, tzOffset(date) { const zone = moment.tz.zone(this.timezone) const offset = zone?.parse(Date.UTC(date)) || new Date().getTimezoneOffset() return offset }, calEventTime(timestamp, date) { if (!timestamp) return let t = moment(timestamp).tz(this.timezone) let timeObj = t ? t : moment(timestamp) let formatted = timeObj.calendar(date, { sameDay: 'h:mma', nextDay: 'D MMM h:mma', nextWeek: 'D MMM', lastDay: 'D MMM h: mma', lastWeek: 'D MMM ', sameElse: 'D MMM ' }) return `${formatted}` }, logTime(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) return `${ timeObj ? timeObj.format('HH:mm:ss') : moment(timestamp).format('HH:mm:ss') }` }, logTimeExtended(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) return `${ timeObj ? timeObj.format('HH:mm:ss:SS') : moment(timestamp).format('HH:mm:ss:SS') }` }, logDate(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) return `${ timeObj ? timeObj.format('D MMMM YYYY h:mma') : moment(timestamp).format('D MMMM YYYY h:mma') }` }, formatTime(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) return `${ timeObj ? timeObj.format('D MMMM YYYY h:mma') : moment(timestamp).format('D MMMM YYYY h:mma') }` }, formatTimeGranular(timestamp) { if (!timestamp) return let timeObj = moment(timestamp).tz(this.timezone) return `${ timeObj ? timeObj.format('h:mm:ss A') : moment(timestamp).format('h:mm:ss A') }` }, formatDateTime(timestamp) { if (!timestamp) return let t = moment(timestamp).tz(this.timezone), shortenedTz = moment() .tz(this.timezone || Intl.DateTimeFormat().resolvedOptions().timeZone) .zoneAbbr() let timeObj = t ? t : moment(timestamp) let formatted = timeObj.calendar(null, { sameDay: 'h:mma', sameElse: 'MMMM D, YYYY [at] h:mma' }) return `${formatted} ${shortenedTz}` }, formatLongDate(timestamp) { if (!timestamp) return let t = moment(timestamp).tz(this.timezone) let timeObj = t ? t : moment(timestamp) let formatted = timeObj.calendar(null, { sameDay: '[today]', sameElse: 'MMMM D, YYYY' }) return formatted }, formatDateTimeFromUTC(timestamp, timezone) { if (!timestamp) return let timeObj = moment.tz(timestamp, timezone) let formatted = timeObj.calendar(null, { sameDay: 'h:mma z', sameElse: 'MMMM D, YYYY [at] h:mma z' }) return formatted } } } ================================================ FILE: src/mixins/heartbeatMixin.js ================================================ import { STATE_NAMES } from '@/utils/states.js' export const heartbeatMixin = { data() { return { state: 'All', stateNames: STATE_NAMES, stateList: [] } }, computed: { checkedState() { if (this.state === 'All') return null if (!this.state) return null return this.state }, states() { return this.stateNames.filter(name => name !== 'Scheduled').sort() } }, methods: {} } ================================================ FILE: src/mixins/membershipInvitationMixin.js ================================================ export const handleMembershipInvitations = { methods: { async acceptMembershipInvitation(id) { const { data } = await this.$apollo.mutate({ mutation: require('@/graphql/Tenant/accept-membership-invitation.gql'), variables: { membershipInvitationId: id } }) return data }, async declineMembershipInvitation(id) { const { data } = await this.$apollo.mutate({ mutation: require('@/graphql/Tenant/delete-membership-invitation.gql'), variables: { membershipInvitationId: id } }) return data } } } ================================================ FILE: src/mixins/parametersMixin.js ================================================ import { mapGetters, mapActions } from 'vuex' import { formatJson } from '@/utils/json' import difference from 'lodash/difference' export const parametersMixin = { props: { flowGroup: { required: true, type: Object } }, data() { return { loading: false, flowParameters: [], newParameterInput: null, extraParameters: [], missingRequiredParameters: [] } }, computed: { ...mapGetters('tenant', ['tenant']), ...mapGetters('license', ['hasPermission']), parameterInput: { get() { return this.newParameterInput }, set(val) { this.newParameterInput = val } }, requiredParameters() { return this.selectedFlow.parameters.reduce((accum, currentParam) => { if (currentParam.required) accum.push(currentParam.name) return accum }, []) }, permissionsCheck() { return !this.hasPermission('update', 'run') }, selectedFlow() { return this.flow || this.flowGroup.flows.find(flow => !flow.archived) }, flowGroupParameters() { const fgParamObjArray = [] for (const [key, value] of Object.entries( this.flowGroup?.default_parameters )) { fgParamObjArray.push({ name: key, default: value }) } return fgParamObjArray }, selectedFlowParameters() { return this.selectedFlow.parameters.reduce((accum, currentParam) => { accum[currentParam.name] = currentParam.default return accum }, {}) }, diffBetweenFlowGroupAndFlow() { const fgParams = this.flowGroup?.default_parameters const selectedFlowParams = this.selectedFlowParameters const diff = difference( Object.keys(selectedFlowParams), Object.keys(fgParams) ) return diff }, defaultParameters() { const fgParams = this.flowGroup?.default_parameters const selectedFlowParams = this.selectedFlowParameters this.diffBetweenFlowGroupAndFlow.forEach( differentKey => (fgParams[differentKey] = selectedFlowParams[differentKey]) ) const paramifiedArray = [] for (const [key, value] of Object.entries(fgParams)) { const required = this.selectedFlow?.parameters.filter( paramObj => paramObj.name == key && paramObj.required ).length > 0 paramifiedArray.push({ name: key, default: value, required: required }) } const sorted = paramifiedArray.sort((a, b) => { return a.name > b.name ? 1 : -1 }) return sorted } }, methods: { ...mapActions('alert', ['setAlert']), setParameterInput() { this.parameterInput = formatJson(this.flowGroup.default_parameters) }, validateParameters() { this.extraParameters = [] this.missingRequiredParameters = [] if (!this.$refs.parameterRef) { return true } // Check JSON using the JsonInput component's validation const jsonValidationResult = Array.isArray(this.$refs.parameterRef) ? this.$refs.parameterRef[0].validateJson() : this.$refs.parameterRef.validateJson() if (jsonValidationResult === 'SyntaxError') { this.errorInParameterInput = true this.setAlert({ alertShow: true, alertMessage: `There is a syntax error in your flow parameters JSON. Please correct the error and try again.`, alertType: 'error' }) return false } if (jsonValidationResult === 'MissingError') { this.errorInParameterInput = true this.setAlert({ alertShow: true, alertMessage: 'Please enter your flow parameters as a JSON object.', alertType: 'error' }) return false } const parameters = JSON.parse( this.newParameterInput || this.parameterInput ) // Collect any missing required parameters this.missingRequiredParameters = difference( this.requiredParameters, Object.keys(parameters) ) // Collect any extra parameters. this.extraParameters = difference( Object.keys(parameters), this.selectedFlow.parameters.map(param => param.name) ) if ( this.missingRequiredParameters.length === 0 && this.extraParameters.length === 0 ) { return true } this.errorInParameterInput = true if (this.missingRequiredParameters.length > 0) { this.setAlert({ alertShow: true, alertMessage: `There are required flow parameters missing in the JSON payload. Please specify values for the missing parameters.`, alertType: 'error' }) } else { this.setAlert({ alertShow: true, alertMessage: `You have parameters which were not part of your original flow: ${this.extraParameters}. Please remove them to continue.`, alertType: 'error' }) } return false }, async saveDefaultParams() { try { const { data, errors } = await this.$apollo.mutate({ mutation: require('@/graphql/Mutations/set-default-params.gql'), variables: { input: { flow_group_id: this.flowGroup.id, parameters: this.parameterInput && this.parameterInput.trim() !== '' ? JSON.parse(this.parameterInput) : null } }, errorPolicy: 'all' }) if (data) { await this.showAlert( 'Your flow group parameters have been updated.', 'success' ) this.$emit('updated', this.parameterInput) } if (errors) { await this.showAlert(errors[0].message, 'error') } } catch (err) { await this.showAlert( 'There was a problem setting your parameters. Please check the input.', 'error' ) } }, async setDefaultParams() { this.loading = true if (!this.validateParameters()) { this.loading = false return } await this.saveDefaultParams() this.loading = false }, async showAlert(alertMessage, alertType) { await this.setAlert({ alertShow: true, alertMessage, alertType }) } } } ================================================ FILE: src/mixins/paymentMixin.js ================================================ import { mapGetters } from 'vuex' export const paymentMixin = { props: {}, data() { return { cardError: '', updatedEmail: null, updatedAddress: null, updatedName: null, loading: false } }, computed: { ...mapGetters('tenant', ['tenant']), ...mapGetters('license', ['license']), ...mapGetters('user', ['user']), email: { get() { return this.tenant.stripe_customer?.email }, set(x) { this.updatedEmail = x } }, address: { get() { return this.tenant?.stripe_customer?.sources?.data[0]?.owner?.address ?.line1 }, set(x) { this.updatedAddress = x } }, username: { get() { //stripe_customer returns empty customer name as string 'nullnull' so need to explicitly check for that if (this.tenant?.stripe_customer?.name == 'nullnull') return '' return this.tenant?.stripe_customer?.name ? this.tenant?.stripe_customer?.name : '' }, set(x) { this.updatedName = x } } }, methods: {} } ================================================ FILE: src/mixins/polling/pollsAgentsMixin.js ================================================ export const pollsAgentsMixin = { data() { return { unsubscribe: null } }, async created() { this.unsubscribe = await this.$store.dispatch('polling/subscribe', 'agents') }, beforeDestroy() { this.unsubscribe() } } ================================================ FILE: src/mixins/polling/pollsFlowsMixin.js ================================================ export const pollsFlowsMixin = { data() { return { unsubscribe: null } }, async created() { this.unsubscribe = await this.$store.dispatch('polling/subscribe', 'flows') }, beforeDestroy() { this.unsubscribe() } } ================================================ FILE: src/mixins/polling/pollsProjectsMixin.js ================================================ export const pollsProjectsMixin = { data() { return { unsubscribe: null } }, async created() { this.unsubscribe = await this.$store.dispatch( 'polling/subscribe', 'projects' ) }, beforeDestroy() { this.unsubscribe() } } ================================================ FILE: src/mixins/polling/pollsTenantsMixin.js ================================================ export const pollsTenantsMixin = { data() { return { unsubscribe: null } }, async created() { this.unsubscribe = await this.$store.dispatch( 'polling/subscribe', 'tenants' ) }, beforeDestroy() { this.unsubscribe() } } ================================================ FILE: src/mixins/runFlowNow.js ================================================ export const runFlowNowMixin = { data() { return { // Alert showAlert: false, alertMessage: '', alertLink: {}, alertType: 'info', setToRun: [] } }, methods: { async runFlowNow(flowRunId, version, name) { this.setToRun.push(flowRunId) try { // Set the flow in a Scheduled state (even if it's already Scheduled). // This causes the flow run to execute immediately. await this.$apollo.mutate({ mutation: require('@/graphql/TaskRun/set-flow-run-states.gql'), variables: { flowRunId: flowRunId, version: version, state: { type: 'Scheduled' } } }) this.alertMessage = `Your flow run ${name} has been scheduled to start immediately.` this.alertLink = { name: 'flow-run', params: { id: flowRunId } } this.alertType = 'success' this.showAlert = true } catch (error) { this.alertMessage = 'Something went wrong while trying to run this flow. Please try again later.' this.alertType = 'error' this.showAlert = true this.isRunningNow = false this.setToRun.pop(flowRunId) throw error } } } } ================================================ FILE: src/mixins/teamProfileMixin.js ================================================ import { mapGetters, mapActions } from 'vuex' export const teamProfileMixin = { data() { return { // User inputs tenantChanges: { name: '', slug: '' }, // Regexes to check if a slug is invalid slugCharRegex: /^[a-z0-9|-]*$/, dashPositionRegex: /^(-)|-{2,}|(-)$/, // Flags that are set to true during async vaidation checks isCheckingName: false, isCheckingSlug: false, // Flag input icons so that they are only revealed during submission & validation showNameIcon: false, showSlugIcon: false, // Input errors nameErrors: [], slugErrors: [], // Form is submitted & tenant is updating isUpdatingTenant: false, // Tenant update returns a server error updateServerError: false } }, computed: { ...mapGetters('tenant', ['tenant']), ...mapGetters('license', ['hasPermission']), permissionsCheck() { return this.hasPermission('update', 'tenant') }, isUpdatable() { // Tenant cannot be updated during any kind of load state if (this.isUpdatingTenant) return false if (this.isCheckingSlug) return false // Tenant cannot be updated if any errors exist if ( this.updateServerError || this.nameErrors.length > 0 || this.slugErrors.length > 0 ) { return false } return ( this.tenantChanges.name !== this.tenant.name || this.tenantChanges.slug !== this.tenant.slug ) }, slug: { get() { return this.tenantChanges.slug }, set(val) { this.tenantChanges.slug = val.replace(' ', '-') } }, name: { get() { return this.tenantChanges.name }, set(val) { this.tenantChanges.name = val } }, showNameCheck() { return ( this.showNameIcon && this.nameErrors.length === 0 && !this.updateServerError ) }, showNameClear() { return ( this.showNameIcon && (this.nameErrors.length > 0 || this.updateServerError) ) }, showSlugCheck() { return ( this.showSlugIcon && this.slugErrors.length === 0 && !this.updateServerError ) }, showSlugClear() { return ( this.showSlugIcon && (this.slugErrors.length > 0 || this.updateServerError) ) } }, watch: { tenant(val) { this.tenantChanges.name = val.name || '' this.tenantChanges.slug = val.slug || '' } }, created() { this.tenantChanges.name = this.tenant.name || '' this.tenantChanges.slug = this.tenant.slug || '' }, methods: { ...mapActions('tenant', [ 'setCurrentTenant', 'updateTenantSettings', 'getTenants' ]), ...mapActions('alert', ['setAlert']), // Synchronous name check that occur on input blur checkName(name) { this.nameErrors = [] // If name is not provided, reset to original value // // Make this field required if there is no original value if (name === '') { if (!this.tenant.name) { this.nameErrors = ['A team name is required.'] } else { this.tenantChanges.name = this.tenant.name } return } if (name.length < 3) { this.nameErrors = ['Team names must contain a minimum of 3 characters.'] return } }, // Synchronous slug input check that occurs on input blur checkSlug(slug) { this.slugErrors = [] // If slug is not provided, reset to original value // // Make this field required if there is no original value if (slug === '') { if (!this.tenant.slug) { this.slugErrors = ['A URL slug for your team is required.'] } else { this.tenantChanges.slug = this.tenant.slug } return } if (slug.length < 3) { this.slugErrors = ['URL slug must contain a minimum of 3 characters.'] return } if (!this.slugCharRegex.test(slug)) { this.slugErrors = [ 'URL slugs can only contain lowercase letters, numbers, and dashes.' ] return } if (this.dashPositionRegex.test(slug)) { this.slugErrors = [ 'URL slugs cannot begin, end, or contain more than 1 dash in a row.' ] } }, // Asynchronous name input "check" that occurs when user attempts to submit the form // // Quotes around "check" because a check doesn't actually occur // // Instead, a timeout is returned purely to surface a loader on the UI to keep it // inline with the slug async check checkNameAsync() { // Stop immediately if the input never changed if (this.showNameIcon) return this.isCheckingName = true return new Promise(resolve => { setTimeout(() => { this.showNameIcon = true this.isCheckingName = false resolve() }, 750) }) }, // Asynchronous slug input check that occurs when user attempts to submit the form // // Currently checks only for slug uniqueness checkSlugAsync() { // Stop immediately if the input never changed if (this.showSlugIcon) return this.isCheckingSlug = true return new Promise(resolve => [ setTimeout(async () => { // Check slug uniqueness try { const checkSlug = await this.$apollo.query({ query: require('@/graphql/Tenant/tenant-by-slug.gql'), variables: { slug: this.slug } }) if ( checkSlug?.data?.tenant?.length !== 0 && this.slug != this.tenant.slug ) { this.slugErrors = ['Sorry, that URL slug is already in use.'] } } catch { this.updateServerError = true } this.showSlugIcon = true this.isCheckingSlug = false resolve() }, 750) ]) }, resetNameMetadata() { this.showNameIcon = false this.nameErrors = [] this.updateServerError = false }, resetSlugMetadata() { this.showSlugIcon = false this.slugErrors = [] this.updateServerError = false }, handleError(alert) { this.setAlert({ alertMessage: alert || 'Something went wrong while trying to update your team profile settings. Please try again later.', alertType: 'error', alertShow: true }) }, handleSuccess() { this.setAlert({ alertMessage: "Your team's profile settings have been successfully updated.", alertType: 'success', alertShow: true }) setTimeout(() => { this.resetNameMetadata() this.resetSlugMetadata() }, 3000) }, async updateTenant() { if (this.nameErrors.length > 0 || this.slugErrors.length > 0) { return } this.updateServerError = false this.isUpdatingTenant = true // Async tenant checks await this.checkNameAsync() await this.checkSlugAsync() if ( this.tenantChanges.slug == this.tenant.slug && this.tenantChanges.name == this.tenant.name ) { await this.updateTenantSettings({ teamNamed: true }) this.handleSuccess() this.isUpdatingTenant = false return } let newTenant try { newTenant = await this.$apollo.mutate({ mutation: require('@/graphql/Tenant/update-tenant.gql'), variables: { name: this.tenantChanges.name || this.tenant.name, slug: this.tenantChanges.slug || this.tenant.slug } }) } catch (error) { // Otherwise, surface the global error alert. const e = error.toString() const alert = e.includes('Uniqueness violation') ? 'Sorry, that URL slug is already in use. Please try another URL Slug.' : null this.handleError(alert) this.updateServerError = true this.isUpdatingTenant = false return } if ( !newTenant?.data?.update_tenant_name || !newTenant?.data?.update_tenant_slug ) { this.handleError() this.updateServerError = true return } await this.getTenants() await this.setCurrentTenant(this.tenantChanges.slug) this.$router.replace({ name: 'account', params: { tenant: this.tenantChanges.slug } }) this.handleSuccess() this.isUpdatingTenant = false } } } ================================================ FILE: src/pages/AccessDenied.vue ================================================ ================================================ FILE: src/pages/Admin/Account/Account.vue ================================================ ================================================ FILE: src/pages/Admin/Account/Billing.vue ================================================ ================================================ FILE: src/pages/Admin/Account/ClearDataDialog.vue ================================================ ================================================ FILE: src/pages/Admin/Account/License.vue ================================================ ================================================ FILE: src/pages/Admin/Account/Profile.vue ================================================ ================================================ FILE: src/pages/Admin/Account/Usage/CurrentUsers.vue ================================================ ================================================ FILE: src/pages/Admin/Account/Usage/Usage.vue ================================================ ================================================ FILE: src/pages/Admin/Account/Usage/UsageCycle.vue ================================================ ================================================ FILE: src/pages/Admin/Account/Usage/UsageTimeline.vue ================================================ ================================================ FILE: src/pages/Admin/Account/Usage/UsageToday.vue ================================================ ================================================ FILE: src/pages/Admin/Account/Users.vue ================================================ ================================================ FILE: src/pages/Admin/Admin.vue ================================================ ================================================ FILE: src/pages/Admin/Teams/InviteUsers.vue ================================================ ================================================ FILE: src/pages/Admin/Teams/NewTeam.vue ================================================ ================================================ FILE: src/pages/Admin/Teams/TeamForm.vue ================================================ ================================================ FILE: src/pages/Admin/Teams/Teams.vue ================================================ ================================================ FILE: src/pages/Admin/Teams/TeamsOverview.vue ================================================ ================================================ FILE: src/pages/Agents/AgentFlowRunHistory.vue ================================================ ================================================ FILE: src/pages/Agents/AgentFlowRunTable-Tile.vue ================================================ ================================================ FILE: src/pages/Agents/AgentPage.vue ================================================ ================================================ FILE: src/pages/Agents/AgentTile.vue ================================================ ================================================ FILE: src/pages/Agents/Agents.vue ================================================ ================================================ FILE: src/pages/Agents/SubmittableRuns.vue ================================================ ================================================ FILE: src/pages/Auth/Auth.vue ================================================ ================================================ FILE: src/pages/Auth/ForgotPassword.vue ================================================ ================================================ FILE: src/pages/Auth/Logout.vue ================================================ ================================================ FILE: src/pages/Auth/SignIn.vue ================================================ ================================================ FILE: src/pages/Auth/SignUp.vue ================================================ ================================================ FILE: src/pages/Calendar/Calendar-Day.vue ================================================ ================================================ FILE: src/pages/Calendar/Calendar-FlowFilter.vue ================================================ ================================================ FILE: src/pages/Calendar/Calendar-View.vue ================================================ ================================================ FILE: src/pages/Calendar/FlowName.vue ================================================ ================================================ FILE: src/pages/Calendar/RunMenu.vue ================================================ ================================================ FILE: src/pages/Dashboard/Agents-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/ApiHealthCheck-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/Automations/AddAction.vue ================================================ ================================================ FILE: src/pages/Dashboard/Automations/AddAutomationCard.vue ================================================ ================================================ FILE: src/pages/Dashboard/Automations/AutomationCard.vue ================================================ ================================================ FILE: src/pages/Dashboard/Automations/Automations.vue ================================================ ================================================ FILE: src/pages/Dashboard/Automations/CreateAgentConfigForm.vue ================================================ ================================================ FILE: src/pages/Dashboard/Automations/DeleteAgentConfig.vue ================================================ ================================================ FILE: src/pages/Dashboard/Dashboard.vue ================================================ ================================================ FILE: src/pages/Dashboard/FailedFlows-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/FailedTasks-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/FlowRunHeartbeat-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/FlowRunHistory-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/FlowTable-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/InProgress-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/NewProject-Dialog.vue ================================================ ================================================ FILE: src/pages/Dashboard/Notifications-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/Project-Selector.vue ================================================ ================================================ FILE: src/pages/Dashboard/Summary-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/Task-Item.vue ================================================ ================================================ FILE: src/pages/Dashboard/UpcomingRuns-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/UsageTiles/CommittedUsage-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/UsageTiles/CycleUsage-Tile.vue ================================================ ================================================ FILE: src/pages/Dashboard/UsageTiles/UpgradeUsage-Tile.vue ================================================ ================================================ FILE: src/pages/Flow/Actions.vue ================================================ ================================================ FILE: src/pages/Flow/Automations-Tile.vue ================================================ ================================================ FILE: src/pages/Flow/Describe.vue ================================================ ================================================ FILE: src/pages/Flow/Details-Tile.vue ================================================ ================================================ FILE: src/pages/Flow/Errors-Tile.vue ================================================ ================================================ FILE: src/pages/Flow/Flow.vue ================================================ ================================================ FILE: src/pages/Flow/FlowRunHeartbeat-Tile.vue ================================================ ================================================ FILE: src/pages/Flow/FlowRunHistory-Tile.vue ================================================ ================================================ FILE: src/pages/Flow/FlowRunTable-Tile.vue ================================================ ================================================ FILE: src/pages/Flow/Run.vue ================================================ ================================================ FILE: src/pages/Flow/Schematic-Tile.vue ================================================ ================================================ FILE: src/pages/Flow/Settings/ClockForm.vue ================================================ ================================================ FILE: src/pages/Flow/Settings/ClockForms/Cron.vue ================================================ ================================================ FILE: src/pages/Flow/Settings/ClockForms/Interval.vue ================================================ ================================================ FILE: src/pages/Flow/Settings/ClockForms/Simple.vue ================================================ ================================================ FILE: src/pages/Flow/Settings/CloudHooks.vue ================================================ ================================================ FILE: src/pages/Flow/Settings/DefaultParameters.vue ================================================ ================================================ FILE: src/pages/Flow/Settings/General.vue ================================================ ================================================ FILE: src/pages/Flow/Settings/ScheduleParameters.vue ================================================ ================================================ FILE: src/pages/Flow/Settings/Schedules.vue ================================================ ================================================ FILE: src/pages/Flow/Settings.vue ================================================ ================================================ FILE: src/pages/Flow/Summary-Tile.vue ================================================ ================================================ FILE: src/pages/Flow/TasksTable-Tile.vue ================================================ ================================================ FILE: src/pages/Flow/UpcomingRuns-Tile.vue ================================================ ================================================ FILE: src/pages/Flow/Versions-Tile.vue ================================================ ================================================ FILE: src/pages/FlowRun/Actions.vue ================================================ ================================================ FILE: src/pages/FlowRun/Details-Tile.vue ================================================ ================================================ FILE: src/pages/FlowRun/FlowRun.vue ================================================ ================================================ FILE: src/pages/FlowRun/Restart-Dialog.vue ================================================ ================================================ FILE: src/pages/FlowRun/Schematic-Tile.vue ================================================ ================================================ FILE: src/pages/FlowRun/TaskRunHeartbeat-Tile.vue ================================================ ================================================ FILE: src/pages/FlowRun/TaskRunTable-Tile.vue ================================================ ================================================ FILE: src/pages/FlowRun/Timeline-Tile.vue ================================================ ================================================ FILE: src/pages/GettingStarted/ConnectAgent-Section.vue ================================================ ================================================ FILE: src/pages/GettingStarted/CreateTenant-Section.vue ================================================ ================================================ FILE: src/pages/GettingStarted/GettingStarted.vue ================================================ ================================================ FILE: src/pages/GettingStarted/StartPrefectServer-Section.vue ================================================ ================================================ FILE: src/pages/Integrations/PagerDuty.vue ================================================ ================================================ FILE: src/pages/InteractiveAPI/InteractiveAPI.vue ================================================ ================================================ FILE: src/pages/NotFoundPage.vue ================================================ ================================================ FILE: src/pages/Notifications/NotificationGroup.vue ================================================ ================================================ FILE: src/pages/Notifications/NotificationTypes/Approval-Notification.vue ================================================ ================================================ FILE: src/pages/Notifications/NotificationTypes/FlowRun-Notification.vue ================================================ ================================================ FILE: src/pages/Notifications/NotificationTypes/Membership-Notification.vue ================================================ ================================================ FILE: src/pages/Notifications/NotificationTypes/Message-Notification.vue ================================================ ================================================ FILE: src/pages/Notifications/NotificationTypes/WhatsNew-Notification.vue ================================================ ================================================ FILE: src/pages/Notifications/Notifications.vue ================================================ ================================================ FILE: src/pages/Notifications/utils.js ================================================ export const componentMap = { CLOUD_HOOK: 'FlowRunNotification', MEMBERSHIP_INVITATION: 'MembershipNotification', REQUIRES_APPROVAL: 'ApprovalNotification', MESSAGE: 'MessageNotification', WHATS_NEW: 'WhatsNewNotification' } export const iconMap = { CLOUD_HOOK: 'pi-flow-run', MEMBERSHIP_INVITATION: 'group_add', REQUIRES_APPROVAL: 'pause_circle_outline', MESSAGE: 'chat', WHATS_NEW: '🎉' } export const iconColorMap = { CLOUD_HOOK: n => { return n.content.event.state }, MEMBERSHIP_INVITATION: () => 'primary', WHATS_NEW: () => 'primary', MESSAGE: () => 'primary', REQUIRES_APPROVAL: () => 'accentOrange' } export const navigationMap = { CLOUD_HOOK: (n, tenant) => { return { name: 'flow-run', params: { id: n.content.event.id, tenant: tenant.slug }, query: { notification_id: n.id } } }, MEMBERSHIP_INVITATION: () => null, WHATS_NEW: () => null, MESSAGE: () => null, REQUIRES_APPROVAL: (n, tenant) => { return { name: 'task-run', params: { id: n.content.task_run.id, tenant: tenant.slug }, query: { notification_id: n.id } } } } ================================================ FILE: src/pages/Onboard/AcceptInvitationPage.vue ================================================ ================================================ FILE: src/pages/Onboard/NameTeam.vue ================================================ ================================================ FILE: src/pages/Onboard/Onboard-Page.vue ================================================ ================================================ FILE: src/pages/Onboard/Resources.vue ================================================ ================================================ FILE: src/pages/Onboard/Welcome.vue ================================================ ================================================ FILE: src/pages/Plans.vue ================================================ ================================================ FILE: src/pages/Schematics/Schematics.vue ================================================ ================================================ FILE: src/pages/Schematics/View.vue ================================================ ================================================ FILE: src/pages/Support.vue ================================================ ================================================ FILE: src/pages/Task/Dependencies-Tile.vue ================================================ ================================================ FILE: src/pages/Task/Details-Tile.vue ================================================ ================================================ FILE: src/pages/Task/Task.vue ================================================ ================================================ FILE: src/pages/Task/TaskRunHeartbeat-Tile.vue ================================================ ================================================ FILE: src/pages/Task/TaskRunTable-Tile.vue ================================================ ================================================ FILE: src/pages/TaskRun/Actions.vue ================================================ ================================================ FILE: src/pages/TaskRun/Dependencies-Tile.vue ================================================ ================================================ FILE: src/pages/TaskRun/Details-Tile.vue ================================================ ================================================ FILE: src/pages/TaskRun/MappedTaskRuns-Tile.vue ================================================ ================================================ FILE: src/pages/TaskRun/Restart-Dialog.vue ================================================ ================================================ FILE: src/pages/TaskRun/TaskRun.vue ================================================ ================================================ FILE: src/pages/TaskRun/TaskRunHeartbeat-Tile.vue ================================================ ================================================ FILE: src/pages/TeamSettings/Actions.vue ================================================ ================================================ FILE: src/pages/TeamSettings/CloudHooks.vue ================================================ ================================================ FILE: src/pages/TeamSettings/CreateRoleTable.vue ================================================ ================================================ FILE: src/pages/TeamSettings/FlowConcurrency.vue ================================================ ================================================ FILE: src/pages/TeamSettings/FlowGroups.vue ================================================ ================================================ FILE: src/pages/TeamSettings/KV.vue ================================================ ================================================ FILE: src/pages/TeamSettings/Members/Invitations-Table.vue ================================================ ================================================ FILE: src/pages/TeamSettings/Members/Members-Table.vue ================================================ ================================================ FILE: src/pages/TeamSettings/Members.vue ================================================ ================================================ FILE: src/pages/TeamSettings/PlanComparison.vue ================================================ ================================================ FILE: src/pages/TeamSettings/Projects.vue ================================================ ================================================ FILE: src/pages/TeamSettings/Roles.vue ================================================ ================================================ FILE: src/pages/TeamSettings/Secrets.vue ================================================ ================================================ FILE: src/pages/TeamSettings/Service-Accounts-Table.vue ================================================ ================================================ FILE: src/pages/TeamSettings/Service-Accounts.vue ================================================ ================================================ FILE: src/pages/TeamSettings/TaskConcurrency.vue ================================================ ================================================ FILE: src/pages/TeamSettings/TeamSettings.vue ================================================ ================================================ FILE: src/pages/TeamSettings/Tokens.vue ================================================ ================================================ FILE: src/pages/TeamSwitched.vue ================================================ ================================================ FILE: src/pages/Tutorials/FlowRun/CreatePersonalAccessTokenStep.vue ================================================ ================================================ FILE: src/pages/Tutorials/FlowRun/CreateProjectStep.vue ================================================ ================================================ FILE: src/pages/Tutorials/FlowRun/DeployFlowStep.vue ================================================ ================================================ FILE: src/pages/Tutorials/FlowRun/FlowRunTutorial.vue ================================================ ================================================ FILE: src/pages/Tutorials/FlowRun/RunAFlowStep.vue ================================================ ================================================ FILE: src/pages/Tutorials/FlowRun/RunLocalAgentStep.vue ================================================ ================================================ FILE: src/pages/Tutorials/Markdown/Universal-Deploy.md ================================================ # Universal Deploy This tutorial guides you through writing a simple flow and deploying it using [Universal Deploy](https://docs.prefect.io/core/PINs/PIN-13-Universal-Deploy.html#pin-13-universal-cloud-deploys), which allows you to register a flow with Prefect Cloud and run it without configuring external storage. # Set up your local environment First, let's make sure that your local environment is set up to run Prefect. Make sure you have a working `Python 3.6+` environment with the latest version of Prefect installed. If Prefect is not installed, you can install the latest version from the command line using the package manager of your choice, such as `pip` or `conda`: ```python pip install prefect -U conda install prefect -c conda-forge ``` # Run a Flow Using Prefect Core ```python import prefect from prefect import task, Flow @task def hello_task(): logger = prefect.context.get("logger") logger.info("Hello world!") flow = Flow("hello-flow", tasks=[hello_task]) flow.run() ``` Paste the code above into an interactive Python REPL session. You should see the following logs after running `flow.run()` : ``` [2020-01-08 23:49:00,239] INFO - prefect.FlowRunner | Beginning Flow run for 'hello-flow' [2020-01-08 23:49:00,242] INFO - prefect.FlowRunner | Starting flow run. [2020-01-08 23:49:00,249] INFO - prefect.TaskRunner | Task 'hello_task': Starting task run... [2020-01-08 23:49:00,249] INFO - prefect.Task: hello_task | Hello world! [2020-01-08 23:49:00,251] INFO - prefect.TaskRunner | Task 'hello_task': finished task run for task with final state: 'Success' [2020-01-08 23:49:00,252] INFO - prefect.FlowRunner | Flow run SUCCESS: all reference tasks succeeded ``` If you're running into issues, check that your Python environment is properly set up to run Prefect. Refer to the [Prefect Core Installation](https://docs.prefect.io/core/getting_started/installation.html) documentation for further details. # Authenticating with Prefect Cloud To authenticate, you'll need to create an [API Key](/user/keys) and save it. - In the user menu in the top right corner go to **Account Settings -> API Keys -> Create An API Key**. - Copy the created key - Login with the Prefect CLI: ```bash prefect auth login --key ``` # Creating a project Projects are used to organize flows that have been deployed to Prefect Cloud. Every time you deploy a flow, you will need to specify a project to deploy into. There are no limits on the number of projects you can have, and you can always delete projects later. You can read more about interacting with projects [here](https://docs.prefect.io/cloud/concepts/projects.html). You can create a project using the CLI: ```bash prefect create project tester ``` You can also create a project using the project selector on the dashboard page of the UI or using the API. # Deploy your flow with Universal Deploy We're almost there! With a very slight modification to our flow code, we will be able to register our flow with Prefect Cloud and get a local agent running: ```python import prefect from prefect import task, Flow @task def hello_task(): logger = prefect.context.get("logger") logger.info("Hello world!") flow = Flow("hello-flow", tasks=[hello_task]) flow.register(project_name="tester") ``` And that's it! Your flow is now registered with Prefect Cloud. # Start your agent Start your agent using the CLI: ```bash prefect agent local start ``` # Run Your Flow In Prefect Cloud To run your flow in Prefect Cloud, navigate to it from the `Flows` tab of the Dashboard and use the `Quick Run` button at the top of the page. This will run your flow with no additional settings. You can use the `Run` tab on your flow page to pass parameters or context to your flow or to schedule a run for some point in the future. You can update default parameters and add or modify schedules by selecting the `Settings` tab on the flow page. **Universal Deploy and Labels** You may have noticed that both your registered flow and your local agent have labels associated with them. Specifically, your may have noticed that your flow had a single label set to the hostname of your local machine (e.g. "Janes-MacBook.local") and your agent had many labels, one of which was also the hostname of your machine. This hostname label ensures that only local agents started on this machine can execute your registered flow. Without labels, your flow might get picked up by other agents running in your infrastructure, or your locally running agent would attempt to execute other flows - potentially even flows that it can't access! Labels are a powerful feature of Prefect Cloud, providing fine control over exactly what flows your agents can execute. Keep an eye out for an upcoming tutorial that will cover running a flow with custom labels. ================================================ FILE: src/pages/Tutorials/Tutorials.vue ================================================ ================================================ FILE: src/pages/UserSettings/APIKeys.vue ================================================ ================================================ FILE: src/pages/UserSettings/Profile.vue ================================================ ================================================ FILE: src/pages/UserSettings/Teams.vue ================================================ ================================================ FILE: src/pages/UserSettings/Tokens.vue ================================================ ================================================ FILE: src/pages/UserSettings/UserSettings.vue ================================================ ================================================ FILE: src/plugins/logrocket.js ================================================ import LogRocket from 'logrocket' const blockedResponses = [ 'CreateAPIToken', 'APITokens', 'CreateRunnerToken', 'CreateAPIKey' ] const blockedRequests = ['SetSecret'] const initializeLogrocket = () => { if ( process.env.VUE_APP_LOG_ROCKET_PUBLIC_ID && process.env.VUE_APP_BACKEND === 'CLOUD' ) { LogRocket.init(process.env.VUE_APP_LOG_ROCKET_PUBLIC_ID, { release: process.env.VUE_APP_RELEASE_TIMESTAMP, dom: { inputSanitizer: true }, network: { // Requests in the blockedRequests list // will be sanitized from analytics requestSanitizer: request => { if (request.headers['authorization']) { request.headers['authorization'] = '' } if (!request.body) return request try { let res = JSON.parse(request.body) if (!res || !res.operationName) return request blockedRequests.forEach(term => { if (res.operationName == term) { request.body = null } }) } catch (e) { request.body = null } return request }, // Responses in the blockedResponses list // will be sanitized from analytics responseSanitizer: response => { if (!response.body) return response try { let res = JSON.parse(response.body) if (!res || !res.data) return response blockedResponses.forEach(term => { if (res.data[term]) { response.body = null } }) } catch (e) { response.body = null } return response } } }) LogRocket.identify('Initialized no user') } } try { initializeLogrocket() } catch (e) { // eslint-disable-next-line no-console console.error('Failed to initialize LogRocket: ', e) } ================================================ FILE: src/plugins/okta.js ================================================ import Vue from 'vue' // import { OktaAuth } from '@okta/okta-auth-js' import OktaVue from '@okta/okta-vue' const { VUE_APP_PUBLIC_CLIENT_ID, VUE_APP_PUBLIC_ISSUER } = process.env // const config = new OktaAuth({ // clientId: VUE_APP_PUBLIC_CLIENT_ID, // issuer: VUE_APP_PUBLIC_ISSUER, // redirectUri: 'http://localhost:8080/login', // scopes: ['openid', 'profile', 'email'], // pkce: true, // testing: { // disableHttpsCheck: true // } // }) const config = { clientId: VUE_APP_PUBLIC_CLIENT_ID, issuer: VUE_APP_PUBLIC_ISSUER, redirectUri: 'http://localhost:8080/login', scopes: ['openid', 'profile', 'email'], pkce: true, testing: { disableHttpsCheck: true } } Vue.use(OktaVue, { ...config }) export default config ================================================ FILE: src/plugins/vuetify.js ================================================ import { STATE_COLORS } from '@/utils/states' import Vue from 'vue' import Vuetify from 'vuetify/lib' // Custom icons import mrIcon from '@/components/Icons/mr.vue' import NomadIcon from '@/components/Icons/Nomad.vue' import PrefectIcon from '@/components/Icons/Prefect.vue' import TwilioIcon from '@/components/Icons/twilio.vue' import PagerDutyIcon from '@/components/Icons/PagerDuty.vue' import newPagerDutyIcon from '@/components/Icons/newPagerDuty.vue' import Hashicorp from '@/components/Icons/Hashicorp.vue' export const THEME_COLORS = { prefect: '#27b1ff', // prefect blue primary: '#3b8dff', // primary blue primaryDark: '#2580FF', primaryLight: '#e0f4ff', secondaryGray: '#465968', secondaryGrayDark: '#1d252b', secondaryGrayLight: '#edf0f3', accentPink: '#fe5196', accentCyan: '#2edaff', accentGreen: '#07e798', accentOrange: '#f77062', codePink: '#da2072', codeBlue: '#0073df', codeBlueBright: '#004bff', cloudUIPrimaryBlue: '#007acc', cloudUIPrimaryDark: '#003d66', cloudUIPrimaryLight: '#e0f3ff', secondaryBlue: '#3b8dff', tertiaryBlue: '#0076ff', secondary: '#2F383F', // primary grey-light accent: '#1b5da4', // accent blue error: '#FF5252', // alerts error info: '#2196F3', // vuetify default success: '#4CAF50', // alerts success warning: '#FFC107', // alerts warning deepRed: '#B00000', failRed: '#D50000', appBackground: '#f9f9f9', appForeground: '#fff', navIcons: '#999', utilGrayLight: '#ddd', utilGrayMid: '#767676', utilGrayDark: '#333' } export const THEME_COLORS_ALT = { appBackground: '#2a2d37', appForeground: '#393e4c', prefect: '#003d66', primary: '#1aa3ff', utilGrayLight: '#585f74', utilGrayMid: '#9ea4b6', utilGrayDark: '#ecedf0' } Vue.use(Vuetify) const CUSTOM_ICONS = { mr: { component: mrIcon }, nomad: { component: NomadIcon }, prefect: { component: PrefectIcon }, twilio: { component: TwilioIcon }, pagerDuty: { component: PagerDutyIcon }, hashicorp: { component: Hashicorp }, newPagerDuty: { component: newPagerDutyIcon } } export default new Vuetify({ icons: { iconfont: 'md', values: CUSTOM_ICONS }, theme: { dark: localStorage.getItem('dark_mode') === 'true', options: { customProperties: true }, themes: { // We'll add Core and Cloud themes here light: Object.assign({}, THEME_COLORS, STATE_COLORS), dark: Object.assign({}, THEME_COLORS, THEME_COLORS_ALT, STATE_COLORS) } } }) ================================================ FILE: src/router.js ================================================ import Router from 'vue-router' // Nav guards import flowNavGuard from '@/middleware/flowNavGuard' import multiguard from 'vue-router-multiguard' import store from '@/store/index' export const routes = [ { name: 'not-found', path: '/404', component: () => import(/* webpackChunkName: "not-found" */ '@/pages/NotFoundPage.vue') }, { name: 'api', path: '/:tenant?/api', component: () => import( /* webpackChunkName: "interactive-api" */ '@/pages/InteractiveAPI/InteractiveAPI.vue' ) }, { name: 'help', path: '/help', component: () => import(/* webpackChunkName: "support" */ '@/pages/Support.vue') }, { name: 'project', path: '/:tenant?/project/:id', component: () => import( /* webpackChunkName: "project" */ '@/pages/Dashboard/Dashboard.vue' ) }, { name: 'flow', path: '/:tenant?/flow/:id', component: () => import(/* webpackChunkName: "flow" */ '@/pages/Flow/Flow.vue'), beforeEnter: multiguard([flowNavGuard]) }, { name: 'flow-run', path: '/:tenant?/flow-run/:id', component: () => import(/* webpackChunkName: "flow-run" */ '@/pages/FlowRun/FlowRun.vue') }, { name: 'task', path: '/:tenant?/task/:id', component: () => import(/* webpackChunkName: "task" */ '@/pages/Task/Task.vue') }, { name: 'task-run', path: '/:tenant?/task-run/:id', component: () => import(/* webpackChunkName: "task-run" */ '@/pages/TaskRun/TaskRun.vue') }, // --------------------------- // // // Team settings // // --------------------------- // { name: 'team', path: '/team', component: () => import( /* webpackChunkName: "team-settings" */ '@/pages/TeamSettings/TeamSettings.vue' ), redirect: { name: 'members' }, children: [ { name: 'projects', path: 'projects', component: () => import( /* webpackChunkName: "team-settings--projects" */ '@/pages/TeamSettings/Projects.vue' ) }, { name: 'actions', path: 'actions', component: () => import( /* webpackChunkName: "team-settings--actions" */ '@/pages/TeamSettings/Actions.vue' ) }, { name: 'flow-groups', path: 'flow-groups', component: () => import( /* webpackChunkName: "team-settings--flow-groups" */ '@/pages/TeamSettings/FlowGroups.vue' ) }, { name: 'flow-concurrency', path: 'flow-concurrency', component: () => import( /* webpackChunkName: "team-settings--flow-concurrency" */ '@/pages/TeamSettings/FlowConcurrency.vue' ) }, { name: 'task-concurrency', path: 'task-concurrency', component: () => import( /* webpackChunkName: "team-settings--task-concurrency" */ '@/pages/TeamSettings/TaskConcurrency.vue' ) }, { name: 'members', path: 'members', component: () => import( /* webpackChunkName: "team-settings--members" */ '@/pages/TeamSettings/Members.vue' ) }, { name: 'roles', path: 'roles', component: () => import( /* webpackChunkName: "team-settings--members" */ '@/pages/TeamSettings/Roles.vue' ) }, { name: 'service-accounts', path: 'service-accounts', component: () => import( /* webpackChunkName: "team-settings--service-accounts" */ '@/pages/TeamSettings/Service-Accounts.vue' ) }, { name: 'kv', path: 'kv', component: () => import( /* webpackChunkName: "team-settings--kv" */ '@/pages/TeamSettings/KV.vue' ) }, { name: 'secrets', path: 'secrets', component: () => import( /* webpackChunkName: "team-settings--secrets" */ '@/pages/TeamSettings/Secrets.vue' ) }, { name: 'cloud-hooks', path: 'cloud-hooks', component: () => import( /* webpackChunkName: "team-settings--cloud-hooks" */ '@/pages/TeamSettings/CloudHooks.vue' ) }, { name: 'tokens', path: 'tokens', component: () => import( /* webpackChunkName: "team-settings--tokens" */ '@/pages/TeamSettings/Tokens.vue' ) } ] }, // --------------------------- // // // User Settings // // --------------------------- // { name: 'user', path: '/user', component: () => import( /* webpackChunkName: "user-settings" */ '@/pages/UserSettings/UserSettings.vue' ), redirect: { name: 'profile' }, children: [ { name: 'profile', path: 'profile', component: () => import( /* webpackChunkName: "user-settings--profile" */ '@/pages/UserSettings/Profile.vue' ) }, { name: 'user-tokens', path: 'tokens', component: () => import( /* webpackChunkName: "user-settings--tokens" */ '@/pages/UserSettings/Tokens.vue' ) }, { name: 'keys', path: 'keys', component: () => import( /* webpackChunkName: "user-settings--keys" */ '@/pages/UserSettings/APIKeys.vue' ) }, { name: 'teams', path: 'teams', component: () => import( /* webpackChunkName: "user-settings--teams" */ '@/pages/UserSettings/Teams.vue' ) } ] }, // ---------------------------// // // Calendar // // ----------------------------// { name: 'calendar', path: '/:tenant?/calendar', component: () => import( /* webpackChunkName: "calendar" */ '@/pages/Calendar/Calendar-View' ) }, // ---------------------------// // // Agents // // ----------------------------// { name: 'agents', path: '/:tenant?/agent', component: () => import(/*webpackChunkName: "agents" */ '@/pages/Agents/Agents') }, { name: 'agent', path: '/:tenant?/agent/:id', component: () => import(/* webpackChunkName: "agent" */ '@/pages/Agents/AgentPage.vue') }, // ---------------------------// // // Integrations // // ----------------------------// { name: 'pagerduty', path: '/:tenant?/pagerduty/:config?', props: route => ({ pdData: route.query.config }), beforeEnter(to, from, next) { if (to?.query?.config) next() else next('/') }, component: () => import( /* webpackChunkName: "pagerduty" */ '@/pages/Integrations/PagerDuty.vue' ) }, // --------------------------- // // // Onboarding // // --------------------------- // { path: '/:tenant?/welcome', component: () => import( /* webpackChunkName: "onboard" */ '@/pages/Onboard/Onboard-Page.vue' ), children: [ { name: 'welcome', path: '', component: () => import( /* webpackChunkName: "onboard--welcome" */ '@/pages/Onboard/Welcome.vue' ) }, { name: 'name-team', path: 'name-team', component: () => import( /* webpackChunkName: "onboard--name-team" */ '@/pages/Onboard/NameTeam.vue' ) }, { name: 'onboard-resources', path: 'resources', component: () => import( /* webpackChunkName: "onboard--resources" */ '@/pages/Onboard/Resources.vue' ) }, { name: 'accept', path: 'accept', component: () => import( /* webpackChunkName: "accept" */ '@/pages/Onboard/AcceptInvitationPage.vue' ) } ] }, // --------------------------- // // // Plans // // --------------------------- // { name: 'plans', path: '/plans', component: () => import(/* webpackChunkName: "plans" */ '@/pages/Plans.vue') }, // --------------------------- // // // Login // // --------------------------- // { name: 'login', path: '/login', redirect: { name: 'sign-in' }, component: () => import(/* webpackChunkName: "Auth" */ '@/pages/Auth/Auth.vue'), children: [ { name: 'sign-in', path: '', component: () => import(/* webpackChunkName: "login" */ '@/pages/Auth/SignIn.vue') }, { name: 'sign-up', path: 'sign-up', component: () => import(/* webpackChunkName: "sign-up" */ '@/pages/Auth/SignUp.vue') }, { name: 'forgot-password', path: 'forgot-password', component: () => import( /* webpackChunkName: "forgot-password" */ '@/pages/Auth/ForgotPassword.vue' ) } ] }, { name: 'logout', path: '/logout', component: () => import(/* webpackChunkName: "Auth" */ '@/pages/Auth/Logout.vue') }, { path: '/accept', redirect: 'welcome/accept' }, // --------------------------- // // // Tutorials // // --------------------------- // { name: 'tutorial', path: '/tutorial/:id?', component: () => import( /* webpackChunkName: "tutorials" */ '@/pages/Tutorials/Tutorials.vue' ) }, { name: 'notifications', path: '/notifications', component: () => import( /* webpackChunkName: "notifications" */ '@/pages/Notifications/Notifications.vue' ) }, { name: 'getting-started', path: '/getting-started', component: () => import( /* webpackChunkName: "getting-started" */ '@/pages/GettingStarted/GettingStarted.vue' ) }, { name: 'admin', path: '/admin', redirect: { name: 'account' }, component: () => import(/* webpackChunkName: "admin" */ '@/pages/Admin/Admin.vue'), children: [ { name: 'account', path: 'account', component: () => import( /* webpackChunkName: "admin--account" */ '@/pages/Admin/Account/Account.vue' ) }, { name: 'admin-teams', path: 'teams', component: () => import( /* webpackChunkName: "admin--teams" */ '@/pages/Admin/Teams/Teams.vue' ), redirect: { name: 'overview' }, children: [ { name: 'overview', path: '', component: () => import( /* webpackChunkName: "admin--teams-overview" */ '@/pages/Admin/Teams/TeamsOverview.vue' ) }, { name: 'new', path: 'new', component: () => import( /* webpackChunkName: "admin--new-team" */ '@/pages/Admin/Teams/NewTeam.vue' ) } ] } ] }, { name: 'team-switched', path: '/team-switched', component: () => import(/* webpackChunkName: "team-switched" */ '@/pages/TeamSwitched.vue') }, { name: 'access-denied', path: '/access-denied', component: () => import(/* webpackChunkName: "access-denied" */ '@/pages/AccessDenied.vue') }, { name: 'dashboard', alias: '/', path: '/:tenant?', component: () => import( /* webpackChunkName: "dashboard" */ '@/pages/Dashboard/Dashboard.vue' ) }, { path: '*', redirect: '404' } ] function getElementPosition(el) { const docEl = document.documentElement const docRect = docEl.getBoundingClientRect() const elRect = el.getBoundingClientRect() return { x: elRect.left - docRect.left, y: elRect.top - docRect.top } } function scrollToHash(to) { const targetElement = document.querySelector(to.hash) if (targetElement) { let elPos = getElementPosition(targetElement), elRect = targetElement.getBoundingClientRect() let position = elRect.height > window.innerHeight ? elPos.y : elPos.y - (window.innerHeight - elRect.height) / 2 return window.scrollTo({ top: position, behavior: 'smooth' }) } } export const createRouter = () => { const router = new Router({ mode: 'history', base: window.prefect_ui_settings?.base_url || '', routes, scrollBehavior(to) { if (to.hash) { scrollToHash(to) } } }) router.beforeEach((to, from, next) => { if ( 'tenant' in to?.params && !to?.params?.tenant && store.getters['tenant/tenant']?.slug ) { return next({ name: to.name, replace: true, params: { ...to.params, tenant: store.getters['tenant/tenant'].slug }, query: to.query }) } else next() }) return router } ================================================ FILE: src/store/agent/index.js ================================================ import moment from '@/utils/moment' //helper functions for sorting const agentHealth = agent => { if (agent.last_queried) { const secondsSinceLastQuery = moment().diff( moment(agent.last_queried), 'seconds' ) agent.secondsSinceLastQuery = secondsSinceLastQuery agent.status = secondsSinceLastQuery < 60 * state.thresholds.stale ? 'healthy' : secondsSinceLastQuery < 60 * state.thresholds.unhealthy ? 'stale' : 'unhealthy' } else { agent.status = 'unhealthy' } return agent } const state = { thresholds: { // Time before an agent becomes stale stale: 5, // minutes since last query // Time before an agent becomes unhealthy unhealthy: 720 // minutes since last query, }, agents: null, sortedAgents: null, sorting: true, flowRuns: null } const getters = { staleThreshold(state) { return state.thresholds.stale }, unhealthyThreshold(state) { return state.thresholds.unhealthy }, agents(state) { return state.agents }, sortedAgents(state) { return state.sortedAgents }, agent: state => id => { return state.agents?.filter(agent => agent.id === id)[0] }, sortedAgent: state => id => { return state.sortedAgents?.filter(agent => agent.id === id)[0] }, sorting(state) { return state.sorting } } const mutations = { setSortedAgents(state, agents) { if (!agents) { state.sortedAgents = null state.agents = [] return } const healthyList = [] const staleList = [] const oldList = [] agents.forEach(agent => { agentHealth(agent) if (agent.status === 'healthy') { healthyList.push(agent) } else if (agent.status === 'stale') { staleList.push(agent) } else { oldList.push(agent) } }) state.agents = agents healthyList.sort((a, b) => a.id.localeCompare(b.id)) oldList.sort((a, b) => a.secondsSinceLastQuery - b.secondsSinceLastQuery) const fullList = [...healthyList, ...staleList, ...oldList] state.sortedAgents = fullList state.sorting = false } } export default { getters, mutations, state, namespaced: true } ================================================ FILE: src/store/alert/index.js ================================================ import uniqueId from 'lodash/uniqueId' const state = { alert: { alertShow: false, alertMessage: '', alertType: null, alertLink: null, linkText: '', alertCopy: '' }, notifications: [], notificationTimeouts: {} } const getters = { getAlert(state) { return state.alert }, notifications(state) { return state.notifications }, notificationTimeouts(state) { return state.notificationTimeouts } } const mutations = { setAl(state, alert) { state.alert = alert }, setEmpty(state) { state.alert = { alertShow: false, alertMessage: '', alertType: null, alertLink: null, linkText: '', alertCopy: '' } }, setNotifications(state, notifications = []) { state.notifications = notifications }, setNotificationTimeout(state, { id, timeoutId }) { clearTimeout(state['notificationTimeouts'][id]) state.notificationTimeouts[id] = timeoutId } } const actions = { setAlert({ commit }, alert, timeout = 6000) { commit('setAl', alert) setTimeout(commit, timeout, 'setEmpty') }, addNotification({ getters, commit, dispatch }, notification) { const id = uniqueId('notification-') const notifications = [...getters['notifications']] notifications.push({ id: id, ...notification }) commit('setNotifications', notifications) if (notification?.timeout) { const timeoutId = setTimeout(() => { dispatch('dismissNotification', { id }) }, notification.timeout) commit('setNotificationTimeout', { id, timeoutId }) } return id }, dismissNotification({ getters, commit }, { id }) { const notifications = [...getters['notifications']] const index = notifications.findIndex(n => n.id == id) if (index > -1) { notifications.splice(index, 1) commit('setNotifications', notifications) } }, updateNotification({ getters, commit, dispatch }, { id, notification }) { const notifications = [...getters['notifications']] const index = notifications.findIndex(n => n.id == id) if (index > -1) { notifications[index] = { ...notifications[index], ...notification } commit('setNotifications', notifications) if (notification.timeout) { const timeoutId = setTimeout(() => { dispatch('dismissNotification', { id }) }, notification.timeout) commit('setNotificationTimeout', { id: id, timeoutId }) } } } } export default { getters, mutations, state, actions, namespaced: true } ================================================ FILE: src/store/api/index.js ================================================ import { fallbackApolloClient } from '@/vue-apollo' import LogRocket from 'logrocket' const SERVER_KEY = `${process.env.VUE_APP_RELEASE_TIMESTAMP}_server_url` const maxRetries = 3 const state = { backend: process.env.VUE_APP_BACKEND || 'SERVER', connected: true, connectionMessage: null, connectionTimeout: null, coreVersion: null, releaseTimestamp: null, apiMode: null, cloudUrl: process.env.VUE_APP_CLOUD_URL, retries: 0, serverUrl: localStorage.getItem(SERVER_KEY) || window.prefect_ui_settings?.server_url || process.env.VUE_APP_SERVER_URL, version: null } const getters = { backend(state) { return state.backend }, apiMode(state) { return state.apiMode }, connected(state) { return state.connected }, connecting(state) { return !state.connected && state.retries < maxRetries }, connectionMessage(state) { return state.connectionMessage }, connectionTimeout(state) { return state.connectionTimeout }, isCloud(state) { return state.backend === 'CLOUD' }, isServer(state) { return state.backend === 'SERVER' }, releaseTimestamp(state) { return state.releaseTimestamp }, cloudUrl(state) { return state.cloudUrl }, retries(state) { return state.retries }, serverUrl(state) { return state.serverUrl }, url(state) { switch (state.backend) { case 'CLOUD': return state.cloudUrl case 'SERVER': return state.serverUrl default: return null } }, version(state) { return state.version }, coreVersion(state) { return state.coreVersion } } const mutations = { setBackend(state, backend) { if (backend !== 'CLOUD' && backend !== 'SERVER') { throw new Error('Invalid backend') } state.backend = backend }, unsetBackend(state) { state.backend = null }, setConnected(state, connected) { if (typeof connected !== 'boolean') { throw new Error('Invalid connected state - connected should be a boolean') } state.connected = connected }, setConnectionMessage(state, message) { state.connectionMessage = message }, unsetConnectionMessage(state) { state.connectionMessage = null }, setConnectionTimeout(state, timeout) { state.connectionTimeout = timeout }, unsetConnectionTimeout(state) { clearTimeout(state.connectionTimeout) state.connectionTimeout = null }, setReleaseTimestamp(state, timestamp) { state.releaseTimestamp = timestamp }, setApiMode(state, apiMode) { if (apiMode && apiMode !== 'normal' && apiMode !== 'maintenance') { throw new Error('Unexpected api mode') } state.apiMode = apiMode }, unsetReleaseTimetamp(state) { state.releaseTimestamp = null }, setRetries(state, retries) { state.retries = retries }, setServerUrl(state, url) { state.serverUrl = url localStorage.setItem(SERVER_KEY, url) }, unsetServerUrl(state) { state.serverUrl = null localStorage.removeItem(SERVER_KEY) }, setVersion(state, version) { state.version = version }, unsetVersion(state) { state.version = null }, setCoreVersion(state, version) { state.coreVersion = version }, unsetCoreVersion(state) { state.coreVersion = null } } const actions = { async getApi({ commit, dispatch }) { try { const { data } = await fallbackApolloClient.query({ query: require('@/graphql/api.gql'), fetchPolicy: 'no-cache' }) commit('setReleaseTimestamp', data.api.release_timestamp) commit('setVersion', data.api.version) commit('setCoreVersion', data.api.core_version) commit('setConnected', true) commit('setApiMode', data.api.mode) } catch (error) { commit('unsetReleaseTimetamp') commit('unsetVersion') commit('unsetCoreVersion') commit('setConnected', false) LogRocket.captureException(error, { extra: { pageName: 'API Store', stage: 'getApi' } }) } dispatch('monitorConnection') }, async monitorConnection({ getters, commit }) { commit('unsetConnectionTimeout') const monitorConnection = async () => { if (getters['retries'] >= maxRetries) { commit('setRetries', 0) } commit('setRetries', getters['retries'] + 1) try { const { data } = await fallbackApolloClient.query({ query: require('@/graphql/api.gql'), fetchPolicy: 'network-only', errorPolicy: 'none' }) if (data) { commit('setReleaseTimestamp', data.api.release_timestamp) commit('setVersion', data.api.version) commit('setConnectionMessage', 'Connected') commit('setRetries', 0) commit('setConnected', true) commit('setApiMode', data.api.mode) } else { throw new Error('no data returned from api query') } } catch (e) { commit('setConnectionMessage', e.toString()) commit('setConnected', false) } finally { const timeout = setTimeout( monitorConnection, getters['retries'] >= maxRetries || getters['connected'] ? 10000 : 3000 ) commit('setConnectionTimeout', timeout) } } monitorConnection() }, async setServerUrl({ commit }, url) { commit('setServerUrl', url) }, async switchBackend({ commit, dispatch, rootGetters }, backend) { commit('setBackend', backend) commit('tenant/unsetTenant', null, { root: true }) commit('tenant/unsetTenants', null, { root: true }) if (backend == 'CLOUD') { await dispatch('auth/authenticate', null, { root: true }) await dispatch('auth/authorize', null, { root: true }) await dispatch('user/getUser', null, { root: true }) } await dispatch('getApi') await dispatch('tenant/getTenants', null, { root: true }) if (backend == 'SERVER') { commit('tenant/setDefaultTenant', rootGetters['tenant/tenants']?.[0], { root: true }) } if (rootGetters['tenant/defaultTenant']?.slug) { await dispatch( 'tenant/setCurrentTenant', rootGetters['tenant/defaultTenant']?.slug, { root: true } ) } dispatch('monitorConnection') } } export default { getters, mutations, state, actions, namespaced: true } ================================================ FILE: src/store/auth/index.js ================================================ import jwt_decode from 'jwt-decode' const state = { authorizationToken: null, authorizationTokenExpiry: null, idToken: null, idTokenExpiry: null, refreshToken: null, refreshTokenExpiry: null, user: null } const getters = { isAuthenticated(state) { return !!state.idToken && new Date().getTime() < state.idTokenExpiry }, isAuthorized(state) { return ( !!state.authorizationToken && new Date().getTime() < state.authorizationTokenExpiry ) }, user(state) { return state.user }, idToken(state) { return state.idToken }, idTokenExpiry(state) { return state.idTokenExpiry }, refreshToken(state) { return state.refreshToken }, refreshTokenExpiry(state) { return state.refreshTokenExpiry }, authorizationToken(state) { return state.authorizationToken }, authorizationTokenExpiry(state) { return state.authorizationTokenExpiry } } const mutations = { error(state, error) { state.error = error }, user(state, user) { if (typeof user !== 'object' || user == null) throw new TypeError(`user must be an object, got ${typeof user} instead`) state.user = user }, unsetUser(state) { state.user = null }, accessToken(state, accessToken) { try { jwt_decode(accessToken) } catch (e) { throw new TypeError( `accessToken must be a valid JWT, got a malformed one instead. ${e}` ) } state.accessToken = accessToken }, idToken(state, idToken) { try { jwt_decode(idToken) } catch (e) { throw new TypeError( `idToken must be a valid JWT, got a malformed one instead. ${e}` ) } state.idToken = idToken }, unsetIdToken(state) { state.idToken = null }, idTokenExpiry(state, idTokenExpiry) { if (typeof idTokenExpiry !== 'number' || idTokenExpiry == null) throw new TypeError( `idTokenExpiry must be an number, got ${typeof idTokenExpiry} instead` ) state.idTokenExpiry = idTokenExpiry }, unsetIdTokenExpiry(state) { state.idTokenExpiry = null }, authorizationToken(state, authorizationToken) { try { jwt_decode(authorizationToken) } catch (e) { throw new TypeError( `authorizationToken must be a valid JWT, got a malformed one instead. ${e}` ) } state.authorizationToken = authorizationToken }, unsetAuthorizationToken(state) { state.authorizationToken = null }, refreshToken(state, refreshToken) { try { jwt_decode(refreshToken) } catch (e) { throw new TypeError( `refreshToken must be a valid JWT, got a malformed one instead. ${e}` ) } state.refreshToken = refreshToken }, unsetRefreshToken(state) { state.refreshToken = null }, authorizationTokenExpiry(state, authorizationTokenExpiry) { if ( typeof authorizationTokenExpiry !== 'number' || authorizationTokenExpiry == null ) throw new TypeError( `authorizationTokenExpiry must be an number, got ${typeof authorizationTokenExpiry} instead` ) state.authorizationTokenExpiry = authorizationTokenExpiry }, unsetAuthorizationTokenExpiry(state) { state.authorizationTokenExpiry = null }, refreshTokenExpiry(state, refreshTokenExpiry) { if (typeof refreshTokenExpiry !== 'number' || refreshTokenExpiry == null) throw new TypeError( `refreshTokenExpiry must be an number, got ${typeof refreshTokenExpiry} instead` ) state.refreshTokenExpiry = refreshTokenExpiry }, unsetRefreshTokenExpiry(state) { state.refreshTokenExpiry = null } } const actions = {} export default { state, getters, mutations, actions, namespaced: true } ================================================ FILE: src/store/data/index.js ================================================ import { fallbackApolloClient } from '@/vue-apollo' const state = { activeFlow: null, activeProject: null, activeTask: null, flows: null, projects: null, tasks: null } const getters = { activeFlow(state) { return state.activeFlow }, activeFlowId(state) { return state.activeFlow?.id }, activeProject(state) { return state.activeProject }, activeProjectId(state) { return state.activeProject?.id }, activeTask(state) { return state.activeTask }, activeTaskId(state) { return state.activeTask?.id }, flows(state) { return state.flows }, projects(state) { return state.projects }, tasks(state) { return state.tasks } } const mutations = { setActiveProject(state, project) { if ( !project || typeof project !== 'object' || Array.isArray(project) || Object.keys(project) < 1 ) { throw new Error( 'passed invalid or empty Project; Expected Object, got: ' + project ) } state.activeProject = project }, unsetActiveProject(state) { state.activeProject = null }, setActiveFlow(state, flow) { if ( !flow || typeof flow !== 'object' || Array.isArray(flow) || Object.keys(flow) < 1 ) { throw new Error( 'passed invalid or empty Flow; Expected Object, got: ' + flow ) } state.activeFlow = flow }, unsetActiveFlow(state) { state.activeFlow = null }, setActiveTask(state, task) { if ( !task || typeof task !== 'object' || Array.isArray(task) || Object.keys(task) < 1 ) { throw new Error( 'passed invalid or empty Task; Expected Object, got: ' + task ) } state.activeTask = task }, unsetActiveTask(state) { state.activeTask = null }, addTasks(state, tasks) { if (!tasks || !Array.isArray(tasks)) { throw new Error( 'passed null or invalid Tasks; Expected Array, got: ' + tasks ) } if (!state.tasks) { state.tasks = tasks return } tasks.forEach(task => { let i = state.tasks.findIndex(t => t.id == task.id) if (i > -1) state.tasks[i] = task else state.tasks.push(task) }) }, setTasks(state, tasks) { if (!tasks || !Array.isArray(tasks)) { throw new Error('passed invalid Tasks; Expected Array, got: ' + tasks) } state.tasks = tasks }, unsetTasks(state) { state.tasks = null }, setFlows(state, flows) { if (!flows || !Array.isArray(flows)) { throw new Error('passed invalid Flows; Expected Array, got: ' + flows) } state.flows = flows }, unsetFlows(state) { state.flows = null }, setProjects(state, projects) { if (!projects || !Array.isArray(projects)) { throw new Error( 'passed invalid Projects; Expected Array, got: ' + projects ) } state.projects = projects }, unsetProjects(state) { state.projects = null } } const actions = { async activateFlow({ commit, getters, dispatch }, id) { let flow = getters['flows']?.find(f => f.id == id || f.flow_group_id == id) if (!flow || flow.id !== id) { id = flow?.id || id const { data } = await fallbackApolloClient.query({ query: require('@/graphql/Nav/flow.gql'), variables: { id: id } }) // Dedupes incoming flows const flows = getters['flows']?.filter(f => !data.flow.find(_f => _f.id == f.id)) || [] commit('setFlows', [...flows, ...data.flow]) flow = getters['flows']?.find(f => f.id == id || f.flow_group_id == id) } if (!flow) throw new Error("Couldn't retrieve flow.") commit('setActiveFlow', flow) await dispatch('activateProject', flow.project_id) }, async activateProject({ commit, getters }, id) { let project = getters['projects']?.find(p => p.id == id) if (!project) { const { data } = await fallbackApolloClient.query({ query: require('@/graphql/Nav/projects.gql') }) commit('setProjects', data.project) project = getters['projects'].find(p => p.id == id) } if (!project) throw new Error("Couldn't retrieve project.") commit('setActiveProject', project) }, async activateTask({ commit, getters, dispatch }, id) { let task = getters['tasks']?.find(t => t.id == id) if (!task) { const { data } = await fallbackApolloClient.query({ query: require('@/graphql/Nav/task.gql'), variables: { taskId: id } }) commit('addTasks', data.task) task = getters['tasks'].find(t => t.id == id) } if (!task) throw new Error("Couldn't retrieve task.") commit('setActiveTask', task) await dispatch('activateFlow', task.flow_id) }, resetActiveData({ commit }) { commit('unsetActiveFlow') commit('unsetActiveProject') commit('unsetActiveTask') }, resetData({ commit }) { commit('unsetActiveFlow') commit('unsetActiveProject') commit('unsetActiveTask') commit('unsetFlows') commit('unsetProjects') commit('unsetTasks') } } export default { getters, mutations, state, actions, namespaced: true } ================================================ FILE: src/store/index.js ================================================ // Core import Vue from 'vue' import Vuex from 'vuex' // Plugins import LogRocket from 'logrocket' import createPlugin from 'logrocket-vuex' // Modules import agent from '@/store/agent' import api from '@/store/api' import auth from '@/store/auth' import data from '@/store/data' import license from '@/store/license' import refresh from '@/store/refresh' import sideNav from '@/store/sideNav' import tenant from '@/store/tenant' import user from '@/store/user' import alert from '@/store/alert' import polling from '@/store/polling' Vue.use(Vuex) const logrocketPlugin = createPlugin(LogRocket, mutation => { if ( mutation.type === 'setAuthenticationTokens' || mutation.type === 'setAuthorizationToken' || mutation.type === 'setUser' ) { return { type: mutation.type } } return mutation }) const store = new Vuex.Store({ modules: { agent, alert, api, auth, data, license, polling, refresh, sideNav, tenant, user }, strict: process.env.NODE_ENV !== 'production', plugins: [logrocketPlugin] }) export default store ================================================ FILE: src/store/license/index.js ================================================ import { fallbackApolloClient } from '@/vue-apollo' import LogRocket from 'logrocket' const state = { license: null, permissions: null, tempLicenseType: null, role: null } const getters = { hasLicense(state) { return !!state.license }, license(state) { return state.license }, permissions(state) { return state.permissions }, tempLicenseType(state) { return state.tempLicenseType }, planType: state => type => { if (type) { return state.license?.terms?.plan.includes(type) } return state.license?.terms?.plan }, hasPermission: state => (operation, ref) => { if (process.env.VUE_APP_BACKEND !== 'CLOUD') return true return state.permissions?.includes(`${operation}:${ref}`) }, allowedUsers: state => type => { if (type === 'read') { return state.license?.terms?.read_only_users } return state.license?.terms?.users }, role(state) { return state.role } } const mutations = { setLicense(state, license) { state.license = license state.tempLicenseType = null }, setRole(state, role) { state.role = role }, setTempLicenseType(state, type) { state.tempLicenseType = type }, unsetLicense(state) { state.license = null }, setPermissions(state, permissions) { state.permissions = permissions }, unsetPermissions(state) { state.permissions = null } } const actions = { async getLicense({ commit }) { try { const { data } = await fallbackApolloClient.query({ query: require('@/graphql/License/license.gql'), fetchPolicy: 'no-cache' }) if (data?.auth_info?.license) { commit('setLicense', data.auth_info.license) } if (data?.auth_info?.role_id) { commit('setRole', data.auth_info.role_id) } if (data?.auth_info?.permissions) { commit('setPermissions', data.auth_info.permissions) } } catch (error) { commit('unsetLicense') commit('unsetPermissions') // eslint-disable-next-line no-console console.log(error) LogRocket.captureException(error, { extra: { pageName: 'LicenseStore', stage: 'getLicense' } }) } } } export default { getters, mutations, state, actions, namespaced: true } ================================================ FILE: src/store/polling/index.js ================================================ const state = { uniqueId: -1, tenants: [], agents: [], projects: [], flows: [] } const getters = { shouldPollTenants(state) { return state.tenants.length > 0 }, shouldPollAgents(state) { return state.agents.length > 0 }, shouldPollProjects(state) { return state.projects.length > 0 }, shouldPollFlows(state) { return state.flows.length > 0 } } const mutations = { incrementUniqueId(state) { state.uniqueId++ }, addSubscriber(state, { stream, uniqueId }) { if (state[stream].indexOf(uniqueId) == -1) { state[stream].push(uniqueId) } }, removeSubscriber(state, { stream, uniqueId }) { if (state[stream].indexOf(uniqueId) != -1) { state[stream] = [...state[stream].filter(id => id != uniqueId)] } } } const actions = { getUniqueId({ commit, state }) { commit('incrementUniqueId') return state.uniqueId }, async subscribe({ commit, dispatch }, streams) { const uniqueId = await dispatch('getUniqueId') const addSubscriber = stream => commit('addSubscriber', { uniqueId, stream }) if (!Array.isArray(streams)) { streams = [streams] } streams.forEach(addSubscriber) return () => dispatch('unsubscribe', { uniqueId, streams }) }, unsubscribe({ commit }, { uniqueId, streams }) { streams.forEach(stream => commit('removeSubscriber', { uniqueId, stream })) } } export default { getters, mutations, state, actions, namespaced: true } ================================================ FILE: src/store/refresh/index.js ================================================ const state = { componentKey: 0 } const getters = { componentKey(state) { return state.componentKey } } const mutations = { add(state) { state.componentKey++ } } export default { getters, mutations, state, namespaced: true } ================================================ FILE: src/store/sideNav/index.js ================================================ const state = { open: false } const getters = { isOpen(state) { return state.open } } const mutations = { close(state) { state.open = false }, open(state) { state.open = true }, toggle(state) { state.open = !state.open } } export default { getters, mutations, state, namespaced: true } ================================================ FILE: src/store/tenant/index.js ================================================ import { fallbackApolloClient } from '@/vue-apollo' import { prefectTenants } from '@/middleware/prefectAuth' import { switchTenant, commitTokens } from '@/auth/index.js' const state = { defaultTenant: null, tenant: { id: null, name: null, info: null, slug: null, role: null, licenses: [], settings: {}, prefectAdminSettings: {}, stripe_customer: null }, isLoadingTenant: false, tenantIsSet: false, tenants: [] } const getters = { defaultTenant(state) { return state.defaultTenant }, isLoadingTenant(state) { return state.isLoadingTenant }, role(state) { return state.tenant.role }, tenant(state) { return state.tenant || state.defaultTenant }, tenantIsSet(state) { return !!state.tenant?.id }, tenants(state) { return state.tenants } } const mutations = { setDefaultTenant(state, tenant) { if ( !tenant || typeof tenant !== 'object' || Array.isArray(tenant) || Object.keys(tenant) < 1 ) { throw new Error('passed invalid or empty tenant object') } state.defaultTenant = tenant }, setIsLoadingTenant(state, value) { if (typeof value !== 'boolean') { throw new Error( `passed invalid value to setIsLoadingTenant mutation, got ${typeof val}, expected Boolean.` ) } state.isLoadingTenant = value }, setTenant(state, tenant) { if ( !tenant || typeof tenant !== 'object' || Array.isArray(tenant) || Object.keys(tenant) < 1 ) { throw new Error('passed invalid or empty tenant object') } state.tenant = { ...tenant } }, setTenants(state, tenants) { if (!tenants || tenants?.length === 0) { throw new Error('passed invalid or empty tenant array') } state.tenants = tenants }, unsetTenant(state) { state.tenant = { id: null, name: null, info: null, slug: null, role: null, licenses: [], settings: {}, prefectAdminSettings: {}, stripe_customer: null } }, unsetTenants(state) { state.tenants = [] }, updateTenantSettings(state, settings) { if (!settings || !Object.keys(settings).length) { throw new Error('passed invalid or empty settings object') } state.tenant.settings = settings } } const actions = { async getTenants({ commit, getters, rootGetters }) { try { const tenants = await prefectTenants(rootGetters['api/isCloud']) commit('setTenants', tenants) // Make sure the current tenant object is updated if (getters['tenantIsSet']) { let tenant = getters['tenants']?.find( t => t.id === getters['tenant'].id ) tenant.role = rootGetters['user/memberships'].find( membership => membership.tenant.id == tenant.id )?.role_detail?.name commit('setTenant', tenant) } } catch { // Do nothing since the GraphQL error should be logged by Apollo afterware } return getters['tenants'] }, async setCurrentTenant({ commit, dispatch, getters, rootGetters }, slug) { slug = slug || getters['defaultTenant']?.slug || getters['tenants'][0]?.slug if (!slug) { throw new Error( 'No slug was provided when trying to set the current tenant' ) } try { commit('setIsLoadingTenant', true) let tenant = getters['tenants']?.find(t => t.slug === slug) if (!tenant) { // If the tenant doesn't exist // try to retrieve tenants again await dispatch('getTenants') } tenant = getters['tenants']?.find(t => t.slug === slug) if (!tenant) { throw new Error("Unable to set current tenant: tenant doesn't exist") } if (rootGetters['api/isCloud']) { // We only need to get new tokens if we have a tenant // already - otherwise tokens are fetched through the initial // authorization process if (getters['tenantIsSet']) { const tokens = await switchTenant(tenant.id) commitTokens(tokens) } // Get the current license await dispatch('license/getLicense', null, { root: true }) tenant.role = rootGetters['user/memberships'].find( membership => membership.tenant.id == tenant.id )?.role_detail?.name } else { tenant.role = 'TENANT_ADMIN' } commit('setTenant', tenant) } catch (e) { throw new Error(`Problem setting tenant: ${e}`) } commit('setIsLoadingTenant', false) return getters['tenant'] }, async updateTenantSettings({ dispatch }, settings) { try { if (!settings || !Object.keys(settings).length) { throw new Error('passed invalid or empty settings object') } await fallbackApolloClient.mutate({ mutation: require('@/graphql/Mutations/update-tenant-settings.gql'), variables: { settings }, error(error) { throw error } }) await dispatch('getTenants') } catch (e) { throw new Error(`Problem updating tenant settings: ${e}`) } } } export default { actions, getters, mutations, state, namespaced: true } ================================================ FILE: src/store/user/index.js ================================================ import { prefectUser } from '@/middleware/prefectAuth' const state = { user: { id: null, email: null, username: null, default_membership_id: null, memberships: null, first_name: '', last_name: '', settings: { timezone: '', isDark: false } }, oktaUser: { name: null, email: null, picture: null }, userIsSet: false, invitations: null } const getters = { user(state) { return state.user }, username(state) { return state.username }, oktaUser(state) { return state.oktaUser }, defaultMembershipId(state) { return state.user.default_membership_id }, memberships(state) { return state.user.memberships }, userIsSet(state) { return state.userIsSet }, timezone(state) { return state.user.settings.timezone }, isDark(state) { return state.user.settings.isDark }, settings(state) { return state.user.settings }, firstName(state) { return state.user.first_name }, lastName(state) { return state.user.last_name }, invitations(state) { return state.invitations } } const mutations = { user(state, user) { state.user = { ...user } state.userIsSet = true }, setOktaUser(state, oktaUser) { state.oktaUser = { name: oktaUser.name, email: oktaUser.email, picture: oktaUser.picture || oktaUser.picture_url } }, setUserSettings(state, settings) { if (state.user.settings != settings) { state.user.settings = settings } }, unsetUser(state) { state.user = { id: null, email: null, username: null, first_name: '', last_name: '', default_membership_id: null, memberships: null, settings: { timezone: '' } } state.userIsSet = false }, unsetOktaUser(state) { state.oktaUser = { name: null, email: null, picture: null } }, setUserDefaultMembershipId(state, membershipId) { state.user.default_membership_id = membershipId }, setInvitations(state, invitations) { state.invitations = invitations }, unsetInvitations(state) { state.invitations = null } } const actions = { async setDefaultTenant({ commit, getters, rootGetters }) { const defaultMembershipId = getters['defaultMembershipId'] const defaultTenant = getters['memberships']?.find( membership => membership.id === defaultMembershipId )?.tenant const firstTenant = getters['memberships']?.[0]?.tenant || rootGetters['tenant/tenants']?.[0] commit('tenant/setDefaultTenant', defaultTenant || firstTenant, { root: true }) }, async getUser({ commit, getters, dispatch, rootGetters }) { // If this is Server, we don't continue, since this will fail if (rootGetters['api/isServer']) return const user = await prefectUser() commit('user', user) dispatch('setDefaultTenant') return getters['user'] } } export default { getters, mutations, actions, state, namespaced: true } ================================================ FILE: src/styles/atelier-sulphurpool-light.scss ================================================ /* Base16 Atelier Sulphurpool Light - Theme */ /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ /* Atelier-Sulphurpool Comment */ .hljs-comment, .hljs-quote { color: #6b7394; } /* Atelier-Sulphurpool Red */ .hljs-variable, .hljs-template-variable, .hljs-attribute, .hljs-tag, .hljs-name, .hljs-regexp, .hljs-link, .hljs-selector-id, .hljs-selector-class { color: #c94922; } /* Atelier-Sulphurpool Orange */ /* stylelint-disable-next-line */ .hljs-built_in, .hljs-number, .hljs-meta, .hljs-builtin-name, .hljs-literal, .hljs-type, .hljs-params { color: #c76b29; } /* Atelier-Sulphurpool Green */ .hljs-string, .hljs-symbol, .hljs-bullet { color: #ac9739; } /* Atelier-Sulphurpool Blue */ .hljs-title, .hljs-section { color: #3d8fd1; } /* Atelier-Sulphurpool Purple */ .hljs-keyword, .hljs-selector-tag { color: #6679cc; } .hljs { background: #f5f7ff; color: #5e6687; display: block; overflow-x: auto; padding: 0.5em; } .hljs-emphasis { font-style: italic; } .hljs-strong { font-weight: bold; } ================================================ FILE: src/styles/global.scss ================================================ /* This file is for styles used throughout the app, and global overrides. The style sections are: - Transition and Animation classes (used throughout the app for consistent look and feel) - Vuetify overrides (where Vuetify/material theming doesn't fit with our aesthetic) - Utility classes (see if Vuetify offers the class you need before making more of these!) - Common UI elements (used throughout the app for consistent look and feel) If you have styles used on several pages, but they aren't truly "global", you can create a "regional" stylesheet, and import it only on the pages needed. This will keep our CSS concise and snappy, and the files easier to read! */ :root { --v-tabs-height: 48px; --v-sm: 600px; --v-md: 960px; --v-lg: 1264px; --v-xl: 1904px; } html, body { overflow: overlay; } .not-mac * { box-sizing: border-box; -webkit-overflow-scrolling: touch; -ms-overflow-style: -ms-autohiding-scrollbar; // This is for scrollbar-css compliant browsers only // ... which is just FireFox for now. // the -webkit-* selectors will be deprecated at some point // so this will serve as a fallback scrollbar-color: #babac0 transparent; scrollbar-width: thin; // Styles the scrollbar container ::-webkit-scrollbar { background-color: transparent; width: 16px; } // Removes track default background ::-webkit-scrollbar-track { background-color: transparent; } // Styles scrollbar body ::-webkit-scrollbar-thumb { background-color: #babac0; border: 4px solid #fff; border-radius: 16px; min-height: 25px; } // Removes scrollar arrow buttons /* stylelint-disable-next-line */ ::-webkit-scrollbar-button { display: none; } } /* Transition and animation classes */ .fade-enter-active { animation: fade 500ms; } .fade-leave-active { animation: fade 500ms reverse; } .tooltip-fade-enter-active { animation: fade 150ms; } .tooltip-fade-leave-active { animation: fade 150ms reverse; } @keyframes fade { 0% { opacity: 0; } 100% { opacity: 1; } } .fade-expand-enter-active, .fade-expand-leave-active { max-height: 1000px; opacity: 1; } .fade-expand-enter-active { transition: max-height linear 200ms 200ms, opacity linear 200ms 400ms; } .fade-expand-leave-active { transition: max-height linear 200ms 200ms, opacity linear 200ms; } .fade-expand-enter, .fade-expand-leave-to { max-height: 0; opacity: 0; } .quick-fade-leave-active { transition: opacity 150ms ease-in-out !important; } .quick-fade-enter-active, .quick-fade-leave-active { opacity: 1; transition: opacity 200ms ease-in-out; } .quick-fade-enter, .quick-fade-leave-to { opacity: 0; } .tab-fade-leave-active { transition: opacity 150ms ease-in-out !important; } .tab-fade-enter-active, .tab-fade-leave-active { opacity: 1; position: absolute; transition: opacity 350ms ease-in-out; width: 100%; } .tab-fade-enter, .tab-fade-leave-to { opacity: 0; } .roll { animation: roll 3s ease-in-out; pointer-events: none; } @keyframes roll { from { transform: rotate(0); } to { transform: rotate(360deg); } } /* End transition and animation classes */ /* Vuetify overrides */ // stylelint-disable .vertical-button { &.v-btn--tile { height: auto !important; } .v-btn__content { flex-direction: column-reverse !important; } } // toggle button with label above .v-input--vertical .v-input__slot { flex-direction: column-reverse !important; .v-input--selection-controls__input { align-self: center; margin: auto !important; } .v-btn:not(.v-btn--round).v-size--small { height: unset !important; } } // overflow menu with checkboxes .v-input--reverse .v-input__slot { flex-direction: row-reverse; justify-content: flex-end; .v-application--is-ltr & { .v-input--selection-controls__input { margin-left: 8px; margin-right: 0; } } .v-application--is-rtl & { .v-input--selection-controls__input { margin-left: 0; margin-right: 8px; } } } .small-switch.v-input { margin-top: 0 !important; padding-top: 0 !important; transform: scale(0.8); } .multi-color-switch { .v-input--switch__track, .v-input--switch__thumb { color: inherit !important; } } //ugly box shadow on expanded data tables .v-data-table > .v-data-table__wrapper tbody tr.v-data-table__expanded__content { box-shadow: none !important; } .theme--light.v-tabs-items { background-color: var(--v-appBackground-base) !important; } // stylelint-enable /* End vuetify overrides */ /* Utility classes */ .cursor-pointer { cursor: pointer; } .position-absolute { position: absolute !important; } .position-relative { position: relative !important; } .word-break-normal { word-break: normal; } $percents: 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100; @each $percent in $percents { .o-#{$percent} { opacity: $percent/100 !important; } .hover-o-#{$percent} { &:hover, &:focus { opacity: $percent/100 !important; } } } .user-select-none { user-select: none; } .fill-height { height: calc(100vh - 64px); } .code-block { font-family: 'Source Code Pro', monospace !important; white-space: pre-wrap; } /* End utility classes */ /* Common UI elements */ .tabs-border-bottom { .v-tabs-bar { border-bottom: 1px solid var(--v-utilGrayLight-base) !important; } } .tabs-border-top { .v-tabs-bar { border-top: 1px solid var(--v-utilGrayLight-base) !important; } } .fixed-table { table { table-layout: fixed; } } .truncate-table.v-data-table { font-size: 0.9rem !important; td { font-size: inherit !important; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } } .remove--disabled.theme--light.v-btn.v-btn--disabled:not(.v-btn--flat):not(.v-btn--text):not(.v-btn-outlined), .remove--disabled.theme--dark.v-btn.v-btn--disabled:not(.v-btn--flat):not(.v-btn--text):not(.v-btn-outlined) { .v-icon { color: inherit !important; } } /* stylelint-disable */ .disabled.v-badge { pointer-events: none !important; .v-badge__wrapper, .v-badge__badge { pointer-events: none !important; } } .v-text-field-input-color { .v-text-field__slot { input { color: inherit !important; } } } // hides subnav on small screens .tabs-hidden { .v-tabs-bar { display: none; } } .v-picker__body { background: inherit !important; } .overflow-table > .v-data-table__wrapper { overflow: initial !important; } // stylelint-enable /* End common UI elements */ /* Navbar global styles */ .navbar-icon { font-size: 0.85rem; height: 36px !important; width: 36px !important; .svg-inline--fa { --fa-primary-color: #fff; --fa-secondary-color: #efefef; transition: all 150ms linear; &.fa-search { --fa-primary-color: #efefef; --fa-secondary-color: #fff; --fa-secondary-opacity: 1; } &.fa-bell { --fa-primary-color: #efefef; --fa-secondary-color: #fff; --fa-secondary-opacity: 1; } &.fa-server { --fa-secondary-opacity: 1; } &.fa-circle { --fa-secondary-color: #fff; --fa-secondary-opacity: 0; height: 0; width: 0; } } &:hover, &:focus { .svg-inline--fa { --fa-primary-color: var(--v-accentPink-base); } } &.active { .svg-inline--fa.fa-sliders-v-square { --fa-primary-color: var(--v-accentPink-base); } } } .banner-icon { color: transparent; font-size: 36px !important; height: 36px !important; line-height: 36px !important; width: 60px !important; .svg-inline--fa { transition: all 150ms linear; &.fa-list-ul { --fa-primary-color: var(--v-warning-base); --fa-secondary-color: var(--v-utilGrayLight-base); --fa-secondary-opacity: 1; } } } .system-icon { font-size: 64px !important; height: 64px !important; line-height: 64px !important; width: 80px !important; &.fa-stack { position: relative !important; .fa-stack-1x, .fa-stack-2x { height: inherit !important; position: relative; width: inherit !important; } .svg-inline--fa.fa-stack-1x { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -25%); } } .svg-inline--fa { --fa-primary-color: #444; --fa-secondary-opacity: 0.75; transition: all 150ms linear; &.fa-list-alt { --fa-primary-color: var(--v-warning-base); --fa-secondary-opacity: 1; } &.fa-align-slash { --fa-primary-color: var(--v-error-base); --fa-secondary-opacity: 1; } &.fa-slash { color: var(--v-error-base); } } &.active { .svg-inline--fa { &.fa-list-alt { --fa-primary-color: var(--v-primary-base); --fa-secondary-opacity: 1; } } } } .fa-stack { &.active { .nav-bar-duotone-icon { --fa-primary-color: var(--v-accentPink-base); } .fa-stack-1x { height: 100%; left: 50%; transform: translate(-50%, 1.15em) scale(0.6); width: 100%; } } } /* End Navbar global styles */ /* Dark Mode background overrides */ // stylelint-disable .theme--dark { .v-tabs-items, &.v-application { background-color: var(--v-appBackground-base) !important; } &.v-calendar-daily, &.v-card, &.v-data-table, &.v-data-table.v-data-table--fixed-header thead th, &.v-navigation-drawer, .v-sheet, &.v-tabs > .v-tabs-bar, &.v-text-field--solo > .v-input__control > .v-input__slot, &.v-toolbar.v-sheet:not(header) { background-color: var(--v-appForeground-base); } &.v-data-table > .v-data-table__wrapper > table > tbody > tr:hover:not(.v-data-table__expanded__content):not(.v-data-table__empty-wrapper), &.v-tooltip__content { background-color: var(--v-utilGrayMid-darken2) !important; } scrollbar-color: var(--v-utilGrayMid-darken2) transparent; scrollbar-width: thin; ::-webkit-scrollbar { background-color: transparent; width: 10px; } ::-webkit-scrollbar-track { background-color: transparent; } ::-webkit-scrollbar-thumb { background-color: var(--v-utilGrayMid-darken2); border-radius: 16px; min-height: 25px; } ::-webkit-scrollbar-corner { background-color: transparent; } .v-skeleton-loader__bone { background-color: var(--v-utilGrayMid-darken3) !important; } } /* End Dark Mode background overrides */ /* Plans global styles */ /* stylelint-disable no-descending-specificity */ .plans-feature-icon { align-items: center; display: inline-flex; height: 20px; justify-content: center; width: 20px; .svg-inline--fa { --fa-primary-color: var(--v-primary-base); --fa-secondary-color: var(--v-primary-base); --fa-secondary-opacity: 0.6; transition: all 150ms linear; } &.feature-green { .svg-inline--fa { --fa-primary-color: var(--v-accentGreen-base); --fa-secondary-color: var(--v-accentGreen-base); --fa-secondary-opacity: 0.6; transition: all 150ms linear; } } .fa-toolbox.svg-inline--fa { --fa-primary-opacity: 0.6 !important; --fa-secondary-opacity: 1 !important; } &.plans-feature-icon-light { .svg-inline--fa { --fa-primary-color: var(--v-primary-base); --fa-secondary-color: var(--v-primaryLight-base); --fa-secondary-opacity: 1; } } } .feature-category-icon { .svg-inline--fa { --fa-primary-color: var(--v-primary-base); --fa-secondary-color: var(--v-accentPink-base); --fa-secondary-opacity: 1; transition: all 150ms linear; &.fa-chart-scatter { --fa-primary-color: var(--v-accentPink-base); --fa-secondary-color: var(--v-primary-base); } } } .feature-list-icon { $color: #607d8b; .svg-inline--fa { --fa-primary-color: #{$color}; --fa-secondary-color: #{$color}; --fa-secondary-opacity: 1; color: $color; opacity: 1; transition: all 150ms linear; } &.empty-circle .svg-inline--fa { --fa-primary-opacity: 0 !important; } &.empty-outline .svg-inline--fa { --fa-secondary-opacity: 0 !important; } &.feature-list-icon-disabled .svg-inline--fa { opacity: 0.3 !important; } } .support-icon { .svg-inline--fa { --fa-primary-color: var(--v-primary-base); --fa-secondary-color: var(--v-primary-base); --fa-secondary-opacity: 0.5; } .fa-badge-check.svg-inline--fa { --fa-primary-color: var(--v-accentGreen-darken2); --fa-secondary-color: var(--v-accentGreen-base); } } /* stylelint-enable no-descending-specificity */ /* End plans global styles */ $fa-cc-amex: #007bc1; $fa-cc-diners-club: #004a97; $fa-cc-discover: #f68121; $fa-cc-jcb: #003a8f; $fa-cc-mastercard: #0a3a82; $fa-cc-paypal: #253b80; $fa-cc-stripe: #00afe1; $fa-cc-visa: #0157a2; .fa-cc-amex { color: $fa-cc-amex !important; } .fa-cc-diners-club { color: $fa-cc-diners-club !important; } .fa-cc-discover { color: $fa-cc-discover !important; } .fa-cc-jcb { color: $fa-cc-jcb !important; } .fa-cc-mastercard { color: $fa-cc-mastercard !important; } .fa-cc-paypal { color: $fa-cc-paypal !important; } .fa-cc-stripe { color: $fa-cc-stripe !important; } .fa-cc-visa { color: $fa-cc-visa !important; } ================================================ FILE: src/styles/json-input-style.scss ================================================ /* stylelint-disable */ .cm-s-json-input.CodeMirror { background-color: var(--v-appForeground-base) !important; color: var(--v-utilGrayDark-base) !important; .CodeMirror-code { letter-spacing: 0.15rem; } div.CodeMirror-selected { background: var(--v-primaryLight-base) !important; } .CodeMirror-line { &::selection, > span::selection, > span > span::selection { background: var(--v-primaryLight-base) !important; } } .CodeMirror-gutters { background: #f8f8f8 !important; border-left: 6px solid rgba(0, 83, 159, 0.65) !important; color: #333 !important; } .CodeMirror-linenumber { color: #aaa !important; padding-left: 8px !important; } .CodeMirror-cursor { border-left: 1px solid var(--v-utilGrayMid-base) !important; } .cm-keyword { color: #6262ff !important; } .cm-atom { color: var(--v-accentOrange-base) !important; } .cm-number { color: var(--v-accentGreen-base) !important; } .cm-def { color: #8da6ce !important; } span.cm-variable-2, span.cm-tag { color: #690 !important; } span.cm-variable-3, span.cm-def, span.cm-type { color: var(--v-error-base) !important; } .cm-variable { color: var(--v-error-base) !important; } .cm-qualifier { color: #690 !important; } .cm-operator { color: var(--v-error-base) !important; } .cm-comment { color: var(--v-utilGrayMid-base) !important; font-weight: normal !important; } .cm-string { color: var(--v-accentPink-base) !important; } .cm-property.cm-string { color: var(--v-tertiaryBlue-base) !important; } .cm-property { color: var(--v-error-base) !important; } .cm-string-2 { color: var(--v-error-base) !important; } .cm-meta { color: #000 !important; } .cm-builtin { color: #deaa54 !important; } .cm-tag { color: #ff9447 !important; } .cm-attribute { color: #d6bb6d !important; } .cm-header { color: #ea5a2e !important; } .cm-hr { color: #aeaeae !important; } .cm-link { color: #42c1d6 !important; font-style: italic !important; text-decoration: none !important; } .cm-error { border-bottom: 1px solid red !important; } div .CodeMirror-activeline-background { background: #efefff !important; } div span.CodeMirror-matchingbracket { background-color: rgb(69, 90, 100, 0.35) !important; color: inherit !important; } } /* stylelint-enable */ ================================================ FILE: src/styles/md-style.scss ================================================ .md { margin-left: 2.25rem; margin-top: 3.25rem; /* stylelint-disable-next-line */ a[aria-hidden='true'] { float: left; font-size: 0.85em; margin-left: -0.87em; margin-top: 0.125em; opacity: 0; padding-right: 0.23em; } /* stylelint-disable-next-line */ a[aria-hidden='true']:hover { opacity: 1; } h1 { font-size: 2.5em; } h2 { font-size: 2em; } h3 { font-size: 1.75em; } h4 { font-size: 1.5em; } h5 { font-size: 1.25em; } h6 { font-size: 1em; } /* stylelint-disable a11y/line-height-is-vertical-rhythmed */ h1, h2, h3, h4, h5, h6 { border-bottom: 1px solid #d2dadf; color: var(--v-utilGrayDark-base); font-weight: 700; line-height: 1.15; margin-top: 1em; padding-bottom: 0.7rem; text-rendering: optimizeLegibility; } /* stylelint-enable */ ol, p, ul { color: var(--v-utilGrayDark-base); font-size: 1em; line-height: 1.75; } p { color: var(--v-utilGrayDark-base); display: block; margin-block-end: 1em; margin-block-start: 1em; margin-inline-end: 0; margin-inline-start: 0; } img { max-width: 100%; } a { font-weight: 500; text-decoration: none; } pre > code { background-color: var(--v-appBackground-base); border: 1px solid var(--v-appBackground-base); border-radius: 2px; color: var(--v-utilGrayMid-base); display: block; font-family: 'Source Code Pro', monospace; font-size: 1em; font-weight: 400; line-height: 1.5; margin-bottom: 1.6em; margin-top: 16px; max-width: 100%; overflow: auto; padding: 12px; page-break-inside: avoid; word-wrap: break-word; } p > code { background-color: var(--v-appBackground-base); border-radius: 3px; color: var(--v-primary-base); font-size: 0.85em; margin: 0; padding: 0.25rem 0.5rem; } /* stylelint-disable a11y/font-size-is-readable */ blockquote { background-color: #fffaf1; border-color: #e90; border-left-style: solid; border-left-width: 0.5rem; font-size: 13px; margin: 1rem 0; padding: 0.1rem 1.5rem; } /* stylelint-enable */ } ================================================ FILE: src/styles/playground.scss ================================================ .CodeMirror { font-size: 1.1rem !important; height: 100%; padding: 5px; } .cm-s-playground { &.CodeMirror { background: var(--v-secondaryGrayDark-base); color: #d6d5d4; } &.CodeMirror.light { background: var(--v-secondaryGrayLight-base); color: var(--v-secondaryGrayDark-base); } div.CodeMirror-selected { background: #3a3432; } &.CodeMirror-empty { color: #777; } .CodeMirror-gutters { background: var(--v-secondaryGrayDark-base); border-right: 0; } .CodeMirror-guttermarker { color: #db2d20; } .CodeMirror-guttermarker-subtle, .CodeMirror-linenumber { color: var(--v-secondaryGray-base); } .CodeMirror-cursor { border-left: 1px solid #807d7c; } span { &.cm-comment { color: #666; } &.cm-atom, &.cm-number { color: #a16a94; } &.cm-property, &.cm-attribute { color: var(--v-accentOrange-base); } &.cm-keyword { color: var(--v-codeBlue-base); } &.cm-string { color: #fded02; } &.cm-variable { color: #01a252; } &.cm-variable-2 { color: #01a0e4; } &.cm-def { color: var(--v-codePink-base); } &.cm-bracket { color: #d6d5d4; } &.cm-tag { color: #db2d20; } &.cm-link { color: #a16a94; } &.cm-error { background: #db2d20; color: #807d7c; } } .CodeMirror-activeline-background { background: #2f2f2f; } .CodeMirror-matchingbracket { color: #fff !important; background-color: rgba(0, 115, 223, 0.5); } } .cm-s-playground-light { &.CodeMirror { background: var(--v-secondaryGrayLight-base); color: var(--v-secondaryGrayDark-base); font-size: 0.85rem; } div.CodeMirror-selected { background: #3a3432; } &.CodeMirror-empty { color: #999; } .CodeMirror-gutters { background: var(--v-secondaryGrayDark-base); border-right: 0; } .CodeMirror-guttermarker { color: #db2d20; } .CodeMirror-guttermarker-subtle, .CodeMirror-linenumber { color: var(--v-secondaryGray-base); } .CodeMirror-cursor { border-left: 1px solid #807d7c; } span { &.cm-comment { color: #666; } &.cm-atom, &.cm-number { color: var(--v-codePink-base); } &.cm-property, &.cm-attribute { color: var(--v-accentOrange-base) !important; } &.cm-keyword { color: var(--v-codeBlue-base); } &.cm-string { color: #0075b8; } &.cm-variable { color: #01a252; } &.cm-variable-2 { color: #01a0e4; } &.cm-def { color: var(--v-codePink-base); } &.cm-bracket { color: #d6d5d4; } &.cm-tag { color: #db2d20; } &.cm-link { color: #a16a94; } &.cm-error { background: #db2d20; color: #807d7c; } } .CodeMirror-activeline-background { background: #2f2f2f; } .CodeMirror-matchingbracket { color: #fff !important; text-decoration: underline; } } ================================================ FILE: src/styles/slash.scss ================================================ @keyframes slide-right-slant { 0% { transform: skewY(-26deg) translate(0, 0); width: 0%; } 100% { transform: skewY(-26deg) translate(0, -50%); width: 100%; } } @keyframes slide-left-slant { 0% { transform: skewY(-26deg) translate(0, -50%); width: 100%; } 100% { transform: skewY(-26deg) translate(0, 0); width: 0%; } } .slash { animation-delay: unset; position: relative; &::before { content: ''; height: inherit; position: absolute; transform: skewY(-26deg) translate(0, -50%); transform-origin: inherit; transform-origin: 50% 50%; transition-delay: inherit !important; transition-duration: 500ms; transition-property: all; width: 100%; z-index: 0; } &.paused::before { animation-play-state: paused; transform: skewY(-26deg) translate(0, 0); width: 0 !important; } &.slash-shadow::before { box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 12px 17px 2px rgba(0, 0, 0, 0.14), 0 5px 22px 4px rgba(0, 0, 0, 0.12) !important; } &.slash-enter::before { animation-delay: inherit !important; animation-duration: 500ms; animation-fill-mode: forwards; animation-name: slide-right-slant; animation-timing-function: ease-in-out; } &.slash-leave::before { animation-delay: 0 !important; animation-duration: 500ms; animation-fill-mode: forwards; animation-name: slide-left-slant; animation-timing-function: ease-in-out; } &.slash-origin-left { &::before { left: 0; } } &.slash-origin-right { &::before { right: 0; } } &.slash-reverse::before { transform: skewY(26deg); } &.slash-grey::before { background-image: linear-gradient( 105deg, #647489, var(--v-secondary-base) ) !important; } &.slash-grey-reverse::before { background-image: linear-gradient( 105deg, var(--v-secondary-base), #647489 ) !important; } &.slash-orange::before { background-image: linear-gradient(105deg, #ff60de, #ff4d20) !important; } &.slash-pink::before { background-image: linear-gradient(105deg, #ff4d20, #ff60de) !important; } &.slash-blue::before { background-image: linear-gradient( 105deg, var(--v-accentCyan-base), #0e50f5 ) !important; } &.slash-light-blue::before { background-image: linear-gradient( 105deg, #0e50f5, var(--v-accentCyan-base) ) !important; } div { z-index: 1 !important; } } .slash-horizontal { position: relative; transition: all 250ms; width: 100%; &::before { content: ''; height: inherit; left: 0; position: absolute; right: 0; top: 0; transform-origin: inherit; transition: all 250ms; transition-delay: 250ms; width: 100%; z-index: 0; } &.slash-grey::before { background-image: linear-gradient( 105deg, #647489, var(--v-secondary-base) ) !important; } &.slash-grey-reverse::before { background-image: linear-gradient( 105deg, var(--v-secondary-base), #647489 ) !important; } &.slash-blue::before { background-image: linear-gradient( 105deg, var(--v-accentCyan-base), #0e50f5 ) !important; } &.slash-orange::before { background-image: linear-gradient(105deg, #ff60de, #ff4d20) !important; } &.slash-pink::before { background-image: linear-gradient(105deg, #ff4d20, #ff60de) !important; } div { z-index: 1 !important; } &.slash-shadow::before { box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 12px 17px 2px rgba(0, 0, 0, 0.14), 0 5px 22px 4px rgba(0, 0, 0, 0.12) !important; } } ================================================ FILE: src/styles/yaml-input-style.scss ================================================ /* stylelint-disable */ .cm-s-yaml-input.CodeMirror { background-color: var(--v-appForeground-base) !important; color: var(--v-utilGrayDark-base) !important; .CodeMirror-code { letter-spacing: 0.15rem; } div.CodeMirror-selected { background: var(--v-primaryLight-base) !important; } .CodeMirror-line { &::selection, > span::selection, > span > span::selection { background: var(--v-primaryLight-base) !important; } } .CodeMirror-gutters { background: #f8f8f8 !important; border-left: 6px solid rgba(0, 83, 159, 0.65) !important; color: #333 !important; } .CodeMirror-linenumber { color: #aaa !important; padding-left: 8px !important; } .CodeMirror-cursor { border-left: 1px solid var(--v-utilGrayMid-base) !important; } .cm-keyword { color: #6262ff !important; } .cm-atom { color: var(--v-accentOrange-base) !important; } .cm-number { color: var(--v-accentGreen-base) !important; } .cm-def { color: #8da6ce !important; } span.cm-variable-2, span.cm-tag { color: #690 !important; } span.cm-variable-3, span.cm-def, span.cm-type { color: var(--v-error-base) !important; } .cm-variable { color: var(--v-error-base) !important; } .cm-qualifier { color: #690 !important; } .cm-operator { color: var(--v-error-base) !important; } .cm-comment { color: var(--v-utilGrayMid-base) !important; font-weight: normal !important; } .cm-string { color: var(--v-accentPink-base) !important; } .cm-property.cm-string { color: var(--v-tertiaryBlue-base) !important; } .cm-property { color: var(--v-error-base) !important; } .cm-string-2 { color: var(--v-error-base) !important; } .cm-meta { color: #000 !important; } .cm-builtin { color: #deaa54 !important; } .cm-tag { color: #ff9447 !important; } .cm-attribute { color: #d6bb6d !important; } .cm-header { color: #ea5a2e !important; } .cm-hr { color: #aeaeae !important; } .cm-link { color: #42c1d6 !important; font-style: italic !important; text-decoration: none !important; } .cm-error { border-bottom: 1px solid red !important; } div .CodeMirror-activeline-background { background: #efefff !important; } div span.CodeMirror-matchingbracket { background-color: rgb(69, 90, 100, 0.35) !important; color: inherit !important; } } /* stylelint-enable */ ================================================ FILE: src/utils/Tree.js ================================================ export function Tree(tree) { this.tree = tree this.arr = [] this.mapping = {} this.inOrder(this.tree) this.height = this.calcHeight() this.width = this.calcWidth() } Tree.prototype.inOrder = function(node, row = 0) { if (node == null) return let _row = row if (!this.mapping[node.id] && node.id) { _row = row + 1 this.arr[row] ? this.arr[row].push(node.children.length) : (this.arr[row] = [node.children.length]) this.mapping[node.id] = true } let len = node.children.length for (let i = 0; i < len; ++i) { this.inOrder(node.children[i], _row) } } Tree.prototype.calcWidth = function() { let height = 0 let len = this.arr.length for (let i = 0; i < len; ++i) { height = this.arr[i].length > height ? this.arr[i].length : height } return height } Tree.prototype.calcHeight = function() { return this.arr.length } ================================================ FILE: src/utils/array.js ================================================ // fisher yates shuffle export function shuffle(inputArray) { // Copy array so as not to mutate let array = [...inputArray] let currentIndex = array.length, temporaryValue, randomIndex // While there remain elements to shuffle... while (0 !== currentIndex) { // Pick a remaining element... randomIndex = Math.floor(Math.random() * currentIndex) currentIndex -= 1 // And swap it with the current element. temporaryValue = array[currentIndex] array[currentIndex] = array[randomIndex] array[randomIndex] = temporaryValue } return array } ================================================ FILE: src/utils/automations.js ================================================ export const presentTenseStates = { FAILED: 'fails', PENDING: 'is pending', SCHEDULED: 'is scheduled', RETRYING: 'retries', RESUME: 'resumes', QUEUED: 'is queued', SUBMITTED: 'is submitted', PAUSED: 'pauses', RUNNING: 'runs', FINISHED: 'finishes', SUCCESS: 'succeeds', CANCELLED: 'is cancelled', CACHED: 'is cached', TRIGGERFAILED: 'trigger fails', SKIPPED: 'skips', TIMEDOUT: 'times out', MAPPED: 'maps', LOOPED: 'loops' } export const titleCasePresentTenseStates = { Failed: 'fails', Pending: 'is pending', Scheduled: 'is scheduled', Retrying: 'retries', RESUME: 'resumes', Queued: 'is queued', Submitted: 'is submitted', PAUSED: 'pauses', Running: 'runs', Finished: 'finishes', Success: 'succeeds', Cancelled: 'is cancelled', Cached: 'is cached', Triggerfailed: 'trigger fails', Skipped: 'skips', Timedout: 'times out', Mapped: 'maps', Looped: 'loops' } //Can use requiresCloud or specific permission type to filter where needed export const actionTypes = [ { title: 'Email', type: 'EMAIL', actionType: 'EmailNotificationAction', verb: 'email', sendText: 'Send an', icon: 'fas fa-envelope', config: { to: null }, requiresCloud: true }, { title: 'Slack', type: 'SLACK_WEBHOOK', actionType: 'SlackNotificationAction', verb: 'slack', sendText: 'Send a', icon: 'fab fa-slack', config: { url: null }, requiresCloud: false }, { title: 'Twilio', type: 'TWILIO', actionType: 'TwilioNotificationAction', sendText: 'Send a', verb: 'twilio', icon: '$twilio', config: { account_sid: null, auth_token: null, to: [], messaging_service_sid: null }, requiresCloud: false }, { title: 'PagerDuty', sendText: 'Send a', type: 'PAGERDUTY', actionType: 'PagerDutyNotificationAction', verb: 'PagerDuty', icon: '$pagerDuty', config: { routing_key: null, api_token: null, severity: [] }, requiresCloud: false }, { title: 'Microsoft Teams', sendText: 'Send a', type: 'MS_TEAMS', actionType: 'TeamsWebhookNotificationAction', verb: 'teams', icon: 'fab fa-microsoft', config: { webhook_url_secret: null, message: null, title: null }, requiresCloud: true }, { title: 'Webhook', sendText: 'Send a', verb: 'send webhook to', type: 'WEBHOOK', icon: 'fas fa-desktop', config: { to: null }, requiresCloud: false } ] export const featureFlaggedEventTypes = [...actionTypes] export const flowEventTypes = [ { name: 'changes state', enum: 'CHANGES_STATE', permission: null }, { name: 'does not finish', enum: 'STARTED_NOT_FINISHED', permission: 'feature:flow-sla' }, { name: 'does not start', enum: 'SCHEDULED_NOT_STARTED', permission: 'feature:flow-sla' } ] export const AUTOMATIONSTATES = { All: [ 'Failed', 'Pending', 'Scheduled', 'Retrying', 'Resume', 'Queued', 'Submitted', 'Paused', 'Running', 'Finished', 'Success', 'Cancelled', 'Cached', 'Triggerfailed', 'Skipped', 'Timedout', 'Mapped', 'Looped' ], Failed: ['Failed', 'Timedout', 'Triggerfailed'], Finished: [ 'Finished', 'Looped', 'Cancelled', 'Success', 'Cached', 'Mapped', 'Skipped' ], Success: ['Success', 'Cached', 'Mapped', 'Skipped'], Custom: [] } export const jsonPlacehold = { jsonBlob: { event_name: '{event_type}', message: '', tenant_id: '{tenant_id}', tenant_slug: '{tenant_slug}', timestamp: '', id: '{event_id}', flow_id: '{flow_id}', flow_name: '{flow_name}', flow_group_id: '{flow_group_id}', flow_link: '{flow_link}', flow_run_id: '{flow_run_id}', flow_run_name: '{flow_run_name}', state: '{state}', state_message: '{state_message}', flow_run_link: '{flow_run_link}', flow_sla_config_id: '{flow_sla_config_id}', kind: '{flow_sla_type}', duration_seconds: '{duration}', event_type: '{event_type}' } } ================================================ FILE: src/utils/cloudHooks.js ================================================ export const openCloudHookTypes = [ { title: 'Email', type: 'EMAIL', icon: 'fas fa-envelope', config: { to: null }, requiresCloud: true }, { title: 'Slack', type: 'SLACK_WEBHOOK', icon: 'fab fa-slack', config: { url: null }, requiresCloud: false }, { title: 'Twilio', type: 'TWILIO', icon: '$twilio', config: { account_sid: null, auth_token: null, to: [], messaging_service_sid: null }, requiresCloud: false }, { title: 'PagerDuty', type: 'PAGERDUTY', icon: '$pagerDuty', config: { routing_key: null, api_token: null, severity: [] }, requiresCloud: false }, { title: 'Web', type: 'WEBHOOK', icon: 'fas fa-desktop', config: { to: null }, requiresCloud: false }, { title: 'Prefect', type: 'PREFECT_MESSAGE', icon: '$prefect', config: {}, requiresCloud: false } ] export const presentTenseStates = { FAILED: 'fails', PENDING: 'is pending', SCHEDULED: 'is scheduled', RETRYING: 'retries', // RESUME: 'resumes', QUEUED: 'is queued', SUBMITTED: 'is submitted', // PAUSED: 'pauses', RUNNING: 'runs', FINISHED: 'finishes', SUCCESS: 'succeeds', CANCELLED: 'is cancelled', CACHED: 'is cached', TRIGGERFAILED: 'trigger fails', SKIPPED: 'skips', TIMEDOUT: 'times out', MAPPED: 'maps', LOOPED: 'loops' } export const titleCasePresentTenseStates = { Failed: 'fails', Pending: 'is pending', Scheduled: 'is scheduled', Retrying: 'retries', // RESUME: 'resumes', Queued: 'is queued', Submitted: 'is submitted', // PAUSED: 'pauses', Running: 'runs', Finished: 'finishes', Success: 'succeeds', Cancelled: 'is cancelled', Cached: 'is cached', Triggerfailed: 'trigger fails', Skipped: 'skips', Timedout: 'times out', Mapped: 'maps', Looped: 'loops' } export const featureFlaggedCloudHookTypes = [...openCloudHookTypes] export const GROUP_COLORS = { All: 'primary', Custom: 'codePink', Failed: 'Failed', Finished: 'Finished', Success: 'Success' } export const STATES = { All: [ 'FAILED', 'PENDING', 'SCHEDULED', 'RETRYING', 'RESUME', 'QUEUED', 'SUBMITTED', 'PAUSED', 'RUNNING', 'FINISHED', 'SUCCESS', 'CANCELLED', 'CACHED', 'TRIGGERFAILED', 'SKIPPED', 'TIMEDOUT', 'MAPPED', 'LOOPED' ], Failed: ['FAILED', 'TIMEDOUT', 'TRIGGERFAILED'], Finished: [ 'FINISHED', 'LOOPED', 'CANCELLED', 'SUCCESS', 'CACHED', 'MAPPED', 'SKIPPED' ], Success: ['SUCCESS', 'CACHED', 'MAPPED', 'SKIPPED'] } ================================================ FILE: src/utils/cron.js ================================================ export const months = { 1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December', get JAN() { return this[1] }, get FEB() { return this[2] }, get MAR() { return this[3] }, get APR() { return this[4] }, get MAY() { return this[5] }, get JUN() { return this[6] }, get JUL() { return this[7] }, get AUG() { return this[8] }, get SEP() { return this[9] }, get OCT() { return this[10] }, get NOV() { return this[11] }, get DEC() { return this[12] } } export const daysWeek = { 0: 'Sunday', 1: 'Monday', 2: 'Tuesday', 3: 'Wednesday', 4: 'Thursday', 5: 'Friday', 6: 'Saturday', get SUN() { return this[0] }, get MON() { return this[1] }, get TUE() { return this[2] }, get WED() { return this[3] }, get THU() { return this[4] }, get FRI() { return this[5] }, get SAT() { return this[6] } } export const common = { '* * * * *': 'every minute', '* * * * * *': 'every minute', '0 * * * *': 'every hour', '0 * * * * *': 'every hour', '0 0 * * * *': 'every day at 12:00 AM', '0 0 * * *': 'every day at 12:00 AM', '0 0 1 * *': '12:00 AM on the 1st day of every month', '0 0 1 * * *': '12:00 AM on the 1st day of every month' } // Returns nothing, a comma, or 'and' // depending on a list and the position of the // element in the list export const oxfordList = (list, i) => { const required = list.length > 2 const isTwoElements = list.length == 2 const isLast = i + 1 == list.length const isSecondToLast = i + 2 == list.length if (required && !isLast && !isSecondToLast) { return ', ' } if (required && isSecondToLast) { return ', and ' } if (isTwoElements && i === 0) { return ' and ' } return '' } ================================================ FILE: src/utils/curveMetro.js ================================================ function Turn(context) { this._context = context } export function isDiagonal(x1, y1, x2, y2) { return x2 !== x1 && y2 !== y1 } export function makeQuadraticBezierPoints(x1, y1, x2, y2) { const turnDist = 0.3 let py1 = 0, py2 = 0, dy = y2 - y1, dist = Math.abs(dy) * turnDist if (dy > 0) { py1 = y1 + dist py2 = y2 - dist } else { py1 = y1 - dist py2 = y2 + dist } return [ [x1, py1], [x2, py2] ] } Turn.prototype = { lineStart: function() { this._point = 0 this._x = this._y = null }, lineEnd: function() {}, point: function(x, y) { x = +x y = +y switch (this._point) { case 0: this._context.moveTo(x, y) this._point = 1 break default: this._point = 2 if (isDiagonal(this._x, this._y, x, y)) { let to = makeQuadraticBezierPoints(this._x, this._y, x, y) this._context.lineTo(...to[0]) this._context.lineTo(...to[1]) } this._context.lineTo(x, y) break } this._x = x this._y = y } } export const curveMetro = function(context) { return new Turn(context) } ================================================ FILE: src/utils/dateTime.js ================================================ import { duration } from '@/utils/moment' import moment from '@/utils/moment' import { toPluralString } from '@/utils/string' export const MS_PER_SECOND = 1000 export const MS_PER_MINUTE = MS_PER_SECOND * 60 export const MS_PER_HOUR = MS_PER_MINUTE * 60 export const MS_PER_DAY = MS_PER_HOUR * 24 export const runTimeToEnglish = (startDate, endDate) => { if ( !startDate || !endDate || !(startDate instanceof Date) || !(endDate instanceof Date) ) { return '' } const runTimeInMilliseconds = endDate - startDate const runTime = duration(runTimeInMilliseconds) if (runTimeInMilliseconds === 0) { return '0 seconds' } else if (runTime >= duration(1, 'week')) { return runTime.format('w [weeks], d [days], h [hours]') } else if (runTime >= duration(1, 'day')) { return runTime.format('d [days], h [hours], m [minutes]') } else if (runTime >= duration(1, 'hour')) { return runTime.format('h [hours], m [minutes], s [seconds]') } else if (runTime >= duration(1, 'minute')) { return runTime.format('m [minutes], s [seconds]') } else if (runTime >= duration(1, 'second')) { return runTime.format('s [seconds]') } else if (runTime < duration(1, 'second')) { return '~1 second' } return runTime.humanize() } export const durationToEnglish = durationString => { if (!durationString) return '' const runTime = duration(durationString) if (runTime >= duration(1, 'week')) { return runTime.format('w [weeks], d [days], h [hours]') } else if (runTime >= duration(1, 'day')) { return runTime.format('d [days], h [hours], m [minutes]') } else if (runTime >= duration(1, 'hour')) { return runTime.format('h [hours], m [minutes], s [seconds]') } else if (runTime >= duration(1, 'minute')) { return runTime.format('m [minutes], s [seconds]') } else if (runTime >= duration(1, 'second')) { return runTime.format('s [seconds]') } else if (runTime < duration(1, 'second')) { return '< 1 second' } return runTime.humanize() } export const intervalToEnglish = numberOfMilliseconds => { if (numberOfMilliseconds === 604800000) { return 'Weekly' } else if (numberOfMilliseconds === 86400000) { return 'Daily' } else if (numberOfMilliseconds === 3600000) { return 'Hourly' } else if (numberOfMilliseconds === 60000) { return 'Every minute' } else if (numberOfMilliseconds === 1000) { return 'Every second' } const interval = duration(numberOfMilliseconds) if (interval > duration(1, 'week')) { return interval.format('[Every] w [weeks], d [days], h [hours]', { trim: 'both' }) } else if (interval > duration(1, 'day')) { return interval.format('[Every] d [days], h [hours], m [minutes]', { trim: 'both' }) } else if (interval > duration(1, 'hour')) { return interval.format('[Every] h [hours], m [minutes], s [seconds]', { trim: 'both' }) } else if (interval > duration(1, 'minute')) { return interval.format('[Every] m [minutes], s [seconds]', { trim: 'both' }) } else if (interval < duration(1, 'minute')) { return interval.format('[Every] s [seconds]', { trim: 'both' }) } return '' } export const oneAgo = unitOftime => { return moment .utc() .subtract(1, unitOftime) .format() } export const roundedOneAgo = unitOftime => { let roundedTo switch (unitOftime) { case 'year': roundedTo = 'month' break case 'month': roundedTo = 'day' break case 'day': roundedTo = 'hour' break case 'hour': roundedTo = 'minute' break case 'minute': roundedTo = 'second' break } return moment .utc() .subtract(1, unitOftime) .startOf(roundedTo) .format() } export function isIsoDateString(value) { return /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d/.test(value) } export function getMillisecondsUntilNextSecond() { const now = new Date() return MS_PER_SECOND - now.getMilliseconds() } export function getMillisecondsUntilNextMinute() { const now = new Date() return MS_PER_MINUTE - now.getSeconds() * getMillisecondsUntilNextSecond() } export function getMillisecondsUntilNextHour() { const now = new Date() return MS_PER_HOUR - now.getMinutes() * getMillisecondsUntilNextMinute() } export function durationDifference(start, end) { const difference = end - start const day = Math.floor(difference / MS_PER_DAY) const hour = Math.floor((difference % MS_PER_DAY) / MS_PER_HOUR) const minute = Math.floor((difference % MS_PER_HOUR) / MS_PER_MINUTE) const second = Math.floor((difference % MS_PER_MINUTE) / MS_PER_SECOND) return { day, hour, minute, second } } export function toDurationDifferenceString(durationDifference) { return Object.entries(durationDifference) .reduce((blocks, [key, value]) => { if (blocks.length < 2 && value > 0) { blocks.push(`${value} ${toPluralString(key, value)}`) } return blocks }, []) .join(', ') } ================================================ FILE: src/utils/error.js ================================================ export const ERROR_MESSAGE = 'Oops! Something went wrong - please try again in a few minutes. If the issue persists, try logging out and back in again.' ================================================ FILE: src/utils/features.js ================================================ export const featureTypes = [ { color: 'accentOrange', type: 'version-locking', title: 'Version Locking', icon: 'lock', text: 'Ensure your flows and tasks never run unexpectedly with opt-in version-locking.', link: 'https://docs.prefect.io/orchestration/concepts/flows.html#flow-settings' }, { color: 'accentCyan', type: 'concurrency-limit', title: 'Task Concurrency', icon: 'pi-task-run', text: 'Create team-wide task concurrency limits for fine-grained control of your running tasks - without ever leaving the UI.', link: 'https://docs.prefect.io/orchestration/concepts/task-concurrency-limiting.html' }, { color: 'accentPink', type: 'audit-trail', title: 'Audit Trail', icon: 'verified', text: "Keep a record of all actions in your tenant to better understand your team's workflow and ensure security compliance.", link: '' } ] ================================================ FILE: src/utils/html.js ================================================ export function escapeHTML(value) { return value .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, ''') } ================================================ FILE: src/utils/json.js ================================================ import jsBeautify from 'js-beautify' export function tryFormatJson(value) { if (value == null || typeof value !== 'object') { return value } try { return formatJson(value) } catch { return null } } export function tryFormatSingleLineJson(value) { if (value == null || typeof value !== 'object') { return value } try { return formatSingleLineJson(value) } catch { return null } } export function formatJson(value) { return jsBeautify(JSON.stringify(value), { indent_size: 2, space_in_empty_paren: true, preserve_newlines: false }) } export function formatSingleLineJson(value) { const formatted = jsBeautify(JSON.stringify(value), { indent_size: 0, space_in_empty_paren: true, preserve_newlines: false }) return formatted.replace(/\n/g, ' ') } export function tryParseJson(value) { try { return parseJson(value) } catch { return null } } export function parseJson(value) { return JSON.parse(value) } export function isValidJson(value) { try { parseJson(value) return true } catch { return false } } ================================================ FILE: src/utils/markdownParser.js ================================================ import remark from 'remark' import html from 'remark-html' import breaks from 'remark-breaks' import slug from 'remark-slug' import headings from 'remark-autolink-headings' import gfm from 'remark-gfm' import all from 'mdast-util-to-hast/lib/all' import normalize from 'mdurl/encode' import u from 'unist-builder' import table from 'mdast-util-to-hast/lib/handlers/table' export function parser(md) { let result = '' if (typeof md === 'string') { remark() .use(breaks) .use(slug) .use(headings, { content: { type: 'text', value: '# ' } }) .use(html, { sanitize: { clobberPrefix: '' } }) .process(md, (err, file) => { result = String(file) }) } else { result = `Error! A ${typeof md} was passed in instead of a string` } return result } export function artifact_parser(md) { let result = '' if (typeof md === 'string') { remark() .use(breaks) .use(slug) .use(gfm) .use(html, { handlers: { heading: function(h, node) { node.data = { hProperties: { className: ['h' + node.depth, 'mt-6'] } } return h(node, 'h' + node.depth, all(h, node)) }, link: function(h, node) { let props = { href: normalize(node.url), target: '_blank' } if (node.title !== null && node.title !== undefined) { props.title = node.title } return h(node.position, 'span', [ h(node, 'a', props, all(h, node)), h(node.position, 'sup', [ h( node.position, 'i', { className: 'v-icon notranslate material-icons theme--light', style: 'font-size: 12px' }, [u('text', 'open_in_new')] ) ]) ]) }, paragraph: function(h, node) { node.data = { hProperties: { className: 'text-body-1' } } return h(node, 'p', all(h, node)) }, strong: function(h, node) { node.data = { hProperties: { className: 'font-weight-medium' } } return h(node, 'span', all(h, node)) }, table: function(h, node) { node.data = { hProperties: { className: [ 'my-3', 'grey', 'lighten-5', 'px-4', 'py-2', 'text--darken-2', 'blue-grey--text' ] } } return table(h, node) }, thematicBreak: function(h, node) { node.data = { hProperties: { className: ['my-6'] } } return h(node, 'hr') } } }) .process(md, (err, str) => { result = String(str) }) } else { result = `Error! A ${typeof md} was passed in instead of a string` } return result } export function getRoutes() { const context = require.context('../pages/Tutorials/Markdown') const obj = context .keys() .map(context) .map((content, i) => { const htmlStr = parser(content) const removeSlash = context.keys()[i].replace(/\//g, '') const removePeriod = removeSlash.replace(/\./, '') const file = removePeriod.replace(/\.md/, '') const allIds = htmlStr.match(/id="(.*?)"/gm).map(id => { const getIDName = id.replace(/id="/gm, '#').replace(/^"|"$/g, '') return { name: getIDName, file } }) return { name: file, children: allIds } }) return obj } ================================================ FILE: src/utils/moment.js ================================================ /* Why? momentDurationFormat is a plugin for moment.js Because plugins for moment look for the defined moment instance by default, I'd like to use this file to install plugins for moment and then export particular functions from moment so that I can use plugins from those functions. For example, with the code below Vue components can now: import { duration } from '@/utils/moment' and use duration({{ input }}).format() without having to import moment and moment-duration-format. */ import moment from 'moment-timezone' // eslint-disable-next-line no-unused-vars import momentDurationFormat from 'moment-duration-format' export const duration = moment.duration export default moment ================================================ FILE: src/utils/ordinal.js ================================================ export const ordinal = n => { n = parseInt(n) return ( ['st', 'nd', 'rd'][(((((n < 0 ? -n : n) + 90) % 100) - 10) % 10) - 1] || 'th' ) } ================================================ FILE: src/utils/plans.js ================================================ export const PLANS_2021 = { free: { name: 'Free', price: 'Free', taskRuns: 20000, additionalCost: 0, users: 1, value: 'FREE_2021', history: 'week', title: 'developer' }, starter: { name: 'Starter', price: '0.0025', taskRuns: 20000, additionalCost: null, users: 1, value: 'STARTER_2021', history: 'week', title: 'starter' }, standard: { name: 'Standard', price: '0.0050', taskRuns: 20000, additionalCost: null, value: 'STANDARD_2021', users: 3, history: 'month', title: 'standard' }, enterprise: { name: 'Enterprise', price: 'contact', value: 'ENTERPRISE_2021', taskRuns: 0, additionalCost: 0.0025, users: 'unlimited', history: 'year', title: 'enterprise' } } export const basicFeatures = [ { name: 'Robust Scheduling', description: 'Create custom schedules including business days, offsets, and blackout windows, or fall back on good old cron.' }, { name: 'Intelligent Scheduling', description: 'Schedule varying parameter values or even where your runs should occur' }, { name: 'Artifacts', description: 'Publish custom data and render it in the Prefect UI' }, { name: 'Mapping', description: 'Dynamically generate parallel pipelines at runtime' }, { name: 'Retries', description: 'Advanced checkpointing and real-time state reporting protect you from the unexpected' }, { name: 'Run History', description: 'Use the Prefect UI to manage all of your flow runs, no matter how often or where they run' }, { name: 'Dataflow Automation', description: 'Pass data between tasks for complex processing and advanced analytics' }, { name: 'Caching', description: 'Persist the results of complex tasks with custom validation logic' }, { name: 'Versioning', description: "Every Prefect flow is automatically versioned, so you're always up-to-date" } ] export const infrastructureFeatures = [ { name: 'Hosted Orchestration Platform', description: 'Focus on your code while Prefect Cloud manages a highly-available orchestration API', plan: 'starter', value: 1 }, { name: 'Performance', description: 'Run tasks as fast as your infrastructure allows', plan: 'starter', value: 1 }, { name: 'API Security', description: 'Permission access via API tokens', plan: 'starter', value: 1 }, { name: 'Automatic Updates', description: 'Prefect Cloud releases every two weeks with new features and performance enhancements', plan: 'starter', value: 1 }, { name: 'Raise Rate Limits', description: 'TK', plan: 'enterprise', value: 3 } ] export const observabilityFeatures = [ { name: 'Logs Management', description: 'Stream, filter, and examine all of your workflow logs', plan: 'starter', value: 1 }, { name: 'Advanced Alerting', description: 'Configure notifications when custom criteria are met', plan: 'standard', value: 2 }, { name: 'Flow SLAs', description: 'Set SLAs for late or long-running workflows', plan: 'standard', value: 2 }, { name: 'Agent SLAs', description: 'Set SLAs for agents to ensure uptime', plan: 'standard', value: 2 }, { name: 'History Retention', description: 'Track one year of run history', plan: 'enterprise', value: 3 }, { name: 'Audit Trail', description: 'Track every action taken via the Prefect API', plan: 'enterprise', value: 3 } ] export const orchestrationFeatures = [ { name: 'Stateless Deployments', description: 'Spin up and tear down agent deployments with ease - Prefect Cloud manages all state for you', plan: 'starter', value: 1 }, { name: 'Multiple Execution Environments', description: 'Promote your workflows from dev to prod with a single API call, or schedule them to run in multiple places at once!', plan: 'starter', value: 1 }, { name: 'Secrets', description: 'Manage sensitive information', plan: 'starter', value: 1 }, { name: 'Advanced Automation', description: 'Automatically configure API actions when custom criteria are met', plan: 'standard', value: 2 }, { name: 'Concurrency Limits', description: 'Set concurrency limits at the flow or task level to control access to resources', plan: 'standard', value: 2 } ] export const authorizationFeatures = [ { name: 'Team Management', description: 'Get a complete view of everyone who can access your workflows', plan: 'starter', value: 1 }, { name: 'Read-Only Users', description: 'Invite analyts to work with the output of your workflows', plan: 'standard', value: 2 }, { name: 'Custom Permissions', description: 'Assign granular permissions, including per-project limits', plan: 'enterprise', value: 3 }, { name: 'SSO', description: 'Log in to Prefect Cloud via SSO', plan: 'enterprise', value: 3 }, { name: 'Custom Roles', description: 'Create and assign custom roles', plan: 'enterprise', value: 3 } ] ================================================ FILE: src/utils/regEx.js ================================================ const EMAIL_REGEX = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ const PARSED_SCHEDULE_REGEX = /([0-9]{1,2}:?[0-9]{0,2})|(?:am|pm|days|day|years|year|weeks|week|hours|hour|minutes|minute|seconds|second|monday|tuesday|wednesday|thursday|friday|saturday|sunday|january|february|march|april|may|june|july|august|september|october|november|december)/gim // These work in most cases but don't protect against double dashes or slashes // e.g. 5/6/7 or 5-6-7 // It gives us a pretty reasonable approximation of a valid string though. // [1-5]?[0-9] // Tests: https://regex101.com/r/e588QW/1 const CRON_MINUTE_REGEX = /(^\*{1})$|(^(\*\/)?[1-5]?[0-9](?:[,-/][1-5]?[0-9])*$)/i // 2[0-3]|1[0-9]|[0-9] // Tests: https://regex101.com/r/5cbtnj/1 const CRON_HOUR_REGEX = /^(^\*{1})$|(^(\*\/)?(2[0-3]|1[0-9]|[0-9])(?:[,-/](2[0-3]|1[0-9]|[0-9]))*$)/i // 3[01]|[12][0-9]|[1-9] // Tests: https://regex101.com/r/y1auyB/1 const CRON_DAY_MONTH_REGEX = /^(\*{1})$|(^(\*\/)?(3[01]|[12][0-9]|[1-9])(?:[,-/](3[01]|[12][0-9]|[1-9]))*$)/i // 1[0-2]|[1-9] // Tests: https://regex101.com/r/dPw34Y/1 const CRON_MONTH_REGEX = /^(\*{1})$|(^(\*\/)?(1[0-2]|[1-9])(?:[,-/](1[0-2]|[1-9]))*$)|(^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(?:[,-/](jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))*$)/i // [0-6] // Tests: https://regex101.com/r/G4cbea/1 const CRON_DAY_WEEK_REGEX = /^(\*{1})$|(^(\*\/)?([0-6])(?:[,-/#]([0-6]))*$)|(^(sun|mon|tue|wed|thu|fri|sat)(?:[,-/#](sun|mon|tue|wed|thu|fri|sat))*$)/i export { EMAIL_REGEX, PARSED_SCHEDULE_REGEX, CRON_MINUTE_REGEX, CRON_HOUR_REGEX, CRON_DAY_MONTH_REGEX, CRON_MONTH_REGEX, CRON_DAY_WEEK_REGEX } ================================================ FILE: src/utils/roles.js ================================================ export const ROLE_MAP = { READ_ONLY_USER: 'Read only', ENTERPRISE_LICENSE_ADMIN: 'License administrator', USER: 'User', TENANT_ADMIN: 'Administrator', PENDING: 'Pending' } export const ROLE_COLOR_MAP = { USER: 'codeBlueBright', ENTERPRISE_LICENSE_ADMIN: 'accent', READ_ONLY_USER: 'cloudUIPrimaryDark', TENANT_ADMIN: 'cloudUIPrimaryBlue', PENDING: 'accentOrange' } ================================================ FILE: src/utils/states.js ================================================ export const STATE_COLORS = { Failed: '#eb0000', Pending: '#b9dcff', Scheduled: '#ffbe1e', ScheduledAlt: '#ffeec4', Retrying: '#fc7b09', Resume: '#f58c0c', Queued: '#fff9c2', Submitted: '#fff499', Paused: '#99a8e8', Running: '#27b1ff', Listening: '#93d8ff', Finished: '#003483', Success: '#2cbe4e', Cancelled: '#bdbdbd', Cancelling: '#E8E8E8', Cached: '#74c367', TriggerFailed: '#c42800', Skipped: '#607583', TimedOut: '#dc370b', Mapped: '#4067a2', Looped: '#4c4cff', InProgress: '#93d2cc' } export const STATE_TYPES = { Failed: 'Finished', Pending: 'Pending', Scheduled: 'Pending', Retrying: 'Pending', Resume: 'Pending', Submitted: 'Pending', Paused: 'Pending', Queued: 'Pending', Running: 'Running', Listening: 'Running', Finished: 'Finished', Success: 'Finished', Cancelled: 'Finished', Cancelling: 'Running', Cached: 'Finished', TriggerFailed: 'Finished', Skipped: 'Finished', TimedOut: 'Finished', Mapped: 'Finished', Looped: 'Finished' } export const STATE_NAMES = [ 'All', 'Success', 'Failed', 'Finished', 'Scheduled', 'Pending', 'Running', 'Cancelled', 'Cancelling', 'Cached', 'Retrying', 'Queued', 'Paused', 'Mapped', 'Looped', 'Skipped', 'Resume', 'Submitted', 'TriggerFailed', 'ValidationFailed' ] export const STATE_PAST_TENSE = { Failed: 'failed', Pending: 'are pending', Scheduled: 'are scheduled', Retrying: 'retried', Resuming: 'were resumed', Submitted: 'are submitted', Paused: 'are paused', Queued: 'are queued', Running: 'are running', Listening: 'are listening', Finished: 'are finished', Success: 'succeeded', Cancelled: 'were cancelled', Cancelling: 'are cancelling', Cached: 'are cached', TriggerFailed: 'had failed triggers', Skipped: 'were skipped', TimedOut: 'timed out', Mapped: 'were mapped', Looped: 'were looped' } export const FINISHED_STATES = [ 'Finished', 'Looped', 'Success', 'Cancelled', 'Failed', 'TriggerFailed', 'ValidationFailed', 'TimedOut', 'Cached', 'Mapped', 'Skipped' ] export function calculateDuration(startTime, endTime, state) { if (endTime) { return endTime } if (FINISHED_STATES.includes(state)) { return startTime } return null } export default function(state) { return STATE_COLORS[state] } ================================================ FILE: src/utils/string.js ================================================ export function toPluralString(word, count) { if (count == 1) { return word } const ending = ['s', 'sh', 'ch', 'x', 'z'].some(chars => word.endsWith(chars)) ? 'es' : 's' return `${word}${ending}` } ================================================ FILE: src/utils/types.js ================================================ export const types = [ 'None', 'Boolean', 'Integer', 'String', 'Dictionary', 'List', 'Date' ] export function isValidType(type) { return types.includes(type) } ================================================ FILE: src/utils/yaml.js ================================================ import YAML from 'yaml' export function formatYaml(value) { if (value == null) { return null } try { return YAML.stringify(value) } catch { return null } } export function tryParseYaml(value) { try { return parseYaml(value) } catch { return null } } export function parseYaml(value) { return YAML.parse(value) } export function isValidYaml(value) { try { parseYaml(value) return true } catch { return false } } ================================================ FILE: src/vue-apollo.js ================================================ import Vue from 'vue' import VueApollo from 'vue-apollo' import { createApolloClient, restartWebsockets } from 'vue-cli-plugin-apollo/graphql-client' import store from '@/store/index' import { setContext } from 'apollo-link-context' import { ApolloLink, Observable } from 'apollo-link' import { BatchHttpLink } from 'apollo-link-batch-http' import { onError } from 'apollo-link-error' import { InMemoryCache } from 'apollo-cache-inmemory' import { HttpLink } from '@apollo/client' import LogRocket from 'logrocket' // Install the vue plugin Vue.use(VueApollo) // Name of the localStorage item const AUTH_TOKEN = 'authorization_token' function isExpired(expiry) { return new Date().getTime() > expiry } function notExpired(expiry) { return !isExpired(expiry) } let errors = 0, apiErrors = 0 const batchLink = new BatchHttpLink({ batchMax: 25, batchInterval: 2000, uri: () => store.getters['api/url'] }) const httpLink = new HttpLink({ uri: () => store.getters['api/url'] }) // Resets the cache and stops requests if // the backend has changed const backendMiddleware = new ApolloLink((operation, forward) => { const context = operation.getContext() if (context.headers?.['X-Backend'] !== store.getters['api/backend']) { defaultApolloClient.cache.reset() return } return forward(operation).map(response => { errors = 0 apiErrors = 0 return response }) }) // Used to identify the request in the server const headerMiddleware = setContext((_, { headers }) => { headers['X-Prefect-UI'] = true headers['X-Backend'] = store.getters['api/backend'] headers['X-Prefect-Tenant-ID'] = store.getters['tenant/tenant'].id headers['X-Prefect-User-ID'] = store.getters['user/user'].id headers['X-Frame-Options'] = 'deny' headers['X-Content-Type-Options'] = 'nosniff' headers['X-Permitted-Cross-Domain-Policies'] = 'none' headers['Content-Security-Policy'] = "default-src 'self'" return { headers: { ...headers } } }) // After requests have been made, formats errors for the JS console // to easily track the error sources in collapsible traces const errorAfterware = onError( ({ response, operation, graphQLErrors, networkError, forward }) => { // Only throw the API error once in a row // (prevents spamming the console when there's no connection) if (operation.operationName === 'Api') { if (apiErrors > 0) { // TODO: fix this Observable // return Observable.of() } apiErrors++ } if (process.env.NODE_ENV !== 'production') { /* eslint-disable no-console */ console.groupCollapsed( `%c${operation.operationName || 'Unnamed Query'} error`, 'color: #D64292; font-weight:bold;' ) console.log('Operation: ', operation) if (graphQLErrors?.length > 0) { console.group('%cGraphQL Errors', 'color: #CA9800; font-weight:bold;') graphQLErrors?.forEach(error => { console.group( `%c${error.extensions?.code || 'ERROR'}`, 'color: #B11A04; font-weight:bold;' ) console.log(`Message: ${error.message}`) console.log('Full log: ', error) console.groupEnd() }) console.groupEnd() } if (networkError) { console.group('%cNetwork Error', 'color: #CA9800; font-weight:bold;') console.log(networkError) console.groupEnd() } console.groupEnd() /* eslint-enable no-console */ } if ( store.getters['api/isCloud'] && graphQLErrors?.[0].message === 'Operation timed out' ) { LogRocket.captureException(operation, { type: 'Timeout' }) // For now we just capture Cloud errors, // we can expand this if it's helpful for debugging later } else if ( (store.getters['api/isCloud'] && graphQLErrors) || networkError ) { if (graphQLErrors) { LogRocket.captureException(graphQLErrors, { type: 'GraphQL Errors' }) } else if (networkError) LogRocket.captureException(networkError, { type: 'Network Error' }) } if (response) { response.errors = null } errors++ if (errors > 10) { defaultApolloClient.stop() } // Can return Observable.of returned from error link to supress errors // otherwise return forward(operation) // for a single retry of the failure // if (process.env.NODE_ENV !== 'production') return Observable.of() return forward(operation) } ) export { errorAfterware } // Adds authorization headers to requests headed for the Cloud API; // just forwards requests if headed for a Server API const authMiddleware = setContext(async (_, { headers }) => { if (store.getters['api/isServer']) { return { headers: { ...headers } } } const bearer = `Bearer ${store.getters['auth/authorizationToken']}` return { headers: { ...headers, authorization: bearer, 'authorization-expiry': store.getters['auth/authorizationTokenExpiry'] } } }) // The last link in the chain before the request is sent; // Checks that the request should be sent based on authorization header expiration // and stops the request if it shouldn't be const terminalRequestLink = new ApolloLink((operation, forward) => { if (store.getters['api/isServer']) return forward(operation) const context = operation.getContext() const expiration = context.headers?.['authorization-expiry'] // If there's no expiration, we forward the operation if (!expiration) return forward(operation) // otherwise we check that the authorization header hasn't expired before // forwarding the request if (notExpired(expiration)) return forward(operation) }) // Apollo link chain; acts as middleware for GraphQL queries const link = ApolloLink.from([ authMiddleware, headerMiddleware, backendMiddleware, errorAfterware, terminalRequestLink, batchLink ]) const fallbackLink = ApolloLink.from([ authMiddleware, headerMiddleware, backendMiddleware, errorAfterware, terminalRequestLink, httpLink ]) export const cache = new InMemoryCache({ resultCaching: false }) // Config export const defaultOptions = { // You can use `https` for secure connection (recommended in production) httpEndpoint: () => store.getters['api/url'], // You can use `wss` for secure connection (recommended in production) // Use `null` to disable subscriptions wsEndpoint: null, //'ws://localhost:4300', // LocalStorage token tokenName: AUTH_TOKEN, // Enable Automatic Query persisting with Apollo Engine persisting: false, // Use websockets for everything (no HTTP) // You need to pass a `wsEndpoint` for this to work websocketsOnly: false, // Is being rendered on the server? ssr: false, // Override default apollo link // note: don't override httpLink here, specify httpLink options in the // httpLinkOptions property of defaultOptions. defaultHttpLink: false, link: link, // Override default cache cache: cache, // Override the way the Authorization header is set // getAuth: () => ... // Additional ApolloClient options // apollo: { ... } // Client local data (see apollo-link-state) // clientState: { resolvers: { ... }, defaults: { ... } } queryDeduplication: true } let defaultApolloClient let fallbackApolloClient // Create apollo client export const createApolloProvider = (options = defaultOptions) => { const { apolloClient, wsClient } = createApolloClient({ id: 'initial', ...options }) apolloClient.wsClient = wsClient // Create vue apollo provider const apolloProvider = new VueApollo({ defaultClient: apolloClient, defaultOptions: { $query: { errorPolicy: 'all', fetchPolicy: 'cache-and-network' }, $subscription: { errorPolicy: 'all' } } }) return apolloProvider } export const clearCache = () => { defaultApolloClient.cache.reset() } export const defaultApolloProvider = createApolloProvider() defaultApolloClient = defaultApolloProvider.defaultClient export { defaultApolloClient } // This is the client we use that is not subject to the stop/restarts of the application export const fallbackApolloProvider = createApolloProvider({ ...defaultOptions, link: fallbackLink }) fallbackApolloClient = fallbackApolloProvider.defaultClient export { fallbackApolloClient } export async function apolloOnLogin(apolloClient) { if (apolloClient.wsClient) restartWebsockets(apolloClient.wsClient) await apolloClient.clearStore() } export async function apolloOnLogout(apolloClient) { if (apolloClient.wsClient) restartWebsockets(apolloClient.wsClient) await apolloClient.clearStore() } ================================================ FILE: src/workers/auth.worker.js ================================================ import { authorize, refreshTokens, authorizeTenant } from '@/auth/authorization.js' import jwt_decode from 'jwt-decode' const ports = [] const channelPorts = [] /* values in the tokens Array take the form: interface TenantTokens { tenantId: string authorizationToken: string refreshToken: string } */ const state = { idToken: null, authorizationToken: null, tenantId: null } const postToConnections = payload => { for (let i = 0; i < ports.length; ++i) { ports[i].postMessage(payload) } } const postToChannelPorts = payload => { for (let i = 0; i < ports.length; ++i) { channelPorts[i]?.postMessage(payload) } channelPorts.length = 0 } console.connect = payload => { // eslint-disable console.groupCollapsed('Auth worker trace', payload) console.log(payload) console.trace() console.groupEnd() // eslint-enable for (let i = 0; i < ports.length; ++i) { ports[i].postMessage({ type: 'console', payload: payload }) } } const refreshAuthorizationToken = async () => { const authorizationResponse = await refreshTokens( state.authorizationToken.access_token, state.authorizationToken.refresh_token ) setAuthorizationToken(authorizationResponse) } const handleSwitchTenant = async tenantId => { const authorizationResponse = await authorizeTenant( state.authorizationToken.access_token, tenantId ) setAuthorizationToken(authorizationResponse) postToConnections({ type: 'switch-tenant', payload: { token: state.authorizationToken, tenantId: tenantId } }) console.connect({ message: 'handleSwitchTenant', tokenExpiration: state.authorizationToken?.expires_at || 'No token', tenantId: tenantId, currentTime: Date.now() }) } let authorizationTimeout = null const setAuthorizationToken = token => { clearTimeout(authorizationTimeout) state.authorizationToken = token postToChannelPorts({ type: 'authorizationToken', payload: state.authorizationToken }) postToConnections({ type: 'authorizationToken', payload: state.authorizationToken }) try { const expiration = new Date(token.expires_at) const timeout = ((expiration - Date.now()) * 3) / 4 console.connect({ message: 'setAuthorizationToken', tokenExpiration: token.expires_at || 'No token', currentTime: new Date().toString() }) authorizationTimeout = setTimeout(() => { refreshAuthorizationToken() }, timeout || 15000) } catch (e) { clearTimeout(authorizationTimeout) postToConnections({ type: 'error', payload: e }) } } const handleLogin = async () => { console.connect({ message: 'handleLogin', tokenExpiration: state.idToken?.expiresAt ? state.idToken.expiresAt * 1000 : 'No Token', currentTime: new Date().toString() }) postToChannelPorts({ payload: state.idToken }) } const handleLogout = () => { state.idToken = null state.authorizationToken = null postToConnections({ type: 'logout' }) console.connect({ message: 'handleLogout', tenantId: state.tenantId, currentTime: new Date().toString() }) } const handleClear = () => { state.idToken = null state.authorizationToken = null console.connect({ message: 'handleClear', tenantId: state.tenantId || 'No tenant', currentTime: new Date().toString() }) } let authorizing = false const handleAuthorize = async idToken => { authorizing = true if ( !state.authorizationToken || (state.authorizationToken && new Date(state.authorizationToken.expires_at) <= Date.now()) ) { const authorizationResponse = await authorize(idToken) if (authorizationResponse && authorizationResponse.access_token) { setAuthorizationToken(authorizationResponse) } else { postToConnections({ type: 'accessDenied', payload: state.idToken }) } } postToChannelPorts({ payload: state.authorizationToken }) authorizing = false } const connect = c => { const port = c.ports[0] ports.push(port) port.onmessage = async e => { try { const type = e.data?.type const channelPort = e.ports[0] const payload = e.data?.payload if (type == 'login') { channelPorts.push(channelPort) await handleLogin() } if (type == 'idToken') { state.idToken = payload } if (type == 'logout') { handleLogout() } if (type == 'authorize') { channelPorts.push(channelPort) if (!authorizing) { await handleAuthorize(payload) } } if (type == 'switch-tenant') { channelPorts.push(channelPort) await handleSwitchTenant(payload) } if (type == 'clear') { handleClear() } } catch (e) { postToConnections({ type: 'error', payload: e }) } } port.start() // Required when using addEventListener. Otherwise called implicitly by onmessage setter. } self.onconnect = connect self.onerror = e => { // eslint-disable-next-line no-console console.log('in error handler', e) console.connect({ message: 'error', error: e }) } ================================================ FILE: src/workers/cache.worker.js ================================================ ================================================ FILE: src/workers/schematic.js ================================================ import { Tree } from '@/utils/Tree' import * as d3_dag from 'd3-dag' global.process = process // eslint-disable-next-line no-global-assign // window = undefined // Add our custom curve to d3 base // and then merges the libraries together into one // access point const d3 = Object.assign({}, d3_dag) let layout, dag export function GenerateTree(data) { let tree = new Tree(Object.assign({}, data)) return tree } export function Stratify(data) { dag = d3.dagStratify()(data) dag.each(node => (node.heightRatio = 1)) return dag } export function GenerateLayout(data) { const tree = data.tree const height = data.height const layoutPlan = data.layoutPlan const width = data.width let canvasAdjustment = { h: null, w: null } let links, descendants // arquint - the layout algorithm of the graph - allows for node heights // size - array of width/height // decross - the amount of crossing edges that will be present in the // layout; in order of speed (slowest to fastest): // - decrossOpt (don't use this, it's v v slow for large graphs) // - decrossTwoLayer().order(d3.twolayerOpt()) // - decrossTwoLayer // columnWidth - function should return a number, ex: () => 1 // columnSeparation - space between columns; function should return a number, ex: () => 1 // interLayerSeparation - vertical distance between layers // layering - node layer assignment (slowest to fastest): // - layeringSimplex // - layeringCoffmanGraham // - layeringTopological // - layeringLongestPath().topDown(false) // - layeringLongestPath // columnAssignment - node column assignment: // Simple Left - columnSimpleLeft // Simple Center - columnSimpleCenter // Adjacent Left - columnAdjacent // Adjacent Center - columnAdjacent.center(true) // Complex Left - columnComplex // Complex Center - columnComplex.center(true) // column2Coord(d3.column2CoordRect()) - converts the column assignment of each node to actual x0 and x1 coordinates // coord - coordinate assignment (slowest to fastest): // Vertical - coordVert // Minimum Curves - coordMinCurve // Greedy - coordGreedy // Center - coordCenter // if (tree.width <= 3 && tree.height <= 3) { canvasAdjustment.h = height * 0.35 canvasAdjustment.w = width * 0.35 } else { canvasAdjustment.h = height * (1 / tree.height) canvasAdjustment.w = width * (1 / tree.width) } if (layoutPlan == 'sugiyama' && !layout) { layout = d3 .sugiyama() .size([width - canvasAdjustment.w, height - canvasAdjustment.h]) .layering(d3.layeringLongestPath().topDown(false)) // .decross(d3.decrossTwoLayer().order(d3.twolayerOpt())) // Disabling this due to runaway worker memory usage for large graphs // .coord(d3.coordMinCurve()) // Disabling this due to some edge cases with quadratic positive definites .separation((a, b) => { return (a.data !== undefined) + (b.data !== undefined) }) } layout(dag) descendants = dag.descendants() links = dag.links() return { canvasAdjustment, descendants, links } } ================================================ FILE: src/workers/timeline.js ================================================ export function GenerateRows(items) { const grid = [] const start = Date.now() const end = Date.now() const rowMap = {} itemLoop: for (let i = 0; i < items.length; ++i) { const item = items[i] // If the item hasn't started yet, we distribute // it to the row with the least items already if (!item.start_time) { const lengths = grid.map(row => row.length) let row = lengths.indexOf(Math.min(...lengths)) rowMap[item.id] = row if (!grid[row]) { grid.push([[start, end]]) } else { grid[row].push([start, end]) } continue itemLoop } const start_ = item.start_time ? new Date(item.start_time).getTime() : null const end_ = item.end_time ? new Date(item.end_time).getTime() : Date.now() for (let row = 0; row <= grid.length; ++row) { // If the current row doesn't exist, create it, put this item on it, // and move to the next item if (!grid[row]) { rowMap[item.id] = row grid.push([[start_, end_]]) continue itemLoop } if (!start_) { const lengths = grid.map(row => row.length) let row = lengths.indexOf(Math.min(...lengths)) rowMap[item.id] = row grid[row].push([start_, end_]) continue itemLoop } // Otherwise check the start and end times against each // start[0] and end[1] time in the row let intersects = grid[row].some( slot => end_ <= slot[0] - 2000 || start_ <= slot[1] + 2000 ) // let intersects = grid[row].some( // slot => end <= slot[0] || start <= slot[1] // ) if (!intersects) { rowMap[item.id] = row grid[row].push([start_, end_]) continue itemLoop } } } return { rowMap, rows: grid.length } } ================================================ FILE: src/workers/util/worker-interface.js ================================================ // Returns a promise that awaits a message from a passed worker on a provisioned channel export const promiseChannel = (worker, signalType, payload) => new Promise((res, rej) => { const channel = new MessageChannel() channel.port1.onmessage = data => { channel.port1.close() if (data.type == 'error') { rej(data) } else { res(data.data.payload) } } worker.port.postMessage({ type: signalType, payload: payload }, [ channel.port2 ]) }) ================================================ FILE: start_server.sh ================================================ #!/usr/bin/env bash # Set default prefect_ui_settings if # env vars not present if [[ -z ${PREFECT_SERVER__APOLLO_URL} ]] then echo "Missing the PREFECT_SERVER__APOLLO_URL environment variable. Using default" PREFECT_SERVER__APOLLO_URL="http://localhost:4200/graphql" fi if [[ -z ${PREFECT_SERVER__BASE_URL} ]] then echo "Missing the PREFECT_SERVER__BASE_URL environment variable. Using default" PREFECT_SERVER__BASE_URL="/" fi sed -i "s,PREFECT_SERVER__APOLLO_URL,$PREFECT_SERVER__APOLLO_URL," /var/www/settings.json sed -i "s,PREFECT_SERVER__BASE_URL,$PREFECT_SERVER__BASE_URL," /var/www/settings.json echo "👾👾👾 UI running at localhost:8080 👾👾👾" nginx -g "daemon off;" ================================================ FILE: stylelint.config.js ================================================ module.exports = { root: true, extends: ['stylelint-config-recommended', 'stylelint-config-sass-guidelines'], plugins: ['stylelint-scss', 'stylelint-order', 'stylelint-a11y'], rules: { 'max-nesting-depth': [ 3, { ignoreAtRules: ['each', 'media', 'supports', 'include'] } ], 'function-parentheses-space-inside': 'never-single-line', 'a11y/no-outline-none': true, 'a11y/selector-pseudo-class-focus': true, 'a11y/content-property-no-static-value': [true, { severity: 'warning' }], 'a11y/font-size-is-readable': [true, { severity: 'warning' }], 'a11y/line-height-is-vertical-rhythmed': [true, { severity: 'warning' }], 'a11y/no-display-none': [true, { severity: 'warning' }], 'a11y/no-spread-text': [true, { severity: 'warning' }], 'a11y/no-obsolete-attribute': [true, { severity: 'warning' }], 'a11y/no-obsolete-element': [true, { severity: 'warning' }], 'a11y/no-text-align-justify': [true, { severity: 'warning' }] } } ================================================ FILE: tests/.eslintrc.js ================================================ module.exports = { env: { jest: true } } ================================================ FILE: tests/__mocks__/@auth0/auth0-js.js ================================================ export const mockAuthorize = jest.fn() export const mockLogout = jest.fn() export const mockParseHashResult = { accessToken: '654334335242321', idToken: '1432g435ewgh55y' } export const mockParseHash = jest .fn() .mockImplementationOnce(callback => { callback(null, mockParseHashResult) }) .mockImplementationOnce(callback => { callback(new Error('test error')) }) class WebAuth { constructor() { this.authorize = mockAuthorize this.logout = mockLogout this.parseHash = mockParseHash } } const mock = { WebAuth } export default mock ================================================ FILE: tests/__mocks__/@auth0/auth0-spa-js.js ================================================ export const handleRedirectCallback = jest.fn() export const isAuthenticated = jest.fn().mockReturnValue(Math.random() >= 0.5) export const getUser = jest.fn().mockReturnValue({}) export const getIdTokenClaims = jest.fn().mockReturnValue({ __raw: 'eyj' }) export const getTokenSilently = jest.fn() export const loginWithRedirect = jest.fn() export const logout = jest.fn() export class Auth0Client { constructor() { this.__exists = true this.handleRedirectCallback = handleRedirectCallback this.isAuthenticated = isAuthenticated this.getUser = getUser this.getIdTokenClaims = getIdTokenClaims this.loginWithRedirect = loginWithRedirect this.logout = logout this.getTokenSilently = getTokenSilently } } export default function createAuth0Client() { return new Promise(resolve => resolve(new Auth0Client())) } ================================================ FILE: tests/__mocks__/@okta/okta-auth-js.js ================================================ const raw_jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiYXdkYXdkYWRhLTQ5NDItNDhhNS04YzY2LWFkYXdkYWRhZCIsInRlbmFudF9pZCI6ImF3ZGF3ZGFkLWQ1NzAtNGYwYy05MTFkLWRjYWFiNWNlYzNkMCIsInJvbGUiOiJURU5BTlRfQURNSU4iLCJpYXQiOjE1Njg4NDAyODQsImV4cCI6MTkzMzk1NDA5OSwianRpIjoiMThiNDRhMTgtNTU2Yy00M2YzLTkxOWEtZDAwOWIwNDIzOTA3IiwiaXNzIjoiUHJlZmVjdCBDbG91ZCIsImF1ZCI6IlByZWZlY3QgQ2xvdWQgQVBJIC0gREVWIn0.iHL0fkdNxMnbRXNJuDwYlvdsaylh1gb-MaRJtuyaZLg' export const idToken = { authorizeUrl: 'https://some.authorization.url/oauth2/authorize', claims: { sub: 'abc123', name: 'Marvin', email: 'marvin@theship.com', ver: 1, iss: 'https://some.issuer.url/oauth2', exp: 9999999999, iat: 9999999999, nonce: 'abc123' }, clientId: '789xyz', expiresAt: 9999999999, idToken: raw_jwt, issuer: 'https://some.issuer.url/oauth2', scopes: ['openid', 'profile', 'email'], value: raw_jwt } export const expiredIdToken = { authorizeUrl: 'https://some.authorization.url/oauth2/authorize', claims: { sub: 'abc123', name: 'Marvin', email: 'marvin@theship.com', ver: 1, iss: 'https://some.issuer.url/oauth2', exp: 1305389672, iat: 1305389671, nonce: 'abc123' }, clientId: '789xyz', expiresAt: 1305389672, idToken: raw_jwt, issuer: 'https://some.issuer.url/oauth2', scopes: ['openid', 'profile', 'email'], value: raw_jwt } export const accessToken = { authorizeUrl: 'https://universal.prefect.io/oauth2/aus9ej78aeaYy8Lcf1d6/v1/authorize', claims: { aud: 'prefect', cid: 'abc123', exp: 9999999999, iat: 9999999999, iss: 'https://some.issuer.url/oauth2', jti: '456xyz', scp: (3)[('email', 'openid', 'profile')], sub: 'nicholas@prefect.io', uid: '00u9dbxkpyijFlaHF1d6', ver: 1 }, expiresAt: 9999999999, scopes: ['openid', 'profile', 'email'], tokenType: 'Bearer', userinfoUrl: 'https://some.issuer.url/userinfo', value: raw_jwt } export const MOCK_TOKEN_PAYLOAD = { tokens: { idToken: idToken, accessToken: accessToken } } export const parseFromUrl = jest.fn().mockReturnValue(MOCK_TOKEN_PAYLOAD) export const getTokens = jest.fn().mockReturnValue(MOCK_TOKEN_PAYLOAD.tokens) export const getWithRedirect = jest.fn().mockReturnValue(MOCK_TOKEN_PAYLOAD) export const getTokenByKey = jest.fn().mockReturnValue(false) export const isAuthenticated = jest.fn().mockReturnValue(false) export const isLoginRedirect = jest.fn().mockReturnValue(false) export const getUser = jest.fn().mockReturnValue({}) export const setTokens = jest.fn() export const start = jest.fn() export const clear = jest.fn() export const signOut = jest.fn() export const on = jest.fn() export const isPKCESupported = jest.fn().mockReturnValue(true) export const hasExpired = jest.fn( token => token.expiresAt * 1000 < new Date().getTime() ) export const renew = jest.fn().mockReturnValue(idToken) export class OktaAuth { static features = { isPKCESupported: isPKCESupported } constructor() { this.__exists = true this.token = { getWithRedirect: getWithRedirect, parseFromUrl: parseFromUrl } this.tokenManager = { hasExpired: hasExpired, getTokens: getTokens, get: getTokenByKey, renew: renew, setTokens: setTokens, on: on, clear: clear } this.isLoginRedirect = isLoginRedirect this.isAuthenticated = isAuthenticated this.getUser = getUser this.signOut = signOut this.start = start } } export default OktaAuth ================================================ FILE: tests/jestSetup.js ================================================ import 'babel-polyfill' ================================================ FILE: tests/unit/auth/authentication-construction.spec.js ================================================ /* This tests only the constructor of the OktaAuth client; keeping this in a separate file from the rest of the authentication tests allows us to work around module import issues. See https://github.com/facebook/jest/issues/2582 for more details about the other issues and see @/tests/unit/auth/authentication.spec for the rest of the authentication tests */ jest.mock('@okta/okta-auth-js', () => { const OktaAuth = jest.fn().mockImplementation(() => { return { start: jest.fn() } }) OktaAuth.features = { isPKCESupported: jest.fn() } return { OktaAuth: OktaAuth } }) import { OktaAuth } from '@okta/okta-auth-js' describe('authentication', () => { it('initializes the auth client', async () => { require('@/auth/authentication.js') expect(OktaAuth).toHaveBeenCalledTimes(1) expect(OktaAuth.features.isPKCESupported).toHaveBeenCalledTimes(1) }) }) ================================================ FILE: tests/unit/auth/authentication.spec.js ================================================ jest.mock('@okta/okta-auth-js') import { isLoginRedirect, parseFromUrl, getTokens, getWithRedirect, setTokens, MOCK_TOKEN_PAYLOAD, expiredIdToken, renew } from '@okta/okta-auth-js' describe('the authentication module', () => { it('exports the auth client', async () => { const mod = require('@/auth/authentication.js') expect(mod.authClient).toBeDefined() }) it('exports an authenticate method', async () => { const mod = require('@/auth/authentication.js') expect(mod.authenticate).toBeDefined() }) describe('the authenticate method', () => { const clearMocks = () => { isLoginRedirect.mockClear() parseFromUrl.mockClear() setTokens.mockClear() getTokens.mockClear() renew.mockClear() getWithRedirect.mockClear() sessionStorage.setItem.mockClear() sessionStorage.getItem.mockClear() sessionStorage.removeItem.mockClear() } let mod beforeEach(() => { mod = require('@/auth/authentication.js') }) afterEach(clearMocks) it('calls the isLoginRedirect method', async () => { await mod.authenticate() expect(isLoginRedirect).toHaveBeenCalledTimes(1) }) it('checks session storage for a redirect route', async () => { await mod.authenticate() expect(sessionStorage.getItem).toHaveBeenCalledWith('redirectRoute') }) describe('(login redirect)', () => { let mod beforeEach(() => { mod = require('@/auth/authentication.js') isLoginRedirect.mockReturnValueOnce(true) }) afterEach(clearMocks) it('attempts to get tokens from the URL on login redirect', async () => { await mod.authenticate() expect(parseFromUrl).toHaveBeenCalledTimes(1) }) it('calls the set tokens method when parsing tokens from the url', async () => { const tokens = MOCK_TOKEN_PAYLOAD.tokens await mod.authenticate() // The parseFromUrl method is mocked to return the MOCK_TOKEN_PAYLOAD by default expect(setTokens).toHaveBeenCalledWith(tokens) }) it('pushes the redirect route to browser history', async () => { // This is necessary for us to get the args from history.replaceState jest.spyOn(window.history, 'replaceState') sessionStorage.getItem.mockReturnValueOnce('/foo') await mod.authenticate() // The parseFromUrl method is mocked to return the MOCK_TOKEN_PAYLOAD by default expect(history.replaceState).toHaveBeenCalledWith(null, null, '/foo') }) it('throws error if we fail to get tokens', async () => { parseFromUrl.mockImplementation(() => { throw new Error('access denied') }) const authenticate = mod.authenticate() await expect(authenticate).rejects.toThrow('access denied') }) }) describe('(not login redirect)', () => { let mod beforeEach(() => { mod = require('@/auth/authentication.js') isLoginRedirect.mockReturnValueOnce(false) }) afterEach(clearMocks) it('does not attempt to get tokens from the URL when not login redirect', async () => { await mod.authenticate() expect(parseFromUrl).not.toHaveBeenCalled() }) it('sets the redirect route in session storage when unset', async () => { sessionStorage.getItem.mockReturnValueOnce(undefined) await mod.authenticate() expect(sessionStorage.setItem).toHaveBeenCalledWith( 'redirectRoute', window.location.pathname + window.location.search ) }) it('does not set the redirect route if already set', async () => { sessionStorage.getItem.mockReturnValueOnce('/foo-bar') await mod.authenticate() expect(sessionStorage.setItem).not.toHaveBeenCalled() }) it('attempts to get tokens from the token manager', async () => { await mod.authenticate() expect(getTokens).toHaveBeenCalledTimes(1) }) it('gets tokens with redirect if none are returned from the token manager', async () => { getTokens.mockReturnValueOnce(null) await mod.authenticate() expect(getWithRedirect).toHaveBeenCalledTimes(1) }) it('attempts to renew expired id tokens', async () => { const tokens = { accessToken: 'bar', idToken: expiredIdToken } getTokens.mockReturnValueOnce(tokens) await mod.authenticate() expect(renew).toHaveBeenCalledTimes(1) }) it('calls get with redirect if token renewal throws an error', async () => { const tokens = { accessToken: 'bar', idToken: expiredIdToken } getTokens.mockReturnValueOnce(tokens) renew.mockImplementation(() => { throw new Error('I fail on purpose') }) await mod.authenticate() expect(getWithRedirect).toHaveBeenCalledTimes(1) }) }) }) }) ================================================ FILE: tests/unit/auth/authorization.spec.js ================================================ // const query = jest.fn() // const mutate = jest.fn() jest.mock('@/apollo.js') import { mutate } from '@/apollo.js' jest.mock('@/graphql/log-in.gql', () => 'log in string') jest.mock('@/graphql/refresh-token.gql', () => 'refresh token string') jest.mock('@/graphql/Tenant/tenant-token.gql', () => 'switch tenant string') const headers = { 'X-PREFECT-UI': true, 'X-Backend': 'cloud' } describe('the authorization module', () => { it('exports the authorize method', () => { const mod = require('@/auth/authorization.js') expect(mod.authorize).toBeDefined() }) it('exports the refreshTokens method', () => { const mod = require('@/auth/authorization.js') expect(mod.refreshTokens).toBeDefined() }) it('exports the authorizeTenant method', () => { const mod = require('@/auth/authorization.js') expect(mod.authorizeTenant).toBeDefined() }) describe('the authorize method', () => { const clearMocks = () => { mutate.mockClear() } let mod beforeEach(() => { mod = require('@/auth/authorization.js') }) afterEach(clearMocks) it('throws an error when no id token is passed', async () => { await expect(mod.authorize()).rejects.toThrow( 'No ID token passed to authorize' ) }) it('calls the client mutate method', async () => { const idToken = 'foo' await mod.authorize(idToken) expect(mutate).toHaveBeenCalledWith({ mutation: require('@/graphql/log-in.gql'), variables: { input: { id_token: idToken } }, context: { headers: headers }, errorPolicy: 'all', fetchPolicy: 'no-cache' }) expect(mutate).toHaveBeenCalledTimes(1) }) it('returns data from the log in mutation', async () => { const mockReturn = { data: { log_in: { access_token: 'bar', refresh_token: 'batz', expires_at: 99999 } } } mutate.mockReturnValueOnce(mockReturn) const response = await mod.authorize('foo') expect(response).toStrictEqual(mockReturn.data.log_in) }) }) describe('the refreshTokens method', () => { const clearMocks = () => { mutate.mockClear() } let mod beforeEach(() => { mod = require('@/auth/authorization.js') }) afterEach(clearMocks) it('throws an error when no access token or refresh token is passed', async () => { const error = 'No access or refresh token passed to refreshTokens' await expect(mod.refreshTokens()).rejects.toThrow(error) await expect(mod.refreshTokens('foo', undefined)).rejects.toThrow(error) await expect(mod.refreshTokens(undefined, 'bar')).rejects.toThrow(error) }) it('calls the client mutate method', async () => { const accessToken = 'foo' const refreshToken = 'bar' await mod.refreshTokens(accessToken, refreshToken) expect(mutate).toHaveBeenCalledWith({ mutation: require('@/graphql/refresh-token.gql'), variables: { input: { access_token: accessToken } }, context: { headers: { ...headers, authorization: `Bearer ${refreshToken}` } }, fetchPolicy: 'no-cache' }) expect(mutate).toHaveBeenCalledTimes(1) }) it('returns data from the refresh token mutation', async () => { const mockReturn = { data: { refresh_token: { access_token: 'bar', refresh_token: 'batz', expires_at: 99999 } } } mutate.mockReturnValueOnce(mockReturn) const response = await mod.refreshTokens('foo', 'bar') expect(response).toStrictEqual(mockReturn.data.refresh_token) }) }) describe('the authorizeTenant method', () => { const clearMocks = () => { mutate.mockClear() } let mod beforeEach(() => { mod = require('@/auth/authorization.js') }) afterEach(clearMocks) it('throws an error when no access token or refresh token is passed', async () => { const error = 'No access token or no tenant id passed to authorizeTenant' await expect(mod.authorizeTenant()).rejects.toThrow(error) await expect(mod.authorizeTenant('foo', undefined)).rejects.toThrow(error) await expect(mod.authorizeTenant(undefined, 'bar')).rejects.toThrow(error) }) it('calls the client mutate method', async () => { const accessToken = 'foo' const tenantId = 'bar' await mod.authorizeTenant(accessToken, tenantId) expect(mutate).toHaveBeenCalledWith({ mutation: require('@/graphql/Tenant/tenant-token.gql'), variables: { tenantId: tenantId }, context: { headers: { ...headers, authorization: `Bearer ${accessToken}` } }, fetchPolicy: 'no-cache' }) expect(mutate).toHaveBeenCalledTimes(1) }) it('returns data from the switch tenant mutation', async () => { const mockReturn = { data: { switch_tenant: { access_token: 'bar', refresh_token: 'batz', expires_at: 99999 } } } mutate.mockReturnValueOnce(mockReturn) const response = await mod.authorizeTenant('foo', 'bar') expect(response).toStrictEqual(mockReturn.data.switch_tenant) }) }) }) ================================================ FILE: tests/unit/auth/index.spec.js ================================================ jest.mock('@/auth/authentication.js', () => ({ authenticate: jest.fn(), authClient: { tokenManager: { on: jest.fn() } }, signOut: jest.fn() })) jest.mock('@/main', () => { return { TokenWorker: { postMessage: jest.fn() } } }) jest.mock('@/auth/authorization.js', () => ({ authorize: jest.fn(), authorizeTenant: jest.fn(), refreshTokens: jest.fn() })) jest.mock('@/workers/util/worker-interface.js', () => ({ promiseChannel: jest.fn() })) const start = jest.fn() const postMessage = jest.fn() const onmessage = jest.fn() class SharedWorker { defaultOptions = { type: 'classic', credentials: 'omit', name: null } constructor(url, name, options = {}) { this.url = url this.name = name this.options = { ...this.defaultOptions, ...options } } get port() { return { start: start, postMessage: postMessage, onmessage: onmessage } } } describe('the auth module', () => { let mod const clearMocks = () => { mod = undefined } beforeEach(() => { jest.resetModules() // global.SharedWorker = SharedWorker }) afterEach(clearMocks) it('exports a login method', async () => { mod = require('@/auth/index.js') expect(mod.login).toBeDefined() }) it('exports a switchTenant method', async () => { mod = require('@/auth/index.js') expect(mod.switchTenant).toBeDefined() }) it('exports a logout method', async () => { mod = require('@/auth/index.js') expect(mod.logout).toBeDefined() }) it('exports an unsetTokens method', async () => { mod = require('@/auth/index.js') expect(mod.unsetTokens).toBeDefined() }) it('exports a commitTokens method', async () => { mod = require('@/auth/index.js') expect(mod.commitTokens).toBeDefined() }) describe('browser has shared worker support', () => { let mod, promiseChannel, authenticate, TokenWorker const clearMocks = () => { global.SharedWorker = SharedWorker jest.resetModules() promiseChannel?.mockClear() authenticate?.mockClear() promiseChannel = require('@/workers/util/worker-interface.js') .promiseChannel authenticate = require('@/auth/authentication.js').authenticate mod = require('@/auth/index.js') TokenWorker = mod.TokenWorker } beforeEach(clearMocks) it('exports a shared token worker', () => { expect(TokenWorker).toBeDefined() }) describe('the login method', () => { beforeEach(clearMocks) it('calls the promiseChannel method when a token worker exists', async () => { await mod.login() expect(promiseChannel).toHaveBeenCalledWith(TokenWorker, 'login') }) describe('expired id token', () => { beforeEach(clearMocks) it('calls the authenticate method', async () => { const expiration = Date.now() / 1000 - 1000 const idToken = { value: 'foo.bar', expiresAt: expiration } promiseChannel.mockReturnValueOnce(idToken) await mod.login() expect(expiration).toBeLessThan(Date.now()) expect(authenticate).toHaveBeenCalledTimes(1) }) }) describe('no id token', () => { beforeEach(clearMocks) it('calls the authenticate method', async () => { const idToken = undefined promiseChannel.mockReturnValueOnce(idToken) await mod.login() expect(authenticate).toHaveBeenCalledTimes(1) }) }) it('posts the id token payload to the token worker, when none exists', async () => { const idToken = { value: 'foo.bar' } promiseChannel.mockReturnValueOnce(undefined) authenticate.mockReturnValueOnce({ idToken: idToken }) await mod.login() expect(authenticate).toHaveBeenCalledTimes(1) expect(postMessage).toHaveBeenCalledWith({ type: 'idToken', payload: idToken }) expect(promiseChannel).toHaveBeenCalledWith( TokenWorker, 'authorize', idToken.value ) }) }) }) describe('browser does not have shared worker support', () => { let mod, promiseChannel, authenticate, authorize, TokenWorker const clearMocks = () => { global.SharedWorker = undefined jest.resetModules() promiseChannel?.mockClear() authenticate?.mockClear() promiseChannel = require('@/workers/util/worker-interface.js') .promiseChannel authenticate = require('@/auth/authentication.js').authenticate authorize = require('@/auth/authorization.js').authorize mod = require('@/auth/index.js') TokenWorker = mod.TokenWorker } beforeEach(clearMocks) it('does not export a shared token worker', () => { expect(TokenWorker).toBeUndefined() }) it('calls the authenticate method', async () => { const idToken = { value: 'foo.bar' } authenticate.mockReturnValueOnce({ idToken: idToken }) authorize.mockReturnValueOnce({ expires_at: Date.now() + 5000, access_token: null, refresh_token: null }) await mod.login() expect(TokenWorker).toBeUndefined() expect(authenticate).toHaveBeenCalledWith() }) }) describe('login uses fallback', () => { let mod, promiseChannel, authenticate, authorize, TokenWorker const clearMocks = () => { global.SharedWorker = SharedWorker jest.resetModules() promiseChannel?.mockClear() authenticate?.mockClear() promiseChannel = require('@/workers/util/worker-interface.js') .promiseChannel authenticate = require('@/auth/authentication.js').authenticate authorize = require('@/auth/authorization.js').authorize mod = require('@/auth/index.js') TokenWorker = mod.TokenWorker } beforeEach(clearMocks) it('does not use the token worker if fallback is defined', async () => { const idToken = { value: 'foo.bar' } authenticate.mockReturnValueOnce({ idToken: idToken }) authorize.mockReturnValueOnce({ expires_at: Date.now() + 5000, access_token: null, refresh_token: null }) await mod.login(true) expect(TokenWorker).toBeDefined() expect(promiseChannel).not.toHaveBeenCalled() expect(authenticate).toHaveBeenCalledWith() }) }) }) ================================================ FILE: tests/unit/main.spec.js ================================================ jest.mock('@/app.js', () => ({ CreatePrefectUI: jest.fn() })) jest.mock('jwt-decode') jest.mock('@/auth/index.js', () => ({ login: jest.fn(), switchTenant: jest.fn(), commitTokens: jest.fn() })) jest.mock('@/store') jest.mock('@/plugins/logrocket.js') jest.mock('logrocket') import { login } from '@/auth/index.js' const url = 'https://cloud.prefect.io' Object.defineProperty(window, 'location', { value: { pathname: url } }) import { CreatePrefectUI } from '@/app.js' describe('Main', () => { it('says hello', () => { expect('hello').toEqual('hello') }) it('exports the setStartupTenant method', () => { const mod = require('@/main.js') expect(mod.setStartupTenant).toBeDefined() }) it('exports the start method', () => { const mod = require('@/main.js') expect(mod.start).toBeDefined() }) describe('the start method', () => { const clearMocks = () => { login.mockClear() } let mod beforeEach(() => { mod = require('@/main.js') window.location.pathname = null localStorage.clear() // This is required before each test after import // because the script calls the start method // on load CreatePrefectUI.mockClear() }) afterEach(clearMocks) it('immediately creates the application if the window location is the logout route', async () => { window.location.pathname = 'https://cloud.prefect.io/logout' await mod.start() expect(CreatePrefectUI).toHaveBeenCalledTimes(1) }) it('calls the fallback login method if login throws an error', async () => { process.env.VUE_APP_BACKEND = 'CLOUD' login.mockRejectedValueOnce() await mod.start() expect(login).toHaveBeenCalledTimes(2) expect(login).toHaveBeenNthCalledWith(1) expect(login).toHaveBeenNthCalledWith(2, true) }) it('calls the fallback login method if login takes more than 10 seconds', async () => { process.env.VUE_APP_BACKEND = 'CLOUD' login.mockImplementationOnce( () => new Promise(res => setTimeout(() => res('i was rejected'), 50000)) ) const startPromise = mod.start() jest.runAllTimers() await startPromise expect(login).toHaveBeenCalledTimes(2) expect(login).toHaveBeenNthCalledWith(1) expect(login).toHaveBeenNthCalledWith(2, true) }) it('calls the fallback login method if local storage item is set', async () => { process.env.VUE_APP_BACKEND = 'CLOUD' localStorage.setItem('prefect_fallback_auth', Date.now()) const startPromise = mod.start() jest.runAllTimers() await startPromise expect(login).toHaveBeenCalledTimes(1) expect(login).toHaveBeenNthCalledWith(1, true) }) }) }) ================================================ FILE: tests/unit/middleware/flowNavGuard.spec.js ================================================ jest.mock('@/main', () => { return { TokenWorker: { postMessage: jest.fn() } } }) import flowNavGuard from '@/middleware/flowNavGuard' import { createLocalVue } from '@vue/test-utils' import Vuex from 'vuex' import store from '@/store' const flows = [ { id: 'flow_id_1', flow_group_id: 'flow_group_id_1', version: 1 } ] //simple mock for gql api query jest.mock('@/vue-apollo', () => { return { fallbackApolloClient: { query: arg => { if (arg.query == 'flow') { if (arg.variables?.id == 'flow_id_2') { return { data: { flow_by_pk: { id: 'flow_id_2', flow_group_id: 'flow_group_id_2', version: 3 } } } } else { return { data: 'test-error' } } } } } } }) jest.mock('@/graphql/Middleware/flow-group.gql', () => 'flow group') jest.mock('@/graphql/Middleware/flow.gql', () => 'flow') jest.mock('@/graphql/Nav/flows.gql', () => 'flow') const localVue = createLocalVue() localVue.use(Vuex) describe('flowNavGuard', () => { afterEach(() => { store.commit('data/unsetFlows') }) test('if there is a flow group that matches the passed id, it returns next', async () => { store.commit('data/setFlows', flows) const next = jest.fn() await flowNavGuard( { name: 'flow', params: { id: 'flow_group_id_1' } }, {}, next ) expect(next).toBeCalledWith() }) test('if there is no flow group that matches the passed id, it checks the flow id and returns next if it matches', async () => { const next = jest.fn() await flowNavGuard({ name: 'flow', params: { id: 'flow_id_2' } }, {}, next) expect(next).toBeCalledWith({ name: 'flow', params: { id: 'flow_group_id_2' }, query: { version: 3 } }) }) test('if there is no flow or flow group that matches the passed id, it forwards to a 404', async () => { const next = jest.fn() await flowNavGuard( { name: 'flow', params: { id: 'flow_group_id_3' } }, {}, next ) expect(next).toBeCalledWith({ name: 'not-found' }) }) }) ================================================ FILE: tests/unit/store/agent.spec.js ================================================ import agent from '@/store/agent' import { createLocalVue } from '@vue/test-utils' import Vuex from 'vuex' const localVue = createLocalVue() localVue.use(Vuex) describe('Agent Vuex Module', () => { const initialAgentState = () => { return { thresholds: { // Time before an agent becomes stale stale: 5, // minutes since last query // Time before an agent becomes unhealthy unhealthy: 720 // minutes since last query }, agents: null, sortedAgents: null } } describe('initial state', () => { it('should have a stale threshold and unhealthy threshold', () => { const state = agent.state expect(state.thresholds.stale).toBe(5) expect(state.thresholds.unhealthy).toBe(720) }) it('should have no agents', () => { const state = agent.state expect(state.agents).toBe(null) }) it('should have no sorted agents', () => { const state = agent.state expect(state.sortedAgents).toBe(null) }) }) describe('getters', () => { let store = new Vuex.Store({ state: initialAgentState(), getters: agent.getters }) it('should return the stale threshold when the staleThreshold getter is called', () => { expect(store.getters.staleThreshold).toBe(store.state.thresholds.stale) }) it('should return the unhealthy threshold when the unhealthyThreshold getter is called', () => { expect(store.getters.unhealthyThreshold).toBe( store.state.thresholds.unhealthy ) }) it('should return agents when the agents getters is called', () => { expect(store.getters.agents).toBe(null) }) it('should return sorted agents when the sorted agents getters is called', () => { expect(store.getters.sortedAgents).toBe(null) }) }) describe('mutations', () => { let store = new Vuex.Store({ state: initialAgentState(), getters: agent.getters, mutations: agent.mutations }) it('should add new agents, and update status, when the setSortedAgents mutation is called', () => { expect(store.getters.agents).toBe(null) const recentDate = new Date().toISOString() store.commit('setSortedAgents', [ { id: '12345', last_queried: recentDate }, { id: '67890', last_queried: '2021-04-20T23:36:24.278841+00:00' }, { id: '09876', last_queried: NaN } ]) expect(store.getters.agents[0].status).toEqual('healthy') expect(store.getters.agents[1].status).toEqual('unhealthy') expect(store.getters.agents[2].status).toEqual('unhealthy') }) }) }) ================================================ FILE: tests/unit/store/alert.spec.js ================================================ jest.mock('@/main', () => { return { TokenWorker: { postMessage: jest.fn() } } }) import uniqueId from 'lodash/uniqueId' jest.mock('lodash/uniqueId') import Vuex from 'vuex' import alert from '@/store/alert' import store from '@/store' jest.useFakeTimers() const initialState = { ...alert.state } const getInitialState = () => { return { ...initialState } } describe('Alert Vuex Module', () => { describe('Global Alert', () => { it('should initially have a show key that is false and other keys should be falsey', () => { expect(store.getters['alert/getAlert']).toStrictEqual({ alertShow: false, alertMessage: '', alertType: null, alertLink: null, linkText: '', alertCopy: '' }) }) describe('mutations', () => { it('updates the state when setAl is called', () => { expect(store.getters['alert/getAlert']).toStrictEqual({ alertShow: false, alertMessage: '', alertType: null, alertLink: null, linkText: '', alertCopy: '' }) store.commit('alert/setAl', { alertShow: true, alertMessage: 'Testing testing 123', alertType: 'error', alertLink: null, linkText: '', alertCopy: '' }) expect(store.getters['alert/getAlert']).toStrictEqual({ alertShow: true, alertMessage: 'Testing testing 123', alertType: 'error', alertLink: null, linkText: '', alertCopy: '' }) }) it('empties the state when setEmpty is called', () => { store.commit('alert/setAl', { alertShow: true, alertMessage: 'Testing testing 123', alertType: 'error', alertLink: null, linkText: '', alertCopy: '' }) expect(store.getters['alert/getAlert']).toStrictEqual({ alertShow: true, alertMessage: 'Testing testing 123', alertType: 'error', alertLink: null, linkText: '', alertCopy: '' }) store.commit('alert/setEmpty') expect(store.getters['alert/getAlert']).toStrictEqual({ alertShow: false, alertMessage: '', alertType: null, alertLink: null, linkText: '', alertCopy: '' }) }) }) describe('actions', () => { test('setAlert sets the new alert state, calls setTimeout and then empties the alert state', async () => { await store.dispatch('alert/setAlert', { alertShow: true, alertMessage: 'Testing testing 234', alertType: 'error', alertLink: null, linkText: '', alertCopy: '' }) expect(store.getters['alert/getAlert']).toStrictEqual({ alertShow: true, alertMessage: 'Testing testing 234', alertType: 'error', alertLink: null, linkText: '', alertCopy: '' }) expect(setTimeout).toHaveBeenCalledTimes(1) expect(setTimeout).toHaveBeenLastCalledWith( expect.any(Function), 6000, 'setEmpty' ) }) }) }) describe('Notifications', () => { describe('getters', () => { it('should return notifications', () => { const notifications = ['foo', 'bar', 'batz'] const store = new Vuex.Store({ state: { ...getInitialState(), notifications: [...notifications] }, getters: alert.getters }) expect(store.getters.notifications).toStrictEqual(notifications) }) it('should return notificationTimeouts', () => { const notificationTimeouts = { 0: 123, 1: 456 } const store = new Vuex.Store({ state: { ...alert.state, notificationTimeouts: Object.assign({}, notificationTimeouts) }, getters: alert.getters }) expect(store.getters.notificationTimeouts).toStrictEqual( notificationTimeouts ) }) }) describe('mutations', () => { let store beforeEach(() => { clearTimeout.mockClear() store = new Vuex.Store({ state: getInitialState(), getters: alert.getters, actions: alert.actions, mutations: alert.mutations }) }) it('setNotifications correctly stores notifications', () => { const notifications = ['lorem', 'ipsum'] store.commit('setNotifications', notifications) expect(store.getters.notifications).toStrictEqual(notifications) }) it('setNotificationTimeout clears any existing timeout and stores a new timeout id', () => { const id = 'foo-bar' const timeoutId = 123 const timeoutId2 = 456 store.commit('setNotificationTimeout', { id, timeoutId }) expect(store.getters.notificationTimeouts).toStrictEqual({ [id]: timeoutId }) store.commit('setNotificationTimeout', { id, timeoutId: timeoutId2 }) expect(clearTimeout).toHaveBeenCalledWith(timeoutId) expect(store.getters.notificationTimeouts).toStrictEqual({ [id]: timeoutId2 }) }) }) // addNotification // dismissNotification // updateNotification describe('actions', () => { let store const storeClear = () => { store = new Vuex.Store({ state: getInitialState(), getters: alert.getters, actions: alert.actions, mutations: alert.mutations }) } describe('addNotification', () => { beforeEach(storeClear) it('returns sequential ids for each call', async () => { let id uniqueId .mockReturnValueOnce(1) .mockReturnValueOnce(2) .mockReturnValueOnce(3) .mockReturnValueOnce(4) id = await store.dispatch('addNotification', { text: 'foo' }) expect(id).toStrictEqual(1) id = await store.dispatch('addNotification', { text: 'bar' }) expect(id).toStrictEqual(2) id = await store.dispatch('addNotification', { text: 'batz' }) expect(id).toStrictEqual(3) id = await store.dispatch('addNotification', { text: 'fiz' }) expect(id).toStrictEqual(4) }) it('adds the passed notification to the store', async () => { const notification = { text: 'fix' } expect(store.getters.notifications).toStrictEqual([]) const id = await store.dispatch('addNotification', notification) expect(store.getters.notifications).toStrictEqual([ { id: id, ...notification } ]) }) // TODO: Add tests for timeout logic }) describe('dismissNotification', () => { beforeEach(storeClear) it('removes the notification with the passed id from the store', async () => { const notification = { text: 'sabe' } uniqueId.mockReturnValueOnce(1) const id = await store.dispatch('addNotification', notification) expect(id).toStrictEqual(1) expect(store.getters.notifications).toStrictEqual([ { id, ...notification } ]) await store.dispatch('dismissNotification', { id: 1 }) expect(store.getters.notifications).toStrictEqual([]) }) }) describe('updateNotification', () => { beforeEach(storeClear) it('updates the notification with the passed id with new data', async () => { const notification = { text: 'sabe' } uniqueId.mockReturnValueOnce(1) const id = await store.dispatch('addNotification', notification) expect(store.getters.notifications).toStrictEqual([ { id, ...notification } ]) await store.dispatch('updateNotification', { id: 1, notification: { text: 'ebas' } }) expect(store.getters.notifications[0].text).toStrictEqual('ebas') }) // TODO: Add tests for timeout logic }) }) }) }) ================================================ FILE: tests/unit/store/api.spec.js ================================================ import api from '@/store/api' import { createLocalVue } from '@vue/test-utils' import Vuex from 'vuex' jest.useFakeTimers() const SERVER_KEY = `${process.env.VUE_APP_RELEASE_TIMESTAMP}_server_url` //simple mock for gql api query let mockerror = false jest.mock('@/vue-apollo', () => { return { fallbackApolloClient: { query: () => { if (!mockerror) { return { data: { api: { release_timestamp: 'timestamp', version: 2, mode: 'maintenance' } } } } else { return { data: 'error' } } } } } }) const localVue = createLocalVue() localVue.use(Vuex) jest.mock('@/graphql/api.gql', () => 'api mutation string') describe('API Vuex Module', () => { let initialAPIState let envVarAPIState let localStoreAPIState beforeEach(() => { initialAPIState = () => { delete process.env.VUE_APP_BACKEND delete process.env.VUE_APP_CLOUD_URL delete process.env.VUE_APP_SERVER_URL localStorage.clear() return { backend: localStorage.getItem('backend') || process.env.VUE_APP_BACKEND || 'SERVER', connected: true, connectionMessage: null, connectionTimeout: null, apiMode: null, releaseTimestamp: null, cloudUrl: process.env.VUE_APP_CLOUD_URL, retries: 0, serverUrl: localStorage.getItem(SERVER_KEY) || process.env.VUE_APP_SERVER_URL, version: null } } envVarAPIState = () => { localStorage.clear() process.env.VUE_APP_BACKEND = 'CLOUD' process.env.VUE_APP_CLOUD_URL = 'https://api.prefect.io/graphql' process.env.VUE_APP_SERVER_URL = 'http://localhost:4200/graphql' return { backend: localStorage.getItem('backend') || process.env.VUE_APP_BACKEND || 'SERVER', connected: true, connectionMessage: null, connectionTimeout: 200, releaseTimestamp: null, apiMode: null, cloudUrl: process.env.VUE_APP_CLOUD_URL, retries: 0, serverUrl: localStorage.getItem(SERVER_KEY) || process.env.VUE_APP_SERVER_URL, version: null } } localStoreAPIState = () => { localStorage.setItem('backend', 'foo') localStorage.setItem(SERVER_KEY, 'http://0.0.0.0:4200/graphql') process.env.VUE_APP_BACKEND = 'CLOUD' process.env.VUE_APP_SERVER_URL = 'http://localhost:4200/graphql' return { backend: localStorage.getItem('backend') || process.env.VUE_APP_BACKEND || 'SERVER', connected: true, connectionMessage: 'connection message', connectionTimeout: 300, apiMode: null, releaseTimestamp: 'xxxxxx', cloudUrl: process.env.VUE_APP_CLOUD_URL, retries: 5, serverUrl: localStorage.getItem(SERVER_KEY) || process.env.VUE_APP_SERVER_URL, version: 8 } } }) describe('State', () => { test('state returns correct values if no localStorage or environment variables are set', () => { const state = initialAPIState() expect(state.backend).toEqual('SERVER') expect(state.connected).toBe(true) expect(state.connectionMessage).toBe(null) expect(state.connectionTimeout).toBe(null) expect(state.cloudUrl).toBe(undefined) expect(state.retries).toBe(0) expect(state.apiMode).toBe(null) expect(state.serverUrl).toBe(undefined) expect(state.version).toBe(null) }) test('state checks local storage before environment variables', () => { const state = localStoreAPIState() expect(localStorage.getItem).toBeCalledWith('backend') expect(state.backend).toEqual('foo') expect(state.serverUrl).toBe('http://0.0.0.0:4200/graphql') }) test('state checks environment variables if no local storage', () => { const state = envVarAPIState() expect(localStorage.getItem('backend')).toBe(null) expect(state.backend).toEqual('CLOUD') expect(state.cloudUrl).toBe('https://api.prefect.io/graphql') expect(state.serverUrl).toBe('http://localhost:4200/graphql') }) }) describe('getters', () => { let store beforeEach(() => { const state = initialAPIState() store = new Vuex.Store({ state: state, getters: api.getters, mutations: api.mutations }) }) it('should return the backend', () => { expect(store.getters.backend).toBe('SERVER') }) it('should return connected state', () => { expect(store.getters.connected).toBe(true) }) it('should return connecting state', () => { expect(store.getters.connecting).toBe(false) }) it('should return the connection message', () => { expect(store.getters.connectionMessage).toBe(null) }) it('should return the connectionTimeout', () => { expect(store.getters.connectionTimeout).toBe(null) }) it('should return the api mode', () => { expect(store.getters.apiMode).toBe(null) }) it('should return a boolean about whether the backend is Cloud', () => { expect(store.getters.isCloud).toBe(false) }) it('should return a boolean about whether the backend is Server', () => { expect(store.getters.isServer).toBe(true) }) it('should return the cloud url', () => { expect(store.getters.cloudUrl).toBe(undefined) }) it('should return retries', () => { expect(store.getters.retries).toBe(0) }) it('should return the server url', () => { expect(store.getters.serverUrl).toBe(undefined) }) it('should return the active url', () => { expect(store.getters.url).toBe(undefined) }) it('should return the version', () => { expect(store.getters.version).toBe(null) }) }) describe('Mutations', () => { let store beforeEach(() => { store = new Vuex.Store({ state: initialAPIState(), getters: api.getters, actions: api.actions, mutations: api.mutations }) }) describe('setBackend', () => { it('should set backend', () => { store.commit('setBackend', 'SERVER') expect(store.getters['backend']).toBe('SERVER') expect(store.getters['isCloud']).toBe(false) store.commit('setBackend', 'CLOUD') expect(store.getters['backend']).toBe('CLOUD') expect(store.getters['isCloud']).toBe(true) }) it('should throw an error if an invalid backend is used', () => { expect(() => store.commit('setBackend', 'FOO')).toThrow( 'Invalid backend' ) }) }) describe('unsetBackend', () => { it('should set backend to null', () => { store.commit('unsetBackend') expect(store.getters['backend']).toEqual(null) }) }) describe('setConnected', () => { it('should update connected', () => { expect(store.getters['connected']).toBe(true) store.commit('setConnected', false) expect(store.getters['connected']).toBe(false) }) it('should throw an error if it tries to set connected to a non-boolean', () => { expect(store.getters['connected']).toBe(true) expect(() => store.commit('setConnected', 'tiger')).toThrow( 'Invalid connected state - connected should be a boolean' ) }) }) describe('setConnectionMessage', () => { it('should update the connection message', () => { expect(store.getters['connectionMessage']).toBe(null) store.commit('setConnectionMessage', 'hello') expect(store.getters['connectionMessage']).toBe('hello') }) }) describe('unsetConnectionMessage', () => { it('should unset the connection message', () => { store.commit('setConnectionMessage', 'hello') expect(store.getters['connectionMessage']).toBe('hello') store.commit('unsetConnectionMessage') expect(store.getters['connectionMessage']).toBe(null) }) }) describe('setConnectionTimeout', () => { it('should set ConnectionTimeout', () => { store.commit('setConnectionTimeout', 500) expect(store.getters['connectionTimeout']).toBe(500) }) }) describe('unsetConnectionTimeout', () => { it('should unset ConnectionTimeout', () => { store.commit('setConnectionTimeout', 500) expect(store.getters['connectionTimeout']).toBe(500) store.commit('unsetConnectionTimeout') expect(store.getters['connectionTimeout']).toBe(null) expect(clearTimeout).toHaveBeenCalled() }) }) describe('setReleaseTimestamp', () => { it('should set the release timestamp', () => { store.commit('setReleaseTimestamp', 'a timestamp') expect(store.getters['releaseTimestamp']).toBe('a timestamp') }) }) describe('setApiMode', () => { it('should set the api mode', () => { store.commit('setApiMode', 'normal') expect(store.getters['apiMode']).toBe('normal') store.commit('setApiMode', 'maintenance') expect(store.getters['apiMode']).toBe('maintenance') }) it('should throw an error if we try to set an api model other than normal or maintenance', () => { expect(() => store.commit('setApiMode', 'notnormal')).toThrow( 'Unexpected api mode' ) }) }) describe('unsetReleaseTimestamp', () => { it('should unset releaseTimestamp', () => { store.commit('setReleaseTimestamp', 'a timestamp') expect(store.getters['releaseTimestamp']).toBe('a timestamp') store.commit('unsetReleaseTimetamp') expect(store.getters['releaseTimestamp']).toBe(null) }) }) describe('setRetries', () => { it('should set retries', () => { store.commit('setRetries', 5) expect(store.getters['retries']).toBe(5) }) }) describe('setServerUrl', () => { it('should set the server url in state and local storage', () => { store.commit('setServerUrl', 'http:localhost:4200') expect(store.getters['serverUrl']).toEqual('http:localhost:4200') expect(localStorage.setItem).toBeCalledWith( SERVER_KEY, 'http:localhost:4200' ) }) }) describe('unsetServerUrl', () => { it('should unset the server url in state and local storage', () => { store.commit('unsetServerUrl') expect(store.getters['serverUrl']).toEqual(null) expect(localStorage.removeItem).toBeCalledWith(SERVER_KEY) }) }) describe('setVersion', () => { it('should set the version', () => { store.commit('setVersion', 2) expect(store.getters['version']).toBe(2) }) }) describe('unsetVersion', () => { it('should unset the version', () => { store.commit('setVersion', 2) expect(store.getters['version']).toBe(2) store.commit('unsetVersion') expect(store.getters['version']).toBe(null) }) }) }) describe('actions', () => { let store beforeEach(() => { const state = initialAPIState() store = new Vuex.Store({ state: state, getters: api.getters, mutations: api.mutations, actions: api.actions }) }) describe('getApi - no api error', () => { beforeEach(() => { mockerror = false }) it('should set the version', async () => { await store.dispatch('getApi') expect(store.getters.version).toBe(2) }) it('should set the release timestamp', async () => { await store.dispatch('getApi') expect(store.getters.releaseTimestamp).toBe('timestamp') }) it('should set connected state', async () => { await store.dispatch('getApi') expect(store.getters.connected).toBe(true) }) it('should set api mode', async () => { await store.dispatch('getApi') expect(store.getters.apiMode).toBe('maintenance') }) }) describe('getApi - with api error', () => { beforeEach(() => { mockerror = true const state = localStoreAPIState() store = new Vuex.Store({ state: state, getters: api.getters, mutations: api.mutations, actions: api.actions }) }) it('should unset the version', async () => { expect(store.getters.version).toBe(8) await store.dispatch('getApi') expect(store.getters.version).toBe(null) }) it('should unset the release timestamp', async () => { await store.dispatch('getApi') expect(store.getters.releaseTimestamp).toBe(null) }) it('should unset connected state', async () => { await store.dispatch('getApi') expect(store.getters.connected).toBe(false) }) }) describe('monitorConnection - no query error', () => { beforeEach(() => { mockerror = false const state = localStoreAPIState() store = new Vuex.Store({ state: state, getters: api.getters, mutations: api.mutations, actions: api.actions }) }) it('should unset connection timeout', async () => { await store.dispatch('monitorConnection') expect(clearTimeout).toHaveBeenCalled() }) it('should set the release timestamp', async () => { await store.dispatch('monitorConnection') expect(store.getters.releaseTimestamp).toBe('timestamp') }) it('should set connected state', async () => { await store.dispatch('monitorConnection') expect(store.getters.connected).toBe(true) }) it('should set the version', async () => { await store.dispatch('monitorConnection') expect(store.getters.version).toBe(2) }) it('should set the connection message', async () => { await store.dispatch('monitorConnection') expect(store.getters.connectionMessage).toBe('Connected') }) it('should set retries back to 0', async () => { await store.dispatch('monitorConnection') expect(store.getters.retries).toBe(0) }) }) describe('monitorConnection - query error', () => { beforeEach(() => { mockerror = true const state = localStoreAPIState() store = new Vuex.Store({ state: state, getters: api.getters, mutations: api.mutations, actions: api.actions }) }) it('should unset connection timeout', async () => { await store.dispatch('monitorConnection') expect(clearTimeout).toHaveBeenCalled() }) it('should set connected state to false', async () => { await store.dispatch('monitorConnection') expect(store.getters.connected).toBe(false) }) it('should set the connection message', async () => { await store.dispatch('monitorConnection') expect(store.getters.connectionMessage).toBe( "TypeError: Cannot read property 'release_timestamp' of undefined" ) }) }) describe('setServerUrl', () => { beforeEach(() => { const state = localStoreAPIState() store = new Vuex.Store({ state: state, getters: api.getters, mutations: api.mutations, actions: api.actions }) }) it('should set the server URL', async () => { expect(store.getters.serverUrl).toBe('http://0.0.0.0:4200/graphql') await store.dispatch('setServerUrl', 'new.url') expect(store.getters.serverUrl).toBe('new.url') }) }) describe('switchBackend', () => { beforeEach(() => { // Mock the mutations and actions from other stores // that we don't want to // test here api.mutations['tenant/setTenant'] = jest.fn() api.mutations['tenant/setDefaultTenant'] = jest.fn() api.mutations['tenant/unsetTenants'] = jest.fn() api.mutations['tenant/unsetTenant'] = jest.fn() api.actions['tenant/getTenants'] = jest.fn() api.actions['auth/authenticate'] = jest.fn() api.actions['auth/authorize'] = jest.fn() api.actions['user/getUser'] = jest.fn() const state = localStoreAPIState() store = new Vuex.Store({ state: state, getters: api.getters, mutations: api.mutations, actions: api.actions }) }) it('should call unsetTenant', async () => { await store.dispatch('switchBackend', 'SERVER') expect(api.mutations['tenant/unsetTenant']).toHaveBeenCalled() }) it('should call unsetTenants', async () => { await store.dispatch('switchBackend', 'SERVER') expect(api.mutations['tenant/unsetTenants']).toHaveBeenCalled() }) describe('switch backend to SERVER', () => { it('should set the backend to SERVER', async () => { expect(store.getters.backend).toBe('foo') await store.dispatch('switchBackend', 'SERVER') expect(store.getters.backend).toBe('SERVER') }) it('should call unsetTenant', async () => { await store.dispatch('switchBackend', 'SERVER') expect(api.mutations['tenant/unsetTenant']).toHaveBeenCalled() }) it('should call unsetTenants', async () => { await store.dispatch('switchBackend', 'SERVER') expect(api.mutations['tenant/unsetTenants']).toHaveBeenCalled() }) it('should call setDefaultTenant', async () => { await store.dispatch('switchBackend', 'SERVER') expect(api.mutations['tenant/setDefaultTenant']).toHaveBeenCalled() }) }) describe('switch backend to CLOUD', () => { it('should set the backend to CLOUD', async () => { expect(store.getters.backend).toBe('foo') await store.dispatch('switchBackend', 'CLOUD') expect(store.getters.backend).toBe('CLOUD') }) it('should not call setDefaultTenant', async () => { await store.dispatch('switchBackend', 'CLOUD') expect( api.mutations['tenant/setDefaultTenant'] ).toHaveBeenCalledTimes(0) }) it('should authenticate', async () => { await store.dispatch('switchBackend', 'CLOUD') expect(api.actions['auth/authenticate']).toHaveBeenCalled() }) it('should authorize', async () => { await store.dispatch('switchBackend', 'CLOUD') expect(api.actions['auth/authorize']).toHaveBeenCalled() }) it('should get the user details', async () => { await store.dispatch('switchBackend', 'CLOUD') expect(api.actions['user/getUser']).toHaveBeenCalled() }) it('should get tenants', async () => { await store.dispatch('switchBackend', 'CLOUD') expect(api.actions['tenant/getTenants']).toHaveBeenCalled() }) }) }) }) }) ================================================ FILE: tests/unit/store/auth.spec.js ================================================ import auth_base from '@/store/auth' const auth = { ...auth_base } import { MOCK_AUTHORIZATION_TOKEN, MOCK_ID_TOKEN, MOCK_REFRESH_TOKEN } from './mockTokens' import { createLocalVue } from '@vue/test-utils' import Vuex from 'vuex' const localVue = createLocalVue() localVue.use(Vuex) describe('auth Vuex Module', () => { const loggedInState = () => { return { authorizationToken: MOCK_AUTHORIZATION_TOKEN, authorizationTokenExpiry: new Date().getTime() + 10000, idToken: MOCK_ID_TOKEN, idTokenExpiry: new Date().getTime() + 10000, isAuthenticated: true, refreshToken: MOCK_REFRESH_TOKEN, refreshTokenExpiry: new Date().getTime() + 10000, user: { sub: 'user', name: 'user', email: 'user@domain.com' } } } describe('State', () => { it('should be initialized properly without tokens in localStorage ', () => { const state = auth.state expect(Object.keys(state).length).toBe(7) expect(state.user).toBe(null) expect(state.authorizationToken).toBe(null) expect(state.authorizationTokenExpiry).toBe(null) expect(state.idToken).toBe(null) expect(state.idTokenExpiry).toBe(null) expect(state.refreshToken).toBe(null) expect(state.refreshTokenExpiry).toBe(null) }) }) describe('Getters', () => { let store beforeEach(() => { store = new Vuex.Store({ state: loggedInState(), getters: auth.getters, actions: auth.actions, mutations: auth.mutations }) }) it('should return the user', () => { expect(store.getters.user).toBe(store.state.user) }) it('should return the idToken', () => { expect(store.getters.idToken).toBe(store.state.idToken) }) it('should return isAuthenticated', () => { expect(store.getters.isAuthenticated).toBe(true) }) it('should return isAuthorized', () => { expect(store.getters.isAuthorized).toBe(true) }) it('should return the authorizationToken', () => { expect(store.getters.authorizationToken).toBe( store.state.authorizationToken ) }) it('should return the refreshToken', () => { expect(store.getters.refreshToken).toBe(store.state.refreshToken) }) it('should return the authorizationTokenExpiry', () => { expect(store.getters.authorizationTokenExpiry).toBe( store.state.authorizationTokenExpiry ) }) it('should return the refreshTokenExpiry', () => { expect(store.getters.refreshTokenExpiry).toBe( store.state.refreshTokenExpiry ) }) it('should return the idTokenExpiry', () => { expect(store.getters.idTokenExpiry).toBe(store.state.idTokenExpiry) }) }) describe('Mutations', () => { describe('...correctly set their associated states', () => { let store beforeEach(() => { store = new Vuex.Store({ state: auth.state, getters: auth.getters, actions: auth.actions, mutations: auth.mutations }) }) it('should set the user', () => { store.commit('user', loggedInState().user) const user = loggedInState().user expect(store.getters['user'].name).toBe(user.name) expect(store.getters['user'].sub).toBe(user.sub) expect(store.getters['user'].email).toBe(user.email) }) it('should set the idToken', () => { const idToken = loggedInState().idToken store.commit('idToken', idToken) expect(store.getters['idToken']).toBe(idToken) }) it('should set the authorizationToken', () => { store.commit('authorizationToken', loggedInState().authorizationToken) expect(store.getters['authorizationToken']).toBe( loggedInState().authorizationToken ) }) it('should set the refreshToken', () => { store.commit('refreshToken', loggedInState().refreshToken) expect(store.getters['refreshToken']).toBe(loggedInState().refreshToken) }) it('should set the authorizationTokenExpiry', () => { const loggedInStateExpiration = loggedInState().authorizationTokenExpiry store.commit('authorizationTokenExpiry', loggedInStateExpiration) expect(store.getters['authorizationTokenExpiry']).toBe( loggedInStateExpiration ) }) it('should set the refreshTokenExpiry', () => { const loggedInStateExpiration = loggedInState().refreshTokenExpiry store.commit('refreshTokenExpiry', loggedInStateExpiration) expect(store.getters['refreshTokenExpiry']).toBe( loggedInStateExpiration ) }) it('should set the idTokenExpiry', () => { const loggedInStateExpiration = loggedInState().idTokenExpiry store.commit('idTokenExpiry', loggedInStateExpiration) expect(store.getters['idTokenExpiry']).toBe(loggedInStateExpiration) }) }) describe('... throw errors when invalid data are passed in', () => { let store beforeEach(() => { store = new Vuex.Store({ state: auth.state, getters: auth.getters, actions: auth.actions, mutations: auth.mutations }) localStorage.setItem.mockClear() localStorage.getItem.mockClear() localStorage.removeItem.mockClear() }) it('user throws error on invalid state', () => { expect(() => store.commit('user', null)).toThrow(TypeError) expect(() => store.commit('user', false)).toThrow(TypeError) expect(() => store.commit('user', undefined)).toThrow(TypeError) expect(() => store.commit('user', 'test')).toThrow(TypeError) expect(() => store.commit('user', 12345)).toThrow(TypeError) }) it('idToken throws error on invalid state', () => { expect(() => store.commit('idToken', null)).toThrow(TypeError) expect(() => store.commit('idToken', false)).toThrow(TypeError) expect(() => store.commit('idToken', undefined)).toThrow(TypeError) expect(() => store.commit('idToken', 'test')).toThrow(TypeError) expect(() => store.commit('idToken', 12345)).toThrow(TypeError) }) it('authorizationToken throws error on invalid state', () => { expect(() => store.commit('authorizationToken', null)).toThrow( TypeError ) expect(() => store.commit('authorizationToken', false)).toThrow( TypeError ) expect(() => store.commit('authorizationToken', undefined)).toThrow( TypeError ) expect(() => store.commit('authorizationToken', 'test')).toThrow( TypeError ) expect(() => store.commit('authorizationToken', 12345)).toThrow( TypeError ) }) it('refreshToken throws error on invalid state', () => { expect(() => store.commit('refreshToken', null)).toThrow(TypeError) expect(() => store.commit('refreshToken', false)).toThrow(TypeError) expect(() => store.commit('refreshToken', undefined)).toThrow(TypeError) expect(() => store.commit('refreshToken', 'test')).toThrow(TypeError) expect(() => store.commit('refreshToken', 12345)).toThrow(TypeError) }) it('authorizationTokenExpiry throws error on invalid state', () => { expect(() => store.commit('authorizationTokenExpiry', null)).toThrow( TypeError ) expect(() => store.commit('authorizationTokenExpiry', false)).toThrow( TypeError ) expect(() => store.commit('authorizationTokenExpiry', undefined) ).toThrow(TypeError) expect(() => store.commit('authorizationTokenExpiry', 'test')).toThrow( TypeError ) }) it('refreshTokenExpiry throws error on invalid state', () => { expect(() => store.commit('refreshTokenExpiry', null)).toThrow( TypeError ) expect(() => store.commit('refreshTokenExpiry', false)).toThrow( TypeError ) expect(() => store.commit('refreshTokenExpiry', undefined)).toThrow( TypeError ) expect(() => store.commit('refreshTokenExpiry', 'test')).toThrow( TypeError ) }) it('idTokenExpiry throws error on invalid state', () => { expect(() => store.commit('idTokenExpiry', null)).toThrow(TypeError) expect(() => store.commit('idTokenExpiry', false)).toThrow(TypeError) expect(() => store.commit('idTokenExpiry', undefined)).toThrow( TypeError ) expect(() => store.commit('idTokenExpiry', 'test')).toThrow(TypeError) }) }) describe('... successfully resets stores with unset methods', () => { let store beforeEach(() => { store = new Vuex.Store({ state: auth.state, getters: auth.getters, actions: auth.actions, mutations: auth.mutations }) }) it('unsets user', () => { store.commit('user', loggedInState().user) expect(store.getters['user']).toEqual(loggedInState().user) store.commit('unsetUser') expect(store.getters['user']).toBe(null) }) it('unsets idToken', () => { const idToken = loggedInState().idToken store.commit('idToken', idToken) expect(store.getters['idToken']).toBe(idToken) store.commit('unsetIdToken') expect(store.getters['idToken']).toBe(null) }) it('unsets refreshToken', () => { store.commit('refreshToken', loggedInState().refreshToken) expect(store.getters['refreshToken']).toBe(loggedInState().refreshToken) store.commit('unsetRefreshToken') expect(store.getters['refreshToken']).toBe(null) }) it('unsets authorizationTokenExpiry', () => { const loggedInStateExpiration = loggedInState().authorizationTokenExpiry store.commit('authorizationTokenExpiry', loggedInStateExpiration) expect(store.getters['authorizationTokenExpiry']).toBe( loggedInStateExpiration ) store.commit('unsetAuthorizationTokenExpiry') expect(store.getters['authorizationTokenExpiry']).toBe(null) }) it('unsets refreshTokenExpiry', () => { const loggedInStateExpiration = loggedInState().refreshTokenExpiry store.commit('refreshTokenExpiry', loggedInStateExpiration) expect(store.getters['refreshTokenExpiry']).toBe( loggedInStateExpiration ) store.commit('unsetRefreshTokenExpiry') expect(store.getters['refreshTokenExpiry']).toBe(null) }) it('unsets idTokenExpiry', () => { const loggedInStateExpiration = loggedInState().idTokenExpiry store.commit('idTokenExpiry', loggedInStateExpiration) expect(store.getters['idTokenExpiry']).toBe(loggedInStateExpiration) store.commit('unsetIdTokenExpiry') expect(store.getters['idTokenExpiry']).toBe(null) }) }) }) }) ================================================ FILE: tests/unit/store/data.spec.js ================================================ import data from '@/store/data' import { createLocalVue } from '@vue/test-utils' import Vuex from 'vuex' const localVue = createLocalVue() localVue.use(Vuex) let mockError = false jest.mock('@/vue-apollo', () => { return { fallbackApolloClient: { query: () => { if (!mockError) { return { data: { flow: [ { id: 'f-111', flow_group_id: 'fg-111', project_id: 'p-111', name: 'Flow 111' } ], project: [ { id: 'p-111', name: 'Project 111' } ], task: [ { id: 't-111', flow_id: 'f-111', name: 'Name 111' } ] } } } else { return { data: 'error' } } } } } }) jest.mock('@/graphql/Nav/flows.gql', () => 'flows query string') jest.mock('@/graphql/Nav/flow.gql', () => 'flow query string') jest.mock('@/graphql/Nav/projects.gql', () => 'projects query string') jest.mock('@/graphql/Nav/task.gql', () => 'tasks query string') const dataObjects = ['flow', 'project', 'task'] const generators = { flow: (len = 5) => { return Array.from({ length: len }, (v, i) => { return { id: 'f' + i, flow_group_id: 'fg' + i, name: 'Flow ' + i, project_id: 'p' + Math.floor(Math.random() * 5) // Random project id between p0 and p5 } }) }, project: (len = 5) => { return Array.from({ length: len }, (v, i) => { return { id: 'p' + i, name: 'Project ' + i } }) }, task: (len = 5) => { return Array.from({ length: len }, (v, i) => { return { id: 't' + i, name: 'Task ' + i, flow_id: 'f' + Math.floor(Math.random() * 5) // Random flow id between f0 and f5 } }) } } describe('data Vuex Module', () => { const unsetState = () => { return { activeFlow: null, activeProject: null, activeTask: null, flows: null, projects: null, tasks: null } } const setState = () => { const flows = generators.flow() const projects = generators.project() const tasks = generators.task() const activeTask = tasks[Math.floor(Math.random() * 5)] // Random activeTask const activeFlow = flows.find(f => f.id == activeTask.flow_id) // activeFlow based on activeTask const activeProject = projects.find(p => p.id == activeFlow.project_id) // activeProject based on activeFlow return { activeFlow: activeFlow, activeProject: activeProject, activeTask: activeTask, flows: flows, projects: projects, tasks: tasks } } describe('State', () => { it('should hold data', () => { const state = data.state expect(state.activeFlow).toBe(null) expect(state.activeProject).toBe(null) expect(state.activeTask).toBe(null) expect(state.flows).toBe(null) expect(state.projects).toBe(null) expect(state.tasks).toBe(null) }) }) describe('Getters', () => { describe('while unset', () => { let state, store beforeEach(() => { state = unsetState() store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) }) dataObjects.forEach(d => { const active = 'active' + d.charAt(0).toUpperCase() + d.slice(1) const plural = d + 's' test(`${active} getter should return null`, () => { expect(store.getters[active]).toEqual(null) }) test(`${plural} getter should return null`, () => { expect(store.getters[plural]).toEqual(null) }) }) }) describe('while set', () => { let state, store beforeEach(() => { state = setState() store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) }) dataObjects.forEach(d => { const active = 'active' + d.charAt(0).toUpperCase() + d.slice(1) const plural = d + 's' const id = active + 'Id' test(`${active} getter should return the state ${active} object`, () => { expect(store.getters[active]).toEqual(state[active]) }) test(`${plural} getter should return a list of ${plural}`, () => { expect(store.getters[plural]).toEqual(state[plural]) }) test(`${id} getter should return the id of ${active}`, () => { expect(store.getters[id]).toEqual(state[active].id) }) }) }) }) describe('Mutations', () => { let state, store beforeEach(() => { state = unsetState() store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) }) const activeDataMutations = ['Flow', 'Project', 'Task'] activeDataMutations.forEach(d => { describe(`setActive${d}`, () => { const error = `passed invalid or empty ${d}; Expected Object, got: ` it(`should set the active${d}`, () => { const generated = generators[d.toLowerCase()](1)[0] // Creates a new random object store.commit(`setActive${d}`, generated) expect(store.getters[`active${d}`]).toEqual(generated) }) it(`should throw an error if passed an invalid ${d} data type`, () => { const toPass = [1, 2, 3] expect(() => store.commit(`setActive${d}`, toPass)).toThrow( error + toPass ) }) it(`should throw an error if passed no ${d}`, () => { expect(() => store.commit(`setActive${d}`)).toThrow( error + 'undefined' ) }) it(`should throw an error if passed an empty ${d} object`, () => { const toPass = {} expect(() => store.commit(`setActive${d}`, toPass)).toThrow( error + toPass ) }) }) describe(`unsetActive${d}`, () => { let state, store beforeEach(() => { state = setState() store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) }) it(`should unset the active${d}`, () => { expect(store.getters[`active${d}`].id).toEqual(state[`active${d}`].id) store.commit(`unsetActive${d}`) expect(store.getters[`active${d}`]).toEqual(null) }) }) }) describe('addTasks', () => { it("should add passed tasks to the tasks array and should create it if it doesn't exist", () => { expect(state.tasks).toEqual(null) const tasks = generators.task(5) store.commit('addTasks', tasks) expect(state.tasks).toEqual(tasks) expect(state.tasks.length).toEqual(5) }) it('should update existing tasks in the store if matching ids are passed', () => { expect(state.tasks).toEqual(null) const tasks = generators.task(5) const taskToChange = tasks[0] store.commit('addTasks', tasks) expect(state.tasks).toEqual(tasks) expect(state.tasks.length).toEqual(5) taskToChange.name = 'Some updated task name' store.commit('addTasks', [taskToChange]) expect(state.tasks.length).toEqual(5) const storedTasks = store.getters['tasks'] const changedTask = storedTasks.find(t => t.id == taskToChange.id) expect(changedTask).toEqual(taskToChange) expect(changedTask.name).toEqual(taskToChange.name) }) it('should throw an error if passed an invalid data type', () => { const toPass = { 1: 'foo', 2: 'bar' } expect(() => store.commit('addTasks', toPass)).toThrow( 'passed null or invalid Tasks; Expected Array, got: ' + toPass ) }) }) const dataMutations = ['Flows', 'Projects', 'Tasks'] dataMutations.forEach(d => { const ref = d.toLowerCase() const error = `passed invalid ${d}; Expected Array, got: ` describe(`set${d}`, () => { it(`should set the ${d} array`, () => { const generated = generators[ ref.substring(0, d.length - 1) // Uncapitalize and remove plural ](5) // Creates a new random array of objects store.commit(`set${d}`, generated) expect(store.getters[ref]).toEqual(generated) expect(store.getters[ref].length).toEqual(5) }) it(`should throw an error if passed an invalid ${d} data type`, () => { const toPass = { 1: 'foo', 2: 'bar' } expect(() => store.commit(`set${d}`, toPass)).toThrow(error + toPass) }) it(`should throw an error if passed no ${d}`, () => { expect(() => store.commit(`set${d}`)).toThrow(error + 'undefined') }) }) describe(`unset${d}`, () => { let state, store beforeEach(() => { state = setState() store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) }) it(`should unset the ${d} array`, () => { expect(store.getters[ref][0].id).toEqual(state[ref][0].id) store.commit(`unset${d}`) expect(store.getters[ref]).toEqual(null) }) }) }) }) describe('Actions', () => { let state, store beforeEach(() => { state = unsetState() store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) }) describe('resetActiveData', () => { it('removes all active* data', () => { state = setState() store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) expect(store.getters['activeFlow'].id).toEqual(state['activeFlow'].id) expect(store.getters['activeProject'].id).toEqual( state['activeProject'].id ) expect(store.getters['activeTask'].id).toEqual(state['activeTask'].id) store.dispatch('resetActiveData') expect(store.getters['activeFlow']).toEqual(null) expect(store.getters['activeProject']).toEqual(null) expect(store.getters['activeTask']).toEqual(null) }) }) describe('resetData', () => { it('removes all data', () => { state = setState() store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) expect(store.getters['activeFlow'].id).toEqual(state['activeFlow'].id) expect(store.getters['activeProject'].id).toEqual( state['activeProject'].id ) expect(store.getters['activeTask'].id).toEqual(state['activeTask'].id) expect(store.getters['flows'].length).toEqual(5) expect(store.getters['projects'].length).toEqual(5) expect(store.getters['tasks'].length).toEqual(5) expect(store.getters['flows'][0].id).toEqual(state['flows'][0].id) expect(store.getters['projects'][0].id).toEqual(state['projects'][0].id) expect(store.getters['tasks'][0].id).toEqual(state['tasks'][0].id) store.dispatch('resetData') expect(store.getters['activeFlow']).toEqual(null) expect(store.getters['activeProject']).toEqual(null) expect(store.getters['activeTask']).toEqual(null) expect(store.getters['flows']).toEqual(null) expect(store.getters['projects']).toEqual(null) expect(store.getters['tasks']).toEqual(null) }) }) describe('activating projects, flows, and tasks', () => { let state, store beforeEach(() => { state = unsetState() store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) }) describe('activateFlow', () => { beforeEach(() => { state = setState() store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) }) it('sets the activeFlow from the store when the flow exists in the store', async () => { expect(store.getters['activeFlow'].id).toEqual(state['activeFlow'].id) const id = store.getters['flows'].find( f => f.id !== state['activeFlow'].id ).id // Find the first flow in the store that isn't the activeFlow expect(store.getters['activeFlow'].id).not.toEqual(id) await store.dispatch('activateFlow', id) expect(store.getters['activeFlow'].id).toEqual(id) }) it('sets the activeProject after setting the activeFlow', async () => { state = unsetState() const spy = jest.spyOn(data.actions, 'activateProject') store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) const flows = generators['flow'](5) store.commit('setFlows', flows) expect(store.getters['flows']).toEqual(flows) expect(store.getters['activeFlow']).toEqual(null) expect(store.getters['activeProject']).toEqual(null) const id = 'f2' const project_id = flows.find(f => f.id == id).project_id store.commit('setProjects', [ { id: project_id, name: 'Some Project Name' } ]) await store.dispatch('activateFlow', id) await expect(data.actions['activateProject']).toHaveBeenCalledTimes(1) expect(store.getters['activeFlow'].id).toEqual(id) expect(store.getters['activeProject'].id).toEqual(project_id) spy.mockRestore() }) it('sets the activeFlow from a flow_group_id', async () => { expect(store.getters['activeFlow'].id).toEqual(state['activeFlow'].id) const id = 'fg-111' // Known flow group id await store.dispatch('activateFlow', id) expect(store.getters['activeFlow'].id).toEqual('f-111') }) it("re-fetches and sets both the flows and the activeFlow if the flow doesn't exist in the store", async () => { expect(store.getters['activeFlow'].id).toEqual(state['activeFlow'].id) const id = 'f-111' // Known flow id expect(state['activeFlow'].id).not.toEqual(id) expect(store.getters['flows'].find(p => p.id == id)).toBeFalsy() await store.dispatch('activateFlow', id) expect(store.getters['activeFlow'].id).toEqual(id) }) it("throws an error if the flow doesn't exist in the store and can't be fetched", async () => { expect(store.getters['flows']).toEqual(state['flows']) const id = 'f-222' // Unknown flow id expect(store.getters['flows'].find(f => f.id == id)).toBeFalsy() expect(store.dispatch('activateFlow', id)).rejects.toThrow( "Couldn't retrieve flow." ) }) }) describe('activateProject', () => { beforeEach(() => { state = setState() store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) }) it('sets the activeProject from the store when the project exists in the store', async () => { expect(store.getters['activeProject'].id).toEqual( state['activeProject'].id ) const id = store.getters['projects'].find( p => p.id !== state['activeProject'].id ).id // Find the first project in the store that isn't the activeProject expect(store.getters['activeProject'].id).not.toEqual(id) await store.dispatch('activateProject', id) expect(store.getters['activeProject'].id).toEqual(id) }) it("re-fetches and sets both the projects and the activeProject if the project doesn't exist in the store", async () => { expect(store.getters['activeProject'].id).toEqual( state['activeProject'].id ) const id = 'p-111' // Known project id expect(state['activeProject'].id).not.toEqual(id) expect(store.getters['projects'].find(p => p.id == id)).toBeFalsy() await store.dispatch('activateProject', id) expect(store.getters['activeProject'].id).toEqual(id) }) it("throws an error if the project doesn't exist in the store and can't be fetched", async () => { expect(store.getters['projects']).toEqual(state['projects']) const id = 'p-222' // Unknown project id expect(store.getters['projects'].find(p => p.id == id)).toBeFalsy() expect(store.dispatch('activateProject', id)).rejects.toThrow( "Couldn't retrieve project." ) }) }) describe('activateTask', () => { beforeEach(() => { state = setState() store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) }) it('sets the activeTask from the store when the task exists in the store', async () => { expect(store.getters['activeTask'].id).toEqual(state['activeTask'].id) const id = store.getters['tasks'].find( p => p.id !== state['activeTask'].id ).id // Find the first task in the store that isn't the activeTask expect(store.getters['activeTask'].id).not.toEqual(id) await store.dispatch('activateTask', id) expect(store.getters['activeTask'].id).toEqual(id) }) it('sets the activeFlow and activeProject after setting the activeTask', async () => { state = unsetState() const flowSpy = jest.spyOn(data.actions, 'activateFlow') const projectSpy = jest.spyOn(data.actions, 'activateProject') store = new Vuex.Store({ state: state, getters: data.getters, actions: data.actions, mutations: data.mutations }) const tasks = generators['task'](5) store.commit('setTasks', tasks) expect(store.getters['tasks']).toEqual(tasks) expect(store.getters['activeTask']).toEqual(null) expect(store.getters['activeFlow']).toEqual(null) expect(store.getters['activeProject']).toEqual(null) const id = 't2' const flow_id = tasks.find(f => f.id == id).flow_id const project_id = 'p-444' store.commit('setFlows', [ { id: flow_id, flow_group_id: 'fg-444', name: 'Some Flow Name', project_id: project_id } ]) store.commit('setProjects', [ { id: project_id, name: 'Some Project Name' } ]) await store.dispatch('activateTask', id) await expect(data.actions['activateFlow']).toHaveBeenCalledTimes(1) await expect(data.actions['activateProject']).toHaveBeenCalledTimes(1) expect(store.getters['activeTask'].id).toEqual(id) expect(store.getters['activeFlow'].id).toEqual(flow_id) expect(store.getters['activeProject'].id).toEqual(project_id) flowSpy.mockRestore() projectSpy.mockRestore() }) it("re-fetches and sets both the tasks and the activeTask if the task doesn't exist in the store", async () => { expect(store.getters['activeTask'].id).toEqual(state['activeTask'].id) const id = 't-111' // Known task id expect(state['activeTask'].id).not.toEqual(id) expect(store.getters['tasks'].find(p => p.id == id)).toBeFalsy() await store.dispatch('activateTask', id) expect(store.getters['activeTask'].id).toEqual(id) }) it("throws an error if the task doesn't exist in the store and can't be fetched", async () => { expect(store.getters['tasks']).toEqual(state['tasks']) const id = 't-222' // Unknown task id expect(store.getters['tasks'].find(p => p.id == id)).toBeFalsy() expect(store.dispatch('activateTask', id)).rejects.toThrow( "Couldn't retrieve task." ) }) }) }) }) }) ================================================ FILE: tests/unit/store/license.spec.js ================================================ process.env.VUE_APP_BACKEND = 'CLOUD' import license from '@/store/license' import { createLocalVue } from '@vue/test-utils' import Vuex from 'vuex' //simple mock for gql query let mockerror = false jest.mock('logrocket', () => { return { captureException: jest.fn() } }) jest.mock('@/graphql/License/license.gql', () => 'license query string') jest.mock('@/vue-apollo', () => { return { fallbackApolloClient: { query: () => { if (!mockerror) { return { data: { auth_info: { license: {}, permissions: {} } } } } else { return 'error' } } } } }) const localVue = createLocalVue() localVue.use(Vuex) describe('license Vuex Module', () => { const initialLicenseState = () => { return { license: null, permissions: null } } const activePermissions = () => { return ['read:flow', 'read:project'] } const activeLicense = () => { return { id: 'bar', key: 'foo', active: true, terms: { plan: 'SELF_SERVE', users: 1, history_retention_days: 30, flow_concurrency: 1, permissions: ['tier:scheduler', 'plan:self-serve'] } } } describe('License State', () => { it('should initally be unset', () => { const state = license.state expect(state.license).toBe(null) }) }) describe('Permissions State', () => { it('should initially be unset', () => { const state = license.state expect(state.permissions).toBe(null) }) }) describe('getters', () => { describe('when no license is set', () => { let store beforeEach(() => { process.env.VUE_APP_BACKEND = 'CLOUD' const license = require('@/store/license').default store = new Vuex.Store({ state: license.state, getters: license.getters, mutations: license.mutations }) }) it('should return null when the license getter is called', () => { expect(store.getters.license).toBe(null) }) it('should return false if there is no license when the hasLicense getter is called', () => { expect(store.getters.hasLicense).toBe(false) }) it('should return null when the permissions getter is called', () => { expect(store.getters.permissions).toBe(null) }) it('should return undefined when the planType getter is called with no parameters', () => { expect(store.getters.planType()).toBe(undefined) }) it('should return undefined when the planType getter is called with parameters', () => { expect(store.getters.planType('STARTER')).toBe(undefined) }) it('should return undefined when the hasPermission getter is called with no parameters', () => { expect(store.getters.hasPermission()).toBe(undefined) }) it('should return undefined when the hasPermission getter is called with parameters', () => { expect(store.getters.hasPermission('read', 'flow')).toBe(undefined) }) }) describe('when licenses are set', () => { // testing this works in both types of state let store beforeEach(() => { process.env.VUE_APP_BACKEND = 'CLOUD' const license = require('@/store/license').default store = new Vuex.Store({ state: { license: activeLicense(), permissions: activePermissions() }, getters: license.getters, mutations: license.mutations }) }) it('should return the license when the license getter is called', () => { expect(store.getters.license).toStrictEqual(activeLicense()) }) it('should return true if there is a license when the hasLicense getter is called', () => { expect(store.getters.hasLicense).toBe(true) }) it('should return permissions when the permissions getter is called', () => { expect(store.getters.permissions).toStrictEqual(activePermissions()) }) it('should return the current planType when the planType getter is called with no parameters', () => { expect(store.getters.planType()).toBe('SELF_SERVE') }) it('should return true if the planType is equal to the parameter', () => { expect(store.getters.planType('SELF_SERVE')).toBe(true) }) it('should return false when the hasPermission getter is called with no parameters', () => { expect(store.getters.hasPermission()).toBe(false) }) it('should return true when the hasPermission getter is called with parameters', () => { expect(store.getters.hasPermission('read', 'flow')).toBe(true) }) }) describe('permissions in Server', () => { let store beforeEach(() => { process.env.VUE_APP_BACKEND = 'SERVER' const license = require('@/store/license').default store = new Vuex.Store({ state: license.state, getters: license.getters, mutations: license.mutations }) }) it('should return true when the hasPermission getter is called with any args', () => { expect(process.env.VUE_APP_BACKEND).toBe('SERVER') expect(store.getters.hasPermission('read', 'flow')).toBe(true) expect(store.getters.hasPermission('foo', 'bar')).toBe(true) }) }) }) describe('Mutations', () => { let store beforeEach(() => { store = new Vuex.Store({ state: initialLicenseState(), getters: license.getters, mutations: license.mutations }) }) describe('setLicense', () => { it('should set the license', () => { expect(store.getters.hasLicense).toBe(false) store.commit('setLicense', activeLicense()) expect(store.getters.hasLicense).toBe(true) expect(store.getters.license).toStrictEqual(activeLicense()) }) }) describe('unsetLicense', () => { it('should remove the current license', () => { store.commit('setLicense', activeLicense()) expect(store.getters.hasLicense).toBe(true) store.commit('unsetLicense') expect(store.getters.hasLicense).toBe(false) expect(store.getters.license).toEqual(initialLicenseState().license) }) }) describe('setPermissions', () => { it('should set permissions', () => { expect(store.state.permissions).toBe(null) store.commit('setPermissions', activePermissions()) expect(store.state.permissions).toStrictEqual(activePermissions()) }) }) describe('unsetPermissions', () => { it('should remove the current permissions', () => { store.commit('setPermissions', activePermissions()) expect(store.getters.permissions).toStrictEqual(activePermissions()) store.commit('unsetPermissions') expect(store.getters.permissions).toEqual(null) }) }) }) describe('actions', () => { describe('getLicense - no query error', () => { let store beforeEach(() => { mockerror = false store = new Vuex.Store({ state: initialLicenseState(), getters: license.getters, mutations: license.mutations, actions: license.actions }) }) it('should set new license data', async () => { await store.dispatch('getLicense') expect(store.getters.hasLicense).toBe(true) expect(store.getters.license).toEqual({}) }) it('should set permissions', async () => { await store.dispatch('getLicense') expect(store.getters.permissions).toEqual({}) }) }) describe('getLicense - with query error', () => { let store beforeEach(() => { mockerror = true store = new Vuex.Store({ state: initialLicenseState(), getters: license.getters, mutations: license.mutations, actions: license.actions }) }) it('should not set license data', async () => { await store.dispatch('getLicense') expect(store.getters.hasLicense).toBe(false) expect(store.getters.license).toEqual(null) }) it('should not set permissions', async () => { await store.dispatch('getLicense') expect(store.getters.permissions).toEqual(null) }) // it('should call logRocket', async () => { // await store.dispatch('getLicense') // expect(LogRocket.captureException).toHaveBeenCalled() // }) }) }) }) ================================================ FILE: tests/unit/store/mockTokens.js ================================================ const MOCK_AUTHORIZATION_TOKEN = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiYXdkYXdkYWRhLTQ5NDItNDhhNS04YzY2LWFkYXdkYWRhZCIsInRlbmFudF9pZCI6ImF3ZGF3ZGFkLWQ1NzAtNGYwYy05MTFkLWRjYWFiNWNlYzNkMCIsInJvbGUiOiJURU5BTlRfQURNSU4iLCJpYXQiOjE1Njg4NDAyODQsImV4cCI6MTU2ODg0MDI5OSwianRpIjoiMThiNDRhMTgtNTU2Yy00M2YzLTkxOWEtZDAwOWIwNDIzOTA3IiwiaXNzIjoiUHJlZmVjdCBDbG91ZCIsImF1ZCI6IlByZWZlY3QgQ2xvdWQgQVBJIC0gREVWIn0.3rI7CM3lT_u-8PPuTmR78ZlPeRZd4zRxsuIT9GYtr3A' const MOCK_ID_TOKEN = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuaWNrbmFtZSI6InVzZXIiLCJuYW1lIjoidXNlciIsInBpY3R1cmUiOm51bGwsInVwZGF0ZWRfYXQiOiIyMDE5LTA5LTE4VDIwOjU4OjAyLjQ4NFoiLCJlbWFpbCI6InVzZXJAc29tZS5kb21haW4iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6Ly91bml2ZXJzYWwucHJlZmVjdC5pby8iLCJzdWIiOiJhdXRoMHw1ZDUxOWVhYmIyYTZlOTBkYWYwYTMyNDIiLCJhdWQiOiJZWk1SQWx1T3hWYzY5RE9nOXFkbk4tV18ydExnbGd5bSIsImlhdCI6MTU2ODg0MDI4NCwiZXhwIjoxOTMzOTU0MDk5LCJub25jZSI6IkctSVgxY0lvSlNwUXNUZnpCUnpRdzVTUGowUE5yeGxnSnpBSTFNWVlKeW0ifQ.zN_8BiuKrRttJ6sds-Gize9jr8oG6ck7bd0E97QF1wQ' const MOCK_ID_TOKEN_2 = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuaWNrbmFtZSI6InVzZXIiLCJuYW1lIjoidXNlciIsInBpY3R1cmUiOiJodHRwczovL2p3dC5pby9pbWcvcGljX2xvZ28uc3ZnIiwidXBkYXRlZF9hdCI6IjIwMTktMDktMThUMjA6NTg6MDIuNDg0WiIsImVtYWlsIjoidXNlckBzb21lLmRvbWFpbiIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJpc3MiOiJodHRwczovL3VuaXZlcnNhbC5wcmVmZWN0LmlvLyIsInN1YiI6ImF1dGgwfDVkNTE5ZWFiYjJhNmU5MGRhZjBhMzI0MiIsImF1ZCI6IllaTVJBbHVPeFZjNjlET2c5cWRuTi1XXzJ0TGdsZ3ltIiwiaWF0IjoxNTY4ODQwMjg0LCJleHAiOjE5MzM5NTQwOTksIm5vbmNlIjoiRy1JWDFjSW9KU3BRc1RmekJSelF3NVNQajBQTnJ4bGdKekFJMU1ZWUp5bSJ9.dF8Vrje0Gkl0bxRlCU8qwQ9nUum-NY9hHWpSJ9yrWMI' const MOCK_REFRESH_TOKEN = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhY2Nlc3NfdG9rZW5faWQiOiIxOGI0NGExOC01NTZjLTQzZjMtOTE5YS1kMDA5YjA0MjM5MDciLCJyb2xlIjoiUkVGUkVTSCIsImlhdCI6MTU2ODg0MDI4NSwiZXhwIjoxNTY5NDQwMjg0LCJqdGkiOiJlY2JiZTQxMy01ZTc4LTRjNzMtYjk3Ni0xYmEyYTE0YTc2OTgiLCJpc3MiOiJQcmVmZWN0IENsb3VkIiwiYXVkIjoiUHJlZmVjdCBDbG91ZCBBUEkgLSBERVYifQ.lTttZvW0uPMIkkaFrsGqmd25NUkkJP69PLwY-_Oky5VMptSVonoijwQXp0iXuzIfiJK27fwwLjbRtjAhH0c4Ns4FrzowozrP4U3TJbK0gBPbxqLSHQe5QBXCvTW5Pu_MVZAjU27Vw5ePQkkfDkoNJvIQ_Boce-uwU_oXagYZtEvprUcmSbvyz1G8Nmd9URlPYqiwpoUiywR1_fJGL3E6X9sa6Jbl8mMbiaL6ybFW_N9IPCIE2KZFYxhyYXNha_UmPqk_zQWRM8Xt4Ze-e2ePzoHjKwIugHgjv0o7CWHJwJEGM5rDbBIX91klfBpmpFchW_tCH34nH-5BsyfgR9wtaQ' const MOCK_PREFECT_AUTH_PAYLOAD = { access_token: MOCK_AUTHORIZATION_TOKEN, refresh_token: MOCK_REFRESH_TOKEN, expires_at: '2019-11-28T05:52:27.377857+00:00' } export { MOCK_AUTHORIZATION_TOKEN, MOCK_ID_TOKEN, MOCK_ID_TOKEN_2, MOCK_REFRESH_TOKEN, MOCK_PREFECT_AUTH_PAYLOAD } ================================================ FILE: tests/unit/store/refresh.spec.js ================================================ import refresh from '@/store/refresh' import { createLocalVue } from '@vue/test-utils' import Vuex from 'vuex' const localVue = createLocalVue() localVue.use(Vuex) describe('Refresh Vuex Module', () => { const initialState = () => { return { componentKey: 0 } } describe('State', () => { it('should be initally be set to 0', () => { const state = refresh.state expect(state.componentKey).toBe(0) }) }) describe('getters', () => { let store store = new Vuex.Store({ state: initialState(), getters: refresh.getters, mutations: refresh.mutations }) test('the componentKey getter returns 0 in intial state', () => { expect(store.getters.componentKey).toBe(0) }) }) describe('mutations', () => { let store store = new Vuex.Store({ state: initialState(), getters: refresh.getters, mutations: refresh.mutations }) test('the add mutation increase the componentKey by 1', () => { expect(store.getters.componentKey).toBe(0) store.commit('add') expect(store.getters.componentKey).toBe(1) }) }) }) ================================================ FILE: tests/unit/store/sidenav.spec.js ================================================ import sideNav from '@/store/sideNav' import { createLocalVue } from '@vue/test-utils' import Vuex from 'vuex' const localVue = createLocalVue() localVue.use(Vuex) describe('sideNav Vuex Module', () => { const initialState = () => { return { open: false } } const openState = () => { return { open: true } } describe('State', () => { it('should be initally set to false', () => { const state = sideNav.state expect(state.open).toBe(false) }) }) describe('getters', () => { let store store = new Vuex.Store({ state: initialState(), getters: sideNav.getters, mutations: sideNav.mutations }) it('isOpen should return false in initialState', () => { expect(store.getters.isOpen).toBe(store.state.open) }) store = new Vuex.Store({ state: openState(), getters: sideNav.getters, mutations: sideNav.mutations }) it('isOpen should return true in openState', () => { expect(store.getters.isOpen).toBe(store.state.open) }) }) describe('Mutations', () => { let store beforeEach(() => { store = new Vuex.Store({ state: initialState(), getters: sideNav.getters, actions: sideNav.actions, mutations: sideNav.mutations }) }) describe('open', () => { it('should set open to true', () => { //making sure isOpen is set to false before we call 'open' store.commit('close') expect(store.getters['isOpen']).toBe(false) store.commit('open') expect(store.getters['isOpen']).toBe(true) }) it('leave open as true', () => { //making sure isOpen is true to check calling 'open' doesn't change state store.commit('open') expect(store.getters['isOpen']).toBe(true) store.commit('open') expect(store.getters['isOpen']).toBe(true) }) }) describe('close', () => { it('should set open to false', () => { //making sure isOpen is set to true before we call 'close' store.commit('open') expect(store.getters['isOpen']).toBe(true) store.commit('close') expect(store.getters['isOpen']).toBe(false) }) it('should leave open as false', () => { //making sure isOpen is false to check calling 'close' doesn't change state store.commit('close') expect(store.getters['isOpen']).toBe(false) store.commit('close') expect(store.getters['isOpen']).toBe(false) }) }) describe('toggle', () => { it('should switch to the opposite state', () => { //making sure toggle changes state irrespective of what isOpen is initially set to expect(store.getters['isOpen']).toBe(false) store.commit('toggle') expect(store.getters['isOpen']).toBe(true) store.commit('toggle') expect(store.getters['isOpen']).toBe(false) }) }) }) }) ================================================ FILE: tests/unit/store/tenant.spec.js ================================================ jest.mock('@/auth/index.js') import tenant from '@/store/tenant' import { createLocalVue } from '@vue/test-utils' import Vuex from 'vuex' const localVue = createLocalVue() localVue.use(Vuex) jest.mock('@/middleware/prefectAuth', () => { return { prefectTenants: jest.fn(), prefectRefresh: jest.fn() } }) import { prefectTenants } from '@/middleware/prefectAuth' jest.mock( '@/graphql/Tenant/tenant-token.gql', () => 'tenant token mutation string' ) const mockUpdate = jest.fn() jest.mock('@/vue-apollo', () => { return { fallbackApolloClient: { mutate: settings => { mockUpdate(settings.variables.settings) return { data: { tenant: 1 } } } } } }) jest.mock( '@/graphql/Tenant/membership.gql', () => 'tenant membership query string' ) jest.mock('@/graphql/Mutations/update-tenant-settings.gql', () => 'gql string') describe('tenant Vuex Module', () => { const initialTenantState = () => { return { defaultTenant: null, tenant: { id: null, name: null, info: null, slug: null, role: null, settings: {}, prefectAdminSettings: {}, licenses: [], stripe_customer: null }, tenantIsSet: false, tenants: [] } } const loggedinTenantState = () => { return { defaultTenant: { name: 'TestTenant', slug: 'test', id: 'XXXXXXXXXX' }, tenant: { id: 'd38b31a7-d570-4f0c-911d-dcaab5cec3d0', name: 'Test Technologies Inc.', info: null, slug: 'test', role: 'TENANT_ADMIN', settings: { teamNamed: true, agreedToLicense: false }, prefectAdminSettings: {}, licenses: [{ active: true, product: 'Prefect Cloud Platform' }] }, tenantIsSet: true, tenants: [ { name: 'TestTenant', slug: 'test', id: 'XXXXXXXXXX' }, { name: 'TestTenant2', slug: 'testy', id: 'YYYYYYYYY' }, { id: 'd38b31a7-d570-4f0c-911d-dcaab5cec3d0', name: 'Test Technologies Inc.', info: null, slug: 'test', role: 'TENANT_ADMIN', settings: { teamNamed: true, agreedToLicense: false }, prefectAdminSettings: {}, licenses: [{ active: true, product: 'Prefect Cloud Platform' }] } ] } } describe('State', () => { it('should hold tenant info)', () => { const state = tenant.state expect(state.defaultTenant).toBe(null) expect(state.tenant.id).toBe(null) expect(state.tenant.name).toBe(null) expect(state.tenant.info).toBe(null) expect(state.tenant.slug).toBe(null) expect(state.tenant.role).toBe(null) expect(Object.keys(state.tenant.settings).length).toBe(0) expect(state.tenant.licenses.length).toBe(0) expect(state.tenantIsSet).toBe(false) expect(state.tenants.length).toBe(0) }) }) describe('getters', () => { let store beforeEach(() => { store = new Vuex.Store({ state: loggedinTenantState(), getters: tenant.getters, actions: tenant.actions, mutations: tenant.mutations }) }) test('tenant getter should return logged in tenant details', () => { expect(store.getters.tenant).toEqual(loggedinTenantState().tenant) }) test('tenantIsSet getter should return true if the tenant is set', () => { expect(store.getters.tenantIsSet).toBe(true) }) test('defaultTenant getter should return the defaultTenant', () => { expect(store.getters.defaultTenant.slug).toEqual('test') expect(store.getters.defaultTenant).toEqual( loggedinTenantState().defaultTenant ) }) test('role getter should return the role', () => { expect(store.getters.role).toEqual('TENANT_ADMIN') }) test('tenants getter should return an array of tenant objects', () => { expect(store.getters.tenants[0].slug).toEqual('test') expect(store.getters.tenants).toEqual(loggedinTenantState().tenants) }) }) describe('Mutations', () => { let store beforeEach(() => { store = new Vuex.Store({ state: initialTenantState(), getters: tenant.getters, actions: tenant.actions, mutations: tenant.mutations }) }) describe('setDefaultTenant', () => { it('should set the defaultTenant', () => { const tenant = loggedinTenantState().tenant store.commit('setDefaultTenant', tenant) expect(store.getters['defaultTenant']).toEqual( loggedinTenantState().tenant ) }) it('should throw an error if passed an invalid tenant', () => { expect(() => store.commit('setDefaultTenant', [1, 2, 3])).toThrow( 'passed invalid or empty tenant object' ) }) it('should throw an error if passed no tenant', () => { expect(() => store.commit('setDefaultTenant')).toThrow( 'passed invalid or empty tenant object' ) }) it('should throw an error if passed an empty tenant', () => { expect(() => store.commit('setDefaultTenant', {})).toThrow( 'passed invalid or empty tenant object' ) }) }) describe('setTenant', () => { it('should set tenantIsSet to true', () => { store.commit('setTenant', loggedinTenantState().tenant) expect(store.getters['tenantIsSet']).toBe(true) expect(store.getters['tenant']).toEqual(loggedinTenantState().tenant) }) it('should throw an error if given no tenant', () => { store.commit('unsetTenant') expect(() => store.commit('setTenant')).toThrow( 'passed invalid or empty tenant object' ) }) it('should throw an error if given an empty tenant', () => { store.commit('unsetTenant') expect(() => store.commit('setTenant', {})).toThrow( 'passed invalid or empty tenant object' ) }) }) describe('setTenants', () => { it('should set the tenants array', () => { const tenants = loggedinTenantState().tenants store.commit('setTenants', tenants) expect(store.getters['tenants'][0]).toEqual(tenants[0]) }) it('should throw an error if given no tenants array', () => { store.commit('unsetTenants') expect(() => store.commit('setTenants')).toThrow( 'passed invalid or empty tenant array' ) }) it('should throw an error if given an empty tenants array', () => { store.commit('unsetTenants') expect(() => store.commit('setTenants', [])).toThrow( 'passed invalid or empty tenant array' ) }) }) describe('unsetTenant', () => { it('should set tenantIsSet to false', () => { //Make sure store is in logged in state store.commit('setTenant', loggedinTenantState().tenant) expect(store.getters['tenant']).toEqual(loggedinTenantState().tenant) store.commit('unsetTenant') expect(store.getters['tenantIsSet']).toBe(false) expect(store.getters['tenant']).toEqual(initialTenantState().tenant) }) }) describe('unsetTenants', () => { it('should set tenants to an empty array', () => { //Make sure store is in logged in state store.commit('setTenants', loggedinTenantState().tenants) expect(store.getters['tenants']).toEqual(loggedinTenantState().tenants) store.commit('unsetTenants') expect(store.getters['tenants']).toEqual([]) }) }) describe('updateTenantSettings', () => { it('should update the settings in the store and leave the rest of the tenant as is', () => { //Make sure store is in logged in state store.commit('setTenant', loggedinTenantState().tenant) expect(store.getters['tenant']).toEqual(loggedinTenantState().tenant) expect(store.getters['tenant'].settings.agreedToLicense).toEqual(false) expect(store.getters['tenantIsSet']).toEqual( loggedinTenantState().tenantIsSet ) store.commit('updateTenantSettings', { agreedToLicense: true }) expect(store.getters['tenant']).toEqual({ ...loggedinTenantState().tenant, settings: { agreedToLicense: true } }) }) it('should throw an error message if no settings are passed', () => { expect(() => store.commit('updateTenantSettings')).toThrow( 'passed invalid or empty settings object' ) }) }) }) describe('actions', () => { describe('getTenants - no query error', () => { let store beforeEach(() => { store = new Vuex.Store({ state: initialTenantState(), getters: tenant.getters, mutations: tenant.mutations, actions: tenant.actions }) }) it('should call the prefectTenants method', async () => { await store.dispatch('getTenants') expect(prefectTenants).toHaveBeenCalled() }) it('should set tenants', async () => { const tenantsArray = [{ name: 'boo', id: '12345' }] prefectTenants.mockReturnValueOnce(tenantsArray) await store.dispatch('getTenants') expect(store.getters.tenants).toEqual(tenantsArray) }) it('should return tenants', async () => { const tenantsArray = [{ name: 'boo', id: '12345' }] prefectTenants.mockReturnValueOnce(tenantsArray) const returnedTenants = await store.dispatch('getTenants') expect(returnedTenants).toEqual([{ name: 'boo', id: '12345' }]) }) }) describe('setCurrentTenant - Server', () => { let store beforeEach(() => { store = new Vuex.Store({ state: initialTenantState(), getters: tenant.getters, mutations: tenant.mutations, actions: tenant.actions }) }) it('should throw an error if no slug is provided', () => { expect(store.dispatch('setCurrentTenant', false)).rejects.toThrow( 'No slug was provided when trying to set the current tenant' ) }) it('should call getTenants if the passed tenant is not present in the store', async () => { expect(store.getters.tenant.slug).toBe(null) expect(store.getters.tenant.name).toBe(null) expect(store.getters.tenant.id).toBe(null) const tenantsArray = [ { name: 'boo', id: '12345', slug: 'team2' }, { name: 'anotherTenant', id: '45678' } ] prefectTenants.mockReturnValueOnce(tenantsArray) await store.dispatch('setCurrentTenant', 'team2') expect(store.getters.tenant.slug).toEqual('team2') expect(store.getters.tenant.name).toEqual('boo') expect(store.getters.tenant.id).toEqual('12345') }) it('should throw an error if the requested tenant does not exist', async () => { expect(store.getters.tenant.slug).toBe(null) const tenantsArray = [{ name: 'boo', id: '12345', slug: 'team2' }] prefectTenants.mockReturnValueOnce(tenantsArray) expect(store.dispatch('setCurrentTenant', 'team3')).rejects.toThrow( "Error: Unable to set current tenant: tenant doesn't exist" ) }) it('should set the tenant role to TENANT_ADMIN', async () => { //All tenants need an admin - for tenants in server with only one member, that member's role should be admin expect(store.getters.tenant.slug).toBe(null) const tenantsArray = [{ name: 'boo', id: '12345', slug: 'team2' }] prefectTenants.mockReturnValueOnce(tenantsArray) await store.dispatch('setCurrentTenant', 'team2') expect(store.getters.role).toEqual('TENANT_ADMIN') }) it('should return the tenant', async () => { const tenantsArray = [{ name: 'boo', id: '12345', slug: 'team2' }] prefectTenants.mockReturnValueOnce(tenantsArray) expect(await store.dispatch('setCurrentTenant', 'team2')).toEqual({ id: '12345', name: 'boo', role: 'TENANT_ADMIN', slug: 'team2' }) }) }) describe('setCurrentTenant - Cloud', () => { let store beforeEach(() => { tenant.actions['auth/updateAuthorization'] = jest.fn() tenant.actions['license/getLicense'] = jest.fn() store = new Vuex.Store({ state: initialTenantState(), getters: { ...tenant.getters, 'api/isCloud': () => true, 'user/memberships': () => [ { tenant: { id: '12345' }, role_detail: { name: 'USER' } }, { tenant: { id: '45678' }, role_detail: { name: 'TENANT_ADMIN' } }, { tenant: { id: '9101112' }, role_detail: { name: 'READ_ONLY_USER' } } ] }, mutations: tenant.mutations, actions: tenant.actions }) }) it('should set the tenant role according to user memberships - USER role', async () => { expect(store.getters.tenant.slug).toBe(null) const tenantsArray = [ { name: 'boo', id: '12345', slug: 'team2' }, { name: 'anotherTeam', id: '45678', slug: 'team3' } ] prefectTenants.mockReturnValueOnce(tenantsArray) await store.dispatch('setCurrentTenant', 'team2') expect(store.getters.role).toEqual('USER') }) it('should set the tenant role according to user memberships - TENANT_ADMIN role', async () => { expect(store.getters.tenant.slug).toBe(null) const tenantsArray = [ { name: 'boo', id: '12345', slug: 'team2' }, { name: 'anotherTeam', id: '45678', slug: 'team3' }, { name: 'aReadOnlyTeam', id: '9101112', slug: 'team1' } ] prefectTenants.mockReturnValueOnce(tenantsArray) await store.dispatch('setCurrentTenant', 'team1') expect(store.getters.role).toEqual('READ_ONLY_USER') }) }) describe('updateTenantSettings', () => { let store beforeEach(() => { tenant.actions.getTenants = jest.fn() store = new Vuex.Store({ state: initialTenantState(), getters: tenant.getters, mutations: tenant.mutations, actions: tenant.actions }) }) it('should throw an error if no settings are given', async () => { expect(store.dispatch('updateTenantSettings')).rejects.toThrow( 'Error: passed invalid or empty settings object' ) }) it('should call the getTenants action when settings are given', async () => { await store.dispatch('updateTenantSettings', { name: 'Tom' }) expect(tenant.actions.getTenants).toBeCalled() }) it('should call the update tenant settings mutation when settings are given', async () => { await store.dispatch('updateTenantSettings', { name: 'Tom' }) expect(mockUpdate).toBeCalledWith({ name: 'Tom' }) }) }) }) }) ================================================ FILE: tests/unit/store/user.spec.js ================================================ import user from '@/store/user' import { createLocalVue } from '@vue/test-utils' import Vuex from 'vuex' const localVue = createLocalVue() localVue.use(Vuex) jest.mock('@/middleware/prefectAuth', () => { null }) jest.mock('@/middleware/prefectAuth', () => { return { prefectUser: jest.fn() } }) import { prefectUser } from '@/middleware/prefectAuth' describe('user Vuex Module', () => { const initialState = () => { return { user: { id: null, email: null, username: null, default_membership_id: null, memberships: null, first_name: '', last_name: '', settings: { timezone: '' } }, oktaUser: { name: null, email: null, picture: null }, userIsSet: false } } const userState = () => { return { user: { id: '12345', email: 'test@test.com', username: 'test123', default_membership_id: '5678', memberships: [ { id: '1112131415', role: 'USER', tenant: { id: 'yyyyy', name: 'test2', slug: 'test2' } }, { id: '5678', role: 'TENANT_ADMIN', tenant: { id: 'xxx', name: 'test1', slug: 'test1' } } ], first_name: 'first', last_name: 'last', settings: { timezone: 'utc', isDark: false } }, oktaUser: { name: 'testtest', email: 'test@test.com', picture: 'linktopicture' }, userIsSet: true } } describe('State', () => { test('userIsSet should initally be set to false', () => { const state = user.state expect(state.userIsSet).toBe(false) }) test('user details should initally be empty', () => { const state = user.state expect(state.user).toEqual({ id: null, email: null, username: null, default_membership_id: null, memberships: null, first_name: '', last_name: '', settings: { timezone: '', isDark: false } }) }) test('oktaUser details should initally be empty', () => { const state = user.state expect(state.oktaUser).toEqual({ name: null, email: null, picture: null }) }) }) describe('getters', () => { let store store = new Vuex.Store({ state: userState(), getters: user.getters, mutations: user.mutations }) test('user should return user details', () => { expect(store.getters.user).toBe(store.state.user) }) test('userIsSet should initially return false', () => { expect(store.getters.userIsSet).toBe(true) }) test('defaultMembershipId should return membership id if user membership id is set', () => { expect(store.getters.defaultMembershipId).toEqual('5678') }) test('oktaUser should return oktaUser details', () => { expect(store.getters.oktaUser).toEqual({ name: 'testtest', email: 'test@test.com', picture: 'linktopicture' }) }) test('timezone should return user timezone', () => { expect(store.getters.timezone).toEqual('utc') }) test('settings should return user settings', () => { expect(store.getters.settings).toEqual({ timezone: 'utc', isDark: false }) }) test('firstName should return user first name', () => { expect(store.getters.firstName).toEqual('first') }) test('lastName should return user last name', () => { expect(store.getters.lastName).toEqual('last') }) test('memberships should return memberships array', () => { expect(store.getters.memberships).toEqual(userState().user.memberships) }) }) describe('mutations', () => { let store beforeEach(() => { store = new Vuex.Store({ state: initialState(), getters: user.getters, mutations: user.mutations }) }) test('user mutation sets the user and updates user is set', () => { expect(store.getters.user).toEqual(initialState().user) expect(store.getters.userIsSet).toBe(false) store.commit('user', userState().user) expect(store.getters.user).toEqual(userState().user) expect(store.getters.user.email).toEqual('test@test.com') expect(store.getters.userIsSet).toBe(true) }) test('setOktaUser mutation sets the okta user', () => { expect(store.getters.oktaUser).toEqual(initialState().oktaUser) store.commit('setOktaUser', userState().oktaUser) expect(store.getters.oktaUser).toEqual(userState().oktaUser) expect(store.getters.oktaUser.email).toEqual('test@test.com') }) test('setUsetSettings mutation sets the user settings', () => { expect(store.getters.user).toEqual(initialState().user) store.commit('setUserSettings', userState().user.settings) expect(store.getters.settings).toEqual(userState().user.settings) expect(store.getters.timezone).toEqual('utc') expect(store.getters.isDark).toEqual(false) }) test('unsetUser mutation un-sets the user and updates user is set', () => { store.commit('user', userState().user) expect(store.getters.user).toEqual(userState().user) expect(store.getters.user.email).toEqual('test@test.com') expect(store.getters.userIsSet).toBe(true) store.commit('unsetUser') expect(store.getters.user).toEqual(initialState().user) expect(store.getters.userIsSet).toBe(false) }) test('unsetOktaUser mutation un-sets the okta user', () => { store.commit('setOktaUser', userState().oktaUser) expect(store.getters.oktaUser).toEqual(userState().oktaUser) expect(store.getters.oktaUser.email).toEqual('test@test.com') store.commit('unsetOktaUser') expect(store.getters.oktaUser).toEqual(initialState().oktaUser) expect(store.getters.oktaUser.email).toEqual(null) }) test('setUserDefaultMembershipId mutation sets the default membership', () => { expect(store.getters.defaultMembershipId).toEqual(null) store.commit('setUserDefaultMembershipId', '5678') expect(store.getters.defaultMembershipId).toEqual('5678') }) }) describe('actions', () => { describe('setDefaultTenant action', () => { let store beforeEach(() => { // Mock the mutations and actions from other stores // that we don't want to // test here user.mutations['tenant/setDefaultTenant'] = jest.fn() store = new Vuex.Store({ state: userState(), getters: { ...user.getters, 'tenant/tenants': () => [ { id: '3333', name: 'test33', slug: 'test33' } ] }, mutations: user.mutations, actions: user.actions }) }) it('sets the default tenant according to the default membership id if available', () => { expect(store.getters.defaultMembershipId).toEqual('5678') store.dispatch('setDefaultTenant') expect( //First argument passed is the user state object, second is the default tenant to set user.mutations['tenant/setDefaultTenant'].mock.calls[0][1] ).toEqual({ id: 'xxx', name: 'test1', slug: 'test1' }) }) it('sets the default tenant according to the first tenant in the memberships array if there is no tenant matching the default membership id', async () => { expect(store.getters.defaultMembershipId).toEqual('5678') store.commit('setUserDefaultMembershipId', '2222') expect(store.getters.defaultMembershipId).toEqual('2222') await store.dispatch('setDefaultTenant') expect( //First argument passed is the user state, second is the default tenant to set user.mutations['tenant/setDefaultTenant'].mock.calls[0][1] ).toEqual({ id: 'yyyyy', name: 'test2', slug: 'test2' }) }) it('sets the default tenant according to the first tenant in the tenants store tenants array if there are no memberships', async () => { store.commit('unsetUser') expect(store.getters.memberships).toEqual(null) await store.dispatch('setDefaultTenant') expect( //First argument passed is the user state, second is the default tenant to set user.mutations['tenant/setDefaultTenant'].mock.calls[0][1] ).toEqual({ id: '3333', name: 'test33', slug: 'test33' }) }) }) describe('getUser action', () => { let store beforeEach(() => { // Mock the mutations and actions from other stores // that we don't want to // test here user.mutations['tenant/setDefaultTenant'] = jest.fn() store = new Vuex.Store({ state: initialState(), getters: user.getters, mutations: user.mutations, actions: user.actions }) }) it('calls prefectUser', async () => { await store.dispatch('getUser') expect(prefectUser).toBeCalled() }) it('set the user', async () => { expect(store.getters.user).toEqual(initialState().user) prefectUser.mockReturnValueOnce(userState().user) await store.dispatch('getUser') expect(store.getters.user).toEqual(userState().user) }) it('calls setDefaultTenant', async () => { await store.dispatch('getUser') expect(user.mutations['tenant/setDefaultTenant']).toBeCalled() }) it('returns the user', async () => { prefectUser.mockReturnValueOnce(userState().user) const returnedUser = await store.dispatch('getUser') expect(returnedUser).toEqual(userState().user) }) }) }) }) ================================================ FILE: vue.config.js ================================================ const WorkerPlugin = require('worker-plugin') const webpack = require('webpack') module.exports = { productionSourceMap: false, chainWebpack: config => { config.module .rule('md') .test(/\.md/) .use('html-loader') .loader('html-loader') .tap(options => { return { ...options, minimize: false } }) .end() config.resolve.symlinks(false) config.output.globalObject('this') config.module .rule('flow') .test(/\.flow$/) .use('ignore-loader') .loader('ignore-loader') .end() // This optimization comes from a long-standing bug with the terser webpack plugin // documented here: https://github.com/webpack-contrib/terser-webpack-plugin/issues/143, // and here: https://github.com/terser/terser/issues/571, // and here: https://github.com/webpack-contrib/terser-webpack-plugin/issues/202 config.optimization.minimizer('terser').tap(args => { args[0].terserOptions = { terserOptions: { parse: { ecma: 8 }, compress: { ecma: 5, warnings: false, comparisons: false, inline: 2, drop_console: true }, mangle: { safari10: true }, output: { ecma: 5, comments: false, ascii_only: true } }, parallel: 4, // This should be changed if we modify the resource class of the Circle jobs running the build step cache: true, sourceMap: false, extractComments: false } return args }) }, configureWebpack: { optimization: { splitChunks: { chunks: 'all', minSize: 30000, maxSize: 1000000, minChunks: 1, maxAsyncRequests: 6, maxInitialRequests: 4, automaticNameDelimiter: '~', cacheGroups: { defaultVendors: { test: /[\\/]node_modules[\\/]/, priority: -10 }, default: { minChunks: 2, priority: -20, reuseExistingChunk: true } } } }, plugins: [ new WorkerPlugin({ sharedWorker: true }), new webpack.ContextReplacementPlugin( /moment[/\\]locale$/, /en-au|en-ca|en-us|en-mx/ ) ] }, pluginOptions: { lintStyleOnBuild: true, stylelint: {}, apollo: { lintGQL: true }, webpackBundleAnalyzer: { analyzerMode: 'disabled' // you can uncomment this line, run npm build, this will generate dist/stats.json which can be viewed here // https://chrisbateman.github.io/webpack-visualizer/ //generateStatsFile: true } }, // Adding this package specically because // the source has 2 nullish coalscent references // that babel isn't transpiling correctly otherwise transpileDependencies: [ '@d3fc/d3fc-axis', 'graphql-language-service-interface', 'graphql-language-service-parser', 'graphql-language-service' ] }