From 97c1d29fb018e541756d9e0057ee31b606684b56 Mon Sep 17 00:00:00 2001 From: foucaud_e Date: Tue, 22 Dec 2020 11:10:20 +0100 Subject: [PATCH] Initial commit --- .flaskenv | 1 + .gitattributes | 2 + .gitignore | 128 + .idea/dataSources.local.xml | 19 + .idea/dataSources.xml | 11 + .../d7e3011e-6dff-4c3c-884e-e07c1a66189d.xml | 901 + .../schema/information_schema.FNRwLQ.meta | 2 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/modules.xml | 8 + .idea/sqldialects.xml | 10 + .idea/vcs.xml | 6 + Procfile | 1 + config.py | 7 + oxyapp/__init__.py | 39 + oxyapp/auth/__init__.py | 5 + oxyapp/auth/routes.py | 63 + oxyapp/bdd_login.py | 9 + oxyapp/database.py | 137 + oxyapp/errors/__init__.py | 5 + oxyapp/errors/handlers.py | 58 + oxyapp/main/__init__.py | 5 + oxyapp/main/routes.py | 485 + oxyapp/static/css/sb-admin-2.css | 10998 +++++++++ oxyapp/static/css/sb-admin-2.min.css | 10 + oxyapp/static/img/favicon.ico | Bin 0 -> 318 bytes oxyapp/static/img/github_profile.png | Bin 0 -> 9739 bytes oxyapp/static/img/man_reading.jpg | Bin 0 -> 82100 bytes oxyapp/static/img/undraw_posting_photo.svg | 1 + oxyapp/static/js/alarm_div_reload.js | 113 + oxyapp/static/js/chart_coeur.js | 129 + oxyapp/static/js/chart_coeur_oxy.js | 145 + oxyapp/static/js/chart_oxy.js | 128 + oxyapp/static/js/gulpfile.js | 145 + oxyapp/static/js/localisation.js | 44 + oxyapp/static/js/sb-admin-2.js | 49 + oxyapp/static/js/sb-admin-2.min.js | 7 + oxyapp/static/scss/_buttons.scss | 52 + oxyapp/static/scss/_cards.scss | 36 + oxyapp/static/scss/_charts.scss | 29 + oxyapp/static/scss/_dropdowns.scss | 21 + oxyapp/static/scss/_error.scss | 52 + oxyapp/static/scss/_footer.scss | 14 + oxyapp/static/scss/_global.scss | 60 + oxyapp/static/scss/_login.scss | 50 + oxyapp/static/scss/_mixins.scss | 1 + oxyapp/static/scss/_navs.scss | 3 + oxyapp/static/scss/_utilities.scss | 7 + oxyapp/static/scss/_variables.scss | 76 + oxyapp/static/scss/navs/_global.scss | 42 + oxyapp/static/scss/navs/_sidebar.scss | 372 + oxyapp/static/scss/navs/_topbar.scss | 130 + oxyapp/static/scss/sb-admin-2.scss | 20 + oxyapp/static/scss/utilities/_animation.scss | 37 + oxyapp/static/scss/utilities/_background.scss | 17 + oxyapp/static/scss/utilities/_border.scss | 7 + oxyapp/static/scss/utilities/_display.scss | 4 + oxyapp/static/scss/utilities/_progress.scss | 3 + oxyapp/static/scss/utilities/_rotate.scss | 7 + oxyapp/static/scss/utilities/_text.scss | 54 + .../vendor/bootstrap/js/bootstrap.bundle.js | 7013 ++++++ .../bootstrap/js/bootstrap.bundle.js.map | 1 + .../bootstrap/js/bootstrap.bundle.min.js | 7 + .../bootstrap/js/bootstrap.bundle.min.js.map | 1 + .../static/vendor/bootstrap/js/bootstrap.js | 4435 ++++ .../vendor/bootstrap/js/bootstrap.js.map | 1 + .../vendor/bootstrap/js/bootstrap.min.js | 7 + .../vendor/bootstrap/js/bootstrap.min.js.map | 1 + .../static/vendor/bootstrap/scss/_alert.scss | 51 + .../static/vendor/bootstrap/scss/_badge.scss | 54 + .../vendor/bootstrap/scss/_breadcrumb.scss | 41 + .../vendor/bootstrap/scss/_button-group.scss | 163 + .../vendor/bootstrap/scss/_buttons.scss | 137 + .../static/vendor/bootstrap/scss/_card.scss | 289 + .../vendor/bootstrap/scss/_carousel.scss | 197 + .../static/vendor/bootstrap/scss/_close.scss | 41 + .../static/vendor/bootstrap/scss/_code.scss | 48 + .../vendor/bootstrap/scss/_custom-forms.scss | 507 + .../vendor/bootstrap/scss/_dropdown.scss | 191 + .../static/vendor/bootstrap/scss/_forms.scss | 330 + .../vendor/bootstrap/scss/_functions.scss | 86 + .../static/vendor/bootstrap/scss/_grid.scss | 52 + .../static/vendor/bootstrap/scss/_images.scss | 42 + .../vendor/bootstrap/scss/_input-group.scss | 193 + .../vendor/bootstrap/scss/_jumbotron.scss | 17 + .../vendor/bootstrap/scss/_list-group.scss | 149 + .../static/vendor/bootstrap/scss/_media.scss | 8 + .../static/vendor/bootstrap/scss/_mixins.scss | 47 + .../static/vendor/bootstrap/scss/_modal.scss | 229 + oxyapp/static/vendor/bootstrap/scss/_nav.scss | 120 + .../static/vendor/bootstrap/scss/_navbar.scss | 294 + .../vendor/bootstrap/scss/_pagination.scss | 73 + .../vendor/bootstrap/scss/_popover.scss | 171 + .../static/vendor/bootstrap/scss/_print.scss | 141 + .../vendor/bootstrap/scss/_progress.scss | 43 + .../static/vendor/bootstrap/scss/_reboot.scss | 483 + .../static/vendor/bootstrap/scss/_root.scss | 19 + .../vendor/bootstrap/scss/_spinners.scss | 55 + .../static/vendor/bootstrap/scss/_tables.scss | 185 + .../static/vendor/bootstrap/scss/_toasts.scss | 44 + .../vendor/bootstrap/scss/_tooltip.scss | 115 + .../vendor/bootstrap/scss/_transitions.scss | 20 + .../static/vendor/bootstrap/scss/_type.scss | 125 + .../vendor/bootstrap/scss/_utilities.scss | 17 + .../vendor/bootstrap/scss/_variables.scss | 1123 + .../vendor/bootstrap/scss/bootstrap-grid.scss | 29 + .../bootstrap/scss/bootstrap-reboot.scss | 12 + .../vendor/bootstrap/scss/bootstrap.scss | 44 + .../vendor/bootstrap/scss/mixins/_alert.scss | 13 + .../scss/mixins/_background-variant.scss | 21 + .../vendor/bootstrap/scss/mixins/_badge.scss | 17 + .../bootstrap/scss/mixins/_border-radius.scss | 63 + .../bootstrap/scss/mixins/_box-shadow.scss | 20 + .../bootstrap/scss/mixins/_breakpoints.scss | 123 + .../bootstrap/scss/mixins/_buttons.scss | 107 + .../vendor/bootstrap/scss/mixins/_caret.scss | 62 + .../bootstrap/scss/mixins/_clearfix.scss | 7 + .../bootstrap/scss/mixins/_deprecate.scss | 10 + .../vendor/bootstrap/scss/mixins/_float.scss | 14 + .../vendor/bootstrap/scss/mixins/_forms.scss | 192 + .../bootstrap/scss/mixins/_gradients.scss | 45 + .../scss/mixins/_grid-framework.scss | 66 + .../vendor/bootstrap/scss/mixins/_grid.scss | 51 + .../vendor/bootstrap/scss/mixins/_hover.scss | 37 + .../vendor/bootstrap/scss/mixins/_image.scss | 36 + .../bootstrap/scss/mixins/_list-group.scss | 21 + .../vendor/bootstrap/scss/mixins/_lists.scss | 7 + .../bootstrap/scss/mixins/_nav-divider.scss | 10 + .../bootstrap/scss/mixins/_pagination.scss | 22 + .../bootstrap/scss/mixins/_reset-text.scss | 17 + .../vendor/bootstrap/scss/mixins/_resize.scss | 6 + .../bootstrap/scss/mixins/_screen-reader.scss | 33 + .../vendor/bootstrap/scss/mixins/_size.scss | 7 + .../bootstrap/scss/mixins/_table-row.scss | 39 + .../bootstrap/scss/mixins/_text-emphasis.scss | 16 + .../bootstrap/scss/mixins/_text-hide.scss | 11 + .../bootstrap/scss/mixins/_text-truncate.scss | 8 + .../bootstrap/scss/mixins/_transition.scss | 16 + .../bootstrap/scss/mixins/_visibility.scss | 8 + .../bootstrap/scss/utilities/_align.scss | 8 + .../bootstrap/scss/utilities/_background.scss | 19 + .../bootstrap/scss/utilities/_borders.scss | 75 + .../bootstrap/scss/utilities/_clearfix.scss | 3 + .../bootstrap/scss/utilities/_display.scss | 26 + .../bootstrap/scss/utilities/_embed.scss | 39 + .../bootstrap/scss/utilities/_flex.scss | 51 + .../bootstrap/scss/utilities/_float.scss | 11 + .../bootstrap/scss/utilities/_overflow.scss | 5 + .../bootstrap/scss/utilities/_position.scss | 32 + .../scss/utilities/_screenreaders.scss | 11 + .../bootstrap/scss/utilities/_shadows.scss | 6 + .../bootstrap/scss/utilities/_sizing.scss | 20 + .../bootstrap/scss/utilities/_spacing.scss | 73 + .../scss/utilities/_stretched-link.scss | 19 + .../bootstrap/scss/utilities/_text.scss | 72 + .../bootstrap/scss/utilities/_visibility.scss | 13 + .../vendor/bootstrap/scss/vendor/_rfs.scss | 204 + oxyapp/static/vendor/chart.js/Chart.bundle.js | 19288 ++++++++++++++++ .../vendor/chart.js/Chart.bundle.min.js | 7 + oxyapp/static/vendor/chart.js/Chart.js | 14680 ++++++++++++ oxyapp/static/vendor/chart.js/Chart.min.js | 7 + .../datatables/dataTables.bootstrap4.css | 206 + .../datatables/dataTables.bootstrap4.js | 184 + .../datatables/dataTables.bootstrap4.min.css | 1 + .../datatables/dataTables.bootstrap4.min.js | 8 + .../vendor/datatables/jquery.dataTables.js | 15296 ++++++++++++ .../datatables/jquery.dataTables.min.js | 166 + .../vendor/fontawesome-free/LICENSE.txt | 34 + .../vendor/fontawesome-free/css/all.css | 4396 ++++ .../vendor/fontawesome-free/css/all.min.css | 5 + .../vendor/fontawesome-free/css/brands.css | 14 + .../fontawesome-free/css/brands.min.css | 5 + .../fontawesome-free/css/fontawesome.css | 4363 ++++ .../fontawesome-free/css/fontawesome.min.css | 5 + .../vendor/fontawesome-free/css/regular.css | 15 + .../fontawesome-free/css/regular.min.css | 5 + .../vendor/fontawesome-free/css/solid.css | 16 + .../vendor/fontawesome-free/css/solid.min.css | 5 + .../fontawesome-free/css/svg-with-js.css | 371 + .../fontawesome-free/css/svg-with-js.min.css | 5 + .../vendor/fontawesome-free/css/v4-shims.css | 2166 ++ .../fontawesome-free/css/v4-shims.min.css | 5 + .../static/vendor/fontawesome-free/js/all.js | 4362 ++++ .../vendor/fontawesome-free/js/all.min.js | 5 + .../vendor/fontawesome-free/js/brands.js | 557 + .../vendor/fontawesome-free/js/brands.min.js | 5 + .../fontawesome-free/js/conflict-detection.js | 991 + .../js/conflict-detection.min.js | 5 + .../vendor/fontawesome-free/js/fontawesome.js | 2452 ++ .../fontawesome-free/js/fontawesome.min.js | 5 + .../vendor/fontawesome-free/js/regular.js | 280 + .../vendor/fontawesome-free/js/regular.min.js | 5 + .../vendor/fontawesome-free/js/solid.js | 1085 + .../vendor/fontawesome-free/js/solid.min.js | 5 + .../vendor/fontawesome-free/js/v4-shims.js | 68 + .../fontawesome-free/js/v4-shims.min.js | 5 + .../fontawesome-free/less/_animated.less | 19 + .../less/_bordered-pulled.less | 16 + .../vendor/fontawesome-free/less/_core.less | 12 + .../fontawesome-free/less/_fixed-width.less | 6 + .../vendor/fontawesome-free/less/_icons.less | 1388 ++ .../vendor/fontawesome-free/less/_larger.less | 27 + .../vendor/fontawesome-free/less/_list.less | 18 + .../vendor/fontawesome-free/less/_mixins.less | 56 + .../less/_rotated-flipped.less | 24 + .../fontawesome-free/less/_screen-reader.less | 5 + .../vendor/fontawesome-free/less/_shims.less | 2062 ++ .../fontawesome-free/less/_stacked.less | 22 + .../fontawesome-free/less/_variables.less | 1400 ++ .../vendor/fontawesome-free/less/brands.less | 22 + .../fontawesome-free/less/fontawesome.less | 16 + .../vendor/fontawesome-free/less/regular.less | 23 + .../vendor/fontawesome-free/less/solid.less | 24 + .../fontawesome-free/less/v4-shims.less | 6 + .../vendor/fontawesome-free/package.json | 81 + .../fontawesome-free/scss/_animated.scss | 20 + .../scss/_bordered-pulled.scss | 20 + .../vendor/fontawesome-free/scss/_core.scss | 21 + .../fontawesome-free/scss/_fixed-width.scss | 6 + .../vendor/fontawesome-free/scss/_icons.scss | 1388 ++ .../vendor/fontawesome-free/scss/_larger.scss | 23 + .../vendor/fontawesome-free/scss/_list.scss | 18 + .../vendor/fontawesome-free/scss/_mixins.scss | 56 + .../scss/_rotated-flipped.scss | 24 + .../fontawesome-free/scss/_screen-reader.scss | 5 + .../vendor/fontawesome-free/scss/_shims.scss | 2062 ++ .../fontawesome-free/scss/_stacked.scss | 31 + .../fontawesome-free/scss/_variables.scss | 1405 ++ .../vendor/fontawesome-free/scss/brands.scss | 22 + .../fontawesome-free/scss/fontawesome.scss | 16 + .../vendor/fontawesome-free/scss/regular.scss | 23 + .../vendor/fontawesome-free/scss/solid.scss | 24 + .../fontawesome-free/scss/v4-shims.scss | 6 + .../fontawesome-free/sprites/brands.svg | 1294 ++ .../fontawesome-free/sprites/regular.svg | 463 + .../vendor/fontawesome-free/sprites/solid.svg | 2878 +++ .../fontawesome-free/svgs/brands/500px.svg | 1 + .../svgs/brands/accessible-icon.svg | 1 + .../fontawesome-free/svgs/brands/accusoft.svg | 1 + .../svgs/brands/acquisitions-incorporated.svg | 1 + .../fontawesome-free/svgs/brands/adn.svg | 1 + .../fontawesome-free/svgs/brands/adobe.svg | 1 + .../fontawesome-free/svgs/brands/adversal.svg | 1 + .../svgs/brands/affiliatetheme.svg | 1 + .../fontawesome-free/svgs/brands/airbnb.svg | 1 + .../fontawesome-free/svgs/brands/algolia.svg | 1 + .../fontawesome-free/svgs/brands/alipay.svg | 1 + .../svgs/brands/amazon-pay.svg | 1 + .../fontawesome-free/svgs/brands/amazon.svg | 1 + .../fontawesome-free/svgs/brands/amilia.svg | 1 + .../fontawesome-free/svgs/brands/android.svg | 1 + .../svgs/brands/angellist.svg | 1 + .../svgs/brands/angrycreative.svg | 1 + .../fontawesome-free/svgs/brands/angular.svg | 1 + .../svgs/brands/app-store-ios.svg | 1 + .../svgs/brands/app-store.svg | 1 + .../fontawesome-free/svgs/brands/apper.svg | 1 + .../svgs/brands/apple-pay.svg | 1 + .../fontawesome-free/svgs/brands/apple.svg | 1 + .../svgs/brands/artstation.svg | 1 + .../svgs/brands/asymmetrik.svg | 1 + .../svgs/brands/atlassian.svg | 1 + .../fontawesome-free/svgs/brands/audible.svg | 1 + .../svgs/brands/autoprefixer.svg | 1 + .../fontawesome-free/svgs/brands/avianex.svg | 1 + .../fontawesome-free/svgs/brands/aviato.svg | 1 + .../fontawesome-free/svgs/brands/aws.svg | 1 + .../fontawesome-free/svgs/brands/bandcamp.svg | 1 + .../svgs/brands/battle-net.svg | 1 + .../svgs/brands/behance-square.svg | 1 + .../fontawesome-free/svgs/brands/behance.svg | 1 + .../svgs/brands/bimobject.svg | 1 + .../svgs/brands/bitbucket.svg | 1 + .../fontawesome-free/svgs/brands/bitcoin.svg | 1 + .../fontawesome-free/svgs/brands/bity.svg | 1 + .../svgs/brands/black-tie.svg | 1 + .../svgs/brands/blackberry.svg | 1 + .../svgs/brands/blogger-b.svg | 1 + .../fontawesome-free/svgs/brands/blogger.svg | 1 + .../svgs/brands/bluetooth-b.svg | 1 + .../svgs/brands/bluetooth.svg | 1 + .../svgs/brands/bootstrap.svg | 1 + .../fontawesome-free/svgs/brands/btc.svg | 1 + .../fontawesome-free/svgs/brands/buffer.svg | 1 + .../svgs/brands/buromobelexperte.svg | 1 + .../svgs/brands/buysellads.svg | 1 + .../svgs/brands/canadian-maple-leaf.svg | 1 + .../svgs/brands/cc-amazon-pay.svg | 1 + .../fontawesome-free/svgs/brands/cc-amex.svg | 1 + .../svgs/brands/cc-apple-pay.svg | 1 + .../svgs/brands/cc-diners-club.svg | 1 + .../svgs/brands/cc-discover.svg | 1 + .../fontawesome-free/svgs/brands/cc-jcb.svg | 1 + .../svgs/brands/cc-mastercard.svg | 1 + .../svgs/brands/cc-paypal.svg | 1 + .../svgs/brands/cc-stripe.svg | 1 + .../fontawesome-free/svgs/brands/cc-visa.svg | 1 + .../svgs/brands/centercode.svg | 1 + .../fontawesome-free/svgs/brands/centos.svg | 1 + .../fontawesome-free/svgs/brands/chrome.svg | 1 + .../svgs/brands/chromecast.svg | 1 + .../svgs/brands/cloudscale.svg | 1 + .../svgs/brands/cloudsmith.svg | 1 + .../svgs/brands/cloudversify.svg | 1 + .../fontawesome-free/svgs/brands/codepen.svg | 1 + .../fontawesome-free/svgs/brands/codiepie.svg | 1 + .../svgs/brands/confluence.svg | 1 + .../svgs/brands/connectdevelop.svg | 1 + .../fontawesome-free/svgs/brands/contao.svg | 1 + .../svgs/brands/cotton-bureau.svg | 1 + .../fontawesome-free/svgs/brands/cpanel.svg | 1 + .../svgs/brands/creative-commons-by.svg | 1 + .../svgs/brands/creative-commons-nc-eu.svg | 1 + .../svgs/brands/creative-commons-nc-jp.svg | 1 + .../svgs/brands/creative-commons-nc.svg | 1 + .../svgs/brands/creative-commons-nd.svg | 1 + .../svgs/brands/creative-commons-pd-alt.svg | 1 + .../svgs/brands/creative-commons-pd.svg | 1 + .../svgs/brands/creative-commons-remix.svg | 1 + .../svgs/brands/creative-commons-sa.svg | 1 + .../brands/creative-commons-sampling-plus.svg | 1 + .../svgs/brands/creative-commons-sampling.svg | 1 + .../svgs/brands/creative-commons-share.svg | 1 + .../svgs/brands/creative-commons-zero.svg | 1 + .../svgs/brands/creative-commons.svg | 1 + .../svgs/brands/critical-role.svg | 1 + .../fontawesome-free/svgs/brands/css3-alt.svg | 1 + .../fontawesome-free/svgs/brands/css3.svg | 1 + .../svgs/brands/cuttlefish.svg | 1 + .../svgs/brands/d-and-d-beyond.svg | 1 + .../fontawesome-free/svgs/brands/d-and-d.svg | 1 + .../fontawesome-free/svgs/brands/dashcube.svg | 1 + .../svgs/brands/delicious.svg | 1 + .../svgs/brands/deploydog.svg | 1 + .../fontawesome-free/svgs/brands/deskpro.svg | 1 + .../fontawesome-free/svgs/brands/dev.svg | 1 + .../svgs/brands/deviantart.svg | 1 + .../fontawesome-free/svgs/brands/dhl.svg | 1 + .../fontawesome-free/svgs/brands/diaspora.svg | 1 + .../fontawesome-free/svgs/brands/digg.svg | 1 + .../svgs/brands/digital-ocean.svg | 1 + .../fontawesome-free/svgs/brands/discord.svg | 1 + .../svgs/brands/discourse.svg | 1 + .../fontawesome-free/svgs/brands/dochub.svg | 1 + .../fontawesome-free/svgs/brands/docker.svg | 1 + .../svgs/brands/draft2digital.svg | 1 + .../svgs/brands/dribbble-square.svg | 1 + .../fontawesome-free/svgs/brands/dribbble.svg | 1 + .../fontawesome-free/svgs/brands/dropbox.svg | 1 + .../fontawesome-free/svgs/brands/drupal.svg | 1 + .../fontawesome-free/svgs/brands/dyalog.svg | 1 + .../svgs/brands/earlybirds.svg | 1 + .../fontawesome-free/svgs/brands/ebay.svg | 1 + .../fontawesome-free/svgs/brands/edge.svg | 1 + .../svgs/brands/elementor.svg | 1 + .../fontawesome-free/svgs/brands/ello.svg | 1 + .../fontawesome-free/svgs/brands/ember.svg | 1 + .../fontawesome-free/svgs/brands/empire.svg | 1 + .../fontawesome-free/svgs/brands/envira.svg | 1 + .../fontawesome-free/svgs/brands/erlang.svg | 1 + .../fontawesome-free/svgs/brands/ethereum.svg | 1 + .../fontawesome-free/svgs/brands/etsy.svg | 1 + .../fontawesome-free/svgs/brands/evernote.svg | 1 + .../svgs/brands/expeditedssl.svg | 1 + .../svgs/brands/facebook-f.svg | 1 + .../svgs/brands/facebook-messenger.svg | 1 + .../svgs/brands/facebook-square.svg | 1 + .../fontawesome-free/svgs/brands/facebook.svg | 1 + .../svgs/brands/fantasy-flight-games.svg | 1 + .../fontawesome-free/svgs/brands/fedex.svg | 1 + .../fontawesome-free/svgs/brands/fedora.svg | 1 + .../fontawesome-free/svgs/brands/figma.svg | 1 + .../fontawesome-free/svgs/brands/firefox.svg | 1 + .../svgs/brands/first-order-alt.svg | 1 + .../svgs/brands/first-order.svg | 1 + .../svgs/brands/firstdraft.svg | 1 + .../fontawesome-free/svgs/brands/flickr.svg | 1 + .../svgs/brands/flipboard.svg | 1 + .../fontawesome-free/svgs/brands/fly.svg | 1 + .../svgs/brands/font-awesome-alt.svg | 1 + .../svgs/brands/font-awesome-flag.svg | 1 + .../svgs/brands/font-awesome-logo-full.svg | 1 + .../svgs/brands/font-awesome.svg | 1 + .../svgs/brands/fonticons-fi.svg | 1 + .../svgs/brands/fonticons.svg | 1 + .../svgs/brands/fort-awesome-alt.svg | 1 + .../svgs/brands/fort-awesome.svg | 1 + .../fontawesome-free/svgs/brands/forumbee.svg | 1 + .../svgs/brands/foursquare.svg | 1 + .../svgs/brands/free-code-camp.svg | 1 + .../fontawesome-free/svgs/brands/freebsd.svg | 1 + .../fontawesome-free/svgs/brands/fulcrum.svg | 1 + .../svgs/brands/galactic-republic.svg | 1 + .../svgs/brands/galactic-senate.svg | 1 + .../svgs/brands/get-pocket.svg | 1 + .../svgs/brands/gg-circle.svg | 1 + .../fontawesome-free/svgs/brands/gg.svg | 1 + .../fontawesome-free/svgs/brands/git-alt.svg | 1 + .../svgs/brands/git-square.svg | 1 + .../fontawesome-free/svgs/brands/git.svg | 1 + .../svgs/brands/github-alt.svg | 1 + .../svgs/brands/github-square.svg | 1 + .../fontawesome-free/svgs/brands/github.svg | 1 + .../svgs/brands/gitkraken.svg | 1 + .../fontawesome-free/svgs/brands/gitlab.svg | 1 + .../fontawesome-free/svgs/brands/gitter.svg | 1 + .../fontawesome-free/svgs/brands/glide-g.svg | 1 + .../fontawesome-free/svgs/brands/glide.svg | 1 + .../fontawesome-free/svgs/brands/gofore.svg | 1 + .../svgs/brands/goodreads-g.svg | 1 + .../svgs/brands/goodreads.svg | 1 + .../svgs/brands/google-drive.svg | 1 + .../svgs/brands/google-play.svg | 1 + .../svgs/brands/google-plus-g.svg | 1 + .../svgs/brands/google-plus-square.svg | 1 + .../svgs/brands/google-plus.svg | 1 + .../svgs/brands/google-wallet.svg | 1 + .../fontawesome-free/svgs/brands/google.svg | 1 + .../fontawesome-free/svgs/brands/gratipay.svg | 1 + .../fontawesome-free/svgs/brands/grav.svg | 1 + .../fontawesome-free/svgs/brands/gripfire.svg | 1 + .../fontawesome-free/svgs/brands/grunt.svg | 1 + .../fontawesome-free/svgs/brands/gulp.svg | 1 + .../svgs/brands/hacker-news-square.svg | 1 + .../svgs/brands/hacker-news.svg | 1 + .../svgs/brands/hackerrank.svg | 1 + .../fontawesome-free/svgs/brands/hips.svg | 1 + .../svgs/brands/hire-a-helper.svg | 1 + .../fontawesome-free/svgs/brands/hooli.svg | 1 + .../fontawesome-free/svgs/brands/hornbill.svg | 1 + .../fontawesome-free/svgs/brands/hotjar.svg | 1 + .../fontawesome-free/svgs/brands/houzz.svg | 1 + .../fontawesome-free/svgs/brands/html5.svg | 1 + .../fontawesome-free/svgs/brands/hubspot.svg | 1 + .../fontawesome-free/svgs/brands/imdb.svg | 1 + .../svgs/brands/instagram.svg | 1 + .../fontawesome-free/svgs/brands/intercom.svg | 1 + .../svgs/brands/internet-explorer.svg | 1 + .../fontawesome-free/svgs/brands/invision.svg | 1 + .../fontawesome-free/svgs/brands/ioxhost.svg | 1 + .../fontawesome-free/svgs/brands/itch-io.svg | 1 + .../svgs/brands/itunes-note.svg | 1 + .../fontawesome-free/svgs/brands/itunes.svg | 1 + .../fontawesome-free/svgs/brands/java.svg | 1 + .../svgs/brands/jedi-order.svg | 1 + .../fontawesome-free/svgs/brands/jenkins.svg | 1 + .../fontawesome-free/svgs/brands/jira.svg | 1 + .../fontawesome-free/svgs/brands/joget.svg | 1 + .../fontawesome-free/svgs/brands/joomla.svg | 1 + .../svgs/brands/js-square.svg | 1 + .../fontawesome-free/svgs/brands/js.svg | 1 + .../fontawesome-free/svgs/brands/jsfiddle.svg | 1 + .../fontawesome-free/svgs/brands/kaggle.svg | 1 + .../fontawesome-free/svgs/brands/keybase.svg | 1 + .../fontawesome-free/svgs/brands/keycdn.svg | 1 + .../svgs/brands/kickstarter-k.svg | 1 + .../svgs/brands/kickstarter.svg | 1 + .../fontawesome-free/svgs/brands/korvue.svg | 1 + .../fontawesome-free/svgs/brands/laravel.svg | 1 + .../svgs/brands/lastfm-square.svg | 1 + .../fontawesome-free/svgs/brands/lastfm.svg | 1 + .../fontawesome-free/svgs/brands/leanpub.svg | 1 + .../fontawesome-free/svgs/brands/less.svg | 1 + .../fontawesome-free/svgs/brands/line.svg | 1 + .../svgs/brands/linkedin-in.svg | 1 + .../fontawesome-free/svgs/brands/linkedin.svg | 1 + .../fontawesome-free/svgs/brands/linode.svg | 1 + .../fontawesome-free/svgs/brands/linux.svg | 1 + .../fontawesome-free/svgs/brands/lyft.svg | 1 + .../fontawesome-free/svgs/brands/magento.svg | 1 + .../svgs/brands/mailchimp.svg | 1 + .../svgs/brands/mandalorian.svg | 1 + .../fontawesome-free/svgs/brands/markdown.svg | 1 + .../fontawesome-free/svgs/brands/mastodon.svg | 1 + .../fontawesome-free/svgs/brands/maxcdn.svg | 1 + .../fontawesome-free/svgs/brands/medapps.svg | 1 + .../fontawesome-free/svgs/brands/medium-m.svg | 1 + .../fontawesome-free/svgs/brands/medium.svg | 1 + .../fontawesome-free/svgs/brands/medrt.svg | 1 + .../fontawesome-free/svgs/brands/meetup.svg | 1 + .../fontawesome-free/svgs/brands/megaport.svg | 1 + .../fontawesome-free/svgs/brands/mendeley.svg | 1 + .../svgs/brands/microsoft.svg | 1 + .../fontawesome-free/svgs/brands/mix.svg | 1 + .../fontawesome-free/svgs/brands/mixcloud.svg | 1 + .../fontawesome-free/svgs/brands/mizuni.svg | 1 + .../fontawesome-free/svgs/brands/modx.svg | 1 + .../fontawesome-free/svgs/brands/monero.svg | 1 + .../fontawesome-free/svgs/brands/napster.svg | 1 + .../fontawesome-free/svgs/brands/neos.svg | 1 + .../fontawesome-free/svgs/brands/nimblr.svg | 1 + .../fontawesome-free/svgs/brands/node-js.svg | 1 + .../fontawesome-free/svgs/brands/node.svg | 1 + .../fontawesome-free/svgs/brands/npm.svg | 1 + .../fontawesome-free/svgs/brands/ns8.svg | 1 + .../svgs/brands/nutritionix.svg | 1 + .../svgs/brands/odnoklassniki-square.svg | 1 + .../svgs/brands/odnoklassniki.svg | 1 + .../svgs/brands/old-republic.svg | 1 + .../fontawesome-free/svgs/brands/opencart.svg | 1 + .../fontawesome-free/svgs/brands/openid.svg | 1 + .../fontawesome-free/svgs/brands/opera.svg | 1 + .../svgs/brands/optin-monster.svg | 1 + .../fontawesome-free/svgs/brands/osi.svg | 1 + .../fontawesome-free/svgs/brands/page4.svg | 1 + .../svgs/brands/pagelines.svg | 1 + .../fontawesome-free/svgs/brands/palfed.svg | 1 + .../fontawesome-free/svgs/brands/patreon.svg | 1 + .../fontawesome-free/svgs/brands/paypal.svg | 1 + .../svgs/brands/penny-arcade.svg | 1 + .../svgs/brands/periscope.svg | 1 + .../svgs/brands/phabricator.svg | 1 + .../svgs/brands/phoenix-framework.svg | 1 + .../svgs/brands/phoenix-squadron.svg | 1 + .../fontawesome-free/svgs/brands/php.svg | 1 + .../svgs/brands/pied-piper-alt.svg | 1 + .../svgs/brands/pied-piper-hat.svg | 1 + .../svgs/brands/pied-piper-pp.svg | 1 + .../svgs/brands/pied-piper.svg | 1 + .../svgs/brands/pinterest-p.svg | 1 + .../svgs/brands/pinterest-square.svg | 1 + .../svgs/brands/pinterest.svg | 1 + .../svgs/brands/playstation.svg | 1 + .../svgs/brands/product-hunt.svg | 1 + .../fontawesome-free/svgs/brands/pushed.svg | 1 + .../fontawesome-free/svgs/brands/python.svg | 1 + .../fontawesome-free/svgs/brands/qq.svg | 1 + .../svgs/brands/quinscape.svg | 1 + .../fontawesome-free/svgs/brands/quora.svg | 1 + .../svgs/brands/r-project.svg | 1 + .../svgs/brands/raspberry-pi.svg | 1 + .../fontawesome-free/svgs/brands/ravelry.svg | 1 + .../fontawesome-free/svgs/brands/react.svg | 1 + .../svgs/brands/reacteurope.svg | 1 + .../fontawesome-free/svgs/brands/readme.svg | 1 + .../fontawesome-free/svgs/brands/rebel.svg | 1 + .../svgs/brands/red-river.svg | 1 + .../svgs/brands/reddit-alien.svg | 1 + .../svgs/brands/reddit-square.svg | 1 + .../fontawesome-free/svgs/brands/reddit.svg | 1 + .../fontawesome-free/svgs/brands/redhat.svg | 1 + .../fontawesome-free/svgs/brands/renren.svg | 1 + .../fontawesome-free/svgs/brands/replyd.svg | 1 + .../svgs/brands/researchgate.svg | 1 + .../svgs/brands/resolving.svg | 1 + .../fontawesome-free/svgs/brands/rev.svg | 1 + .../svgs/brands/rocketchat.svg | 1 + .../fontawesome-free/svgs/brands/rockrms.svg | 1 + .../fontawesome-free/svgs/brands/safari.svg | 1 + .../svgs/brands/salesforce.svg | 1 + .../fontawesome-free/svgs/brands/sass.svg | 1 + .../fontawesome-free/svgs/brands/schlix.svg | 1 + .../fontawesome-free/svgs/brands/scribd.svg | 1 + .../svgs/brands/searchengin.svg | 1 + .../fontawesome-free/svgs/brands/sellcast.svg | 1 + .../fontawesome-free/svgs/brands/sellsy.svg | 1 + .../svgs/brands/servicestack.svg | 1 + .../svgs/brands/shirtsinbulk.svg | 1 + .../fontawesome-free/svgs/brands/shopware.svg | 1 + .../svgs/brands/simplybuilt.svg | 1 + .../fontawesome-free/svgs/brands/sistrix.svg | 1 + .../fontawesome-free/svgs/brands/sith.svg | 1 + .../fontawesome-free/svgs/brands/sketch.svg | 1 + .../fontawesome-free/svgs/brands/skyatlas.svg | 1 + .../fontawesome-free/svgs/brands/skype.svg | 1 + .../svgs/brands/slack-hash.svg | 1 + .../fontawesome-free/svgs/brands/slack.svg | 1 + .../svgs/brands/slideshare.svg | 1 + .../svgs/brands/snapchat-ghost.svg | 1 + .../svgs/brands/snapchat-square.svg | 1 + .../fontawesome-free/svgs/brands/snapchat.svg | 1 + .../svgs/brands/soundcloud.svg | 1 + .../svgs/brands/sourcetree.svg | 1 + .../fontawesome-free/svgs/brands/speakap.svg | 1 + .../svgs/brands/speaker-deck.svg | 1 + .../fontawesome-free/svgs/brands/spotify.svg | 1 + .../svgs/brands/squarespace.svg | 1 + .../svgs/brands/stack-exchange.svg | 1 + .../svgs/brands/stack-overflow.svg | 1 + .../svgs/brands/stackpath.svg | 1 + .../svgs/brands/staylinked.svg | 1 + .../svgs/brands/steam-square.svg | 1 + .../svgs/brands/steam-symbol.svg | 1 + .../fontawesome-free/svgs/brands/steam.svg | 1 + .../svgs/brands/sticker-mule.svg | 1 + .../fontawesome-free/svgs/brands/strava.svg | 1 + .../fontawesome-free/svgs/brands/stripe-s.svg | 1 + .../fontawesome-free/svgs/brands/stripe.svg | 1 + .../svgs/brands/studiovinari.svg | 1 + .../svgs/brands/stumbleupon-circle.svg | 1 + .../svgs/brands/stumbleupon.svg | 1 + .../svgs/brands/superpowers.svg | 1 + .../fontawesome-free/svgs/brands/supple.svg | 1 + .../fontawesome-free/svgs/brands/suse.svg | 1 + .../fontawesome-free/svgs/brands/symfony.svg | 1 + .../svgs/brands/teamspeak.svg | 1 + .../svgs/brands/telegram-plane.svg | 1 + .../fontawesome-free/svgs/brands/telegram.svg | 1 + .../svgs/brands/tencent-weibo.svg | 1 + .../svgs/brands/the-red-yeti.svg | 1 + .../fontawesome-free/svgs/brands/themeco.svg | 1 + .../svgs/brands/themeisle.svg | 1 + .../svgs/brands/think-peaks.svg | 1 + .../svgs/brands/trade-federation.svg | 1 + .../fontawesome-free/svgs/brands/trello.svg | 1 + .../svgs/brands/tripadvisor.svg | 1 + .../svgs/brands/tumblr-square.svg | 1 + .../fontawesome-free/svgs/brands/tumblr.svg | 1 + .../fontawesome-free/svgs/brands/twitch.svg | 1 + .../svgs/brands/twitter-square.svg | 1 + .../fontawesome-free/svgs/brands/twitter.svg | 1 + .../fontawesome-free/svgs/brands/typo3.svg | 1 + .../fontawesome-free/svgs/brands/uber.svg | 1 + .../fontawesome-free/svgs/brands/ubuntu.svg | 1 + .../fontawesome-free/svgs/brands/uikit.svg | 1 + .../svgs/brands/uniregistry.svg | 1 + .../fontawesome-free/svgs/brands/untappd.svg | 1 + .../fontawesome-free/svgs/brands/ups.svg | 1 + .../fontawesome-free/svgs/brands/usb.svg | 1 + .../fontawesome-free/svgs/brands/usps.svg | 1 + .../fontawesome-free/svgs/brands/ussunnah.svg | 1 + .../fontawesome-free/svgs/brands/vaadin.svg | 1 + .../fontawesome-free/svgs/brands/viacoin.svg | 1 + .../svgs/brands/viadeo-square.svg | 1 + .../fontawesome-free/svgs/brands/viadeo.svg | 1 + .../fontawesome-free/svgs/brands/viber.svg | 1 + .../svgs/brands/vimeo-square.svg | 1 + .../fontawesome-free/svgs/brands/vimeo-v.svg | 1 + .../fontawesome-free/svgs/brands/vimeo.svg | 1 + .../fontawesome-free/svgs/brands/vine.svg | 1 + .../fontawesome-free/svgs/brands/vk.svg | 1 + .../fontawesome-free/svgs/brands/vnv.svg | 1 + .../fontawesome-free/svgs/brands/vuejs.svg | 1 + .../fontawesome-free/svgs/brands/waze.svg | 1 + .../fontawesome-free/svgs/brands/weebly.svg | 1 + .../fontawesome-free/svgs/brands/weibo.svg | 1 + .../fontawesome-free/svgs/brands/weixin.svg | 1 + .../svgs/brands/whatsapp-square.svg | 1 + .../fontawesome-free/svgs/brands/whatsapp.svg | 1 + .../fontawesome-free/svgs/brands/whmcs.svg | 1 + .../svgs/brands/wikipedia-w.svg | 1 + .../fontawesome-free/svgs/brands/windows.svg | 1 + .../fontawesome-free/svgs/brands/wix.svg | 1 + .../svgs/brands/wizards-of-the-coast.svg | 1 + .../svgs/brands/wolf-pack-battalion.svg | 1 + .../svgs/brands/wordpress-simple.svg | 1 + .../svgs/brands/wordpress.svg | 1 + .../svgs/brands/wpbeginner.svg | 1 + .../svgs/brands/wpexplorer.svg | 1 + .../fontawesome-free/svgs/brands/wpforms.svg | 1 + .../fontawesome-free/svgs/brands/wpressr.svg | 1 + .../fontawesome-free/svgs/brands/xbox.svg | 1 + .../svgs/brands/xing-square.svg | 1 + .../fontawesome-free/svgs/brands/xing.svg | 1 + .../svgs/brands/y-combinator.svg | 1 + .../fontawesome-free/svgs/brands/yahoo.svg | 1 + .../fontawesome-free/svgs/brands/yammer.svg | 1 + .../svgs/brands/yandex-international.svg | 1 + .../fontawesome-free/svgs/brands/yandex.svg | 1 + .../fontawesome-free/svgs/brands/yarn.svg | 1 + .../fontawesome-free/svgs/brands/yelp.svg | 1 + .../fontawesome-free/svgs/brands/yoast.svg | 1 + .../svgs/brands/youtube-square.svg | 1 + .../fontawesome-free/svgs/brands/youtube.svg | 1 + .../fontawesome-free/svgs/brands/zhihu.svg | 1 + .../svgs/regular/address-book.svg | 1 + .../svgs/regular/address-card.svg | 1 + .../fontawesome-free/svgs/regular/angry.svg | 1 + .../svgs/regular/arrow-alt-circle-down.svg | 1 + .../svgs/regular/arrow-alt-circle-left.svg | 1 + .../svgs/regular/arrow-alt-circle-right.svg | 1 + .../svgs/regular/arrow-alt-circle-up.svg | 1 + .../svgs/regular/bell-slash.svg | 1 + .../fontawesome-free/svgs/regular/bell.svg | 1 + .../svgs/regular/bookmark.svg | 1 + .../svgs/regular/building.svg | 1 + .../svgs/regular/calendar-alt.svg | 1 + .../svgs/regular/calendar-check.svg | 1 + .../svgs/regular/calendar-minus.svg | 1 + .../svgs/regular/calendar-plus.svg | 1 + .../svgs/regular/calendar-times.svg | 1 + .../svgs/regular/calendar.svg | 1 + .../svgs/regular/caret-square-down.svg | 1 + .../svgs/regular/caret-square-left.svg | 1 + .../svgs/regular/caret-square-right.svg | 1 + .../svgs/regular/caret-square-up.svg | 1 + .../svgs/regular/chart-bar.svg | 1 + .../svgs/regular/check-circle.svg | 1 + .../svgs/regular/check-square.svg | 1 + .../fontawesome-free/svgs/regular/circle.svg | 1 + .../svgs/regular/clipboard.svg | 1 + .../fontawesome-free/svgs/regular/clock.svg | 1 + .../fontawesome-free/svgs/regular/clone.svg | 1 + .../svgs/regular/closed-captioning.svg | 1 + .../svgs/regular/comment-alt.svg | 1 + .../svgs/regular/comment-dots.svg | 1 + .../fontawesome-free/svgs/regular/comment.svg | 1 + .../svgs/regular/comments.svg | 1 + .../fontawesome-free/svgs/regular/compass.svg | 1 + .../fontawesome-free/svgs/regular/copy.svg | 1 + .../svgs/regular/copyright.svg | 1 + .../svgs/regular/credit-card.svg | 1 + .../fontawesome-free/svgs/regular/dizzy.svg | 1 + .../svgs/regular/dot-circle.svg | 1 + .../fontawesome-free/svgs/regular/edit.svg | 1 + .../svgs/regular/envelope-open.svg | 1 + .../svgs/regular/envelope.svg | 1 + .../svgs/regular/eye-slash.svg | 1 + .../fontawesome-free/svgs/regular/eye.svg | 1 + .../svgs/regular/file-alt.svg | 1 + .../svgs/regular/file-archive.svg | 1 + .../svgs/regular/file-audio.svg | 1 + .../svgs/regular/file-code.svg | 1 + .../svgs/regular/file-excel.svg | 1 + .../svgs/regular/file-image.svg | 1 + .../svgs/regular/file-pdf.svg | 1 + .../svgs/regular/file-powerpoint.svg | 1 + .../svgs/regular/file-video.svg | 1 + .../svgs/regular/file-word.svg | 1 + .../fontawesome-free/svgs/regular/file.svg | 1 + .../fontawesome-free/svgs/regular/flag.svg | 1 + .../fontawesome-free/svgs/regular/flushed.svg | 1 + .../svgs/regular/folder-open.svg | 1 + .../fontawesome-free/svgs/regular/folder.svg | 1 + .../svgs/regular/font-awesome-logo-full.svg | 1 + .../svgs/regular/frown-open.svg | 1 + .../fontawesome-free/svgs/regular/frown.svg | 1 + .../fontawesome-free/svgs/regular/futbol.svg | 1 + .../fontawesome-free/svgs/regular/gem.svg | 1 + .../fontawesome-free/svgs/regular/grimace.svg | 1 + .../svgs/regular/grin-alt.svg | 1 + .../svgs/regular/grin-beam-sweat.svg | 1 + .../svgs/regular/grin-beam.svg | 1 + .../svgs/regular/grin-hearts.svg | 1 + .../svgs/regular/grin-squint-tears.svg | 1 + .../svgs/regular/grin-squint.svg | 1 + .../svgs/regular/grin-stars.svg | 1 + .../svgs/regular/grin-tears.svg | 1 + .../svgs/regular/grin-tongue-squint.svg | 1 + .../svgs/regular/grin-tongue-wink.svg | 1 + .../svgs/regular/grin-tongue.svg | 1 + .../svgs/regular/grin-wink.svg | 1 + .../fontawesome-free/svgs/regular/grin.svg | 1 + .../svgs/regular/hand-lizard.svg | 1 + .../svgs/regular/hand-paper.svg | 1 + .../svgs/regular/hand-peace.svg | 1 + .../svgs/regular/hand-point-down.svg | 1 + .../svgs/regular/hand-point-left.svg | 1 + .../svgs/regular/hand-point-right.svg | 1 + .../svgs/regular/hand-point-up.svg | 1 + .../svgs/regular/hand-pointer.svg | 1 + .../svgs/regular/hand-rock.svg | 1 + .../svgs/regular/hand-scissors.svg | 1 + .../svgs/regular/hand-spock.svg | 1 + .../svgs/regular/handshake.svg | 1 + .../fontawesome-free/svgs/regular/hdd.svg | 1 + .../fontawesome-free/svgs/regular/heart.svg | 1 + .../svgs/regular/hospital.svg | 1 + .../svgs/regular/hourglass.svg | 1 + .../svgs/regular/id-badge.svg | 1 + .../fontawesome-free/svgs/regular/id-card.svg | 1 + .../fontawesome-free/svgs/regular/image.svg | 1 + .../fontawesome-free/svgs/regular/images.svg | 1 + .../svgs/regular/keyboard.svg | 1 + .../svgs/regular/kiss-beam.svg | 1 + .../svgs/regular/kiss-wink-heart.svg | 1 + .../fontawesome-free/svgs/regular/kiss.svg | 1 + .../svgs/regular/laugh-beam.svg | 1 + .../svgs/regular/laugh-squint.svg | 1 + .../svgs/regular/laugh-wink.svg | 1 + .../fontawesome-free/svgs/regular/laugh.svg | 1 + .../fontawesome-free/svgs/regular/lemon.svg | 1 + .../svgs/regular/life-ring.svg | 1 + .../svgs/regular/lightbulb.svg | 1 + .../svgs/regular/list-alt.svg | 1 + .../fontawesome-free/svgs/regular/map.svg | 1 + .../svgs/regular/meh-blank.svg | 1 + .../svgs/regular/meh-rolling-eyes.svg | 1 + .../fontawesome-free/svgs/regular/meh.svg | 1 + .../svgs/regular/minus-square.svg | 1 + .../svgs/regular/money-bill-alt.svg | 1 + .../fontawesome-free/svgs/regular/moon.svg | 1 + .../svgs/regular/newspaper.svg | 1 + .../svgs/regular/object-group.svg | 1 + .../svgs/regular/object-ungroup.svg | 1 + .../svgs/regular/paper-plane.svg | 1 + .../svgs/regular/pause-circle.svg | 1 + .../svgs/regular/play-circle.svg | 1 + .../svgs/regular/plus-square.svg | 1 + .../svgs/regular/question-circle.svg | 1 + .../svgs/regular/registered.svg | 1 + .../fontawesome-free/svgs/regular/sad-cry.svg | 1 + .../svgs/regular/sad-tear.svg | 1 + .../fontawesome-free/svgs/regular/save.svg | 1 + .../svgs/regular/share-square.svg | 1 + .../svgs/regular/smile-beam.svg | 1 + .../svgs/regular/smile-wink.svg | 1 + .../fontawesome-free/svgs/regular/smile.svg | 1 + .../svgs/regular/snowflake.svg | 1 + .../fontawesome-free/svgs/regular/square.svg | 1 + .../svgs/regular/star-half.svg | 1 + .../fontawesome-free/svgs/regular/star.svg | 1 + .../svgs/regular/sticky-note.svg | 1 + .../svgs/regular/stop-circle.svg | 1 + .../fontawesome-free/svgs/regular/sun.svg | 1 + .../svgs/regular/surprise.svg | 1 + .../svgs/regular/thumbs-down.svg | 1 + .../svgs/regular/thumbs-up.svg | 1 + .../svgs/regular/times-circle.svg | 1 + .../fontawesome-free/svgs/regular/tired.svg | 1 + .../svgs/regular/trash-alt.svg | 1 + .../svgs/regular/user-circle.svg | 1 + .../fontawesome-free/svgs/regular/user.svg | 1 + .../svgs/regular/window-close.svg | 1 + .../svgs/regular/window-maximize.svg | 1 + .../svgs/regular/window-minimize.svg | 1 + .../svgs/regular/window-restore.svg | 1 + .../vendor/fontawesome-free/svgs/solid/ad.svg | 1 + .../svgs/solid/address-book.svg | 1 + .../svgs/solid/address-card.svg | 1 + .../fontawesome-free/svgs/solid/adjust.svg | 1 + .../svgs/solid/air-freshener.svg | 1 + .../svgs/solid/align-center.svg | 1 + .../svgs/solid/align-justify.svg | 1 + .../svgs/solid/align-left.svg | 1 + .../svgs/solid/align-right.svg | 1 + .../fontawesome-free/svgs/solid/allergies.svg | 1 + .../fontawesome-free/svgs/solid/ambulance.svg | 1 + .../american-sign-language-interpreting.svg | 1 + .../fontawesome-free/svgs/solid/anchor.svg | 1 + .../svgs/solid/angle-double-down.svg | 1 + .../svgs/solid/angle-double-left.svg | 1 + .../svgs/solid/angle-double-right.svg | 1 + .../svgs/solid/angle-double-up.svg | 1 + .../svgs/solid/angle-down.svg | 1 + .../svgs/solid/angle-left.svg | 1 + .../svgs/solid/angle-right.svg | 1 + .../fontawesome-free/svgs/solid/angle-up.svg | 1 + .../fontawesome-free/svgs/solid/angry.svg | 1 + .../fontawesome-free/svgs/solid/ankh.svg | 1 + .../fontawesome-free/svgs/solid/apple-alt.svg | 1 + .../fontawesome-free/svgs/solid/archive.svg | 1 + .../fontawesome-free/svgs/solid/archway.svg | 1 + .../svgs/solid/arrow-alt-circle-down.svg | 1 + .../svgs/solid/arrow-alt-circle-left.svg | 1 + .../svgs/solid/arrow-alt-circle-right.svg | 1 + .../svgs/solid/arrow-alt-circle-up.svg | 1 + .../svgs/solid/arrow-circle-down.svg | 1 + .../svgs/solid/arrow-circle-left.svg | 1 + .../svgs/solid/arrow-circle-right.svg | 1 + .../svgs/solid/arrow-circle-up.svg | 1 + .../svgs/solid/arrow-down.svg | 1 + .../svgs/solid/arrow-left.svg | 1 + .../svgs/solid/arrow-right.svg | 1 + .../fontawesome-free/svgs/solid/arrow-up.svg | 1 + .../svgs/solid/arrows-alt-h.svg | 1 + .../svgs/solid/arrows-alt-v.svg | 1 + .../svgs/solid/arrows-alt.svg | 1 + .../solid/assistive-listening-systems.svg | 1 + .../fontawesome-free/svgs/solid/asterisk.svg | 1 + .../vendor/fontawesome-free/svgs/solid/at.svg | 1 + .../fontawesome-free/svgs/solid/atlas.svg | 1 + .../fontawesome-free/svgs/solid/atom.svg | 1 + .../svgs/solid/audio-description.svg | 1 + .../fontawesome-free/svgs/solid/award.svg | 1 + .../svgs/solid/baby-carriage.svg | 1 + .../fontawesome-free/svgs/solid/baby.svg | 1 + .../fontawesome-free/svgs/solid/backspace.svg | 1 + .../fontawesome-free/svgs/solid/backward.svg | 1 + .../fontawesome-free/svgs/solid/bacon.svg | 1 + .../svgs/solid/balance-scale-left.svg | 1 + .../svgs/solid/balance-scale-right.svg | 1 + .../svgs/solid/balance-scale.svg | 1 + .../fontawesome-free/svgs/solid/ban.svg | 1 + .../fontawesome-free/svgs/solid/band-aid.svg | 1 + .../fontawesome-free/svgs/solid/barcode.svg | 1 + .../fontawesome-free/svgs/solid/bars.svg | 1 + .../svgs/solid/baseball-ball.svg | 1 + .../svgs/solid/basketball-ball.svg | 1 + .../fontawesome-free/svgs/solid/bath.svg | 1 + .../svgs/solid/battery-empty.svg | 1 + .../svgs/solid/battery-full.svg | 1 + .../svgs/solid/battery-half.svg | 1 + .../svgs/solid/battery-quarter.svg | 1 + .../svgs/solid/battery-three-quarters.svg | 1 + .../fontawesome-free/svgs/solid/bed.svg | 1 + .../fontawesome-free/svgs/solid/beer.svg | 1 + .../svgs/solid/bell-slash.svg | 1 + .../fontawesome-free/svgs/solid/bell.svg | 1 + .../svgs/solid/bezier-curve.svg | 1 + .../fontawesome-free/svgs/solid/bible.svg | 1 + .../fontawesome-free/svgs/solid/bicycle.svg | 1 + .../fontawesome-free/svgs/solid/biking.svg | 1 + .../svgs/solid/binoculars.svg | 1 + .../fontawesome-free/svgs/solid/biohazard.svg | 1 + .../svgs/solid/birthday-cake.svg | 1 + .../svgs/solid/blender-phone.svg | 1 + .../fontawesome-free/svgs/solid/blender.svg | 1 + .../fontawesome-free/svgs/solid/blind.svg | 1 + .../fontawesome-free/svgs/solid/blog.svg | 1 + .../fontawesome-free/svgs/solid/bold.svg | 1 + .../fontawesome-free/svgs/solid/bolt.svg | 1 + .../fontawesome-free/svgs/solid/bomb.svg | 1 + .../fontawesome-free/svgs/solid/bone.svg | 1 + .../fontawesome-free/svgs/solid/bong.svg | 1 + .../fontawesome-free/svgs/solid/book-dead.svg | 1 + .../svgs/solid/book-medical.svg | 1 + .../fontawesome-free/svgs/solid/book-open.svg | 1 + .../svgs/solid/book-reader.svg | 1 + .../fontawesome-free/svgs/solid/book.svg | 1 + .../fontawesome-free/svgs/solid/bookmark.svg | 1 + .../svgs/solid/border-all.svg | 1 + .../svgs/solid/border-none.svg | 1 + .../svgs/solid/border-style.svg | 1 + .../svgs/solid/bowling-ball.svg | 1 + .../fontawesome-free/svgs/solid/box-open.svg | 1 + .../fontawesome-free/svgs/solid/box.svg | 1 + .../fontawesome-free/svgs/solid/boxes.svg | 1 + .../fontawesome-free/svgs/solid/braille.svg | 1 + .../fontawesome-free/svgs/solid/brain.svg | 1 + .../svgs/solid/bread-slice.svg | 1 + .../svgs/solid/briefcase-medical.svg | 1 + .../fontawesome-free/svgs/solid/briefcase.svg | 1 + .../svgs/solid/broadcast-tower.svg | 1 + .../fontawesome-free/svgs/solid/broom.svg | 1 + .../fontawesome-free/svgs/solid/brush.svg | 1 + .../fontawesome-free/svgs/solid/bug.svg | 1 + .../fontawesome-free/svgs/solid/building.svg | 1 + .../fontawesome-free/svgs/solid/bullhorn.svg | 1 + .../fontawesome-free/svgs/solid/bullseye.svg | 1 + .../fontawesome-free/svgs/solid/burn.svg | 1 + .../fontawesome-free/svgs/solid/bus-alt.svg | 1 + .../fontawesome-free/svgs/solid/bus.svg | 1 + .../svgs/solid/business-time.svg | 1 + .../svgs/solid/calculator.svg | 1 + .../svgs/solid/calendar-alt.svg | 1 + .../svgs/solid/calendar-check.svg | 1 + .../svgs/solid/calendar-day.svg | 1 + .../svgs/solid/calendar-minus.svg | 1 + .../svgs/solid/calendar-plus.svg | 1 + .../svgs/solid/calendar-times.svg | 1 + .../svgs/solid/calendar-week.svg | 1 + .../fontawesome-free/svgs/solid/calendar.svg | 1 + .../svgs/solid/camera-retro.svg | 1 + .../fontawesome-free/svgs/solid/camera.svg | 1 + .../svgs/solid/campground.svg | 1 + .../svgs/solid/candy-cane.svg | 1 + .../fontawesome-free/svgs/solid/cannabis.svg | 1 + .../fontawesome-free/svgs/solid/capsules.svg | 1 + .../fontawesome-free/svgs/solid/car-alt.svg | 1 + .../svgs/solid/car-battery.svg | 1 + .../fontawesome-free/svgs/solid/car-crash.svg | 1 + .../fontawesome-free/svgs/solid/car-side.svg | 1 + .../fontawesome-free/svgs/solid/car.svg | 1 + .../svgs/solid/caret-down.svg | 1 + .../svgs/solid/caret-left.svg | 1 + .../svgs/solid/caret-right.svg | 1 + .../svgs/solid/caret-square-down.svg | 1 + .../svgs/solid/caret-square-left.svg | 1 + .../svgs/solid/caret-square-right.svg | 1 + .../svgs/solid/caret-square-up.svg | 1 + .../fontawesome-free/svgs/solid/caret-up.svg | 1 + .../fontawesome-free/svgs/solid/carrot.svg | 1 + .../svgs/solid/cart-arrow-down.svg | 1 + .../fontawesome-free/svgs/solid/cart-plus.svg | 1 + .../svgs/solid/cash-register.svg | 1 + .../fontawesome-free/svgs/solid/cat.svg | 1 + .../svgs/solid/certificate.svg | 1 + .../fontawesome-free/svgs/solid/chair.svg | 1 + .../svgs/solid/chalkboard-teacher.svg | 1 + .../svgs/solid/chalkboard.svg | 1 + .../svgs/solid/charging-station.svg | 1 + .../svgs/solid/chart-area.svg | 1 + .../fontawesome-free/svgs/solid/chart-bar.svg | 1 + .../svgs/solid/chart-line.svg | 1 + .../fontawesome-free/svgs/solid/chart-pie.svg | 1 + .../svgs/solid/check-circle.svg | 1 + .../svgs/solid/check-double.svg | 1 + .../svgs/solid/check-square.svg | 1 + .../fontawesome-free/svgs/solid/check.svg | 1 + .../fontawesome-free/svgs/solid/cheese.svg | 1 + .../svgs/solid/chess-bishop.svg | 1 + .../svgs/solid/chess-board.svg | 1 + .../svgs/solid/chess-king.svg | 1 + .../svgs/solid/chess-knight.svg | 1 + .../svgs/solid/chess-pawn.svg | 1 + .../svgs/solid/chess-queen.svg | 1 + .../svgs/solid/chess-rook.svg | 1 + .../fontawesome-free/svgs/solid/chess.svg | 1 + .../svgs/solid/chevron-circle-down.svg | 1 + .../svgs/solid/chevron-circle-left.svg | 1 + .../svgs/solid/chevron-circle-right.svg | 1 + .../svgs/solid/chevron-circle-up.svg | 1 + .../svgs/solid/chevron-down.svg | 1 + .../svgs/solid/chevron-left.svg | 1 + .../svgs/solid/chevron-right.svg | 1 + .../svgs/solid/chevron-up.svg | 1 + .../fontawesome-free/svgs/solid/child.svg | 1 + .../fontawesome-free/svgs/solid/church.svg | 1 + .../svgs/solid/circle-notch.svg | 1 + .../fontawesome-free/svgs/solid/circle.svg | 1 + .../fontawesome-free/svgs/solid/city.svg | 1 + .../svgs/solid/clinic-medical.svg | 1 + .../svgs/solid/clipboard-check.svg | 1 + .../svgs/solid/clipboard-list.svg | 1 + .../fontawesome-free/svgs/solid/clipboard.svg | 1 + .../fontawesome-free/svgs/solid/clock.svg | 1 + .../fontawesome-free/svgs/solid/clone.svg | 1 + .../svgs/solid/closed-captioning.svg | 1 + .../svgs/solid/cloud-download-alt.svg | 1 + .../svgs/solid/cloud-meatball.svg | 1 + .../svgs/solid/cloud-moon-rain.svg | 1 + .../svgs/solid/cloud-moon.svg | 1 + .../svgs/solid/cloud-rain.svg | 1 + .../svgs/solid/cloud-showers-heavy.svg | 1 + .../svgs/solid/cloud-sun-rain.svg | 1 + .../fontawesome-free/svgs/solid/cloud-sun.svg | 1 + .../svgs/solid/cloud-upload-alt.svg | 1 + .../fontawesome-free/svgs/solid/cloud.svg | 1 + .../fontawesome-free/svgs/solid/cocktail.svg | 1 + .../svgs/solid/code-branch.svg | 1 + .../fontawesome-free/svgs/solid/code.svg | 1 + .../fontawesome-free/svgs/solid/coffee.svg | 1 + .../fontawesome-free/svgs/solid/cog.svg | 1 + .../fontawesome-free/svgs/solid/cogs.svg | 1 + .../fontawesome-free/svgs/solid/coins.svg | 1 + .../fontawesome-free/svgs/solid/columns.svg | 1 + .../svgs/solid/comment-alt.svg | 1 + .../svgs/solid/comment-dollar.svg | 1 + .../svgs/solid/comment-dots.svg | 1 + .../svgs/solid/comment-medical.svg | 1 + .../svgs/solid/comment-slash.svg | 1 + .../fontawesome-free/svgs/solid/comment.svg | 1 + .../svgs/solid/comments-dollar.svg | 1 + .../fontawesome-free/svgs/solid/comments.svg | 1 + .../svgs/solid/compact-disc.svg | 1 + .../fontawesome-free/svgs/solid/compass.svg | 1 + .../svgs/solid/compress-arrows-alt.svg | 1 + .../fontawesome-free/svgs/solid/compress.svg | 1 + .../svgs/solid/concierge-bell.svg | 1 + .../svgs/solid/cookie-bite.svg | 1 + .../fontawesome-free/svgs/solid/cookie.svg | 1 + .../fontawesome-free/svgs/solid/copy.svg | 1 + .../fontawesome-free/svgs/solid/copyright.svg | 1 + .../fontawesome-free/svgs/solid/couch.svg | 1 + .../svgs/solid/credit-card.svg | 1 + .../fontawesome-free/svgs/solid/crop-alt.svg | 1 + .../fontawesome-free/svgs/solid/crop.svg | 1 + .../fontawesome-free/svgs/solid/cross.svg | 1 + .../svgs/solid/crosshairs.svg | 1 + .../fontawesome-free/svgs/solid/crow.svg | 1 + .../fontawesome-free/svgs/solid/crown.svg | 1 + .../fontawesome-free/svgs/solid/crutch.svg | 1 + .../fontawesome-free/svgs/solid/cube.svg | 1 + .../fontawesome-free/svgs/solid/cubes.svg | 1 + .../fontawesome-free/svgs/solid/cut.svg | 1 + .../fontawesome-free/svgs/solid/database.svg | 1 + .../fontawesome-free/svgs/solid/deaf.svg | 1 + .../fontawesome-free/svgs/solid/democrat.svg | 1 + .../fontawesome-free/svgs/solid/desktop.svg | 1 + .../svgs/solid/dharmachakra.svg | 1 + .../fontawesome-free/svgs/solid/diagnoses.svg | 1 + .../fontawesome-free/svgs/solid/dice-d20.svg | 1 + .../fontawesome-free/svgs/solid/dice-d6.svg | 1 + .../fontawesome-free/svgs/solid/dice-five.svg | 1 + .../fontawesome-free/svgs/solid/dice-four.svg | 1 + .../fontawesome-free/svgs/solid/dice-one.svg | 1 + .../fontawesome-free/svgs/solid/dice-six.svg | 1 + .../svgs/solid/dice-three.svg | 1 + .../fontawesome-free/svgs/solid/dice-two.svg | 1 + .../fontawesome-free/svgs/solid/dice.svg | 1 + .../svgs/solid/digital-tachograph.svg | 1 + .../svgs/solid/directions.svg | 1 + .../fontawesome-free/svgs/solid/divide.svg | 1 + .../fontawesome-free/svgs/solid/dizzy.svg | 1 + .../fontawesome-free/svgs/solid/dna.svg | 1 + .../fontawesome-free/svgs/solid/dog.svg | 1 + .../svgs/solid/dollar-sign.svg | 1 + .../svgs/solid/dolly-flatbed.svg | 1 + .../fontawesome-free/svgs/solid/dolly.svg | 1 + .../fontawesome-free/svgs/solid/donate.svg | 1 + .../svgs/solid/door-closed.svg | 1 + .../fontawesome-free/svgs/solid/door-open.svg | 1 + .../svgs/solid/dot-circle.svg | 1 + .../fontawesome-free/svgs/solid/dove.svg | 1 + .../fontawesome-free/svgs/solid/download.svg | 1 + .../svgs/solid/drafting-compass.svg | 1 + .../fontawesome-free/svgs/solid/dragon.svg | 1 + .../svgs/solid/draw-polygon.svg | 1 + .../svgs/solid/drum-steelpan.svg | 1 + .../fontawesome-free/svgs/solid/drum.svg | 1 + .../svgs/solid/drumstick-bite.svg | 1 + .../fontawesome-free/svgs/solid/dumbbell.svg | 1 + .../svgs/solid/dumpster-fire.svg | 1 + .../fontawesome-free/svgs/solid/dumpster.svg | 1 + .../fontawesome-free/svgs/solid/dungeon.svg | 1 + .../fontawesome-free/svgs/solid/edit.svg | 1 + .../fontawesome-free/svgs/solid/egg.svg | 1 + .../fontawesome-free/svgs/solid/eject.svg | 1 + .../svgs/solid/ellipsis-h.svg | 1 + .../svgs/solid/ellipsis-v.svg | 1 + .../svgs/solid/envelope-open-text.svg | 1 + .../svgs/solid/envelope-open.svg | 1 + .../svgs/solid/envelope-square.svg | 1 + .../fontawesome-free/svgs/solid/envelope.svg | 1 + .../fontawesome-free/svgs/solid/equals.svg | 1 + .../fontawesome-free/svgs/solid/eraser.svg | 1 + .../fontawesome-free/svgs/solid/ethernet.svg | 1 + .../fontawesome-free/svgs/solid/euro-sign.svg | 1 + .../svgs/solid/exchange-alt.svg | 1 + .../svgs/solid/exclamation-circle.svg | 1 + .../svgs/solid/exclamation-triangle.svg | 1 + .../svgs/solid/exclamation.svg | 1 + .../svgs/solid/expand-arrows-alt.svg | 1 + .../fontawesome-free/svgs/solid/expand.svg | 1 + .../svgs/solid/external-link-alt.svg | 1 + .../svgs/solid/external-link-square-alt.svg | 1 + .../svgs/solid/eye-dropper.svg | 1 + .../fontawesome-free/svgs/solid/eye-slash.svg | 1 + .../fontawesome-free/svgs/solid/eye.svg | 1 + .../fontawesome-free/svgs/solid/fan.svg | 1 + .../svgs/solid/fast-backward.svg | 1 + .../svgs/solid/fast-forward.svg | 1 + .../fontawesome-free/svgs/solid/fax.svg | 1 + .../svgs/solid/feather-alt.svg | 1 + .../fontawesome-free/svgs/solid/feather.svg | 1 + .../fontawesome-free/svgs/solid/female.svg | 1 + .../svgs/solid/fighter-jet.svg | 1 + .../fontawesome-free/svgs/solid/file-alt.svg | 1 + .../svgs/solid/file-archive.svg | 1 + .../svgs/solid/file-audio.svg | 1 + .../fontawesome-free/svgs/solid/file-code.svg | 1 + .../svgs/solid/file-contract.svg | 1 + .../fontawesome-free/svgs/solid/file-csv.svg | 1 + .../svgs/solid/file-download.svg | 1 + .../svgs/solid/file-excel.svg | 1 + .../svgs/solid/file-export.svg | 1 + .../svgs/solid/file-image.svg | 1 + .../svgs/solid/file-import.svg | 1 + .../svgs/solid/file-invoice-dollar.svg | 1 + .../svgs/solid/file-invoice.svg | 1 + .../svgs/solid/file-medical-alt.svg | 1 + .../svgs/solid/file-medical.svg | 1 + .../fontawesome-free/svgs/solid/file-pdf.svg | 1 + .../svgs/solid/file-powerpoint.svg | 1 + .../svgs/solid/file-prescription.svg | 1 + .../svgs/solid/file-signature.svg | 1 + .../svgs/solid/file-upload.svg | 1 + .../svgs/solid/file-video.svg | 1 + .../fontawesome-free/svgs/solid/file-word.svg | 1 + .../fontawesome-free/svgs/solid/file.svg | 1 + .../fontawesome-free/svgs/solid/fill-drip.svg | 1 + .../fontawesome-free/svgs/solid/fill.svg | 1 + .../fontawesome-free/svgs/solid/film.svg | 1 + .../fontawesome-free/svgs/solid/filter.svg | 1 + .../svgs/solid/fingerprint.svg | 1 + .../fontawesome-free/svgs/solid/fire-alt.svg | 1 + .../svgs/solid/fire-extinguisher.svg | 1 + .../fontawesome-free/svgs/solid/fire.svg | 1 + .../fontawesome-free/svgs/solid/first-aid.svg | 1 + .../fontawesome-free/svgs/solid/fish.svg | 1 + .../svgs/solid/fist-raised.svg | 1 + .../svgs/solid/flag-checkered.svg | 1 + .../fontawesome-free/svgs/solid/flag-usa.svg | 1 + .../fontawesome-free/svgs/solid/flag.svg | 1 + .../fontawesome-free/svgs/solid/flask.svg | 1 + .../fontawesome-free/svgs/solid/flushed.svg | 1 + .../svgs/solid/folder-minus.svg | 1 + .../svgs/solid/folder-open.svg | 1 + .../svgs/solid/folder-plus.svg | 1 + .../fontawesome-free/svgs/solid/folder.svg | 1 + .../svgs/solid/font-awesome-logo-full.svg | 1 + .../fontawesome-free/svgs/solid/font.svg | 1 + .../svgs/solid/football-ball.svg | 1 + .../fontawesome-free/svgs/solid/forward.svg | 1 + .../fontawesome-free/svgs/solid/frog.svg | 1 + .../svgs/solid/frown-open.svg | 1 + .../fontawesome-free/svgs/solid/frown.svg | 1 + .../svgs/solid/funnel-dollar.svg | 1 + .../fontawesome-free/svgs/solid/futbol.svg | 1 + .../fontawesome-free/svgs/solid/gamepad.svg | 1 + .../fontawesome-free/svgs/solid/gas-pump.svg | 1 + .../fontawesome-free/svgs/solid/gavel.svg | 1 + .../fontawesome-free/svgs/solid/gem.svg | 1 + .../svgs/solid/genderless.svg | 1 + .../fontawesome-free/svgs/solid/ghost.svg | 1 + .../fontawesome-free/svgs/solid/gift.svg | 1 + .../fontawesome-free/svgs/solid/gifts.svg | 1 + .../svgs/solid/glass-cheers.svg | 1 + .../svgs/solid/glass-martini-alt.svg | 1 + .../svgs/solid/glass-martini.svg | 1 + .../svgs/solid/glass-whiskey.svg | 1 + .../fontawesome-free/svgs/solid/glasses.svg | 1 + .../svgs/solid/globe-africa.svg | 1 + .../svgs/solid/globe-americas.svg | 1 + .../svgs/solid/globe-asia.svg | 1 + .../svgs/solid/globe-europe.svg | 1 + .../fontawesome-free/svgs/solid/globe.svg | 1 + .../fontawesome-free/svgs/solid/golf-ball.svg | 1 + .../fontawesome-free/svgs/solid/gopuram.svg | 1 + .../svgs/solid/graduation-cap.svg | 1 + .../svgs/solid/greater-than-equal.svg | 1 + .../svgs/solid/greater-than.svg | 1 + .../fontawesome-free/svgs/solid/grimace.svg | 1 + .../fontawesome-free/svgs/solid/grin-alt.svg | 1 + .../svgs/solid/grin-beam-sweat.svg | 1 + .../fontawesome-free/svgs/solid/grin-beam.svg | 1 + .../svgs/solid/grin-hearts.svg | 1 + .../svgs/solid/grin-squint-tears.svg | 1 + .../svgs/solid/grin-squint.svg | 1 + .../svgs/solid/grin-stars.svg | 1 + .../svgs/solid/grin-tears.svg | 1 + .../svgs/solid/grin-tongue-squint.svg | 1 + .../svgs/solid/grin-tongue-wink.svg | 1 + .../svgs/solid/grin-tongue.svg | 1 + .../fontawesome-free/svgs/solid/grin-wink.svg | 1 + .../fontawesome-free/svgs/solid/grin.svg | 1 + .../svgs/solid/grip-horizontal.svg | 1 + .../svgs/solid/grip-lines-vertical.svg | 1 + .../svgs/solid/grip-lines.svg | 1 + .../svgs/solid/grip-vertical.svg | 1 + .../fontawesome-free/svgs/solid/guitar.svg | 1 + .../fontawesome-free/svgs/solid/h-square.svg | 1 + .../fontawesome-free/svgs/solid/hamburger.svg | 1 + .../fontawesome-free/svgs/solid/hammer.svg | 1 + .../fontawesome-free/svgs/solid/hamsa.svg | 1 + .../svgs/solid/hand-holding-heart.svg | 1 + .../svgs/solid/hand-holding-usd.svg | 1 + .../svgs/solid/hand-holding.svg | 1 + .../svgs/solid/hand-lizard.svg | 1 + .../svgs/solid/hand-middle-finger.svg | 1 + .../svgs/solid/hand-paper.svg | 1 + .../svgs/solid/hand-peace.svg | 1 + .../svgs/solid/hand-point-down.svg | 1 + .../svgs/solid/hand-point-left.svg | 1 + .../svgs/solid/hand-point-right.svg | 1 + .../svgs/solid/hand-point-up.svg | 1 + .../svgs/solid/hand-pointer.svg | 1 + .../fontawesome-free/svgs/solid/hand-rock.svg | 1 + .../svgs/solid/hand-scissors.svg | 1 + .../svgs/solid/hand-spock.svg | 1 + .../svgs/solid/hands-helping.svg | 1 + .../fontawesome-free/svgs/solid/hands.svg | 1 + .../fontawesome-free/svgs/solid/handshake.svg | 1 + .../fontawesome-free/svgs/solid/hanukiah.svg | 1 + .../fontawesome-free/svgs/solid/hard-hat.svg | 1 + .../fontawesome-free/svgs/solid/hashtag.svg | 1 + .../svgs/solid/hat-wizard.svg | 1 + .../fontawesome-free/svgs/solid/haykal.svg | 1 + .../fontawesome-free/svgs/solid/hdd.svg | 1 + .../fontawesome-free/svgs/solid/heading.svg | 1 + .../svgs/solid/headphones-alt.svg | 1 + .../svgs/solid/headphones.svg | 1 + .../fontawesome-free/svgs/solid/headset.svg | 1 + .../svgs/solid/heart-broken.svg | 1 + .../fontawesome-free/svgs/solid/heart.svg | 1 + .../fontawesome-free/svgs/solid/heartbeat.svg | 1 + .../svgs/solid/helicopter.svg | 1 + .../svgs/solid/highlighter.svg | 1 + .../fontawesome-free/svgs/solid/hiking.svg | 1 + .../fontawesome-free/svgs/solid/hippo.svg | 1 + .../fontawesome-free/svgs/solid/history.svg | 1 + .../svgs/solid/hockey-puck.svg | 1 + .../svgs/solid/holly-berry.svg | 1 + .../fontawesome-free/svgs/solid/home.svg | 1 + .../svgs/solid/horse-head.svg | 1 + .../fontawesome-free/svgs/solid/horse.svg | 1 + .../svgs/solid/hospital-alt.svg | 1 + .../svgs/solid/hospital-symbol.svg | 1 + .../fontawesome-free/svgs/solid/hospital.svg | 1 + .../fontawesome-free/svgs/solid/hot-tub.svg | 1 + .../fontawesome-free/svgs/solid/hotdog.svg | 1 + .../fontawesome-free/svgs/solid/hotel.svg | 1 + .../svgs/solid/hourglass-end.svg | 1 + .../svgs/solid/hourglass-half.svg | 1 + .../svgs/solid/hourglass-start.svg | 1 + .../fontawesome-free/svgs/solid/hourglass.svg | 1 + .../svgs/solid/house-damage.svg | 1 + .../fontawesome-free/svgs/solid/hryvnia.svg | 1 + .../fontawesome-free/svgs/solid/i-cursor.svg | 1 + .../fontawesome-free/svgs/solid/ice-cream.svg | 1 + .../fontawesome-free/svgs/solid/icicles.svg | 1 + .../fontawesome-free/svgs/solid/icons.svg | 1 + .../fontawesome-free/svgs/solid/id-badge.svg | 1 + .../svgs/solid/id-card-alt.svg | 1 + .../fontawesome-free/svgs/solid/id-card.svg | 1 + .../fontawesome-free/svgs/solid/igloo.svg | 1 + .../fontawesome-free/svgs/solid/image.svg | 1 + .../fontawesome-free/svgs/solid/images.svg | 1 + .../fontawesome-free/svgs/solid/inbox.svg | 1 + .../fontawesome-free/svgs/solid/indent.svg | 1 + .../fontawesome-free/svgs/solid/industry.svg | 1 + .../fontawesome-free/svgs/solid/infinity.svg | 1 + .../svgs/solid/info-circle.svg | 1 + .../fontawesome-free/svgs/solid/info.svg | 1 + .../fontawesome-free/svgs/solid/italic.svg | 1 + .../fontawesome-free/svgs/solid/jedi.svg | 1 + .../fontawesome-free/svgs/solid/joint.svg | 1 + .../svgs/solid/journal-whills.svg | 1 + .../fontawesome-free/svgs/solid/kaaba.svg | 1 + .../fontawesome-free/svgs/solid/key.svg | 1 + .../fontawesome-free/svgs/solid/keyboard.svg | 1 + .../fontawesome-free/svgs/solid/khanda.svg | 1 + .../fontawesome-free/svgs/solid/kiss-beam.svg | 1 + .../svgs/solid/kiss-wink-heart.svg | 1 + .../fontawesome-free/svgs/solid/kiss.svg | 1 + .../fontawesome-free/svgs/solid/kiwi-bird.svg | 1 + .../fontawesome-free/svgs/solid/landmark.svg | 1 + .../fontawesome-free/svgs/solid/language.svg | 1 + .../svgs/solid/laptop-code.svg | 1 + .../svgs/solid/laptop-medical.svg | 1 + .../fontawesome-free/svgs/solid/laptop.svg | 1 + .../svgs/solid/laugh-beam.svg | 1 + .../svgs/solid/laugh-squint.svg | 1 + .../svgs/solid/laugh-wink.svg | 1 + .../fontawesome-free/svgs/solid/laugh.svg | 1 + .../svgs/solid/layer-group.svg | 1 + .../fontawesome-free/svgs/solid/leaf.svg | 1 + .../fontawesome-free/svgs/solid/lemon.svg | 1 + .../svgs/solid/less-than-equal.svg | 1 + .../fontawesome-free/svgs/solid/less-than.svg | 1 + .../svgs/solid/level-down-alt.svg | 1 + .../svgs/solid/level-up-alt.svg | 1 + .../fontawesome-free/svgs/solid/life-ring.svg | 1 + .../fontawesome-free/svgs/solid/lightbulb.svg | 1 + .../fontawesome-free/svgs/solid/link.svg | 1 + .../fontawesome-free/svgs/solid/lira-sign.svg | 1 + .../fontawesome-free/svgs/solid/list-alt.svg | 1 + .../fontawesome-free/svgs/solid/list-ol.svg | 1 + .../fontawesome-free/svgs/solid/list-ul.svg | 1 + .../fontawesome-free/svgs/solid/list.svg | 1 + .../svgs/solid/location-arrow.svg | 1 + .../fontawesome-free/svgs/solid/lock-open.svg | 1 + .../fontawesome-free/svgs/solid/lock.svg | 1 + .../svgs/solid/long-arrow-alt-down.svg | 1 + .../svgs/solid/long-arrow-alt-left.svg | 1 + .../svgs/solid/long-arrow-alt-right.svg | 1 + .../svgs/solid/long-arrow-alt-up.svg | 1 + .../svgs/solid/low-vision.svg | 1 + .../svgs/solid/luggage-cart.svg | 1 + .../fontawesome-free/svgs/solid/magic.svg | 1 + .../fontawesome-free/svgs/solid/magnet.svg | 1 + .../fontawesome-free/svgs/solid/mail-bulk.svg | 1 + .../fontawesome-free/svgs/solid/male.svg | 1 + .../svgs/solid/map-marked-alt.svg | 1 + .../svgs/solid/map-marked.svg | 1 + .../svgs/solid/map-marker-alt.svg | 1 + .../svgs/solid/map-marker.svg | 1 + .../fontawesome-free/svgs/solid/map-pin.svg | 1 + .../fontawesome-free/svgs/solid/map-signs.svg | 1 + .../fontawesome-free/svgs/solid/map.svg | 1 + .../fontawesome-free/svgs/solid/marker.svg | 1 + .../svgs/solid/mars-double.svg | 1 + .../svgs/solid/mars-stroke-h.svg | 1 + .../svgs/solid/mars-stroke-v.svg | 1 + .../svgs/solid/mars-stroke.svg | 1 + .../fontawesome-free/svgs/solid/mars.svg | 1 + .../fontawesome-free/svgs/solid/mask.svg | 1 + .../fontawesome-free/svgs/solid/medal.svg | 1 + .../fontawesome-free/svgs/solid/medkit.svg | 1 + .../fontawesome-free/svgs/solid/meh-blank.svg | 1 + .../svgs/solid/meh-rolling-eyes.svg | 1 + .../fontawesome-free/svgs/solid/meh.svg | 1 + .../fontawesome-free/svgs/solid/memory.svg | 1 + .../fontawesome-free/svgs/solid/menorah.svg | 1 + .../fontawesome-free/svgs/solid/mercury.svg | 1 + .../fontawesome-free/svgs/solid/meteor.svg | 1 + .../fontawesome-free/svgs/solid/microchip.svg | 1 + .../svgs/solid/microphone-alt-slash.svg | 1 + .../svgs/solid/microphone-alt.svg | 1 + .../svgs/solid/microphone-slash.svg | 1 + .../svgs/solid/microphone.svg | 1 + .../svgs/solid/microscope.svg | 1 + .../svgs/solid/minus-circle.svg | 1 + .../svgs/solid/minus-square.svg | 1 + .../fontawesome-free/svgs/solid/minus.svg | 1 + .../fontawesome-free/svgs/solid/mitten.svg | 1 + .../svgs/solid/mobile-alt.svg | 1 + .../fontawesome-free/svgs/solid/mobile.svg | 1 + .../svgs/solid/money-bill-alt.svg | 1 + .../svgs/solid/money-bill-wave-alt.svg | 1 + .../svgs/solid/money-bill-wave.svg | 1 + .../svgs/solid/money-bill.svg | 1 + .../svgs/solid/money-check-alt.svg | 1 + .../svgs/solid/money-check.svg | 1 + .../fontawesome-free/svgs/solid/monument.svg | 1 + .../fontawesome-free/svgs/solid/moon.svg | 1 + .../svgs/solid/mortar-pestle.svg | 1 + .../fontawesome-free/svgs/solid/mosque.svg | 1 + .../svgs/solid/motorcycle.svg | 1 + .../fontawesome-free/svgs/solid/mountain.svg | 1 + .../svgs/solid/mouse-pointer.svg | 1 + .../fontawesome-free/svgs/solid/mug-hot.svg | 1 + .../fontawesome-free/svgs/solid/music.svg | 1 + .../svgs/solid/network-wired.svg | 1 + .../fontawesome-free/svgs/solid/neuter.svg | 1 + .../fontawesome-free/svgs/solid/newspaper.svg | 1 + .../fontawesome-free/svgs/solid/not-equal.svg | 1 + .../svgs/solid/notes-medical.svg | 1 + .../svgs/solid/object-group.svg | 1 + .../svgs/solid/object-ungroup.svg | 1 + .../fontawesome-free/svgs/solid/oil-can.svg | 1 + .../vendor/fontawesome-free/svgs/solid/om.svg | 1 + .../fontawesome-free/svgs/solid/otter.svg | 1 + .../fontawesome-free/svgs/solid/outdent.svg | 1 + .../fontawesome-free/svgs/solid/pager.svg | 1 + .../svgs/solid/paint-brush.svg | 1 + .../svgs/solid/paint-roller.svg | 1 + .../fontawesome-free/svgs/solid/palette.svg | 1 + .../fontawesome-free/svgs/solid/pallet.svg | 1 + .../svgs/solid/paper-plane.svg | 1 + .../fontawesome-free/svgs/solid/paperclip.svg | 1 + .../svgs/solid/parachute-box.svg | 1 + .../fontawesome-free/svgs/solid/paragraph.svg | 1 + .../fontawesome-free/svgs/solid/parking.svg | 1 + .../fontawesome-free/svgs/solid/passport.svg | 1 + .../svgs/solid/pastafarianism.svg | 1 + .../fontawesome-free/svgs/solid/paste.svg | 1 + .../svgs/solid/pause-circle.svg | 1 + .../fontawesome-free/svgs/solid/pause.svg | 1 + .../fontawesome-free/svgs/solid/paw.svg | 1 + .../fontawesome-free/svgs/solid/peace.svg | 1 + .../fontawesome-free/svgs/solid/pen-alt.svg | 1 + .../fontawesome-free/svgs/solid/pen-fancy.svg | 1 + .../fontawesome-free/svgs/solid/pen-nib.svg | 1 + .../svgs/solid/pen-square.svg | 1 + .../fontawesome-free/svgs/solid/pen.svg | 1 + .../svgs/solid/pencil-alt.svg | 1 + .../svgs/solid/pencil-ruler.svg | 1 + .../svgs/solid/people-carry.svg | 1 + .../svgs/solid/pepper-hot.svg | 1 + .../fontawesome-free/svgs/solid/percent.svg | 1 + .../svgs/solid/percentage.svg | 1 + .../svgs/solid/person-booth.svg | 1 + .../fontawesome-free/svgs/solid/phone-alt.svg | 1 + .../svgs/solid/phone-slash.svg | 1 + .../svgs/solid/phone-square-alt.svg | 1 + .../svgs/solid/phone-square.svg | 1 + .../svgs/solid/phone-volume.svg | 1 + .../fontawesome-free/svgs/solid/phone.svg | 1 + .../svgs/solid/photo-video.svg | 1 + .../svgs/solid/piggy-bank.svg | 1 + .../fontawesome-free/svgs/solid/pills.svg | 1 + .../svgs/solid/pizza-slice.svg | 1 + .../svgs/solid/place-of-worship.svg | 1 + .../svgs/solid/plane-arrival.svg | 1 + .../svgs/solid/plane-departure.svg | 1 + .../fontawesome-free/svgs/solid/plane.svg | 1 + .../svgs/solid/play-circle.svg | 1 + .../fontawesome-free/svgs/solid/play.svg | 1 + .../fontawesome-free/svgs/solid/plug.svg | 1 + .../svgs/solid/plus-circle.svg | 1 + .../svgs/solid/plus-square.svg | 1 + .../fontawesome-free/svgs/solid/plus.svg | 1 + .../fontawesome-free/svgs/solid/podcast.svg | 1 + .../fontawesome-free/svgs/solid/poll-h.svg | 1 + .../fontawesome-free/svgs/solid/poll.svg | 1 + .../fontawesome-free/svgs/solid/poo-storm.svg | 1 + .../fontawesome-free/svgs/solid/poo.svg | 1 + .../fontawesome-free/svgs/solid/poop.svg | 1 + .../fontawesome-free/svgs/solid/portrait.svg | 1 + .../svgs/solid/pound-sign.svg | 1 + .../fontawesome-free/svgs/solid/power-off.svg | 1 + .../fontawesome-free/svgs/solid/pray.svg | 1 + .../svgs/solid/praying-hands.svg | 1 + .../svgs/solid/prescription-bottle-alt.svg | 1 + .../svgs/solid/prescription-bottle.svg | 1 + .../svgs/solid/prescription.svg | 1 + .../fontawesome-free/svgs/solid/print.svg | 1 + .../svgs/solid/procedures.svg | 1 + .../svgs/solid/project-diagram.svg | 1 + .../svgs/solid/puzzle-piece.svg | 1 + .../fontawesome-free/svgs/solid/qrcode.svg | 1 + .../svgs/solid/question-circle.svg | 1 + .../fontawesome-free/svgs/solid/question.svg | 1 + .../fontawesome-free/svgs/solid/quidditch.svg | 1 + .../svgs/solid/quote-left.svg | 1 + .../svgs/solid/quote-right.svg | 1 + .../fontawesome-free/svgs/solid/quran.svg | 1 + .../svgs/solid/radiation-alt.svg | 1 + .../fontawesome-free/svgs/solid/radiation.svg | 1 + .../fontawesome-free/svgs/solid/rainbow.svg | 1 + .../fontawesome-free/svgs/solid/random.svg | 1 + .../fontawesome-free/svgs/solid/receipt.svg | 1 + .../fontawesome-free/svgs/solid/recycle.svg | 1 + .../fontawesome-free/svgs/solid/redo-alt.svg | 1 + .../fontawesome-free/svgs/solid/redo.svg | 1 + .../svgs/solid/registered.svg | 1 + .../svgs/solid/remove-format.svg | 1 + .../fontawesome-free/svgs/solid/reply-all.svg | 1 + .../fontawesome-free/svgs/solid/reply.svg | 1 + .../svgs/solid/republican.svg | 1 + .../fontawesome-free/svgs/solid/restroom.svg | 1 + .../fontawesome-free/svgs/solid/retweet.svg | 1 + .../fontawesome-free/svgs/solid/ribbon.svg | 1 + .../fontawesome-free/svgs/solid/ring.svg | 1 + .../fontawesome-free/svgs/solid/road.svg | 1 + .../fontawesome-free/svgs/solid/robot.svg | 1 + .../fontawesome-free/svgs/solid/rocket.svg | 1 + .../fontawesome-free/svgs/solid/route.svg | 1 + .../svgs/solid/rss-square.svg | 1 + .../fontawesome-free/svgs/solid/rss.svg | 1 + .../svgs/solid/ruble-sign.svg | 1 + .../svgs/solid/ruler-combined.svg | 1 + .../svgs/solid/ruler-horizontal.svg | 1 + .../svgs/solid/ruler-vertical.svg | 1 + .../fontawesome-free/svgs/solid/ruler.svg | 1 + .../fontawesome-free/svgs/solid/running.svg | 1 + .../svgs/solid/rupee-sign.svg | 1 + .../fontawesome-free/svgs/solid/sad-cry.svg | 1 + .../fontawesome-free/svgs/solid/sad-tear.svg | 1 + .../svgs/solid/satellite-dish.svg | 1 + .../fontawesome-free/svgs/solid/satellite.svg | 1 + .../fontawesome-free/svgs/solid/save.svg | 1 + .../fontawesome-free/svgs/solid/school.svg | 1 + .../svgs/solid/screwdriver.svg | 1 + .../fontawesome-free/svgs/solid/scroll.svg | 1 + .../fontawesome-free/svgs/solid/sd-card.svg | 1 + .../svgs/solid/search-dollar.svg | 1 + .../svgs/solid/search-location.svg | 1 + .../svgs/solid/search-minus.svg | 1 + .../svgs/solid/search-plus.svg | 1 + .../fontawesome-free/svgs/solid/search.svg | 1 + .../fontawesome-free/svgs/solid/seedling.svg | 1 + .../fontawesome-free/svgs/solid/server.svg | 1 + .../fontawesome-free/svgs/solid/shapes.svg | 1 + .../svgs/solid/share-alt-square.svg | 1 + .../fontawesome-free/svgs/solid/share-alt.svg | 1 + .../svgs/solid/share-square.svg | 1 + .../fontawesome-free/svgs/solid/share.svg | 1 + .../svgs/solid/shekel-sign.svg | 1 + .../svgs/solid/shield-alt.svg | 1 + .../fontawesome-free/svgs/solid/ship.svg | 1 + .../svgs/solid/shipping-fast.svg | 1 + .../svgs/solid/shoe-prints.svg | 1 + .../svgs/solid/shopping-bag.svg | 1 + .../svgs/solid/shopping-basket.svg | 1 + .../svgs/solid/shopping-cart.svg | 1 + .../fontawesome-free/svgs/solid/shower.svg | 1 + .../svgs/solid/shuttle-van.svg | 1 + .../svgs/solid/sign-in-alt.svg | 1 + .../svgs/solid/sign-language.svg | 1 + .../svgs/solid/sign-out-alt.svg | 1 + .../fontawesome-free/svgs/solid/sign.svg | 1 + .../fontawesome-free/svgs/solid/signal.svg | 1 + .../fontawesome-free/svgs/solid/signature.svg | 1 + .../fontawesome-free/svgs/solid/sim-card.svg | 1 + .../fontawesome-free/svgs/solid/sitemap.svg | 1 + .../fontawesome-free/svgs/solid/skating.svg | 1 + .../svgs/solid/skiing-nordic.svg | 1 + .../fontawesome-free/svgs/solid/skiing.svg | 1 + .../svgs/solid/skull-crossbones.svg | 1 + .../fontawesome-free/svgs/solid/skull.svg | 1 + .../fontawesome-free/svgs/solid/slash.svg | 1 + .../fontawesome-free/svgs/solid/sleigh.svg | 1 + .../fontawesome-free/svgs/solid/sliders-h.svg | 1 + .../svgs/solid/smile-beam.svg | 1 + .../svgs/solid/smile-wink.svg | 1 + .../fontawesome-free/svgs/solid/smile.svg | 1 + .../fontawesome-free/svgs/solid/smog.svg | 1 + .../svgs/solid/smoking-ban.svg | 1 + .../fontawesome-free/svgs/solid/smoking.svg | 1 + .../fontawesome-free/svgs/solid/sms.svg | 1 + .../svgs/solid/snowboarding.svg | 1 + .../fontawesome-free/svgs/solid/snowflake.svg | 1 + .../fontawesome-free/svgs/solid/snowman.svg | 1 + .../fontawesome-free/svgs/solid/snowplow.svg | 1 + .../fontawesome-free/svgs/solid/socks.svg | 1 + .../svgs/solid/solar-panel.svg | 1 + .../svgs/solid/sort-alpha-down-alt.svg | 1 + .../svgs/solid/sort-alpha-down.svg | 1 + .../svgs/solid/sort-alpha-up-alt.svg | 1 + .../svgs/solid/sort-alpha-up.svg | 1 + .../svgs/solid/sort-amount-down-alt.svg | 1 + .../svgs/solid/sort-amount-down.svg | 1 + .../svgs/solid/sort-amount-up-alt.svg | 1 + .../svgs/solid/sort-amount-up.svg | 1 + .../fontawesome-free/svgs/solid/sort-down.svg | 1 + .../svgs/solid/sort-numeric-down-alt.svg | 1 + .../svgs/solid/sort-numeric-down.svg | 1 + .../svgs/solid/sort-numeric-up-alt.svg | 1 + .../svgs/solid/sort-numeric-up.svg | 1 + .../fontawesome-free/svgs/solid/sort-up.svg | 1 + .../fontawesome-free/svgs/solid/sort.svg | 1 + .../fontawesome-free/svgs/solid/spa.svg | 1 + .../svgs/solid/space-shuttle.svg | 1 + .../svgs/solid/spell-check.svg | 1 + .../fontawesome-free/svgs/solid/spider.svg | 1 + .../fontawesome-free/svgs/solid/spinner.svg | 1 + .../fontawesome-free/svgs/solid/splotch.svg | 1 + .../fontawesome-free/svgs/solid/spray-can.svg | 1 + .../svgs/solid/square-full.svg | 1 + .../svgs/solid/square-root-alt.svg | 1 + .../fontawesome-free/svgs/solid/square.svg | 1 + .../fontawesome-free/svgs/solid/stamp.svg | 1 + .../svgs/solid/star-and-crescent.svg | 1 + .../svgs/solid/star-half-alt.svg | 1 + .../fontawesome-free/svgs/solid/star-half.svg | 1 + .../svgs/solid/star-of-david.svg | 1 + .../svgs/solid/star-of-life.svg | 1 + .../fontawesome-free/svgs/solid/star.svg | 1 + .../svgs/solid/step-backward.svg | 1 + .../svgs/solid/step-forward.svg | 1 + .../svgs/solid/stethoscope.svg | 1 + .../svgs/solid/sticky-note.svg | 1 + .../svgs/solid/stop-circle.svg | 1 + .../fontawesome-free/svgs/solid/stop.svg | 1 + .../fontawesome-free/svgs/solid/stopwatch.svg | 1 + .../fontawesome-free/svgs/solid/store-alt.svg | 1 + .../fontawesome-free/svgs/solid/store.svg | 1 + .../fontawesome-free/svgs/solid/stream.svg | 1 + .../svgs/solid/street-view.svg | 1 + .../svgs/solid/strikethrough.svg | 1 + .../svgs/solid/stroopwafel.svg | 1 + .../fontawesome-free/svgs/solid/subscript.svg | 1 + .../fontawesome-free/svgs/solid/subway.svg | 1 + .../svgs/solid/suitcase-rolling.svg | 1 + .../fontawesome-free/svgs/solid/suitcase.svg | 1 + .../fontawesome-free/svgs/solid/sun.svg | 1 + .../svgs/solid/superscript.svg | 1 + .../fontawesome-free/svgs/solid/surprise.svg | 1 + .../svgs/solid/swatchbook.svg | 1 + .../fontawesome-free/svgs/solid/swimmer.svg | 1 + .../svgs/solid/swimming-pool.svg | 1 + .../fontawesome-free/svgs/solid/synagogue.svg | 1 + .../fontawesome-free/svgs/solid/sync-alt.svg | 1 + .../fontawesome-free/svgs/solid/sync.svg | 1 + .../fontawesome-free/svgs/solid/syringe.svg | 1 + .../svgs/solid/table-tennis.svg | 1 + .../fontawesome-free/svgs/solid/table.svg | 1 + .../svgs/solid/tablet-alt.svg | 1 + .../fontawesome-free/svgs/solid/tablet.svg | 1 + .../fontawesome-free/svgs/solid/tablets.svg | 1 + .../svgs/solid/tachometer-alt.svg | 1 + .../fontawesome-free/svgs/solid/tag.svg | 1 + .../fontawesome-free/svgs/solid/tags.svg | 1 + .../fontawesome-free/svgs/solid/tape.svg | 1 + .../fontawesome-free/svgs/solid/tasks.svg | 1 + .../fontawesome-free/svgs/solid/taxi.svg | 1 + .../svgs/solid/teeth-open.svg | 1 + .../fontawesome-free/svgs/solid/teeth.svg | 1 + .../svgs/solid/temperature-high.svg | 1 + .../svgs/solid/temperature-low.svg | 1 + .../fontawesome-free/svgs/solid/tenge.svg | 1 + .../fontawesome-free/svgs/solid/terminal.svg | 1 + .../svgs/solid/text-height.svg | 1 + .../svgs/solid/text-width.svg | 1 + .../fontawesome-free/svgs/solid/th-large.svg | 1 + .../fontawesome-free/svgs/solid/th-list.svg | 1 + .../vendor/fontawesome-free/svgs/solid/th.svg | 1 + .../svgs/solid/theater-masks.svg | 1 + .../svgs/solid/thermometer-empty.svg | 1 + .../svgs/solid/thermometer-full.svg | 1 + .../svgs/solid/thermometer-half.svg | 1 + .../svgs/solid/thermometer-quarter.svg | 1 + .../svgs/solid/thermometer-three-quarters.svg | 1 + .../svgs/solid/thermometer.svg | 1 + .../svgs/solid/thumbs-down.svg | 1 + .../fontawesome-free/svgs/solid/thumbs-up.svg | 1 + .../fontawesome-free/svgs/solid/thumbtack.svg | 1 + .../svgs/solid/ticket-alt.svg | 1 + .../svgs/solid/times-circle.svg | 1 + .../fontawesome-free/svgs/solid/times.svg | 1 + .../svgs/solid/tint-slash.svg | 1 + .../fontawesome-free/svgs/solid/tint.svg | 1 + .../fontawesome-free/svgs/solid/tired.svg | 1 + .../svgs/solid/toggle-off.svg | 1 + .../fontawesome-free/svgs/solid/toggle-on.svg | 1 + .../svgs/solid/toilet-paper.svg | 1 + .../fontawesome-free/svgs/solid/toilet.svg | 1 + .../fontawesome-free/svgs/solid/toolbox.svg | 1 + .../fontawesome-free/svgs/solid/tools.svg | 1 + .../fontawesome-free/svgs/solid/tooth.svg | 1 + .../fontawesome-free/svgs/solid/torah.svg | 1 + .../svgs/solid/torii-gate.svg | 1 + .../fontawesome-free/svgs/solid/tractor.svg | 1 + .../fontawesome-free/svgs/solid/trademark.svg | 1 + .../svgs/solid/traffic-light.svg | 1 + .../fontawesome-free/svgs/solid/train.svg | 1 + .../fontawesome-free/svgs/solid/tram.svg | 1 + .../svgs/solid/transgender-alt.svg | 1 + .../svgs/solid/transgender.svg | 1 + .../fontawesome-free/svgs/solid/trash-alt.svg | 1 + .../svgs/solid/trash-restore-alt.svg | 1 + .../svgs/solid/trash-restore.svg | 1 + .../fontawesome-free/svgs/solid/trash.svg | 1 + .../fontawesome-free/svgs/solid/tree.svg | 1 + .../fontawesome-free/svgs/solid/trophy.svg | 1 + .../svgs/solid/truck-loading.svg | 1 + .../svgs/solid/truck-monster.svg | 1 + .../svgs/solid/truck-moving.svg | 1 + .../svgs/solid/truck-pickup.svg | 1 + .../fontawesome-free/svgs/solid/truck.svg | 1 + .../fontawesome-free/svgs/solid/tshirt.svg | 1 + .../fontawesome-free/svgs/solid/tty.svg | 1 + .../vendor/fontawesome-free/svgs/solid/tv.svg | 1 + .../svgs/solid/umbrella-beach.svg | 1 + .../fontawesome-free/svgs/solid/umbrella.svg | 1 + .../fontawesome-free/svgs/solid/underline.svg | 1 + .../fontawesome-free/svgs/solid/undo-alt.svg | 1 + .../fontawesome-free/svgs/solid/undo.svg | 1 + .../svgs/solid/universal-access.svg | 1 + .../svgs/solid/university.svg | 1 + .../fontawesome-free/svgs/solid/unlink.svg | 1 + .../svgs/solid/unlock-alt.svg | 1 + .../fontawesome-free/svgs/solid/unlock.svg | 1 + .../fontawesome-free/svgs/solid/upload.svg | 1 + .../svgs/solid/user-alt-slash.svg | 1 + .../fontawesome-free/svgs/solid/user-alt.svg | 1 + .../svgs/solid/user-astronaut.svg | 1 + .../svgs/solid/user-check.svg | 1 + .../svgs/solid/user-circle.svg | 1 + .../svgs/solid/user-clock.svg | 1 + .../fontawesome-free/svgs/solid/user-cog.svg | 1 + .../fontawesome-free/svgs/solid/user-edit.svg | 1 + .../svgs/solid/user-friends.svg | 1 + .../svgs/solid/user-graduate.svg | 1 + .../svgs/solid/user-injured.svg | 1 + .../fontawesome-free/svgs/solid/user-lock.svg | 1 + .../fontawesome-free/svgs/solid/user-md.svg | 1 + .../svgs/solid/user-minus.svg | 1 + .../svgs/solid/user-ninja.svg | 1 + .../svgs/solid/user-nurse.svg | 1 + .../fontawesome-free/svgs/solid/user-plus.svg | 1 + .../svgs/solid/user-secret.svg | 1 + .../svgs/solid/user-shield.svg | 1 + .../svgs/solid/user-slash.svg | 1 + .../fontawesome-free/svgs/solid/user-tag.svg | 1 + .../fontawesome-free/svgs/solid/user-tie.svg | 1 + .../svgs/solid/user-times.svg | 1 + .../fontawesome-free/svgs/solid/user.svg | 1 + .../fontawesome-free/svgs/solid/users-cog.svg | 1 + .../fontawesome-free/svgs/solid/users.svg | 1 + .../svgs/solid/utensil-spoon.svg | 1 + .../fontawesome-free/svgs/solid/utensils.svg | 1 + .../svgs/solid/vector-square.svg | 1 + .../svgs/solid/venus-double.svg | 1 + .../svgs/solid/venus-mars.svg | 1 + .../fontawesome-free/svgs/solid/venus.svg | 1 + .../fontawesome-free/svgs/solid/vial.svg | 1 + .../fontawesome-free/svgs/solid/vials.svg | 1 + .../svgs/solid/video-slash.svg | 1 + .../fontawesome-free/svgs/solid/video.svg | 1 + .../fontawesome-free/svgs/solid/vihara.svg | 1 + .../fontawesome-free/svgs/solid/voicemail.svg | 1 + .../svgs/solid/volleyball-ball.svg | 1 + .../svgs/solid/volume-down.svg | 1 + .../svgs/solid/volume-mute.svg | 1 + .../svgs/solid/volume-off.svg | 1 + .../fontawesome-free/svgs/solid/volume-up.svg | 1 + .../fontawesome-free/svgs/solid/vote-yea.svg | 1 + .../svgs/solid/vr-cardboard.svg | 1 + .../fontawesome-free/svgs/solid/walking.svg | 1 + .../fontawesome-free/svgs/solid/wallet.svg | 1 + .../fontawesome-free/svgs/solid/warehouse.svg | 1 + .../fontawesome-free/svgs/solid/water.svg | 1 + .../svgs/solid/wave-square.svg | 1 + .../svgs/solid/weight-hanging.svg | 1 + .../fontawesome-free/svgs/solid/weight.svg | 1 + .../svgs/solid/wheelchair.svg | 1 + .../fontawesome-free/svgs/solid/wifi.svg | 1 + .../fontawesome-free/svgs/solid/wind.svg | 1 + .../svgs/solid/window-close.svg | 1 + .../svgs/solid/window-maximize.svg | 1 + .../svgs/solid/window-minimize.svg | 1 + .../svgs/solid/window-restore.svg | 1 + .../svgs/solid/wine-bottle.svg | 1 + .../svgs/solid/wine-glass-alt.svg | 1 + .../svgs/solid/wine-glass.svg | 1 + .../fontawesome-free/svgs/solid/won-sign.svg | 1 + .../fontawesome-free/svgs/solid/wrench.svg | 1 + .../fontawesome-free/svgs/solid/x-ray.svg | 1 + .../fontawesome-free/svgs/solid/yen-sign.svg | 1 + .../fontawesome-free/svgs/solid/yin-yang.svg | 1 + .../webfonts/fa-brands-400.eot | Bin 0 -> 129590 bytes .../webfonts/fa-brands-400.svg | 3449 +++ .../webfonts/fa-brands-400.ttf | Bin 0 -> 129284 bytes .../webfonts/fa-brands-400.woff | Bin 0 -> 87520 bytes .../webfonts/fa-brands-400.woff2 | Bin 0 -> 74524 bytes .../webfonts/fa-regular-400.eot | Bin 0 -> 34394 bytes .../webfonts/fa-regular-400.svg | 803 + .../webfonts/fa-regular-400.ttf | Bin 0 -> 34096 bytes .../webfonts/fa-regular-400.woff | Bin 0 -> 16804 bytes .../webfonts/fa-regular-400.woff2 | Bin 0 -> 13584 bytes .../webfonts/fa-solid-900.eot | Bin 0 -> 192122 bytes .../webfonts/fa-solid-900.svg | 4649 ++++ .../webfonts/fa-solid-900.ttf | Bin 0 -> 191836 bytes .../webfonts/fa-solid-900.woff | Bin 0 -> 98016 bytes .../webfonts/fa-solid-900.woff2 | Bin 0 -> 75408 bytes .../jquery.easing.compatibility.js | 59 + .../vendor/jquery-easing/jquery.easing.js | 166 + .../vendor/jquery-easing/jquery.easing.min.js | 1 + oxyapp/static/vendor/jquery/jquery.js | 10598 +++++++++ oxyapp/static/vendor/jquery/jquery.min.js | 2 + oxyapp/static/vendor/jquery/jquery.min.map | 1 + oxyapp/static/vendor/jquery/jquery.slim.js | 8495 +++++++ .../static/vendor/jquery/jquery.slim.min.js | 2 + .../static/vendor/jquery/jquery.slim.min.map | 1 + oxyapp/templates/admin/tables_admin.html | 97 + oxyapp/templates/admin/user_add.html | 113 + oxyapp/templates/admin/user_delete.html | 133 + oxyapp/templates/admin/user_manage.html | 178 + oxyapp/templates/auth/forgot-password.html | 60 + oxyapp/templates/auth/login.html | 86 + oxyapp/templates/auth/logout.html | 341 + oxyapp/templates/auth/logout_modal.html | 15 + oxyapp/templates/auth/register.html | 68 + oxyapp/templates/errors/errorPage.html | 170 + oxyapp/templates/footer.html | 7 + oxyapp/templates/head.html | 31 + oxyapp/templates/index.html | 223 + oxyapp/templates/med/monitoring.html | 127 + oxyapp/templates/med/multimonitoring.html | 127 + oxyapp/templates/med/tables_patients.html | 94 + oxyapp/templates/med/user_deletemed.html | 131 + oxyapp/templates/preloader.html | 88 + oxyapp/templates/sidebar.html | 110 + oxyapp/templates/topbar.html | 33 + oxyapp/templates/user/charts_coeur.html | 104 + oxyapp/templates/user/charts_oxy.html | 103 + oxyapp/templates/user/localisation.html | 155 + oxyapp/templates/user/user_profil.html | 301 + oxyapp/utils.py | 41 + oxyapp/utils_link.py | 151 + requirements.txt | 28 + runtime.txt | 1 + tests.py | 0 wsgi.py | 9 + 1827 files changed, 153018 insertions(+) create mode 100644 .flaskenv create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .idea/dataSources.local.xml create mode 100644 .idea/dataSources.xml create mode 100644 .idea/dataSources/d7e3011e-6dff-4c3c-884e-e07c1a66189d.xml create mode 100644 .idea/dataSources/d7e3011e-6dff-4c3c-884e-e07c1a66189d/storage_v2/_src_/schema/information_schema.FNRwLQ.meta create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/sqldialects.xml create mode 100644 .idea/vcs.xml create mode 100644 Procfile create mode 100644 config.py create mode 100644 oxyapp/__init__.py create mode 100644 oxyapp/auth/__init__.py create mode 100644 oxyapp/auth/routes.py create mode 100644 oxyapp/bdd_login.py create mode 100644 oxyapp/database.py create mode 100644 oxyapp/errors/__init__.py create mode 100644 oxyapp/errors/handlers.py create mode 100644 oxyapp/main/__init__.py create mode 100644 oxyapp/main/routes.py create mode 100644 oxyapp/static/css/sb-admin-2.css create mode 100644 oxyapp/static/css/sb-admin-2.min.css create mode 100644 oxyapp/static/img/favicon.ico create mode 100644 oxyapp/static/img/github_profile.png create mode 100644 oxyapp/static/img/man_reading.jpg create mode 100644 oxyapp/static/img/undraw_posting_photo.svg create mode 100644 oxyapp/static/js/alarm_div_reload.js create mode 100644 oxyapp/static/js/chart_coeur.js create mode 100644 oxyapp/static/js/chart_coeur_oxy.js create mode 100644 oxyapp/static/js/chart_oxy.js create mode 100644 oxyapp/static/js/gulpfile.js create mode 100644 oxyapp/static/js/localisation.js create mode 100644 oxyapp/static/js/sb-admin-2.js create mode 100644 oxyapp/static/js/sb-admin-2.min.js create mode 100644 oxyapp/static/scss/_buttons.scss create mode 100644 oxyapp/static/scss/_cards.scss create mode 100644 oxyapp/static/scss/_charts.scss create mode 100644 oxyapp/static/scss/_dropdowns.scss create mode 100644 oxyapp/static/scss/_error.scss create mode 100644 oxyapp/static/scss/_footer.scss create mode 100644 oxyapp/static/scss/_global.scss create mode 100644 oxyapp/static/scss/_login.scss create mode 100644 oxyapp/static/scss/_mixins.scss create mode 100644 oxyapp/static/scss/_navs.scss create mode 100644 oxyapp/static/scss/_utilities.scss create mode 100644 oxyapp/static/scss/_variables.scss create mode 100644 oxyapp/static/scss/navs/_global.scss create mode 100644 oxyapp/static/scss/navs/_sidebar.scss create mode 100644 oxyapp/static/scss/navs/_topbar.scss create mode 100644 oxyapp/static/scss/sb-admin-2.scss create mode 100644 oxyapp/static/scss/utilities/_animation.scss create mode 100644 oxyapp/static/scss/utilities/_background.scss create mode 100644 oxyapp/static/scss/utilities/_border.scss create mode 100644 oxyapp/static/scss/utilities/_display.scss create mode 100644 oxyapp/static/scss/utilities/_progress.scss create mode 100644 oxyapp/static/scss/utilities/_rotate.scss create mode 100644 oxyapp/static/scss/utilities/_text.scss create mode 100644 oxyapp/static/vendor/bootstrap/js/bootstrap.bundle.js create mode 100644 oxyapp/static/vendor/bootstrap/js/bootstrap.bundle.js.map create mode 100644 oxyapp/static/vendor/bootstrap/js/bootstrap.bundle.min.js create mode 100644 oxyapp/static/vendor/bootstrap/js/bootstrap.bundle.min.js.map create mode 100644 oxyapp/static/vendor/bootstrap/js/bootstrap.js create mode 100644 oxyapp/static/vendor/bootstrap/js/bootstrap.js.map create mode 100644 oxyapp/static/vendor/bootstrap/js/bootstrap.min.js create mode 100644 oxyapp/static/vendor/bootstrap/js/bootstrap.min.js.map create mode 100644 oxyapp/static/vendor/bootstrap/scss/_alert.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_badge.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_breadcrumb.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_button-group.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_buttons.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_card.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_carousel.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_close.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_code.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_custom-forms.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_dropdown.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_forms.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_functions.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_grid.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_images.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_input-group.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_jumbotron.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_list-group.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_media.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_mixins.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_modal.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_nav.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_navbar.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_pagination.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_popover.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_print.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_progress.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_reboot.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_root.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_spinners.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_tables.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_toasts.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_tooltip.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_transitions.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_type.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_utilities.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/_variables.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/bootstrap-grid.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/bootstrap-reboot.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/bootstrap.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_alert.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_background-variant.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_badge.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_border-radius.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_box-shadow.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_breakpoints.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_buttons.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_caret.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_clearfix.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_deprecate.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_float.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_forms.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_gradients.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_grid-framework.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_grid.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_hover.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_image.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_list-group.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_lists.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_nav-divider.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_pagination.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_reset-text.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_resize.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_screen-reader.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_size.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_table-row.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_text-emphasis.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_text-hide.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_text-truncate.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_transition.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/mixins/_visibility.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_align.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_background.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_borders.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_clearfix.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_display.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_embed.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_flex.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_float.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_overflow.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_position.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_screenreaders.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_shadows.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_sizing.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_spacing.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_stretched-link.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_text.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/utilities/_visibility.scss create mode 100644 oxyapp/static/vendor/bootstrap/scss/vendor/_rfs.scss create mode 100644 oxyapp/static/vendor/chart.js/Chart.bundle.js create mode 100644 oxyapp/static/vendor/chart.js/Chart.bundle.min.js create mode 100644 oxyapp/static/vendor/chart.js/Chart.js create mode 100644 oxyapp/static/vendor/chart.js/Chart.min.js create mode 100644 oxyapp/static/vendor/datatables/dataTables.bootstrap4.css create mode 100644 oxyapp/static/vendor/datatables/dataTables.bootstrap4.js create mode 100644 oxyapp/static/vendor/datatables/dataTables.bootstrap4.min.css create mode 100644 oxyapp/static/vendor/datatables/dataTables.bootstrap4.min.js create mode 100644 oxyapp/static/vendor/datatables/jquery.dataTables.js create mode 100644 oxyapp/static/vendor/datatables/jquery.dataTables.min.js create mode 100644 oxyapp/static/vendor/fontawesome-free/LICENSE.txt create mode 100644 oxyapp/static/vendor/fontawesome-free/css/all.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/all.min.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/brands.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/brands.min.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/fontawesome.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/fontawesome.min.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/regular.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/regular.min.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/solid.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/solid.min.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/svg-with-js.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/svg-with-js.min.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/v4-shims.css create mode 100644 oxyapp/static/vendor/fontawesome-free/css/v4-shims.min.css create mode 100644 oxyapp/static/vendor/fontawesome-free/js/all.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/all.min.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/brands.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/brands.min.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/conflict-detection.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/conflict-detection.min.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/fontawesome.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/fontawesome.min.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/regular.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/regular.min.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/solid.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/solid.min.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/v4-shims.js create mode 100644 oxyapp/static/vendor/fontawesome-free/js/v4-shims.min.js create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_animated.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_bordered-pulled.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_core.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_fixed-width.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_icons.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_larger.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_list.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_mixins.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_rotated-flipped.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_screen-reader.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_shims.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_stacked.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/_variables.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/brands.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/fontawesome.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/regular.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/solid.less create mode 100644 oxyapp/static/vendor/fontawesome-free/less/v4-shims.less create mode 100644 oxyapp/static/vendor/fontawesome-free/package.json create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_animated.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_bordered-pulled.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_core.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_fixed-width.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_icons.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_larger.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_list.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_mixins.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_rotated-flipped.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_screen-reader.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_shims.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_stacked.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/_variables.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/brands.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/fontawesome.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/regular.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/solid.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/scss/v4-shims.scss create mode 100644 oxyapp/static/vendor/fontawesome-free/sprites/brands.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/sprites/regular.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/sprites/solid.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/500px.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/accessible-icon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/accusoft.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/acquisitions-incorporated.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/adn.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/adobe.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/adversal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/affiliatetheme.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/airbnb.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/algolia.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/alipay.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/amazon-pay.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/amazon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/amilia.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/android.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/angellist.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/angrycreative.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/angular.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/app-store-ios.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/app-store.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/apper.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/apple-pay.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/apple.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/artstation.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/asymmetrik.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/atlassian.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/audible.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/autoprefixer.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/avianex.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/aviato.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/aws.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/bandcamp.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/battle-net.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/behance-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/behance.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/bimobject.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/bitbucket.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/bitcoin.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/bity.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/black-tie.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/blackberry.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/blogger-b.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/blogger.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/bluetooth-b.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/bluetooth.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/bootstrap.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/btc.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/buffer.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/buromobelexperte.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/buysellads.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/canadian-maple-leaf.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cc-amazon-pay.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cc-amex.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cc-apple-pay.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cc-diners-club.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cc-discover.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cc-jcb.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cc-mastercard.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cc-paypal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cc-stripe.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cc-visa.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/centercode.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/centos.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/chrome.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/chromecast.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cloudscale.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cloudsmith.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cloudversify.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/codepen.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/codiepie.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/confluence.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/connectdevelop.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/contao.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cotton-bureau.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cpanel.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-by.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-nc-eu.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-nc-jp.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-nc.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-nd.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-pd-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-pd.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-remix.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-sa.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-sampling-plus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-sampling.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-share.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons-zero.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/creative-commons.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/critical-role.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/css3-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/css3.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/cuttlefish.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/d-and-d-beyond.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/d-and-d.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/dashcube.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/delicious.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/deploydog.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/deskpro.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/dev.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/deviantart.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/dhl.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/diaspora.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/digg.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/digital-ocean.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/discord.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/discourse.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/dochub.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/docker.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/draft2digital.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/dribbble-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/dribbble.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/dropbox.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/drupal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/dyalog.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/earlybirds.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/ebay.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/edge.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/elementor.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/ello.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/ember.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/empire.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/envira.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/erlang.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/ethereum.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/etsy.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/evernote.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/expeditedssl.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/facebook-f.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/facebook-messenger.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/facebook-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/facebook.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/fantasy-flight-games.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/fedex.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/fedora.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/figma.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/firefox.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/first-order-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/first-order.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/firstdraft.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/flickr.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/flipboard.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/fly.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/font-awesome-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/font-awesome-flag.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/font-awesome-logo-full.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/font-awesome.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/fonticons-fi.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/fonticons.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/fort-awesome-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/fort-awesome.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/forumbee.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/foursquare.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/free-code-camp.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/freebsd.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/fulcrum.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/galactic-republic.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/galactic-senate.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/get-pocket.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/gg-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/gg.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/git-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/git-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/git.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/github-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/github-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/github.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/gitkraken.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/gitlab.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/gitter.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/glide-g.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/glide.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/gofore.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/goodreads-g.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/goodreads.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/google-drive.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/google-play.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/google-plus-g.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/google-plus-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/google-plus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/google-wallet.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/google.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/gratipay.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/grav.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/gripfire.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/grunt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/gulp.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/hacker-news-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/hacker-news.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/hackerrank.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/hips.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/hire-a-helper.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/hooli.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/hornbill.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/hotjar.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/houzz.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/html5.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/hubspot.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/imdb.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/instagram.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/intercom.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/internet-explorer.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/invision.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/ioxhost.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/itch-io.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/itunes-note.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/itunes.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/java.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/jedi-order.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/jenkins.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/jira.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/joget.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/joomla.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/js-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/js.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/jsfiddle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/kaggle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/keybase.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/keycdn.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/kickstarter-k.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/kickstarter.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/korvue.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/laravel.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/lastfm-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/lastfm.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/leanpub.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/less.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/line.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/linkedin-in.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/linkedin.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/linode.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/linux.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/lyft.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/magento.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/mailchimp.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/mandalorian.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/markdown.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/mastodon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/maxcdn.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/medapps.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/medium-m.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/medium.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/medrt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/meetup.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/megaport.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/mendeley.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/microsoft.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/mix.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/mixcloud.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/mizuni.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/modx.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/monero.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/napster.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/neos.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/nimblr.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/node-js.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/node.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/npm.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/ns8.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/nutritionix.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/odnoklassniki-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/odnoklassniki.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/old-republic.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/opencart.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/openid.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/opera.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/optin-monster.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/osi.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/page4.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/pagelines.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/palfed.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/patreon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/paypal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/penny-arcade.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/periscope.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/phabricator.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/phoenix-framework.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/phoenix-squadron.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/php.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/pied-piper-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/pied-piper-hat.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/pied-piper-pp.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/pied-piper.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/pinterest-p.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/pinterest-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/pinterest.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/playstation.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/product-hunt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/pushed.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/python.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/qq.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/quinscape.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/quora.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/r-project.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/raspberry-pi.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/ravelry.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/react.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/reacteurope.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/readme.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/rebel.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/red-river.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/reddit-alien.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/reddit-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/reddit.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/redhat.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/renren.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/replyd.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/researchgate.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/resolving.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/rev.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/rocketchat.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/rockrms.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/safari.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/salesforce.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/sass.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/schlix.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/scribd.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/searchengin.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/sellcast.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/sellsy.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/servicestack.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/shirtsinbulk.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/shopware.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/simplybuilt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/sistrix.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/sith.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/sketch.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/skyatlas.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/skype.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/slack-hash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/slack.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/slideshare.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/snapchat-ghost.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/snapchat-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/snapchat.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/soundcloud.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/sourcetree.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/speakap.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/speaker-deck.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/spotify.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/squarespace.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/stack-exchange.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/stack-overflow.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/stackpath.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/staylinked.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/steam-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/steam-symbol.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/steam.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/sticker-mule.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/strava.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/stripe-s.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/stripe.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/studiovinari.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/stumbleupon-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/stumbleupon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/superpowers.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/supple.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/suse.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/symfony.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/teamspeak.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/telegram-plane.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/telegram.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/tencent-weibo.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/the-red-yeti.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/themeco.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/themeisle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/think-peaks.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/trade-federation.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/trello.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/tripadvisor.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/tumblr-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/tumblr.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/twitch.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/twitter-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/twitter.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/typo3.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/uber.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/ubuntu.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/uikit.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/uniregistry.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/untappd.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/ups.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/usb.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/usps.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/ussunnah.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/vaadin.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/viacoin.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/viadeo-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/viadeo.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/viber.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/vimeo-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/vimeo-v.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/vimeo.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/vine.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/vk.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/vnv.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/vuejs.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/waze.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/weebly.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/weibo.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/weixin.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/whatsapp-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/whatsapp.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/whmcs.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/wikipedia-w.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/windows.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/wix.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/wizards-of-the-coast.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/wolf-pack-battalion.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/wordpress-simple.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/wordpress.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/wpbeginner.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/wpexplorer.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/wpforms.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/wpressr.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/xbox.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/xing-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/xing.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/y-combinator.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/yahoo.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/yammer.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/yandex-international.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/yandex.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/yarn.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/yelp.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/yoast.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/youtube-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/youtube.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/brands/zhihu.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/address-book.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/address-card.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/angry.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/arrow-alt-circle-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/arrow-alt-circle-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/arrow-alt-circle-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/arrow-alt-circle-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/bell-slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/bell.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/bookmark.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/building.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/calendar-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/calendar-check.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/calendar-minus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/calendar-plus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/calendar-times.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/calendar.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/caret-square-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/caret-square-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/caret-square-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/caret-square-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/chart-bar.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/check-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/check-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/clipboard.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/clock.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/clone.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/closed-captioning.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/comment-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/comment-dots.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/comment.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/comments.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/compass.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/copy.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/copyright.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/credit-card.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/dizzy.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/dot-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/edit.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/envelope-open.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/envelope.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/eye-slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/eye.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/file-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/file-archive.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/file-audio.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/file-code.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/file-excel.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/file-image.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/file-pdf.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/file-powerpoint.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/file-video.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/file-word.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/file.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/flag.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/flushed.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/folder-open.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/folder.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/font-awesome-logo-full.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/frown-open.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/frown.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/futbol.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/gem.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grimace.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin-beam-sweat.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin-beam.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin-hearts.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin-squint-tears.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin-squint.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin-stars.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin-tears.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin-tongue-squint.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin-tongue-wink.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin-tongue.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin-wink.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/grin.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hand-lizard.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hand-paper.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hand-peace.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hand-point-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hand-point-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hand-point-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hand-point-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hand-pointer.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hand-rock.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hand-scissors.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hand-spock.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/handshake.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hdd.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/heart.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hospital.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/hourglass.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/id-badge.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/id-card.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/image.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/images.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/keyboard.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/kiss-beam.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/kiss-wink-heart.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/kiss.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/laugh-beam.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/laugh-squint.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/laugh-wink.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/laugh.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/lemon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/life-ring.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/lightbulb.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/list-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/map.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/meh-blank.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/meh-rolling-eyes.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/meh.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/minus-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/money-bill-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/moon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/newspaper.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/object-group.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/object-ungroup.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/paper-plane.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/pause-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/play-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/plus-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/question-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/registered.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/sad-cry.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/sad-tear.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/save.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/share-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/smile-beam.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/smile-wink.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/smile.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/snowflake.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/star-half.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/star.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/sticky-note.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/stop-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/sun.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/surprise.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/thumbs-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/thumbs-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/times-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/tired.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/trash-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/user-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/user.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/window-close.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/window-maximize.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/window-minimize.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/regular/window-restore.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ad.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/address-book.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/address-card.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/adjust.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/air-freshener.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/align-center.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/align-justify.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/align-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/align-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/allergies.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ambulance.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/american-sign-language-interpreting.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/anchor.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/angle-double-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/angle-double-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/angle-double-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/angle-double-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/angle-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/angle-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/angle-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/angle-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/angry.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ankh.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/apple-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/archive.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/archway.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrow-alt-circle-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrow-alt-circle-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrow-alt-circle-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrow-alt-circle-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrow-circle-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrow-circle-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrow-circle-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrow-circle-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrow-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrow-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrow-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrow-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrows-alt-h.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrows-alt-v.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/arrows-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/assistive-listening-systems.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/asterisk.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/at.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/atlas.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/atom.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/audio-description.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/award.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/baby-carriage.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/baby.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/backspace.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/backward.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bacon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/balance-scale-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/balance-scale-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/balance-scale.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ban.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/band-aid.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/barcode.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bars.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/baseball-ball.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/basketball-ball.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bath.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/battery-empty.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/battery-full.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/battery-half.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/battery-quarter.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/battery-three-quarters.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bed.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/beer.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bell-slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bell.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bezier-curve.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bible.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bicycle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/biking.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/binoculars.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/biohazard.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/birthday-cake.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/blender-phone.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/blender.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/blind.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/blog.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bold.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bolt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bomb.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bone.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bong.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/book-dead.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/book-medical.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/book-open.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/book-reader.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/book.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bookmark.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/border-all.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/border-none.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/border-style.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bowling-ball.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/box-open.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/box.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/boxes.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/braille.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/brain.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bread-slice.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/briefcase-medical.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/briefcase.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/broadcast-tower.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/broom.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/brush.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bug.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/building.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bullhorn.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bullseye.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/burn.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bus-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/bus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/business-time.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/calculator.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/calendar-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/calendar-check.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/calendar-day.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/calendar-minus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/calendar-plus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/calendar-times.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/calendar-week.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/calendar.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/camera-retro.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/camera.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/campground.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/candy-cane.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cannabis.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/capsules.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/car-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/car-battery.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/car-crash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/car-side.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/car.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/caret-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/caret-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/caret-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/caret-square-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/caret-square-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/caret-square-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/caret-square-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/caret-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/carrot.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cart-arrow-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cart-plus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cash-register.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cat.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/certificate.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chair.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chalkboard-teacher.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chalkboard.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/charging-station.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chart-area.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chart-bar.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chart-line.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chart-pie.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/check-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/check-double.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/check-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/check.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cheese.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chess-bishop.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chess-board.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chess-king.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chess-knight.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chess-pawn.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chess-queen.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chess-rook.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chess.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chevron-circle-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chevron-circle-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chevron-circle-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chevron-circle-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chevron-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chevron-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chevron-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/chevron-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/child.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/church.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/circle-notch.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/city.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/clinic-medical.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/clipboard-check.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/clipboard-list.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/clipboard.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/clock.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/clone.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/closed-captioning.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cloud-download-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cloud-meatball.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cloud-moon-rain.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cloud-moon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cloud-rain.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cloud-showers-heavy.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cloud-sun-rain.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cloud-sun.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cloud-upload-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cloud.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cocktail.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/code-branch.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/code.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/coffee.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cog.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cogs.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/coins.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/columns.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/comment-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/comment-dollar.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/comment-dots.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/comment-medical.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/comment-slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/comment.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/comments-dollar.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/comments.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/compact-disc.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/compass.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/compress-arrows-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/compress.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/concierge-bell.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cookie-bite.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cookie.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/copy.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/copyright.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/couch.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/credit-card.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/crop-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/crop.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cross.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/crosshairs.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/crow.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/crown.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/crutch.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cube.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cubes.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/cut.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/database.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/deaf.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/democrat.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/desktop.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dharmachakra.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/diagnoses.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dice-d20.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dice-d6.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dice-five.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dice-four.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dice-one.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dice-six.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dice-three.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dice-two.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dice.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/digital-tachograph.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/directions.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/divide.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dizzy.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dna.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dog.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dollar-sign.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dolly-flatbed.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dolly.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/donate.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/door-closed.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/door-open.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dot-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dove.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/download.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/drafting-compass.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dragon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/draw-polygon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/drum-steelpan.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/drum.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/drumstick-bite.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dumbbell.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dumpster-fire.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dumpster.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/dungeon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/edit.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/egg.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/eject.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ellipsis-h.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ellipsis-v.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/envelope-open-text.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/envelope-open.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/envelope-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/envelope.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/equals.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/eraser.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ethernet.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/euro-sign.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/exchange-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/exclamation-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/exclamation-triangle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/exclamation.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/expand-arrows-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/expand.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/external-link-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/external-link-square-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/eye-dropper.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/eye-slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/eye.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fan.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fast-backward.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fast-forward.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fax.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/feather-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/feather.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/female.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fighter-jet.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-archive.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-audio.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-code.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-contract.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-csv.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-download.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-excel.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-export.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-image.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-import.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-invoice-dollar.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-invoice.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-medical-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-medical.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-pdf.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-powerpoint.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-prescription.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-signature.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-upload.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-video.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file-word.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/file.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fill-drip.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fill.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/film.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/filter.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fingerprint.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fire-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fire-extinguisher.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fire.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/first-aid.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fish.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/fist-raised.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/flag-checkered.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/flag-usa.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/flag.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/flask.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/flushed.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/folder-minus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/folder-open.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/folder-plus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/folder.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/font-awesome-logo-full.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/font.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/football-ball.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/forward.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/frog.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/frown-open.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/frown.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/funnel-dollar.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/futbol.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/gamepad.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/gas-pump.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/gavel.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/gem.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/genderless.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ghost.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/gift.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/gifts.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/glass-cheers.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/glass-martini-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/glass-martini.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/glass-whiskey.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/glasses.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/globe-africa.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/globe-americas.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/globe-asia.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/globe-europe.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/globe.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/golf-ball.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/gopuram.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/graduation-cap.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/greater-than-equal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/greater-than.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grimace.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin-beam-sweat.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin-beam.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin-hearts.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin-squint-tears.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin-squint.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin-stars.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin-tears.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin-tongue-squint.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin-tongue-wink.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin-tongue.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin-wink.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grin.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grip-horizontal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grip-lines-vertical.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grip-lines.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/grip-vertical.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/guitar.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/h-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hamburger.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hammer.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hamsa.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-holding-heart.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-holding-usd.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-holding.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-lizard.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-middle-finger.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-paper.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-peace.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-point-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-point-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-point-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-point-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-pointer.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-rock.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-scissors.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hand-spock.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hands-helping.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hands.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/handshake.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hanukiah.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hard-hat.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hashtag.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hat-wizard.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/haykal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hdd.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/heading.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/headphones-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/headphones.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/headset.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/heart-broken.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/heart.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/heartbeat.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/helicopter.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/highlighter.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hiking.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hippo.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/history.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hockey-puck.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/holly-berry.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/home.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/horse-head.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/horse.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hospital-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hospital-symbol.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hospital.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hot-tub.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hotdog.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hotel.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hourglass-end.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hourglass-half.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hourglass-start.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hourglass.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/house-damage.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/hryvnia.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/i-cursor.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ice-cream.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/icicles.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/icons.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/id-badge.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/id-card-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/id-card.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/igloo.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/image.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/images.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/inbox.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/indent.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/industry.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/infinity.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/info-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/info.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/italic.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/jedi.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/joint.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/journal-whills.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/kaaba.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/key.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/keyboard.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/khanda.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/kiss-beam.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/kiss-wink-heart.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/kiss.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/kiwi-bird.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/landmark.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/language.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/laptop-code.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/laptop-medical.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/laptop.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/laugh-beam.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/laugh-squint.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/laugh-wink.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/laugh.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/layer-group.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/leaf.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/lemon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/less-than-equal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/less-than.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/level-down-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/level-up-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/life-ring.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/lightbulb.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/link.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/lira-sign.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/list-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/list-ol.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/list-ul.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/list.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/location-arrow.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/lock-open.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/lock.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/long-arrow-alt-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/long-arrow-alt-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/long-arrow-alt-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/long-arrow-alt-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/low-vision.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/luggage-cart.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/magic.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/magnet.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mail-bulk.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/male.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/map-marked-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/map-marked.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/map-marker-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/map-marker.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/map-pin.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/map-signs.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/map.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/marker.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mars-double.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mars-stroke-h.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mars-stroke-v.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mars-stroke.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mars.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mask.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/medal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/medkit.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/meh-blank.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/meh-rolling-eyes.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/meh.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/memory.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/menorah.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mercury.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/meteor.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/microchip.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/microphone-alt-slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/microphone-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/microphone-slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/microphone.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/microscope.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/minus-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/minus-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/minus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mitten.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mobile-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mobile.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/money-bill-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/money-bill-wave-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/money-bill-wave.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/money-bill.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/money-check-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/money-check.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/monument.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/moon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mortar-pestle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mosque.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/motorcycle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mountain.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mouse-pointer.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/mug-hot.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/music.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/network-wired.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/neuter.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/newspaper.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/not-equal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/notes-medical.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/object-group.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/object-ungroup.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/oil-can.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/om.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/otter.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/outdent.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pager.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/paint-brush.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/paint-roller.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/palette.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pallet.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/paper-plane.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/paperclip.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/parachute-box.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/paragraph.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/parking.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/passport.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pastafarianism.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/paste.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pause-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pause.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/paw.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/peace.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pen-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pen-fancy.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pen-nib.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pen-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pen.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pencil-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pencil-ruler.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/people-carry.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pepper-hot.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/percent.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/percentage.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/person-booth.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/phone-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/phone-slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/phone-square-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/phone-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/phone-volume.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/phone.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/photo-video.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/piggy-bank.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pills.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pizza-slice.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/place-of-worship.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/plane-arrival.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/plane-departure.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/plane.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/play-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/play.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/plug.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/plus-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/plus-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/plus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/podcast.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/poll-h.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/poll.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/poo-storm.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/poo.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/poop.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/portrait.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pound-sign.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/power-off.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/pray.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/praying-hands.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/prescription-bottle-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/prescription-bottle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/prescription.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/print.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/procedures.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/project-diagram.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/puzzle-piece.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/qrcode.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/question-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/question.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/quidditch.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/quote-left.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/quote-right.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/quran.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/radiation-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/radiation.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/rainbow.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/random.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/receipt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/recycle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/redo-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/redo.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/registered.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/remove-format.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/reply-all.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/reply.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/republican.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/restroom.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/retweet.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ribbon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ring.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/road.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/robot.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/rocket.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/route.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/rss-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/rss.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ruble-sign.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ruler-combined.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ruler-horizontal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ruler-vertical.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ruler.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/running.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/rupee-sign.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sad-cry.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sad-tear.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/satellite-dish.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/satellite.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/save.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/school.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/screwdriver.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/scroll.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sd-card.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/search-dollar.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/search-location.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/search-minus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/search-plus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/search.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/seedling.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/server.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/shapes.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/share-alt-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/share-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/share-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/share.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/shekel-sign.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/shield-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ship.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/shipping-fast.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/shoe-prints.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/shopping-bag.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/shopping-basket.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/shopping-cart.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/shower.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/shuttle-van.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sign-in-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sign-language.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sign-out-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sign.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/signal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/signature.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sim-card.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sitemap.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/skating.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/skiing-nordic.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/skiing.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/skull-crossbones.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/skull.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sleigh.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sliders-h.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/smile-beam.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/smile-wink.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/smile.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/smog.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/smoking-ban.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/smoking.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sms.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/snowboarding.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/snowflake.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/snowman.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/snowplow.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/socks.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/solar-panel.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-alpha-down-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-alpha-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-alpha-up-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-alpha-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-amount-down-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-amount-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-amount-up-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-amount-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-numeric-down-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-numeric-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-numeric-up-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-numeric-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sort.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/spa.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/space-shuttle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/spell-check.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/spider.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/spinner.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/splotch.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/spray-can.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/square-full.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/square-root-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/stamp.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/star-and-crescent.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/star-half-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/star-half.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/star-of-david.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/star-of-life.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/star.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/step-backward.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/step-forward.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/stethoscope.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sticky-note.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/stop-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/stop.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/stopwatch.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/store-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/store.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/stream.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/street-view.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/strikethrough.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/stroopwafel.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/subscript.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/subway.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/suitcase-rolling.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/suitcase.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sun.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/superscript.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/surprise.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/swatchbook.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/swimmer.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/swimming-pool.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/synagogue.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sync-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/sync.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/syringe.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/table-tennis.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/table.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tablet-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tablet.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tablets.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tachometer-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tag.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tags.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tape.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tasks.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/taxi.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/teeth-open.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/teeth.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/temperature-high.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/temperature-low.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tenge.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/terminal.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/text-height.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/text-width.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/th-large.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/th-list.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/th.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/theater-masks.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/thermometer-empty.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/thermometer-full.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/thermometer-half.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/thermometer-quarter.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/thermometer-three-quarters.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/thermometer.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/thumbs-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/thumbs-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/thumbtack.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/ticket-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/times-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/times.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tint-slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tint.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tired.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/toggle-off.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/toggle-on.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/toilet-paper.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/toilet.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/toolbox.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tools.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tooth.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/torah.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/torii-gate.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tractor.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/trademark.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/traffic-light.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/train.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tram.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/transgender-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/transgender.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/trash-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/trash-restore-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/trash-restore.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/trash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tree.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/trophy.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/truck-loading.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/truck-monster.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/truck-moving.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/truck-pickup.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/truck.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tshirt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tty.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/tv.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/umbrella-beach.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/umbrella.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/underline.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/undo-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/undo.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/universal-access.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/university.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/unlink.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/unlock-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/unlock.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/upload.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-alt-slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-astronaut.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-check.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-circle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-clock.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-cog.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-edit.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-friends.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-graduate.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-injured.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-lock.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-md.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-minus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-ninja.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-nurse.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-plus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-secret.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-shield.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-tag.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-tie.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user-times.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/user.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/users-cog.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/users.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/utensil-spoon.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/utensils.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/vector-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/venus-double.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/venus-mars.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/venus.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/vial.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/vials.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/video-slash.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/video.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/vihara.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/voicemail.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/volleyball-ball.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/volume-down.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/volume-mute.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/volume-off.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/volume-up.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/vote-yea.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/vr-cardboard.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/walking.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/wallet.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/warehouse.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/water.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/wave-square.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/weight-hanging.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/weight.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/wheelchair.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/wifi.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/wind.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/window-close.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/window-maximize.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/window-minimize.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/window-restore.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/wine-bottle.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/wine-glass-alt.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/wine-glass.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/won-sign.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/wrench.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/x-ray.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/yen-sign.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/svgs/solid/yin-yang.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-brands-400.eot create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-brands-400.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-brands-400.ttf create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-brands-400.woff create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-brands-400.woff2 create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-regular-400.eot create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-regular-400.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-regular-400.ttf create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-regular-400.woff create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-regular-400.woff2 create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-solid-900.eot create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-solid-900.svg create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-solid-900.ttf create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-solid-900.woff create mode 100644 oxyapp/static/vendor/fontawesome-free/webfonts/fa-solid-900.woff2 create mode 100644 oxyapp/static/vendor/jquery-easing/jquery.easing.compatibility.js create mode 100644 oxyapp/static/vendor/jquery-easing/jquery.easing.js create mode 100644 oxyapp/static/vendor/jquery-easing/jquery.easing.min.js create mode 100644 oxyapp/static/vendor/jquery/jquery.js create mode 100644 oxyapp/static/vendor/jquery/jquery.min.js create mode 100644 oxyapp/static/vendor/jquery/jquery.min.map create mode 100644 oxyapp/static/vendor/jquery/jquery.slim.js create mode 100644 oxyapp/static/vendor/jquery/jquery.slim.min.js create mode 100644 oxyapp/static/vendor/jquery/jquery.slim.min.map create mode 100644 oxyapp/templates/admin/tables_admin.html create mode 100644 oxyapp/templates/admin/user_add.html create mode 100644 oxyapp/templates/admin/user_delete.html create mode 100644 oxyapp/templates/admin/user_manage.html create mode 100644 oxyapp/templates/auth/forgot-password.html create mode 100644 oxyapp/templates/auth/login.html create mode 100644 oxyapp/templates/auth/logout.html create mode 100644 oxyapp/templates/auth/logout_modal.html create mode 100644 oxyapp/templates/auth/register.html create mode 100644 oxyapp/templates/errors/errorPage.html create mode 100644 oxyapp/templates/footer.html create mode 100644 oxyapp/templates/head.html create mode 100644 oxyapp/templates/index.html create mode 100644 oxyapp/templates/med/monitoring.html create mode 100644 oxyapp/templates/med/multimonitoring.html create mode 100644 oxyapp/templates/med/tables_patients.html create mode 100644 oxyapp/templates/med/user_deletemed.html create mode 100644 oxyapp/templates/preloader.html create mode 100644 oxyapp/templates/sidebar.html create mode 100644 oxyapp/templates/topbar.html create mode 100644 oxyapp/templates/user/charts_coeur.html create mode 100644 oxyapp/templates/user/charts_oxy.html create mode 100644 oxyapp/templates/user/localisation.html create mode 100644 oxyapp/templates/user/user_profil.html create mode 100644 oxyapp/utils.py create mode 100644 oxyapp/utils_link.py create mode 100644 requirements.txt create mode 100644 runtime.txt create mode 100644 tests.py create mode 100644 wsgi.py diff --git a/.flaskenv b/.flaskenv new file mode 100644 index 0000000..7b0bbd0 --- /dev/null +++ b/.flaskenv @@ -0,0 +1 @@ +FLASK_APP=wsgi.py \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e4df225 --- /dev/null +++ b/.gitignore @@ -0,0 +1,128 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ +.idea/bts_projet.iml +.idea/misc.xml +.idea/workspace.xml \ No newline at end of file diff --git a/.idea/dataSources.local.xml b/.idea/dataSources.local.xml new file mode 100644 index 0000000..87d1bae --- /dev/null +++ b/.idea/dataSources.local.xml @@ -0,0 +1,19 @@ + + + + + + #@ + ` + + + master_key + access + + + + + + + + \ No newline at end of file diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..cae49be --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,11 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://azrod-server.ovh:3306/projet + + + \ No newline at end of file diff --git a/.idea/dataSources/d7e3011e-6dff-4c3c-884e-e07c1a66189d.xml b/.idea/dataSources/d7e3011e-6dff-4c3c-884e-e07c1a66189d.xml new file mode 100644 index 0000000..194fa42 --- /dev/null +++ b/.idea/dataSources/d7e3011e-6dff-4c3c-884e-e07c1a66189d.xml @@ -0,0 +1,901 @@ + + + + + 5.7.30 + InnoDB + InnoDB + exact + + + latin1_swedish_ci + + + utf8_general_ci + + + latin1_swedish_ci + + + utf8_general_ci + + + latin1_swedish_ci + + + 1 + latin1_swedish_ci + + + utf8_general_ci + + + armscii8 + + + armscii8 + 1 + + + ascii + + + ascii + 1 + + + big5 + + + big5 + 1 + + + binary + 1 + + + cp1250 + + + cp1250 + + + cp1250 + + + cp1250 + 1 + + + cp1250 + + + cp1251 + + + cp1251 + + + cp1251 + 1 + + + cp1251 + + + cp1251 + + + cp1256 + + + cp1256 + 1 + + + cp1257 + + + cp1257 + 1 + + + cp1257 + + + cp850 + + + cp850 + 1 + + + cp852 + + + cp852 + 1 + + + cp866 + + + cp866 + 1 + + + cp932 + + + cp932 + 1 + + + dec8 + + + dec8 + 1 + + + eucjpms + + + eucjpms + 1 + + + euckr + + + euckr + 1 + + + gb18030 + + + gb18030 + 1 + + + gb18030 + + + gb2312 + + + gb2312 + 1 + + + gbk + + + gbk + 1 + + + geostd8 + + + geostd8 + 1 + + + greek + + + greek + 1 + + + hebrew + + + hebrew + 1 + + + hp8 + + + hp8 + 1 + + + keybcs2 + + + keybcs2 + 1 + + + koi8r + + + koi8r + 1 + + + koi8u + + + koi8u + 1 + + + latin1 + + + latin1 + + + latin1 + + + latin1 + + + latin1 + + + latin1 + + + latin1 + + + latin1 + 1 + + + latin2 + + + latin2 + + + latin2 + + + latin2 + 1 + + + latin2 + + + latin5 + + + latin5 + 1 + + + latin7 + + + latin7 + + + latin7 + 1 + + + latin7 + + + macce + + + macce + 1 + + + macroman + + + macroman + 1 + + + sjis + + + sjis + 1 + + + swe7 + + + swe7 + 1 + + + tis620 + + + tis620 + 1 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + 1 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ujis + + + ujis + 1 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + 1 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16le + + + utf16le + 1 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + 1 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + 1 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + 1 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + utf8mb4 + + + % + + + localhost + + + localhost + + + localhost + + + utf8_general_ci +
+ + utf8_general_ci +
+ + utf8_general_ci +
+ + 1 + int(11)|0s + 1 + 1 + normal + + + 2 + int(11)|0s + 1 + normal + + + 3 + int(11)|0s + 1 + normal + + + 1 + ID + 1 + + + 1 + int(11)|0s + 1 + 1 + normal + + + 2 + timestamp|0s + 1 + CURRENT_TIMESTAMP + normal + CURRENT_TIMESTAMP + + + 3 + int(11)|0s + 1 + normal + + + 4 + int(11)|0s + 1 + normal + + + 5 + int(11)|0s + 1 + normal + + + 6 + double|0s + 1 + normal + + + 7 + double|0s + 1 + normal + + + 8 + float|0s + 1 + normal + + + 9 + float|0s + 1 + normal + + + 10 + float|0s + 1 + normal + + + 11 + tinyint(1)|0s + 1 + normal + + + 1 + ID + 1 + + + 1 + int(11)|0s + 1 + 1 + normal + + + 2 + varchar(20)|0s + 1 + normal + + + 3 + varchar(20)|0s + 1 + normal + + + 4 + varchar(20)|0s + 1 + normal + + + 5 + varchar(20)|0s + 1 + normal + + + 6 + varchar(10)|0s + 1 + normal + + + 1 + ID + 1 + +
+
\ No newline at end of file diff --git a/.idea/dataSources/d7e3011e-6dff-4c3c-884e-e07c1a66189d/storage_v2/_src_/schema/information_schema.FNRwLQ.meta b/.idea/dataSources/d7e3011e-6dff-4c3c-884e-e07c1a66189d/storage_v2/_src_/schema/information_schema.FNRwLQ.meta new file mode 100644 index 0000000..1ff3db2 --- /dev/null +++ b/.idea/dataSources/d7e3011e-6dff-4c3c-884e-e07c1a66189d/storage_v2/_src_/schema/information_schema.FNRwLQ.meta @@ -0,0 +1,2 @@ +#n:information_schema +! [null, 0, null, null, -2147483648, -2147483648] diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..f6a6834 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 0000000..9edc382 --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..80a980e --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: gunicorn run:app \ No newline at end of file diff --git a/config.py b/config.py new file mode 100644 index 0000000..8ff10e3 --- /dev/null +++ b/config.py @@ -0,0 +1,7 @@ +import os + + +class Config(object): + # Clé secrète pour crypter les cookies et sauvegarder sur les explorateurs + # Elle se génère de façon aléatoire + SECRET_KEY = os.urandom(24) diff --git a/oxyapp/__init__.py b/oxyapp/__init__.py new file mode 100644 index 0000000..f7160ea --- /dev/null +++ b/oxyapp/__init__.py @@ -0,0 +1,39 @@ +# Librairies Python +import os +import logging +from logging.handlers import RotatingFileHandler +from flask import Flask +# Import fichiers homemade +from config import Config + +# Version + Nom créateur +__version__ = (0, 0, 8) +__author__ = 'Enzo Foucaud' +# Création de l'application +app = Flask(__name__) +app.config.from_object(Config) + +from oxyapp.errors import bp as errors_bp +app.register_blueprint(errors_bp) + +from oxyapp.auth import bp as auth_bp +app.register_blueprint(auth_bp) + +from oxyapp.main import bp as main_bp +app.register_blueprint(main_bp) + +# Permet de générer un .txt pour les erreurs +if not app.debug: + if not os.path.exists('logs'): + os.mkdir('logs') + file_handler = RotatingFileHandler('logs/oxycardio.log', maxBytes=10240, + backupCount=10) + file_handler.setFormatter(logging.Formatter( + '%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]')) + file_handler.setLevel(logging.INFO) + app.logger.addHandler(file_handler) + + app.logger.setLevel(logging.INFO) + app.logger.info('Oxycardio') + +from oxyapp import errors, auth, main diff --git a/oxyapp/auth/__init__.py b/oxyapp/auth/__init__.py new file mode 100644 index 0000000..b507751 --- /dev/null +++ b/oxyapp/auth/__init__.py @@ -0,0 +1,5 @@ +from flask import Blueprint + +bp = Blueprint('auth', __name__) + +from oxyapp.auth import routes diff --git a/oxyapp/auth/routes.py b/oxyapp/auth/routes.py new file mode 100644 index 0000000..c0126ad --- /dev/null +++ b/oxyapp/auth/routes.py @@ -0,0 +1,63 @@ +from flask import render_template, request, session, redirect, url_for, flash +from oxyapp import app +from oxyapp.database import login_verify +from oxyapp.utils import setRank + + +# Page login +@app.route("/login") +def login(): + return render_template("auth/login.html", title='Login') + + +# Formulaire de connexion - REVOIR LES SESSSIONS ET VARIABLES GLOBALES +@app.route("/form_login", methods=['POST']) +def form_login(): + # On récupere les données de POST + POST_NAME = str(request.form['nom']) + POST_PRENOM = str(request.form['prenom']) + POST_PASSWORD = str(request.form['password']) + # On vérifie que les identifiants sont corrects via fonction sous SQL verify() + row = login_verify(POST_NAME, POST_PRENOM, POST_PASSWORD) + # Si la connexion s'établie alors on envoie vers index avec les différentes données + if row: + # On set les variables de sessions + session['logged_in'] = True + session.permanent = True + session['prenom'] = row[2] + session['nom'] = row[1] + session['ID'] = row[0] + session['rank'] = setRank(row[4]) + # On affiche la template preloader + return redirect(url_for('preloader')) + # Si la connexion ne se fait pas alors on renvoit vers login avec une erreur + else: + flash('Identifiants incorrects', 'danger') + return redirect(url_for('login')) + + +# Page de déconnexion - REVOIR VARIABLES GLOBALES +@app.route("/logout") +def logout(): + # Set logged_in to False pour fermer la session + session['logged_in'] = False + # Destruction des différentes valeurs sessions + session.pop('prenom', None) + session.pop('nom', None) + session.pop('ID', None) + session.pop('rank', None) + # Retourne à la page login avec message + flash('Vous avez été déconnecté', 'success') + return redirect(url_for('login')) + + +# Page mot de passe oublié - A FAIRE A LA FIN +@app.route('/forgot-password') +def forgot_password(): + return render_template('auth/forgot-password.html', title='Mot de passe oublié') + + +# Page d'enregistrement compte - A FAIRE A LA FIN +@app.route('/register') +def register(): + return render_template('auth/register.html', title='Inscription') \ No newline at end of file diff --git a/oxyapp/bdd_login.py b/oxyapp/bdd_login.py new file mode 100644 index 0000000..f6b1c77 --- /dev/null +++ b/oxyapp/bdd_login.py @@ -0,0 +1,9 @@ +import pymysql + + +def bdd_login(): + #conn = pymysql.connect(host='172.29.1.15', port=3308, user='root', passwd='', db='projet') + #conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='', db='projet') + conn = pymysql.connect(host='azrod-server.ovh', port=3306, user='access', passwd='PROJET2607', db='projet', autocommit=True) + cur = conn.cursor() + return cur diff --git a/oxyapp/database.py b/oxyapp/database.py new file mode 100644 index 0000000..27f2cd5 --- /dev/null +++ b/oxyapp/database.py @@ -0,0 +1,137 @@ +import pymysql +from oxyapp.utils import tupleToList + +db_location = pymysql.connect(host='azrod-server.ovh', port=3306, user='access', passwd='PROJET2607', + db='projet', autocommit=True) + + +# Récupère tous les utilisateurs +def list_users(): + try: + with db_location.cursor() as _conn: + _conn.execute("SELECT id, Nom, Prenom, Tel, Privilege FROM `users` ORDER BY `ID` ASC;") + result = _conn.fetchall() + return result + finally: + _conn.close() + + +# Récupère tous les patients +def list_patient(idManage): + try: + with db_location.cursor() as _conn: + _conn.execute("SELECT users.ID, users.Nom, users.Prenom, users.Tel, access.UserAccess FROM users " + "LEFT JOIN access ON access.UserAccess = '" + str(idManage) + "' AND " + "users.ID = access.AccessedUser WHERE users.Privilege = 'patient' ORDER BY users.ID ASC;") + result = _conn.fetchall() + list_final = tupleToList(result, idManage) + return list_final + finally: + _conn.close() + + +# Vérifie les données de connexion - AUCUN CRYPTAGE CAR PROJET mais essentiel à rajouter par la suite +def login_verify(nom, prenom, pw): + try: + with db_location.cursor() as _conn: + _conn.execute( + "SELECT id, nom, prenom, password, privilege FROM users WHERE nom = '" + nom + "' AND password = '" + + pw + "' AND prenom = '" + prenom + "';") + row = [] + for row in _conn: + print(row) + return row + finally: + _conn.close() + + +# Permet de récupérer l'utilisateur pour envoyer message - a modifier pour envoyer à un numéro spécifique +def messageSendToID(id): + try: + with db_location.cursor() as _conn: + result = _conn.execute("SELECT id, nom, prenom FROM users WHERE id = '" + str(id) + "';") + return result + finally: + _conn.close() + + +# Permet de récupérer les données de localisations d'un utilisateur +def getLocalisation(id): + try: + with db_location.cursor() as _conn: + _conn.execute( + "SELECT data.latitude, data.longitude FROM data, users WHERE users.ID = '" + str(id) + "' AND data.User = '" + str(id) + "' " + "ORDER BY data.ID DESC LIMIT 1;") + row = [] + for row in _conn: + print(row) + return row + finally: + _conn.close() + + +# Récupère les données vitales d'un utilisateurs +def getDataUser(id): + try: + with db_location.cursor() as _conn: + _conn.execute( + "SELECT users.prenom, users.nom, data.bpm, data.oxy, data.chute FROM data, users WHERE users.ID = '" + + str(id) + "' AND data.User = '" + str(id) + "' ORDER BY data.ID DESC LIMIT 1;") + row = [] + for row in _conn: + print(row) + return row + finally: + _conn.close() + + +# Ajoutes un utilisateurs +def add_user(name, prenom, number, pw, rank): + try: + with db_location.cursor() as _conn: + var = "" + if str(rank) == "Patient": + rank = "patient" + var = "INSERT INTO users (ID, Nom, Prenom, Password, Privilege, Tel) VALUES (NULL , '" + name \ + + "', '" + prenom + "', '" + pw + "', '" + rank + "', '" + number + "');" + if str(rank) == "Proche": + rank = "proche" + var = "INSERT INTO users (ID, Nom, Prenom, Password, Privilege, Tel) VALUES (NULL , '" + name \ + + "', '" + prenom + "', '" + pw + "', '" + rank + "', '" + number + "');" + if str(rank) == "Personnel Médical": + rank = "med" + var = "INSERT INTO users (ID, Nom, Prenom, Password, Privilege, Tel) VALUES (NULL , '" + name \ + + "', '" + prenom + "', '" + pw + "', '" + rank + "', '" + number + "');" + if str(rank) == "Administrateur": + rank = "admin" + var = "INSERT INTO users (ID, Nom, Prenom, Password, Privilege, Tel) VALUES (NULL , '" + name \ + + "', '" + prenom + "', '" + pw + "', '" + rank + "', '" + number + "');" + result = _conn.execute(var) + return result + finally: + _conn.close() + + +# Permet de confirmer l'existence d'un utilisateur +def confirm_user(name, prenom, id): + try: + with db_location.cursor() as _conn: + # Requête SQL + result = _conn.execute("SELECT id, nom, prenom FROM users WHERE id = '" + id + "' AND nom = '" + + name + "' AND prenom = '" + prenom + "';") + return result + finally: + _conn.close() + + +# Permet de supprimer un utilisateur +def delete_user_from_db(id): # Ajouter la suppresion liens entre proches et les data + try: + with db_location.cursor() as _conn: + _conn.execute("DELETE FROM users WHERE id = '" + id + "';") + finally: + _conn.close() + + +if __name__ == "__main__": + print(list_users()) diff --git a/oxyapp/errors/__init__.py b/oxyapp/errors/__init__.py new file mode 100644 index 0000000..69f90b6 --- /dev/null +++ b/oxyapp/errors/__init__.py @@ -0,0 +1,5 @@ +from flask import Blueprint + +bp = Blueprint('errors', __name__) + +from oxyapp.errors import handlers diff --git a/oxyapp/errors/handlers.py b/oxyapp/errors/handlers.py new file mode 100644 index 0000000..973aa0a --- /dev/null +++ b/oxyapp/errors/handlers.py @@ -0,0 +1,58 @@ +from flask import render_template +from oxyapp import app + + +# Error handlers - à modifier pour faire une erreur groupé avec un JSON +# Différentes pages erreurs +@app.errorhandler(400) +def session_out(e): + error_code = 404 + unknow_user = 'Unknow User' + error_message = str("Bad Request") + templateData = {'error_code': error_code, 'nom': unknow_user, 'error_message': error_message} + return render_template('errors/errorPage.html', **templateData), 400 + + +@app.errorhandler(403) +def session_out(e): + error_code = 403 + unknow_user = 'Unknow User' + error_message = str("Forbiden") + templateData = {'error_code': error_code, 'nom': unknow_user, 'error_message': error_message} + return render_template('errors/errorPage.html', **templateData) + + +@app.errorhandler(404) +def session_out(e): + error_code = 404 + unknow_user = 'Unknow User' + error_message = str("Page Not Found") + templateData = {'error_code': error_code, 'nom': unknow_user, 'error_message': error_message} + return render_template('errors/errorPage.html', **templateData), 404 + + +@app.errorhandler(405) +def session_out(e): + error_code = 405 + unknow_user = 'Unknow User' + error_message = str("Method not found") + templateData = {'error_code': error_code, 'nom': unknow_user, 'error_message': error_message} + return render_template('errors/errorPage.html', **templateData), 405 + + +@app.errorhandler(500) +def session_out(e): + error_code = 500 + unknow_user = 'Unknow User' + error_message = str("Internal Server Error") + templateData = {'error_code': error_code, 'nom': unknow_user, 'error_message': error_message} + return render_template('errors/errorPage.html', **templateData), 500 + + +@app.errorhandler(503) +def session_out(e): + error_code = 503 + unknow_user = 'Unknow User' + error_message = str("Service Unvailable") + templateData = {'error_code': error_code, 'nom': unknow_user, 'error_message': error_message} + return render_template('errors/errorPage.html', **templateData), 503 diff --git a/oxyapp/main/__init__.py b/oxyapp/main/__init__.py new file mode 100644 index 0000000..a3e0c88 --- /dev/null +++ b/oxyapp/main/__init__.py @@ -0,0 +1,5 @@ +from flask import Blueprint + +bp = Blueprint('main', __name__) + +from oxyapp.main import routes diff --git a/oxyapp/main/routes.py b/oxyapp/main/routes.py new file mode 100644 index 0000000..46008a3 --- /dev/null +++ b/oxyapp/main/routes.py @@ -0,0 +1,485 @@ +from oxyapp import app +# Import de tous les modules utiles +import os +from datetime import timedelta +from flask import abort, session, request, render_template, url_for, redirect, Response, send_from_directory +from flask import flash +# Fonctions persos +from oxyapp.database import getLocalisation, confirm_user +from oxyapp.database import add_user, delete_user_from_db, list_users, list_patient +from oxyapp.bdd_login import * +from oxyapp.utils import localisationUser +from oxyapp.utils_link import generate_charts, generate_data_health + +# Configure les variables globales - A SUPPRIMER RAPIDEMENT +app.TOWN = "" +app.COUNTRY = "" +app.NAMEMANAGE = "" +app.PRENOMMANAGE = "" +app.IDMANAGE = "" + + +# A chaque requête on set la session a 1min et on modifie la session +# Le test peut être effectué en attendant 1 min dans une page autre que index pour qu'elle soit expirée +@app.before_request +def refresh_session(): + session.modified = True + app.permanent_session_lifetime = timedelta(minutes=1) + + +# Page index +@app.route("/") +@app.route("/index") +def index(): + # Si on est pas connecté alors on retourne vers login + if not session.get('logged_in'): + return redirect(url_for('login')) + else: + # Si la session a expiré alors on retourne vers login avec un message + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + # Sinon on affiche la page index + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank'], + 'town': app.TOWN} + return render_template('index.html', **templateData, title='Index', sidebar=0) + + +# Page de chargement avant index +@app.route('/preloader') +def preloader(): + if not session.get('logged_in'): + return redirect(url_for('login')) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + # On execute la requête pour localiser + row = getLocalisation(session['ID']) + # Si on trouve des valeurs alors + if row: + # Définition de lat et lon + lat = row[0] + lon = row[1] + # Si lat et lon sont à 0 car l'application reçoit 0 données alors on affiche sans la ville + if lat == 0 and lon == 0: + app.TOWN = "null" + return render_template('preloader.html', title='Preloader') + # Sinon on continue de chercher la localisation + else: + app.TOWN = localisationUser(lat, lon) + return render_template('preloader.html', title='Preloader') + # Sinon on ne fait rien et on affiche le preloader + else: + return render_template('preloader.html', title='Preloader') + + +# Page profil utilisateur - A FAIRE A LA FIN +@app.route('/user_profil') +def user_profil(): + if not session.get('logged_in'): + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank'], + 'patient': "Josh", 'age': 18} + return render_template('user/user_profil.html', **templateData, title='Profil') + + +# Page pour fréquence cardiaque +@app.route('/charts_coeur') +def charts_coeur(): + if not session.get('logged_in'): + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank']} + return render_template('user/charts_coeur.html', **templateData, title='Graphique coeur', sidebar=1) + + +# Page pour taux oxygène +@app.route('/charts_oxy') +def charts_oxy(): + if not session.get('logged_in'): + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank']} + return render_template('user/charts_oxy.html', **templateData, title='Graphique oxygène', sidebar=2) + + +# Page localisation - modifier pour que ce soit plus efficace +@app.route('/localisation') +def page_localisation(): + if not session.get('logged_in'): + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + # On execute la requête + row = getLocalisation(session['ID']) + # Affection des variables sur lat et lon + if row: + lat = row[0] + lon = row[1] + else: + lat = 0 + lon = 0 + # Si lat et lon sur 0 alors on en cherche pas sa localisation et on affiche la page + if lat == 0 and lon == 0: + templateData = {'town': app.TOWN, 'prenom': session['prenom'], 'nom': session['nom'], + 'rank': session['rank']} + return render_template('user/localisation.html', **templateData, title='Localisation', loc=1, sidebar=3) + # Sinon on cherche sa localisation avec localisationUser + else: + app.TOWN = localisationUser(lat, lon) + templateData = {'lat': lat, 'lon': lon, 'town': app.TOWN, 'prenom': session['prenom'], + 'nom': session['nom'], 'rank': session['rank']} + return render_template('user/localisation.html', **templateData, title='Localisation', loc=0, sidebar=3) + + +# Page monitoring pour médecins MED - PROCHAINE MAJ +@app.route('/monitoring') +def monitoring(): + if not session.get('logged_in'): + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + if session.get('rank') != 3 and session.get('rank') != 2: + abort(404) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank']} + return render_template('med/monitoring.html', **templateData, title='Mono-Monitoring', sidebar=4) + + +# Page monitoring pour médecins MED - PROCHAINE MAJ +@app.route('/multimonitoring') +def multimonitoring(): + if not session.get('logged_in'): + return redirect(url_for('login')) + if session.get('rank') != 3 and session.get('rank') != 2: + abort(404) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank']} + return render_template('med/multimonitoring.html', **templateData, title='Multi-Monitoring', sidebar=12) + + +# Page table de tous les patients MED +@app.route('/patients') +def tables_patients(): + if not session.get('logged_in'): + return redirect(url_for('login')) + if session.get('rank') != 3 and session.get('rank') != 2: + abort(404) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank']} + return render_template('med/tables_patients.html', **templateData, title='Table patients', + accounts=list_patient(app.IDMANAGE), sidebar=5) + + +# Page pour modifier les différents utilisateurs ADMIN +@app.route('/utilisateurs') +def tables_admin(): + if not session.get('logged_in'): + return redirect(url_for('login')) + if session.get('rank') != 3: + abort(404) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank']} + return render_template('admin/tables_admin.html', **templateData, title='Table utilisateurs', + accounts=list_users(), sidebar=8) + + +# Page manage utilisateur MED +@app.route('/user_manage') +def user_manage(): + if not session.get('logged_in'): + return redirect(url_for('login')) + if session.get('rank') != 3: + abort(404) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank']} + return render_template('admin/user_manage.html', **templateData, title='Gestion utilisateurs', sidebar=7) + + +# Page ajout utilisateur ADMIN +@app.route('/user_add') +def user_add(): + if not session.get('logged_in'): + return redirect(url_for('login')) + if session.get('rank') != 3 and session.get('rank') != 2: + abort(404) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + if session.get('rank') == 2: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank']} + return render_template('admin/user_add.html', **templateData, title='Ajout utilisateur', sidebar=9) + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank']} + return render_template('admin/user_add.html', **templateData, title='Ajout utilisateur', sidebar=6, + admin_option=0) + + +# Page ajout utilisateur MED +@app.route('/user_delmed') +def user_delmed(): + if not session.get('logged_in'): + return redirect(url_for('login')) + if session.get('rank') != 3 and session.get('rank') != 2: + abort(404) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank']} + return render_template('med/user_deletemed.html', **templateData, title='Suppression patients', + accounts=list_patient(app.IDMANAGE), sidebar=10) + + +# Page suppression utilisateur ADMIN +@app.route('/user_del') +def user_del(): + if not session.get('logged_in'): + return redirect(url_for('login')) + if session.get('rank') != 3: + abort(404) + else: + if session['prenom'] is None: + flash('Votre session a expirée', 'warning') + return redirect(url_for('login')) + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'rank': session['rank']} + return render_template('admin/user_delete.html', **templateData, title='Suppression utilisateurs', + accounts=list_users(), sidebar=11) + + +# Création données graphique au format json pour html +@app.route('/chart-data') +def chart_data(): + return Response(generate_charts(session['ID']), mimetype='text/event-stream') + + +# Création données pour la div index au format json pour html +@app.route('/data-health') +def data_health(): + return Response(generate_data_health(session['ID']), mimetype='text/event-stream') + + +# Fonction enregistrement des utilisateur ADMIN +@app.route('/user_addbdd', methods=['POST']) +def user_add_bdd(): + # On récupére les données POST + POST_NAME = str(request.form['nom']) + POST_PRENOM = str(request.form['prenom']) + POST_NUMBER = str(request.form['number']) + POST_PASSWORD = str(request.form['password']) + POST_RANK = str(request.form['rank']) + # On ajoute l'utilisateur grâce à add_user() + result = add_user(POST_NAME, POST_PRENOM, POST_NUMBER, POST_PASSWORD, POST_RANK) + # Si on réussi alors on affiche la page user_add avec un message succès + if result: + flash("L'utilisateur a été ajouté avec succès", 'success') + return redirect(url_for('user_add')) + # Sinon on affiche la page user_add avec un message erreur + else: + flash("L'utilisateur n'a pas pu être ajouté", 'danger') + return redirect(url_for('user_add')) + + +# Fonction pour supprimer des utilisateurs dans la catégorie admin sur bdd ADMIN +@app.route('/user_deletebdd', methods=['POST']) +def user_delete_bdd(): + # On récupére les données POST + POST_NAME = str(request.form['nom']) + POST_PRENOM = str(request.form['prenom']) + POST_ID = str(request.form['id']) + # On vérifie que l'utilisateur existe + result = confirm_user(POST_NAME, POST_PRENOM, POST_ID) + # S'il existe alors ... + if result: + # On supprime l'utilisateur avec delete_user_from_db() + delete_user_from_db(POST_ID) + # On redirige vers user_del et on affiche message succès + flash("L'utilisateur " + POST_PRENOM + " " + POST_NAME + " a bien été supprimé", 'success') + return redirect(url_for('user_del')) + # Sinon on redirige vers user_del et on affiche message erreur + else: + flash("L'utilisateur " + POST_PRENOM + " " + POST_NAME + + " n'a pas été supprimé car les données ne correspondent pas ou n'existe pas", 'danger') + return redirect(url_for('user_del')) + + +# Fonction pour supprimer des patients dans la catégorie médical sur bdd MED +@app.route('/user_deletemedbdd', methods=['POST']) +def user_deletemed_bdd(): + # On récupére les données POST + POST_NAME = str(request.form['nom']) + POST_PRENOM = str(request.form['prenom']) + POST_ID = str(request.form['id']) + # On vérifie que l'utilisateur existe + result = confirm_user(POST_NAME, POST_PRENOM, POST_ID) + # S'il existe alors ... + if result: + # On supprime l'utilisateur avec delete_user_from_db() + delete_user_from_db(POST_ID) + # On redirige vers user_del et on affiche message succès + flash("L'utilisateur " + POST_PRENOM + " " + POST_NAME + " a bien été supprimé", 'success') + return redirect(url_for('user_delmed')) + # Sinon on redirige vers user_del et on affiche message erreur + else: + flash("L'utilisateur " + POST_PRENOM + " " + POST_NAME + + " n'a pas été supprimé car les données ne correspondent pas ou n'existe pas", 'danger') + return redirect(url_for('user_delmed')) + + +# Fonction gestion accès utilisateur pour obtenir tableau des patients ADMIN - A MODIFIER VRAIMENT RAPIDEMENT +@app.route('/user_manageinput', methods=['POST']) +def user_manage_input(): + if not session.get('logged_in'): + return redirect(url_for('login')) + else: + if session['prenom'] is None: + return render_template('auth/login.html') + else: + row = [] + app.NAMEMANAGE = str(request.form['nom']) + app.PRENOMMANAGE = str(request.form['prenom']) + # Requête SQL + var = "SELECT id, nom, prenom, privilege FROM users WHERE nom = '" + app.NAMEMANAGE + "' AND prenom = '" \ + + app.PRENOMMANAGE + "'" + try: + cur = bdd_login() + except pymysql.Error as e: + return abort(e) + result = cur.execute(var) + for row in cur: + print(row) + app.IDMANAGE = row[0] + app.PRENOMMANAGE = row[2] + app.NAMEMANAGE = row[1] + RANK = row[3] + cur.close() + if RANK != 'proche': + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'name_user': app.NAMEMANAGE, + 'prenom_user': app.PRENOMMANAGE, 'rank': session['rank']} + return render_template('admin/user_manage.html', **templateData, sidebar=7, usermanage_div=3) + else: + if result: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'name_user': app.NAMEMANAGE, + 'prenom_user': app.PRENOMMANAGE, 'rank': session['rank']} + return render_template('admin/user_manage.html', **templateData, + accounts=list_patient(app.IDMANAGE), sidebar=7, + datatable=1) + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'name_user': app.NAMEMANAGE, + 'prenom_user': app.PRENOMMANAGE, 'rank': session['rank']} + return render_template('admin/user_manage.html', **templateData, + accounts=list_patient(app.IDMANAGE), sidebar=7, + usermanage_div=2) + + +# Fonction pour gérer les accès de proches à patients ADMIN - A MODIFIER VRAIMENT RAPIDEMENT +@app.route('/user_manageaccount', methods=['POST']) +def user_manage_account(): + if not session.get('logged_in'): + return redirect(url_for('login')) + else: + if session['prenom'] is None: + return render_template('auth/login.html') + else: + POST_NAME = str(request.form['nom']) + POST_PRENOM = str(request.form['prenom']) + POST_ID = str(request.form['id']) + # Requête SQL + var = "SELECT id, nom, prenom FROM users WHERE nom = '" + POST_NAME + "' AND prenom = '" \ + + POST_PRENOM + "' AND id = '" + POST_ID + "'" + try: + cur = bdd_login() + except pymysql.Error as e: + return abort(e) + result = cur.execute(var) + print(result) + if result: + if request.form['askDelete'] == "Oui": + var = "DELETE FROM `access` WHERE `access`.`UserAccess` = '" + str( + app.IDMANAGE) + "' AND `access`.`AccessedUser` = '" + str(POST_ID) + "'" + print(var) + result = cur.execute(var) + if result: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'name_user': app.NAMEMANAGE, + 'prenom_user': app.PRENOMMANAGE, + 'rank': session['rank']} + return render_template('admin/user_manage.html', **templateData, + accounts=list_patient(app.IDMANAGE), + sidebar=7, + usermanage_div=0) + else: + return 'error' + else: + var = "INSERT INTO `access` (`ID`, `UserAccess`, `AccessedUser`) VALUES (NULL, '" + str( + app.IDMANAGE) + "', '" + str(POST_ID) + "');" + result = cur.execute(var) + if result: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'name_user': app.NAMEMANAGE, + 'prenom_user': app.PRENOMMANAGE, + 'rank': session['rank']} + return render_template('admin/user_manage.html', **templateData, + accounts=list_patient(app.IDMANAGE), + sidebar=7, + usermanage_div=0) + else: + return 'error' + else: + templateData = {'prenom': session['prenom'], 'nom': session['nom'], 'name_user': app.NAMEMANAGE, + 'prenom_user': app.PRENOMMANAGE, + 'rank': session['rank']} + return render_template('admin/user_manage.html', **templateData, accounts=list_patient(app.IDMANAGE), + sidebar=7, + usermanage_div=2) + + +# Route pour ico qui génère une erreur - FIX mais régler erreur est mieux +@app.route('/favicon.ico') +def favicon(): + return send_from_directory(os.path.join(app.root_path, 'static/img'), + 'favicon.ico', mimetype='image/vnd.microsoft.icon') diff --git a/oxyapp/static/css/sb-admin-2.css b/oxyapp/static/css/sb-admin-2.css new file mode 100644 index 0000000..fb8b411 --- /dev/null +++ b/oxyapp/static/css/sb-admin-2.css @@ -0,0 +1,10998 @@ +/*! + * Start Bootstrap - SB Admin 2 v4.0.7 (https://startbootstrap.com/template-overviews/sb-admin-2) + * Copyright 2013-2019 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-sb-admin-2/blob/master/LICENSE) + */ + +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +:root { + --blue: #4e73df; + --indigo: #6610f2; + --purple: #6f42c1; + --pink: #e83e8c; + --red: #e74a3b; + --orange: #fd7e14; + --yellow: #f6c23e; + --green: #1cc88a; + --teal: #20c9a6; + --cyan: #36b9cc; + --white: #fff; + --gray: #858796; + --gray-dark: #5a5c69; + --primary: #4e73df; + --secondary: #858796; + --success: #1cc88a; + --info: #36b9cc; + --warning: #f6c23e; + --danger: #e74a3b; + --light: #f8f9fc; + --dark: #5a5c69; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --font-family-sans-serif: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block; +} + +body { + margin: 0; + font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #858796; + text-align: left; + background-color: #fff; +} + +[tabindex="-1"]:focus { + outline: 0 !important; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0.5rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: .5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -.25em; +} + +sup { + top: -.5em; +} + +a { + color: #4e73df; + text-decoration: none; + background-color: transparent; +} + +a:hover { + color: #224abe; + text-decoration: underline; +} + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([tabindex]):focus { + outline: 0; +} + +pre, +code, +kbd, +samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 1em; +} + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; +} + +figure { + margin: 0 0 1rem; +} + +img { + vertical-align: middle; + border-style: none; +} + +svg { + overflow: hidden; + vertical-align: middle; +} + +table { + border-collapse: collapse; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #858796; + text-align: left; + caption-side: bottom; +} + +th { + text-align: inherit; +} + +label { + display: inline-block; + margin-bottom: 0.5rem; +} + +button { + border-radius: 0; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +select { + word-wrap: normal; +} + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button:not(:disabled), +[type="button"]:not(:disabled), +[type="reset"]:not(:disabled), +[type="submit"]:not(:disabled) { + cursor: pointer; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; +} + +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; +} + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; +} + +textarea { + overflow: auto; + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; +} + +progress { + vertical-align: baseline; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none; +} + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +summary { + display: list-item; + cursor: pointer; +} + +template { + display: none; +} + +[hidden] { + display: none !important; +} + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0.5rem; + font-weight: 400; + line-height: 1.2; +} + +h1, .h1 { + font-size: 2.5rem; +} + +h2, .h2 { + font-size: 2rem; +} + +h3, .h3 { + font-size: 1.75rem; +} + +h4, .h4 { + font-size: 1.5rem; +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .h6 { + font-size: 1rem; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.2; +} + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +small, +.small { + font-size: 80%; + font-weight: 400; +} + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} + +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 90%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} + +.blockquote-footer { + display: block; + font-size: 80%; + color: #858796; +} + +.blockquote-footer::before { + content: "\2014\00A0"; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dddfeb; + border-radius: 0.35rem; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 90%; + color: #858796; +} + +code { + font-size: 87.5%; + color: #e83e8c; + word-break: break-word; +} + +a > code { + color: inherit; +} + +kbd { + padding: 0.2rem 0.4rem; + font-size: 87.5%; + color: #fff; + background-color: #3a3b45; + border-radius: 0.2rem; +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; +} + +pre { + display: block; + font-size: 87.5%; + color: #3a3b45; +} + +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + width: 100%; + padding-right: 0.75rem; + padding-left: 0.75rem; + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container { + max-width: 540px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 720px; + } +} + +@media (min-width: 992px) { + .container { + max-width: 960px; + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1140px; + } +} + +.container-fluid { + width: 100%; + padding-right: 0.75rem; + padding-left: 0.75rem; + margin-right: auto; + margin-left: auto; +} + +.row { + display: flex; + flex-wrap: wrap; + margin-right: -0.75rem; + margin-left: -0.75rem; +} + +.no-gutters { + margin-right: 0; + margin-left: 0; +} + +.no-gutters > .col, +.no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, +.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, +.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, +.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, +.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, +.col-xl-auto { + position: relative; + width: 100%; + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.col { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; +} + +.col-1 { + flex: 0 0 8.33333%; + max-width: 8.33333%; +} + +.col-2 { + flex: 0 0 16.66667%; + max-width: 16.66667%; +} + +.col-3 { + flex: 0 0 25%; + max-width: 25%; +} + +.col-4 { + flex: 0 0 33.33333%; + max-width: 33.33333%; +} + +.col-5 { + flex: 0 0 41.66667%; + max-width: 41.66667%; +} + +.col-6 { + flex: 0 0 50%; + max-width: 50%; +} + +.col-7 { + flex: 0 0 58.33333%; + max-width: 58.33333%; +} + +.col-8 { + flex: 0 0 66.66667%; + max-width: 66.66667%; +} + +.col-9 { + flex: 0 0 75%; + max-width: 75%; +} + +.col-10 { + flex: 0 0 83.33333%; + max-width: 83.33333%; +} + +.col-11 { + flex: 0 0 91.66667%; + max-width: 91.66667%; +} + +.col-12 { + flex: 0 0 100%; + max-width: 100%; +} + +.order-first { + order: -1; +} + +.order-last { + order: 13; +} + +.order-0 { + order: 0; +} + +.order-1 { + order: 1; +} + +.order-2 { + order: 2; +} + +.order-3 { + order: 3; +} + +.order-4 { + order: 4; +} + +.order-5 { + order: 5; +} + +.order-6 { + order: 6; +} + +.order-7 { + order: 7; +} + +.order-8 { + order: 8; +} + +.order-9 { + order: 9; +} + +.order-10 { + order: 10; +} + +.order-11 { + order: 11; +} + +.order-12 { + order: 12; +} + +.offset-1 { + margin-left: 8.33333%; +} + +.offset-2 { + margin-left: 16.66667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.33333%; +} + +.offset-5 { + margin-left: 41.66667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.33333%; +} + +.offset-8 { + margin-left: 66.66667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.33333%; +} + +.offset-11 { + margin-left: 91.66667%; +} + +@media (min-width: 576px) { + .col-sm { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-sm-1 { + flex: 0 0 8.33333%; + max-width: 8.33333%; + } + .col-sm-2 { + flex: 0 0 16.66667%; + max-width: 16.66667%; + } + .col-sm-3 { + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + flex: 0 0 33.33333%; + max-width: 33.33333%; + } + .col-sm-5 { + flex: 0 0 41.66667%; + max-width: 41.66667%; + } + .col-sm-6 { + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + flex: 0 0 58.33333%; + max-width: 58.33333%; + } + .col-sm-8 { + flex: 0 0 66.66667%; + max-width: 66.66667%; + } + .col-sm-9 { + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + flex: 0 0 83.33333%; + max-width: 83.33333%; + } + .col-sm-11 { + flex: 0 0 91.66667%; + max-width: 91.66667%; + } + .col-sm-12 { + flex: 0 0 100%; + max-width: 100%; + } + .order-sm-first { + order: -1; + } + .order-sm-last { + order: 13; + } + .order-sm-0 { + order: 0; + } + .order-sm-1 { + order: 1; + } + .order-sm-2 { + order: 2; + } + .order-sm-3 { + order: 3; + } + .order-sm-4 { + order: 4; + } + .order-sm-5 { + order: 5; + } + .order-sm-6 { + order: 6; + } + .order-sm-7 { + order: 7; + } + .order-sm-8 { + order: 8; + } + .order-sm-9 { + order: 9; + } + .order-sm-10 { + order: 10; + } + .order-sm-11 { + order: 11; + } + .order-sm-12 { + order: 12; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.33333%; + } + .offset-sm-2 { + margin-left: 16.66667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.33333%; + } + .offset-sm-5 { + margin-left: 41.66667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.33333%; + } + .offset-sm-8 { + margin-left: 66.66667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.33333%; + } + .offset-sm-11 { + margin-left: 91.66667%; + } +} + +@media (min-width: 768px) { + .col-md { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-md-1 { + flex: 0 0 8.33333%; + max-width: 8.33333%; + } + .col-md-2 { + flex: 0 0 16.66667%; + max-width: 16.66667%; + } + .col-md-3 { + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + flex: 0 0 33.33333%; + max-width: 33.33333%; + } + .col-md-5 { + flex: 0 0 41.66667%; + max-width: 41.66667%; + } + .col-md-6 { + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + flex: 0 0 58.33333%; + max-width: 58.33333%; + } + .col-md-8 { + flex: 0 0 66.66667%; + max-width: 66.66667%; + } + .col-md-9 { + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + flex: 0 0 83.33333%; + max-width: 83.33333%; + } + .col-md-11 { + flex: 0 0 91.66667%; + max-width: 91.66667%; + } + .col-md-12 { + flex: 0 0 100%; + max-width: 100%; + } + .order-md-first { + order: -1; + } + .order-md-last { + order: 13; + } + .order-md-0 { + order: 0; + } + .order-md-1 { + order: 1; + } + .order-md-2 { + order: 2; + } + .order-md-3 { + order: 3; + } + .order-md-4 { + order: 4; + } + .order-md-5 { + order: 5; + } + .order-md-6 { + order: 6; + } + .order-md-7 { + order: 7; + } + .order-md-8 { + order: 8; + } + .order-md-9 { + order: 9; + } + .order-md-10 { + order: 10; + } + .order-md-11 { + order: 11; + } + .order-md-12 { + order: 12; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.33333%; + } + .offset-md-2 { + margin-left: 16.66667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.33333%; + } + .offset-md-5 { + margin-left: 41.66667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.33333%; + } + .offset-md-8 { + margin-left: 66.66667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.33333%; + } + .offset-md-11 { + margin-left: 91.66667%; + } +} + +@media (min-width: 992px) { + .col-lg { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-lg-1 { + flex: 0 0 8.33333%; + max-width: 8.33333%; + } + .col-lg-2 { + flex: 0 0 16.66667%; + max-width: 16.66667%; + } + .col-lg-3 { + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + flex: 0 0 33.33333%; + max-width: 33.33333%; + } + .col-lg-5 { + flex: 0 0 41.66667%; + max-width: 41.66667%; + } + .col-lg-6 { + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + flex: 0 0 58.33333%; + max-width: 58.33333%; + } + .col-lg-8 { + flex: 0 0 66.66667%; + max-width: 66.66667%; + } + .col-lg-9 { + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + flex: 0 0 83.33333%; + max-width: 83.33333%; + } + .col-lg-11 { + flex: 0 0 91.66667%; + max-width: 91.66667%; + } + .col-lg-12 { + flex: 0 0 100%; + max-width: 100%; + } + .order-lg-first { + order: -1; + } + .order-lg-last { + order: 13; + } + .order-lg-0 { + order: 0; + } + .order-lg-1 { + order: 1; + } + .order-lg-2 { + order: 2; + } + .order-lg-3 { + order: 3; + } + .order-lg-4 { + order: 4; + } + .order-lg-5 { + order: 5; + } + .order-lg-6 { + order: 6; + } + .order-lg-7 { + order: 7; + } + .order-lg-8 { + order: 8; + } + .order-lg-9 { + order: 9; + } + .order-lg-10 { + order: 10; + } + .order-lg-11 { + order: 11; + } + .order-lg-12 { + order: 12; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.33333%; + } + .offset-lg-2 { + margin-left: 16.66667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.33333%; + } + .offset-lg-5 { + margin-left: 41.66667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333%; + } + .offset-lg-8 { + margin-left: 66.66667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333%; + } + .offset-lg-11 { + margin-left: 91.66667%; + } +} + +@media (min-width: 1200px) { + .col-xl { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-xl-1 { + flex: 0 0 8.33333%; + max-width: 8.33333%; + } + .col-xl-2 { + flex: 0 0 16.66667%; + max-width: 16.66667%; + } + .col-xl-3 { + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + flex: 0 0 33.33333%; + max-width: 33.33333%; + } + .col-xl-5 { + flex: 0 0 41.66667%; + max-width: 41.66667%; + } + .col-xl-6 { + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + flex: 0 0 58.33333%; + max-width: 58.33333%; + } + .col-xl-8 { + flex: 0 0 66.66667%; + max-width: 66.66667%; + } + .col-xl-9 { + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + flex: 0 0 83.33333%; + max-width: 83.33333%; + } + .col-xl-11 { + flex: 0 0 91.66667%; + max-width: 91.66667%; + } + .col-xl-12 { + flex: 0 0 100%; + max-width: 100%; + } + .order-xl-first { + order: -1; + } + .order-xl-last { + order: 13; + } + .order-xl-0 { + order: 0; + } + .order-xl-1 { + order: 1; + } + .order-xl-2 { + order: 2; + } + .order-xl-3 { + order: 3; + } + .order-xl-4 { + order: 4; + } + .order-xl-5 { + order: 5; + } + .order-xl-6 { + order: 6; + } + .order-xl-7 { + order: 7; + } + .order-xl-8 { + order: 8; + } + .order-xl-9 { + order: 9; + } + .order-xl-10 { + order: 10; + } + .order-xl-11 { + order: 11; + } + .order-xl-12 { + order: 12; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.33333%; + } + .offset-xl-2 { + margin-left: 16.66667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.33333%; + } + .offset-xl-5 { + margin-left: 41.66667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.33333%; + } + .offset-xl-8 { + margin-left: 66.66667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.33333%; + } + .offset-xl-11 { + margin-left: 91.66667%; + } +} + +.table { + width: 100%; + margin-bottom: 1rem; + color: #858796; +} + +.table th, +.table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #e3e6f0; +} + +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid #e3e6f0; +} + +.table tbody + tbody { + border-top: 2px solid #e3e6f0; +} + +.table-sm th, +.table-sm td { + padding: 0.3rem; +} + +.table-bordered { + border: 1px solid #e3e6f0; +} + +.table-bordered th, +.table-bordered td { + border: 1px solid #e3e6f0; +} + +.table-bordered thead th, +.table-bordered thead td { + border-bottom-width: 2px; +} + +.table-borderless th, +.table-borderless td, +.table-borderless thead th, +.table-borderless tbody + tbody { + border: 0; +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.05); +} + +.table-hover tbody tr:hover { + color: #858796; + background-color: rgba(0, 0, 0, 0.075); +} + +.table-primary, +.table-primary > th, +.table-primary > td { + background-color: #cdd8f6; +} + +.table-primary th, +.table-primary td, +.table-primary thead th, +.table-primary tbody + tbody { + border-color: #a3b6ee; +} + +.table-hover .table-primary:hover { + background-color: #b7c7f2; +} + +.table-hover .table-primary:hover > td, +.table-hover .table-primary:hover > th { + background-color: #b7c7f2; +} + +.table-secondary, +.table-secondary > th, +.table-secondary > td { + background-color: #dddde2; +} + +.table-secondary th, +.table-secondary td, +.table-secondary thead th, +.table-secondary tbody + tbody { + border-color: #c0c1c8; +} + +.table-hover .table-secondary:hover { + background-color: #cfcfd6; +} + +.table-hover .table-secondary:hover > td, +.table-hover .table-secondary:hover > th { + background-color: #cfcfd6; +} + +.table-success, +.table-success > th, +.table-success > td { + background-color: #bff0de; +} + +.table-success th, +.table-success td, +.table-success thead th, +.table-success tbody + tbody { + border-color: #89e2c2; +} + +.table-hover .table-success:hover { + background-color: #aaebd3; +} + +.table-hover .table-success:hover > td, +.table-hover .table-success:hover > th { + background-color: #aaebd3; +} + +.table-info, +.table-info > th, +.table-info > td { + background-color: #c7ebf1; +} + +.table-info th, +.table-info td, +.table-info thead th, +.table-info tbody + tbody { + border-color: #96dbe4; +} + +.table-hover .table-info:hover { + background-color: #b3e4ec; +} + +.table-hover .table-info:hover > td, +.table-hover .table-info:hover > th { + background-color: #b3e4ec; +} + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #fceec9; +} + +.table-warning th, +.table-warning td, +.table-warning thead th, +.table-warning tbody + tbody { + border-color: #fadf9b; +} + +.table-hover .table-warning:hover { + background-color: #fbe6b1; +} + +.table-hover .table-warning:hover > td, +.table-hover .table-warning:hover > th { + background-color: #fbe6b1; +} + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f8ccc8; +} + +.table-danger th, +.table-danger td, +.table-danger thead th, +.table-danger tbody + tbody { + border-color: #f3a199; +} + +.table-hover .table-danger:hover { + background-color: #f5b7b1; +} + +.table-hover .table-danger:hover > td, +.table-hover .table-danger:hover > th { + background-color: #f5b7b1; +} + +.table-light, +.table-light > th, +.table-light > td { + background-color: #fdfdfe; +} + +.table-light th, +.table-light td, +.table-light thead th, +.table-light tbody + tbody { + border-color: #fbfcfd; +} + +.table-hover .table-light:hover { + background-color: #ececf6; +} + +.table-hover .table-light:hover > td, +.table-hover .table-light:hover > th { + background-color: #ececf6; +} + +.table-dark, +.table-dark > th, +.table-dark > td { + background-color: #d1d1d5; +} + +.table-dark th, +.table-dark td, +.table-dark thead th, +.table-dark tbody + tbody { + border-color: #a9aab1; +} + +.table-hover .table-dark:hover { + background-color: #c4c4c9; +} + +.table-hover .table-dark:hover > td, +.table-hover .table-dark:hover > th { + background-color: #c4c4c9; +} + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover > td, +.table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.075); +} + +.table .thead-dark th { + color: #fff; + background-color: #5a5c69; + border-color: #6c6e7e; +} + +.table .thead-light th { + color: #6e707e; + background-color: #eaecf4; + border-color: #e3e6f0; +} + +.table-dark { + color: #fff; + background-color: #5a5c69; +} + +.table-dark th, +.table-dark td, +.table-dark thead th { + border-color: #6c6e7e; +} + +.table-dark.table-bordered { + border: 0; +} + +.table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); +} + +.table-dark.table-hover tbody tr:hover { + color: #fff; + background-color: rgba(255, 255, 255, 0.075); +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-sm > .table-bordered { + border: 0; + } +} + +@media (max-width: 767.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-md > .table-bordered { + border: 0; + } +} + +@media (max-width: 991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-lg > .table-bordered { + border: 0; + } +} + +@media (max-width: 1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-xl > .table-bordered { + border: 0; + } +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +.table-responsive > .table-bordered { + border: 0; +} + +.form-control { + display: block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #6e707e; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #d1d3e2; + border-radius: 0.35rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} + +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} + +.form-control:focus { + color: #6e707e; + background-color: #fff; + border-color: #bac8f3; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25); +} + +.form-control::-webkit-input-placeholder { + color: #858796; + opacity: 1; +} + +.form-control::-moz-placeholder { + color: #858796; + opacity: 1; +} + +.form-control:-ms-input-placeholder { + color: #858796; + opacity: 1; +} + +.form-control::-ms-input-placeholder { + color: #858796; + opacity: 1; +} + +.form-control::placeholder { + color: #858796; + opacity: 1; +} + +.form-control:disabled, .form-control[readonly] { + background-color: #eaecf4; + opacity: 1; +} + +select.form-control:focus::-ms-value { + color: #6e707e; + background-color: #fff; +} + +.form-control-file, +.form-control-range { + display: block; + width: 100%; +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; + line-height: 1.5; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; + line-height: 1.5; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding-top: 0.375rem; + padding-bottom: 0.375rem; + margin-bottom: 0; + line-height: 1.5; + color: #858796; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} + +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.form-control-lg { + height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +select.form-control[size], select.form-control[multiple] { + height: auto; +} + +textarea.form-control { + height: auto; +} + +.form-group { + margin-bottom: 1rem; +} + +.form-text { + display: block; + margin-top: 0.25rem; +} + +.form-row { + display: flex; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px; +} + +.form-row > .col, +.form-row > [class*="col-"] { + padding-right: 5px; + padding-left: 5px; +} + +.form-check { + position: relative; + display: block; + padding-left: 1.25rem; +} + +.form-check-input { + position: absolute; + margin-top: 0.3rem; + margin-left: -1.25rem; +} + +.form-check-input:disabled ~ .form-check-label { + color: #858796; +} + +.form-check-label { + margin-bottom: 0; +} + +.form-check-inline { + display: inline-flex; + align-items: center; + padding-left: 0; + margin-right: 0.75rem; +} + +.form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: 0.3125rem; + margin-left: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #1cc88a; +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(28, 200, 138, 0.9); + border-radius: 0.35rem; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: #1cc88a; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: center right calc(0.375em + 0.1875rem); + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: #1cc88a; + box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.25); +} + +.was-validated .form-control:valid ~ .valid-feedback, +.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, +.form-control.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .custom-select:valid, .custom-select.is-valid { + border-color: #1cc88a; + padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { + border-color: #1cc88a; + box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.25); +} + +.was-validated .custom-select:valid ~ .valid-feedback, +.was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, +.custom-select.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control-file:valid ~ .valid-feedback, +.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, +.form-control-file.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #1cc88a; +} + +.was-validated .form-check-input:valid ~ .valid-feedback, +.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, +.form-check-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { + color: #1cc88a; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { + border-color: #1cc88a; +} + +.was-validated .custom-control-input:valid ~ .valid-feedback, +.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, +.custom-control-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { + border-color: #34e3a4; + background-color: #34e3a4; +} + +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.25); +} + +.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #1cc88a; +} + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { + border-color: #1cc88a; +} + +.was-validated .custom-file-input:valid ~ .valid-feedback, +.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, +.custom-file-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { + border-color: #1cc88a; + box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.25); +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #e74a3b; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(231, 74, 59, 0.9); + border-radius: 0.35rem; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: #e74a3b; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23e74a3b' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23e74a3b' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); + background-repeat: no-repeat; + background-position: center right calc(0.375em + 0.1875rem); + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: #e74a3b; + box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25); +} + +.was-validated .form-control:invalid ~ .invalid-feedback, +.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, +.form-control.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .custom-select:invalid, .custom-select.is-invalid { + border-color: #e74a3b; + padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23e74a3b' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23e74a3b' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { + border-color: #e74a3b; + box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25); +} + +.was-validated .custom-select:invalid ~ .invalid-feedback, +.was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, +.custom-select.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control-file:invalid ~ .invalid-feedback, +.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, +.form-control-file.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #e74a3b; +} + +.was-validated .form-check-input:invalid ~ .invalid-feedback, +.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, +.form-check-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { + color: #e74a3b; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { + border-color: #e74a3b; +} + +.was-validated .custom-control-input:invalid ~ .invalid-feedback, +.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, +.custom-control-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { + border-color: #ed7468; + background-color: #ed7468; +} + +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25); +} + +.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #e74a3b; +} + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { + border-color: #e74a3b; +} + +.was-validated .custom-file-input:invalid ~ .invalid-feedback, +.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, +.custom-file-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { + border-color: #e74a3b; + box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25); +} + +.form-inline { + display: flex; + flex-flow: row wrap; + align-items: center; +} + +.form-inline .form-check { + width: 100%; +} + +@media (min-width: 576px) { + .form-inline label { + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 0; + } + .form-inline .form-group { + display: flex; + flex: 0 0 auto; + flex-flow: row wrap; + align-items: center; + margin-bottom: 0; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-plaintext { + display: inline-block; + } + .form-inline .input-group, + .form-inline .custom-select { + width: auto; + } + .form-inline .form-check { + display: flex; + align-items: center; + justify-content: center; + width: auto; + padding-left: 0; + } + .form-inline .form-check-input { + position: relative; + flex-shrink: 0; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0; + } + .form-inline .custom-control { + align-items: center; + justify-content: center; + } + .form-inline .custom-control-label { + margin-bottom: 0; + } +} + +.btn { + display: inline-block; + font-weight: 400; + color: #858796; + text-align: center; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + border-radius: 0.35rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} + +.btn:hover { + color: #858796; + text-decoration: none; +} + +.btn:focus, .btn.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25); +} + +.btn.disabled, .btn:disabled { + opacity: 0.65; +} + +a.btn.disabled, +fieldset:disabled a.btn { + pointer-events: none; +} + +.btn-primary { + color: #fff; + background-color: #4e73df; + border-color: #4e73df; +} + +.btn-primary:hover { + color: #fff; + background-color: #2e59d9; + border-color: #2653d4; +} + +.btn-primary:focus, .btn-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(105, 136, 228, 0.5); +} + +.btn-primary.disabled, .btn-primary:disabled { + color: #fff; + background-color: #4e73df; + border-color: #4e73df; +} + +.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, +.show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #2653d4; + border-color: #244ec9; +} + +.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(105, 136, 228, 0.5); +} + +.btn-secondary { + color: #fff; + background-color: #858796; + border-color: #858796; +} + +.btn-secondary:hover { + color: #fff; + background-color: #717384; + border-color: #6b6d7d; +} + +.btn-secondary:focus, .btn-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(151, 153, 166, 0.5); +} + +.btn-secondary.disabled, .btn-secondary:disabled { + color: #fff; + background-color: #858796; + border-color: #858796; +} + +.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, +.show > .btn-secondary.dropdown-toggle { + color: #fff; + background-color: #6b6d7d; + border-color: #656776; +} + +.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(151, 153, 166, 0.5); +} + +.btn-success { + color: #fff; + background-color: #1cc88a; + border-color: #1cc88a; +} + +.btn-success:hover { + color: #fff; + background-color: #17a673; + border-color: #169b6b; +} + +.btn-success:focus, .btn-success.focus { + box-shadow: 0 0 0 0.2rem rgba(62, 208, 156, 0.5); +} + +.btn-success.disabled, .btn-success:disabled { + color: #fff; + background-color: #1cc88a; + border-color: #1cc88a; +} + +.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, +.show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #169b6b; + border-color: #149063; +} + +.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(62, 208, 156, 0.5); +} + +.btn-info { + color: #fff; + background-color: #36b9cc; + border-color: #36b9cc; +} + +.btn-info:hover { + color: #fff; + background-color: #2c9faf; + border-color: #2a96a5; +} + +.btn-info:focus, .btn-info.focus { + box-shadow: 0 0 0 0.2rem rgba(84, 196, 212, 0.5); +} + +.btn-info.disabled, .btn-info:disabled { + color: #fff; + background-color: #36b9cc; + border-color: #36b9cc; +} + +.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, +.show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #2a96a5; + border-color: #278c9b; +} + +.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(84, 196, 212, 0.5); +} + +.btn-warning { + color: #fff; + background-color: #f6c23e; + border-color: #f6c23e; +} + +.btn-warning:hover { + color: #fff; + background-color: #f4b619; + border-color: #f4b30d; +} + +.btn-warning:focus, .btn-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(247, 203, 91, 0.5); +} + +.btn-warning.disabled, .btn-warning:disabled { + color: #fff; + background-color: #f6c23e; + border-color: #f6c23e; +} + +.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, +.show > .btn-warning.dropdown-toggle { + color: #fff; + background-color: #f4b30d; + border-color: #e9aa0b; +} + +.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(247, 203, 91, 0.5); +} + +.btn-danger { + color: #fff; + background-color: #e74a3b; + border-color: #e74a3b; +} + +.btn-danger:hover { + color: #fff; + background-color: #e02d1b; + border-color: #d52a1a; +} + +.btn-danger:focus, .btn-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(235, 101, 88, 0.5); +} + +.btn-danger.disabled, .btn-danger:disabled { + color: #fff; + background-color: #e74a3b; + border-color: #e74a3b; +} + +.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, +.show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #d52a1a; + border-color: #ca2819; +} + +.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(235, 101, 88, 0.5); +} + +.btn-light { + color: #3a3b45; + background-color: #f8f9fc; + border-color: #f8f9fc; +} + +.btn-light:hover { + color: #3a3b45; + background-color: #dde2f1; + border-color: #d4daed; +} + +.btn-light:focus, .btn-light.focus { + box-shadow: 0 0 0 0.2rem rgba(220, 221, 225, 0.5); +} + +.btn-light.disabled, .btn-light:disabled { + color: #3a3b45; + background-color: #f8f9fc; + border-color: #f8f9fc; +} + +.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, +.show > .btn-light.dropdown-toggle { + color: #3a3b45; + background-color: #d4daed; + border-color: #cbd3e9; +} + +.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(220, 221, 225, 0.5); +} + +.btn-dark { + color: #fff; + background-color: #5a5c69; + border-color: #5a5c69; +} + +.btn-dark:hover { + color: #fff; + background-color: #484a54; + border-color: #42444e; +} + +.btn-dark:focus, .btn-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(115, 116, 128, 0.5); +} + +.btn-dark.disabled, .btn-dark:disabled { + color: #fff; + background-color: #5a5c69; + border-color: #5a5c69; +} + +.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, +.show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #42444e; + border-color: #3d3e47; +} + +.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(115, 116, 128, 0.5); +} + +.btn-outline-primary { + color: #4e73df; + border-color: #4e73df; +} + +.btn-outline-primary:hover { + color: #fff; + background-color: #4e73df; + border-color: #4e73df; +} + +.btn-outline-primary:focus, .btn-outline-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.5); +} + +.btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #4e73df; + background-color: transparent; +} + +.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, +.show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #4e73df; + border-color: #4e73df; +} + +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.5); +} + +.btn-outline-secondary { + color: #858796; + border-color: #858796; +} + +.btn-outline-secondary:hover { + color: #fff; + background-color: #858796; + border-color: #858796; +} + +.btn-outline-secondary:focus, .btn-outline-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(133, 135, 150, 0.5); +} + +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #858796; + background-color: transparent; +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, +.show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #858796; + border-color: #858796; +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(133, 135, 150, 0.5); +} + +.btn-outline-success { + color: #1cc88a; + border-color: #1cc88a; +} + +.btn-outline-success:hover { + color: #fff; + background-color: #1cc88a; + border-color: #1cc88a; +} + +.btn-outline-success:focus, .btn-outline-success.focus { + box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.5); +} + +.btn-outline-success.disabled, .btn-outline-success:disabled { + color: #1cc88a; + background-color: transparent; +} + +.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, +.show > .btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #1cc88a; + border-color: #1cc88a; +} + +.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.5); +} + +.btn-outline-info { + color: #36b9cc; + border-color: #36b9cc; +} + +.btn-outline-info:hover { + color: #fff; + background-color: #36b9cc; + border-color: #36b9cc; +} + +.btn-outline-info:focus, .btn-outline-info.focus { + box-shadow: 0 0 0 0.2rem rgba(54, 185, 204, 0.5); +} + +.btn-outline-info.disabled, .btn-outline-info:disabled { + color: #36b9cc; + background-color: transparent; +} + +.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, +.show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #36b9cc; + border-color: #36b9cc; +} + +.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(54, 185, 204, 0.5); +} + +.btn-outline-warning { + color: #f6c23e; + border-color: #f6c23e; +} + +.btn-outline-warning:hover { + color: #fff; + background-color: #f6c23e; + border-color: #f6c23e; +} + +.btn-outline-warning:focus, .btn-outline-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(246, 194, 62, 0.5); +} + +.btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #f6c23e; + background-color: transparent; +} + +.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, +.show > .btn-outline-warning.dropdown-toggle { + color: #fff; + background-color: #f6c23e; + border-color: #f6c23e; +} + +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(246, 194, 62, 0.5); +} + +.btn-outline-danger { + color: #e74a3b; + border-color: #e74a3b; +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #e74a3b; + border-color: #e74a3b; +} + +.btn-outline-danger:focus, .btn-outline-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.5); +} + +.btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #e74a3b; + background-color: transparent; +} + +.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, +.show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #e74a3b; + border-color: #e74a3b; +} + +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.5); +} + +.btn-outline-light { + color: #f8f9fc; + border-color: #f8f9fc; +} + +.btn-outline-light:hover { + color: #3a3b45; + background-color: #f8f9fc; + border-color: #f8f9fc; +} + +.btn-outline-light:focus, .btn-outline-light.focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 252, 0.5); +} + +.btn-outline-light.disabled, .btn-outline-light:disabled { + color: #f8f9fc; + background-color: transparent; +} + +.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, +.show > .btn-outline-light.dropdown-toggle { + color: #3a3b45; + background-color: #f8f9fc; + border-color: #f8f9fc; +} + +.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 252, 0.5); +} + +.btn-outline-dark { + color: #5a5c69; + border-color: #5a5c69; +} + +.btn-outline-dark:hover { + color: #fff; + background-color: #5a5c69; + border-color: #5a5c69; +} + +.btn-outline-dark:focus, .btn-outline-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(90, 92, 105, 0.5); +} + +.btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #5a5c69; + background-color: transparent; +} + +.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, +.show > .btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #5a5c69; + border-color: #5a5c69; +} + +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(90, 92, 105, 0.5); +} + +.btn-link { + font-weight: 400; + color: #4e73df; + text-decoration: none; +} + +.btn-link:hover { + color: #224abe; + text-decoration: underline; +} + +.btn-link:focus, .btn-link.focus { + text-decoration: underline; + box-shadow: none; +} + +.btn-link:disabled, .btn-link.disabled { + color: #858796; + pointer-events: none; +} + +.btn-lg, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.btn-block { + display: block; + width: 100%; +} + +.btn-block + .btn-block { + margin-top: 0.5rem; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + transition: opacity 0.15s linear; +} + +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} + +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height 0.15s ease; +} + +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} + +.dropup, +.dropright, +.dropdown, +.dropleft { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} + +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} + +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 0.85rem; + color: #858796; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #e3e6f0; + border-radius: 0.35rem; +} + +.dropdown-menu-left { + right: auto; + left: 0; +} + +.dropdown-menu-right { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-left { + right: auto; + left: 0; + } + .dropdown-menu-sm-right { + right: 0; + left: auto; + } +} + +@media (min-width: 768px) { + .dropdown-menu-md-left { + right: auto; + left: 0; + } + .dropdown-menu-md-right { + right: 0; + left: auto; + } +} + +@media (min-width: 992px) { + .dropdown-menu-lg-left { + right: auto; + left: 0; + } + .dropdown-menu-lg-right { + right: 0; + left: auto; + } +} + +@media (min-width: 1200px) { + .dropdown-menu-xl-left { + right: auto; + left: 0; + } + .dropdown-menu-xl-right { + right: 0; + left: auto; + } +} + +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; +} + +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} + +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropright .dropdown-menu { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; +} + +.dropright .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} + +.dropright .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropright .dropdown-toggle::after { + vertical-align: 0; +} + +.dropleft .dropdown-menu { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; +} + +.dropleft .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} + +.dropleft .dropdown-toggle::after { + display: none; +} + +.dropleft .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} + +.dropleft .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { + right: auto; + bottom: auto; +} + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #eaecf4; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #3a3b45; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +.dropdown-item:hover, .dropdown-item:focus { + color: #2e2f37; + text-decoration: none; + background-color: #f8f9fc; +} + +.dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #4e73df; +} + +.dropdown-item.disabled, .dropdown-item:disabled { + color: #858796; + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #858796; + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: 0.25rem 1.5rem; + color: #3a3b45; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} + +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover { + z-index: 1; +} + +.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} + +.btn-toolbar .input-group { + width: auto; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} + +.dropdown-toggle-split::after, +.dropup .dropdown-toggle-split::after, +.dropright .dropdown-toggle-split::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} + +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} + +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} + +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.btn-group-toggle > .btn, +.btn-group-toggle > .btn-group > .btn { + margin-bottom: 0; +} + +.btn-group-toggle > .btn input[type="radio"], +.btn-group-toggle > .btn input[type="checkbox"], +.btn-group-toggle > .btn-group > .btn input[type="radio"], +.btn-group-toggle > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} + +.input-group > .form-control, +.input-group > .form-control-plaintext, +.input-group > .custom-select, +.input-group > .custom-file { + position: relative; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; +} + +.input-group > .form-control + .form-control, +.input-group > .form-control + .custom-select, +.input-group > .form-control + .custom-file, +.input-group > .form-control-plaintext + .form-control, +.input-group > .form-control-plaintext + .custom-select, +.input-group > .form-control-plaintext + .custom-file, +.input-group > .custom-select + .form-control, +.input-group > .custom-select + .custom-select, +.input-group > .custom-select + .custom-file, +.input-group > .custom-file + .form-control, +.input-group > .custom-file + .custom-select, +.input-group > .custom-file + .custom-file { + margin-left: -1px; +} + +.input-group > .form-control:focus, +.input-group > .custom-select:focus, +.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { + z-index: 3; +} + +.input-group > .custom-file .custom-file-input:focus { + z-index: 4; +} + +.input-group > .form-control:not(:last-child), +.input-group > .custom-select:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .form-control:not(:first-child), +.input-group > .custom-select:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group > .custom-file { + display: flex; + align-items: center; +} + +.input-group > .custom-file:not(:last-child) .custom-file-label, +.input-group > .custom-file:not(:last-child) .custom-file-label::after { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group-prepend, +.input-group-append { + display: flex; +} + +.input-group-prepend .btn, +.input-group-append .btn { + position: relative; + z-index: 2; +} + +.input-group-prepend .btn:focus, +.input-group-append .btn:focus { + z-index: 3; +} + +.input-group-prepend .btn + .btn, +.input-group-prepend .btn + .input-group-text, +.input-group-prepend .input-group-text + .input-group-text, +.input-group-prepend .input-group-text + .btn, +.input-group-append .btn + .btn, +.input-group-append .btn + .input-group-text, +.input-group-append .input-group-text + .input-group-text, +.input-group-append .input-group-text + .btn { + margin-left: -1px; +} + +.input-group-prepend { + margin-right: -1px; +} + +.input-group-append { + margin-left: -1px; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #6e707e; + text-align: center; + white-space: nowrap; + background-color: #eaecf4; + border: 1px solid #d1d3e2; + border-radius: 0.35rem; +} + +.input-group-text input[type="radio"], +.input-group-text input[type="checkbox"] { + margin-top: 0; +} + +.input-group-lg > .form-control:not(textarea), +.input-group-lg > .custom-select { + height: calc(1.5em + 1rem + 2px); +} + +.input-group-lg > .form-control, +.input-group-lg > .custom-select, +.input-group-lg > .input-group-prepend > .input-group-text, +.input-group-lg > .input-group-append > .input-group-text, +.input-group-lg > .input-group-prepend > .btn, +.input-group-lg > .input-group-append > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +.input-group-sm > .form-control:not(textarea), +.input-group-sm > .custom-select { + height: calc(1.5em + 0.5rem + 2px); +} + +.input-group-sm > .form-control, +.input-group-sm > .custom-select, +.input-group-sm > .input-group-prepend > .input-group-text, +.input-group-sm > .input-group-append > .input-group-text, +.input-group-sm > .input-group-prepend > .btn, +.input-group-sm > .input-group-append > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.input-group-lg > .custom-select, +.input-group-sm > .custom-select { + padding-right: 1.75rem; +} + +.input-group > .input-group-prepend > .btn, +.input-group > .input-group-prepend > .input-group-text, +.input-group > .input-group-append:not(:last-child) > .btn, +.input-group > .input-group-append:not(:last-child) > .input-group-text, +.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .input-group-append > .btn, +.input-group > .input-group-append > .input-group-text, +.input-group > .input-group-prepend:not(:first-child) > .btn, +.input-group > .input-group-prepend:not(:first-child) > .input-group-text, +.input-group > .input-group-prepend:first-child > .btn:not(:first-child), +.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-control { + position: relative; + display: block; + min-height: 1.5rem; + padding-left: 1.5rem; +} + +.custom-control-inline { + display: inline-flex; + margin-right: 1rem; +} + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + border-color: #4e73df; + background-color: #4e73df; +} + +.custom-control-input:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25); +} + +.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { + border-color: #bac8f3; +} + +.custom-control-input:not(:disabled):active ~ .custom-control-label::before { + color: #fff; + background-color: #e5ebfa; + border-color: #e5ebfa; +} + +.custom-control-input:disabled ~ .custom-control-label { + color: #858796; +} + +.custom-control-input:disabled ~ .custom-control-label::before { + background-color: #eaecf4; +} + +.custom-control-label { + position: relative; + margin-bottom: 0; + vertical-align: top; +} + +.custom-control-label::before { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + background-color: #fff; + border: #b7b9cc solid 1px; +} + +.custom-control-label::after { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background: no-repeat 50% / 50% 50%; +} + +.custom-checkbox .custom-control-label::before { + border-radius: 0.35rem; +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { + border-color: #4e73df; + background-color: #4e73df; +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(78, 115, 223, 0.5); +} + +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(78, 115, 223, 0.5); +} + +.custom-radio .custom-control-label::before { + border-radius: 50%; +} + +.custom-radio .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} + +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(78, 115, 223, 0.5); +} + +.custom-switch { + padding-left: 2.25rem; +} + +.custom-switch .custom-control-label::before { + left: -2.25rem; + width: 1.75rem; + pointer-events: all; + border-radius: 0.5rem; +} + +.custom-switch .custom-control-label::after { + top: calc(0.25rem + 2px); + left: calc(-2.25rem + 2px); + width: calc(1rem - 4px); + height: calc(1rem - 4px); + background-color: #b7b9cc; + border-radius: 0.5rem; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .custom-switch .custom-control-label::after { + transition: none; + } +} + +.custom-switch .custom-control-input:checked ~ .custom-control-label::after { + background-color: #fff; + transform: translateX(0.75rem); +} + +.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(78, 115, 223, 0.5); +} + +.custom-select { + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #6e707e; + vertical-align: middle; + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; + background-color: #fff; + border: 1px solid #d1d3e2; + border-radius: 0.35rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-select:focus { + border-color: #bac8f3; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25); +} + +.custom-select:focus::-ms-value { + color: #6e707e; + background-color: #fff; +} + +.custom-select[multiple], .custom-select[size]:not([size="1"]) { + height: auto; + padding-right: 0.75rem; + background-image: none; +} + +.custom-select:disabled { + color: #858796; + background-color: #eaecf4; +} + +.custom-select::-ms-expand { + display: none; +} + +.custom-select-sm { + height: calc(1.5em + 0.5rem + 2px); + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; +} + +.custom-select-lg { + height: calc(1.5em + 1rem + 2px); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; +} + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin-bottom: 0; +} + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin: 0; + opacity: 0; +} + +.custom-file-input:focus ~ .custom-file-label { + border-color: #bac8f3; + box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25); +} + +.custom-file-input:disabled ~ .custom-file-label { + background-color: #eaecf4; +} + +.custom-file-input:lang(en) ~ .custom-file-label::after { + content: "Browse"; +} + +.custom-file-input ~ .custom-file-label[data-browse]::after { + content: attr(data-browse); +} + +.custom-file-label { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-weight: 400; + line-height: 1.5; + color: #6e707e; + background-color: #fff; + border: 1px solid #d1d3e2; + border-radius: 0.35rem; +} + +.custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: calc(1.5em + 0.75rem); + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #6e707e; + content: "Browse"; + background-color: #eaecf4; + border-left: inherit; + border-radius: 0 0.35rem 0.35rem 0; +} + +.custom-range { + width: 100%; + height: calc(1rem + 0.4rem); + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-range:focus { + outline: none; +} + +.custom-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(78, 115, 223, 0.25); +} + +.custom-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(78, 115, 223, 0.25); +} + +.custom-range:focus::-ms-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(78, 115, 223, 0.25); +} + +.custom-range::-moz-focus-outer { + border: 0; +} + +.custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #4e73df; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-webkit-slider-thumb { + transition: none; + } +} + +.custom-range::-webkit-slider-thumb:active { + background-color: #e5ebfa; +} + +.custom-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dddfeb; + border-color: transparent; + border-radius: 1rem; +} + +.custom-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #4e73df; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-moz-range-thumb { + transition: none; + } +} + +.custom-range::-moz-range-thumb:active { + background-color: #e5ebfa; +} + +.custom-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dddfeb; + border-color: transparent; + border-radius: 1rem; +} + +.custom-range::-ms-thumb { + width: 1rem; + height: 1rem; + margin-top: 0; + margin-right: 0.2rem; + margin-left: 0.2rem; + background-color: #4e73df; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-ms-thumb { + transition: none; + } +} + +.custom-range::-ms-thumb:active { + background-color: #e5ebfa; +} + +.custom-range::-ms-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: 0.5rem; +} + +.custom-range::-ms-fill-lower { + background-color: #dddfeb; + border-radius: 1rem; +} + +.custom-range::-ms-fill-upper { + margin-right: 15px; + background-color: #dddfeb; + border-radius: 1rem; +} + +.custom-range:disabled::-webkit-slider-thumb { + background-color: #b7b9cc; +} + +.custom-range:disabled::-webkit-slider-runnable-track { + cursor: default; +} + +.custom-range:disabled::-moz-range-thumb { + background-color: #b7b9cc; +} + +.custom-range:disabled::-moz-range-track { + cursor: default; +} + +.custom-range:disabled::-ms-thumb { + background-color: #b7b9cc; +} + +.custom-control-label::before, +.custom-file-label, +.custom-select { + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .custom-control-label::before, + .custom-file-label, + .custom-select { + transition: none; + } +} + +.nav { + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: 0.5rem 1rem; +} + +.nav-link:hover, .nav-link:focus { + text-decoration: none; +} + +.nav-link.disabled { + color: #858796; + pointer-events: none; + cursor: default; +} + +.nav-tabs { + border-bottom: 1px solid #dddfeb; +} + +.nav-tabs .nav-item { + margin-bottom: -1px; +} + +.nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: 0.35rem; + border-top-right-radius: 0.35rem; +} + +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #eaecf4 #eaecf4 #dddfeb; +} + +.nav-tabs .nav-link.disabled { + color: #858796; + background-color: transparent; + border-color: transparent; +} + +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: #6e707e; + background-color: #fff; + border-color: #dddfeb #dddfeb #fff; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills .nav-link { + border-radius: 0.35rem; +} + +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #4e73df; +} + +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} + +.tab-content > .tab-pane { + display: none; +} + +.tab-content > .active { + display: block; +} + +.navbar { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: 0.5rem 1rem; +} + +.navbar > .container, +.navbar > .container-fluid { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; +} + +.navbar-brand { + display: inline-block; + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap; +} + +.navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; +} + +.navbar-nav { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; +} + +.navbar-nav .dropdown-menu { + position: static; + float: none; +} + +.navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.35rem; +} + +.navbar-toggler:hover, .navbar-toggler:focus { + text-decoration: none; +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; +} + +@media (max-width: 575.98px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-flow: row nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + flex-wrap: nowrap; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } +} + +@media (max-width: 767.98px) { + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 768px) { + .navbar-expand-md { + flex-flow: row nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + flex-wrap: nowrap; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } +} + +@media (max-width: 991.98px) { + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 992px) { + .navbar-expand-lg { + flex-flow: row nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + flex-wrap: nowrap; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } +} + +@media (max-width: 1199.98px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-flow: row nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + flex-wrap: nowrap; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } +} + +.navbar-expand { + flex-flow: row nowrap; + justify-content: flex-start; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid { + padding-right: 0; + padding-left: 0; +} + +.navbar-expand .navbar-nav { + flex-direction: row; +} + +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} + +.navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid { + flex-wrap: nowrap; +} + +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} + +.navbar-expand .navbar-toggler { + display: none; +} + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); +} + +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); +} + +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-text a { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-dark .navbar-brand { + color: #fff; +} + +.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff; +} + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); +} + +.navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); +} + +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .active > .nav-link, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .nav-link.active { + color: #fff; +} + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.1); +} + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-dark .navbar-text a { + color: #fff; +} + +.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { + color: #fff; +} + +.card { + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid #e3e6f0; + border-radius: 0.35rem; +} + +.card > hr { + margin-right: 0; + margin-left: 0; +} + +.card > .list-group:first-child .list-group-item:first-child { + border-top-left-radius: 0.35rem; + border-top-right-radius: 0.35rem; +} + +.card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 0.35rem; + border-bottom-left-radius: 0.35rem; +} + +.card-body { + flex: 1 1 auto; + padding: 1.25rem; +} + +.card-title { + margin-bottom: 0.75rem; +} + +.card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} + +.card-link + .card-link { + margin-left: 1.25rem; +} + +.card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: #f8f9fc; + border-bottom: 1px solid #e3e6f0; +} + +.card-header:first-child { + border-radius: calc(0.35rem - 1px) calc(0.35rem - 1px) 0 0; +} + +.card-header + .list-group .list-group-item:first-child { + border-top: 0; +} + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: #f8f9fc; + border-top: 1px solid #e3e6f0; +} + +.card-footer:last-child { + border-radius: 0 0 calc(0.35rem - 1px) calc(0.35rem - 1px); +} + +.card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; +} + +.card-img { + width: 100%; + border-radius: calc(0.35rem - 1px); +} + +.card-img-top { + width: 100%; + border-top-left-radius: calc(0.35rem - 1px); + border-top-right-radius: calc(0.35rem - 1px); +} + +.card-img-bottom { + width: 100%; + border-bottom-right-radius: calc(0.35rem - 1px); + border-bottom-left-radius: calc(0.35rem - 1px); +} + +.card-deck { + display: flex; + flex-direction: column; +} + +.card-deck .card { + margin-bottom: 0.75rem; +} + +@media (min-width: 576px) { + .card-deck { + flex-flow: row wrap; + margin-right: -0.75rem; + margin-left: -0.75rem; + } + .card-deck .card { + display: flex; + flex: 1 0 0%; + flex-direction: column; + margin-right: 0.75rem; + margin-bottom: 0; + margin-left: 0.75rem; + } +} + +.card-group { + display: flex; + flex-direction: column; +} + +.card-group > .card { + margin-bottom: 0.75rem; +} + +@media (min-width: 576px) { + .card-group { + flex-flow: row wrap; + } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.card-columns .card { + margin-bottom: 0.75rem; +} + +@media (min-width: 576px) { + .card-columns { + -moz-column-count: 3; + column-count: 3; + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; + orphans: 1; + widows: 1; + } + .card-columns .card { + display: inline-block; + width: 100%; + } +} + +.accordion > .card { + overflow: hidden; +} + +.accordion > .card:not(:first-of-type) .card-header:first-child { + border-radius: 0; +} + +.accordion > .card:not(:first-of-type):not(:last-of-type) { + border-bottom: 0; + border-radius: 0; +} + +.accordion > .card:first-of-type { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.accordion > .card:last-of-type { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.accordion > .card .card-header { + margin-bottom: -1px; +} + +.breadcrumb { + display: flex; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #eaecf4; + border-radius: 0.35rem; +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; +} + +.breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + color: #858796; + content: "/"; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; +} + +.breadcrumb-item.active { + color: #858796; +} + +.pagination { + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.35rem; +} + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #4e73df; + background-color: #fff; + border: 1px solid #dddfeb; +} + +.page-link:hover { + z-index: 2; + color: #224abe; + text-decoration: none; + background-color: #eaecf4; + border-color: #dddfeb; +} + +.page-link:focus { + z-index: 2; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25); +} + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 0.35rem; + border-bottom-left-radius: 0.35rem; +} + +.page-item:last-child .page-link { + border-top-right-radius: 0.35rem; + border-bottom-right-radius: 0.35rem; +} + +.page-item.active .page-link { + z-index: 1; + color: #fff; + background-color: #4e73df; + border-color: #4e73df; +} + +.page-item.disabled .page-link { + color: #858796; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dddfeb; +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + line-height: 1.5; +} + +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; +} + +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; +} + +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; +} + +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; +} + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.35rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .badge { + transition: none; + } +} + +a.badge:hover, a.badge:focus { + text-decoration: none; +} + +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; +} + +.badge-primary { + color: #fff; + background-color: #4e73df; +} + +a.badge-primary:hover, a.badge-primary:focus { + color: #fff; + background-color: #2653d4; +} + +a.badge-primary:focus, a.badge-primary.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.5); +} + +.badge-secondary { + color: #fff; + background-color: #858796; +} + +a.badge-secondary:hover, a.badge-secondary:focus { + color: #fff; + background-color: #6b6d7d; +} + +a.badge-secondary:focus, a.badge-secondary.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(133, 135, 150, 0.5); +} + +.badge-success { + color: #fff; + background-color: #1cc88a; +} + +a.badge-success:hover, a.badge-success:focus { + color: #fff; + background-color: #169b6b; +} + +a.badge-success:focus, a.badge-success.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.5); +} + +.badge-info { + color: #fff; + background-color: #36b9cc; +} + +a.badge-info:hover, a.badge-info:focus { + color: #fff; + background-color: #2a96a5; +} + +a.badge-info:focus, a.badge-info.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(54, 185, 204, 0.5); +} + +.badge-warning { + color: #fff; + background-color: #f6c23e; +} + +a.badge-warning:hover, a.badge-warning:focus { + color: #fff; + background-color: #f4b30d; +} + +a.badge-warning:focus, a.badge-warning.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(246, 194, 62, 0.5); +} + +.badge-danger { + color: #fff; + background-color: #e74a3b; +} + +a.badge-danger:hover, a.badge-danger:focus { + color: #fff; + background-color: #d52a1a; +} + +a.badge-danger:focus, a.badge-danger.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.5); +} + +.badge-light { + color: #3a3b45; + background-color: #f8f9fc; +} + +a.badge-light:hover, a.badge-light:focus { + color: #3a3b45; + background-color: #d4daed; +} + +a.badge-light:focus, a.badge-light.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(248, 249, 252, 0.5); +} + +.badge-dark { + color: #fff; + background-color: #5a5c69; +} + +a.badge-dark:hover, a.badge-dark:focus { + color: #fff; + background-color: #42444e; +} + +a.badge-dark:focus, a.badge-dark.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(90, 92, 105, 0.5); +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #eaecf4; + border-radius: 0.3rem; +} + +@media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; + } +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; +} + +.alert { + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.35rem; +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; +} + +.alert-dismissible { + padding-right: 4rem; +} + +.alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + color: inherit; +} + +.alert-primary { + color: #293c74; + background-color: #dce3f9; + border-color: #cdd8f6; +} + +.alert-primary hr { + border-top-color: #b7c7f2; +} + +.alert-primary .alert-link { + color: #1c294e; +} + +.alert-secondary { + color: #45464e; + background-color: #e7e7ea; + border-color: #dddde2; +} + +.alert-secondary hr { + border-top-color: #cfcfd6; +} + +.alert-secondary .alert-link { + color: #2d2e33; +} + +.alert-success { + color: #0f6848; + background-color: #d2f4e8; + border-color: #bff0de; +} + +.alert-success hr { + border-top-color: #aaebd3; +} + +.alert-success .alert-link { + color: #093b29; +} + +.alert-info { + color: #1c606a; + background-color: #d7f1f5; + border-color: #c7ebf1; +} + +.alert-info hr { + border-top-color: #b3e4ec; +} + +.alert-info .alert-link { + color: #113b42; +} + +.alert-warning { + color: #806520; + background-color: #fdf3d8; + border-color: #fceec9; +} + +.alert-warning hr { + border-top-color: #fbe6b1; +} + +.alert-warning .alert-link { + color: #574516; +} + +.alert-danger { + color: #78261f; + background-color: #fadbd8; + border-color: #f8ccc8; +} + +.alert-danger hr { + border-top-color: #f5b7b1; +} + +.alert-danger .alert-link { + color: #4f1915; +} + +.alert-light { + color: #818183; + background-color: #fefefe; + border-color: #fdfdfe; +} + +.alert-light hr { + border-top-color: #ececf6; +} + +.alert-light .alert-link { + color: #686869; +} + +.alert-dark { + color: #2f3037; + background-color: #dedee1; + border-color: #d1d1d5; +} + +.alert-dark hr { + border-top-color: #c4c4c9; +} + +.alert-dark .alert-link { + color: #18181c; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +.progress { + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.75rem; + background-color: #eaecf4; + border-radius: 0.35rem; +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #4e73df; + transition: width 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem; +} + +.progress-bar-animated { + -webkit-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite; +} + +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + -webkit-animation: none; + animation: none; + } +} + +.media { + display: flex; + align-items: flex-start; +} + +.media-body { + flex: 1; +} + +.list-group { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; +} + +.list-group-item-action { + width: 100%; + color: #6e707e; + text-align: inherit; +} + +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: #6e707e; + text-decoration: none; + background-color: #f8f9fc; +} + +.list-group-item-action:active { + color: #858796; + background-color: #eaecf4; +} + +.list-group-item { + position: relative; + display: block; + padding: 0.75rem 1.25rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} + +.list-group-item:first-child { + border-top-left-radius: 0.35rem; + border-top-right-radius: 0.35rem; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0.35rem; + border-bottom-left-radius: 0.35rem; +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #858796; + pointer-events: none; + background-color: #fff; +} + +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #4e73df; + border-color: #4e73df; +} + +.list-group-horizontal { + flex-direction: row; +} + +.list-group-horizontal .list-group-item { + margin-right: -1px; + margin-bottom: 0; +} + +.list-group-horizontal .list-group-item:first-child { + border-top-left-radius: 0.35rem; + border-bottom-left-radius: 0.35rem; + border-top-right-radius: 0; +} + +.list-group-horizontal .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.35rem; + border-bottom-right-radius: 0.35rem; + border-bottom-left-radius: 0; +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-sm .list-group-item:first-child { + border-top-left-radius: 0.35rem; + border-bottom-left-radius: 0.35rem; + border-top-right-radius: 0; + } + .list-group-horizontal-sm .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.35rem; + border-bottom-right-radius: 0.35rem; + border-bottom-left-radius: 0; + } +} + +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-md .list-group-item:first-child { + border-top-left-radius: 0.35rem; + border-bottom-left-radius: 0.35rem; + border-top-right-radius: 0; + } + .list-group-horizontal-md .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.35rem; + border-bottom-right-radius: 0.35rem; + border-bottom-left-radius: 0; + } +} + +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-lg .list-group-item:first-child { + border-top-left-radius: 0.35rem; + border-bottom-left-radius: 0.35rem; + border-top-right-radius: 0; + } + .list-group-horizontal-lg .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.35rem; + border-bottom-right-radius: 0.35rem; + border-bottom-left-radius: 0; + } +} + +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-xl .list-group-item:first-child { + border-top-left-radius: 0.35rem; + border-bottom-left-radius: 0.35rem; + border-top-right-radius: 0; + } + .list-group-horizontal-xl .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.35rem; + border-bottom-right-radius: 0.35rem; + border-bottom-left-radius: 0; + } +} + +.list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} + +.list-group-flush .list-group-item:last-child { + margin-bottom: -1px; +} + +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0; +} + +.list-group-flush:last-child .list-group-item:last-child { + margin-bottom: 0; + border-bottom: 0; +} + +.list-group-item-primary { + color: #293c74; + background-color: #cdd8f6; +} + +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #293c74; + background-color: #b7c7f2; +} + +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #293c74; + border-color: #293c74; +} + +.list-group-item-secondary { + color: #45464e; + background-color: #dddde2; +} + +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #45464e; + background-color: #cfcfd6; +} + +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #45464e; + border-color: #45464e; +} + +.list-group-item-success { + color: #0f6848; + background-color: #bff0de; +} + +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #0f6848; + background-color: #aaebd3; +} + +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #0f6848; + border-color: #0f6848; +} + +.list-group-item-info { + color: #1c606a; + background-color: #c7ebf1; +} + +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #1c606a; + background-color: #b3e4ec; +} + +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #1c606a; + border-color: #1c606a; +} + +.list-group-item-warning { + color: #806520; + background-color: #fceec9; +} + +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #806520; + background-color: #fbe6b1; +} + +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #806520; + border-color: #806520; +} + +.list-group-item-danger { + color: #78261f; + background-color: #f8ccc8; +} + +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #78261f; + background-color: #f5b7b1; +} + +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #78261f; + border-color: #78261f; +} + +.list-group-item-light { + color: #818183; + background-color: #fdfdfe; +} + +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #818183; + background-color: #ececf6; +} + +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818183; + border-color: #818183; +} + +.list-group-item-dark { + color: #2f3037; + background-color: #d1d1d5; +} + +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #2f3037; + background-color: #c4c4c9; +} + +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #2f3037; + border-color: #2f3037; +} + +.close { + float: right; + font-size: 1.5rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5; +} + +.close:hover { + color: #000; + text-decoration: none; +} + +.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { + opacity: .75; +} + +button.close { + padding: 0; + background-color: transparent; + border: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +a.close.disabled { + pointer-events: none; +} + +.toast { + max-width: 350px; + overflow: hidden; + font-size: 0.875rem; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + opacity: 0; + border-radius: 0.25rem; +} + +.toast:not(:last-child) { + margin-bottom: 0.75rem; +} + +.toast.showing { + opacity: 1; +} + +.toast.show { + display: block; + opacity: 1; +} + +.toast.hide { + display: none; +} + +.toast-header { + display: flex; + align-items: center; + padding: 0.25rem 0.75rem; + color: #858796; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} + +.toast-body { + padding: 0.75rem; +} + +.modal-open { + overflow: hidden; +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +.modal { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + display: none; + width: 100%; + height: 100%; + overflow: hidden; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; +} + +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} + +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} + +.modal.show .modal-dialog { + transform: none; +} + +.modal-dialog-scrollable { + display: flex; + max-height: calc(100% - 1rem); +} + +.modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 1rem); + overflow: hidden; +} + +.modal-dialog-scrollable .modal-header, +.modal-dialog-scrollable .modal-footer { + flex-shrink: 0; +} + +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - 1rem); +} + +.modal-dialog-centered::before { + display: block; + height: calc(100vh - 1rem); + content: ""; +} + +.modal-dialog-centered.modal-dialog-scrollable { + flex-direction: column; + justify-content: center; + height: 100%; +} + +.modal-dialog-centered.modal-dialog-scrollable .modal-content { + max-height: none; +} + +.modal-dialog-centered.modal-dialog-scrollable::before { + content: none; +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop.show { + opacity: 0.5; +} + +.modal-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid #e3e6f0; + border-top-left-radius: 0.3rem; + border-top-right-radius: 0.3rem; +} + +.modal-header .close { + padding: 1rem 1rem; + margin: -1rem -1rem -1rem auto; +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5; +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: 1rem; +} + +.modal-footer { + display: flex; + align-items: center; + justify-content: flex-end; + padding: 1rem; + border-top: 1px solid #e3e6f0; + border-bottom-right-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; +} + +.modal-footer > :not(:first-child) { + margin-left: .25rem; +} + +.modal-footer > :not(:last-child) { + margin-right: .25rem; +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; + } + .modal-dialog-scrollable { + max-height: calc(100% - 3.5rem); + } + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 3.5rem); + } + .modal-dialog-centered { + min-height: calc(100% - 3.5rem); + } + .modal-dialog-centered::before { + height: calc(100vh - 3.5rem); + } + .modal-sm { + max-width: 300px; + } +} + +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + max-width: 800px; + } +} + +@media (min-width: 1200px) { + .modal-xl { + max-width: 1140px; + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; +} + +.tooltip.show { + opacity: 0.9; +} + +.tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; +} + +.tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0; +} + +.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; +} + +.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; +} + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem; +} + +.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; +} + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0; +} + +.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; +} + +.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; +} + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem; +} + +.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.35rem; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; +} + +.popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.3rem; +} + +.popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; +} + +.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { + bottom: calc((0.5rem + 1px) * -1); +} + +.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { + bottom: 0; + border-width: 0.5rem 0.5rem 0; + border-top-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { + bottom: 1px; + border-width: 0.5rem 0.5rem 0; + border-top-color: #fff; +} + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; +} + +.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { + left: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; +} + +.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { + left: 0; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { + left: 1px; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: #fff; +} + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; +} + +.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { + top: calc((0.5rem + 1px) * -1); +} + +.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { + top: 0; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { + top: 1px; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: #fff; +} + +.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7; +} + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; +} + +.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { + right: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; +} + +.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { + right: 0; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { + right: 1px; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: #fff; +} + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} + +.popover-header:empty { + display: none; +} + +.popover-body { + padding: 0.5rem 0.75rem; + color: #858796; +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-left), +.active.carousel-item-right { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-right), +.active.carousel-item-left { + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} + +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right { + z-index: 1; + opacity: 1; +} + +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + z-index: 0; + opacity: 0; + transition: 0s 0.6s opacity; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-right { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; + transition: opacity 0.15s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} + +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: no-repeat 50% / 100% 100%; +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 15; + display: flex; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; +} + +.carousel-indicators li { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: .5; + transition: opacity 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-indicators li { + transition: none; + } +} + +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; +} + +@-webkit-keyframes spinner-border { + to { + transform: rotate(360deg); + } +} + +@keyframes spinner-border { + to { + transform: rotate(360deg); + } +} + +.spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + border: 0.25em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + -webkit-animation: spinner-border .75s linear infinite; + animation: spinner-border .75s linear infinite; +} + +.spinner-border-sm { + width: 1rem; + height: 1rem; + border-width: 0.2em; +} + +@-webkit-keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + } +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + } +} + +.spinner-grow { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + background-color: currentColor; + border-radius: 50%; + opacity: 0; + -webkit-animation: spinner-grow .75s linear infinite; + animation: spinner-grow .75s linear infinite; +} + +.spinner-grow-sm { + width: 1rem; + height: 1rem; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.bg-primary { + background-color: #4e73df !important; +} + +a.bg-primary:hover, a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #2653d4 !important; +} + +.bg-secondary { + background-color: #858796 !important; +} + +a.bg-secondary:hover, a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #6b6d7d !important; +} + +.bg-success { + background-color: #1cc88a !important; +} + +a.bg-success:hover, a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #169b6b !important; +} + +.bg-info { + background-color: #36b9cc !important; +} + +a.bg-info:hover, a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #2a96a5 !important; +} + +.bg-warning { + background-color: #f6c23e !important; +} + +a.bg-warning:hover, a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #f4b30d !important; +} + +.bg-danger { + background-color: #e74a3b !important; +} + +a.bg-danger:hover, a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #d52a1a !important; +} + +.bg-light { + background-color: #f8f9fc !important; +} + +a.bg-light:hover, a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #d4daed !important; +} + +.bg-dark { + background-color: #5a5c69 !important; +} + +a.bg-dark:hover, a.bg-dark:focus, +button.bg-dark:hover, +button.bg-dark:focus { + background-color: #42444e !important; +} + +.bg-white { + background-color: #fff !important; +} + +.bg-transparent { + background-color: transparent !important; +} + +.border { + border: 1px solid #e3e6f0 !important; +} + +.border-top { + border-top: 1px solid #e3e6f0 !important; +} + +.border-right { + border-right: 1px solid #e3e6f0 !important; +} + +.border-bottom { + border-bottom: 1px solid #e3e6f0 !important; +} + +.border-left { + border-left: 1px solid #e3e6f0 !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-right-0 { + border-right: 0 !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-left-0 { + border-left: 0 !important; +} + +.border-primary { + border-color: #4e73df !important; +} + +.border-secondary { + border-color: #858796 !important; +} + +.border-success { + border-color: #1cc88a !important; +} + +.border-info { + border-color: #36b9cc !important; +} + +.border-warning { + border-color: #f6c23e !important; +} + +.border-danger { + border-color: #e74a3b !important; +} + +.border-light { + border-color: #f8f9fc !important; +} + +.border-dark { + border-color: #5a5c69 !important; +} + +.border-white { + border-color: #fff !important; +} + +.rounded-sm { + border-radius: 0.2rem !important; +} + +.rounded { + border-radius: 0.35rem !important; +} + +.rounded-top { + border-top-left-radius: 0.35rem !important; + border-top-right-radius: 0.35rem !important; +} + +.rounded-right { + border-top-right-radius: 0.35rem !important; + border-bottom-right-radius: 0.35rem !important; +} + +.rounded-bottom { + border-bottom-right-radius: 0.35rem !important; + border-bottom-left-radius: 0.35rem !important; +} + +.rounded-left { + border-top-left-radius: 0.35rem !important; + border-bottom-left-radius: 0.35rem !important; +} + +.rounded-lg { + border-radius: 0.3rem !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: 50rem !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.d-none { + display: none !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } +} + +@media (min-width: 768px) { + .d-md-none { + display: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } +} + +@media (min-width: 992px) { + .d-lg-none { + display: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } +} + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } +} + +@media print { + .d-print-none { + display: none !important; + } + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } +} + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; +} + +.embed-responsive::before { + display: block; + content: ""; +} + +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} + +.embed-responsive-21by9::before { + padding-top: 42.85714%; +} + +.embed-responsive-16by9::before { + padding-top: 56.25%; +} + +.embed-responsive-4by3::before { + padding-top: 75%; +} + +.embed-responsive-1by1::before { + padding-top: 100%; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +@media (min-width: 576px) { + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } +} + +@media (min-width: 768px) { + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } +} + +@media (min-width: 992px) { + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } +} + +@media (min-width: 1200px) { + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } +} + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} + +.float-none { + float: none !important; +} + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; + } + .float-sm-right { + float: right !important; + } + .float-sm-none { + float: none !important; + } +} + +@media (min-width: 768px) { + .float-md-left { + float: left !important; + } + .float-md-right { + float: right !important; + } + .float-md-none { + float: none !important; + } +} + +@media (min-width: 992px) { + .float-lg-left { + float: left !important; + } + .float-lg-right { + float: right !important; + } + .float-lg-none { + float: none !important; + } +} + +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; + } + .float-xl-right { + float: right !important; + } + .float-xl-none { + float: none !important; + } +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +@supports ((position: -webkit-sticky) or (position: sticky)) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem 0 rgba(58, 59, 69, 0.2) !important; +} + +.shadow { + box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.vw-100 { + width: 100vw !important; +} + +.vh-100 { + height: 100vh !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + pointer-events: auto; + content: ""; + background-color: rgba(0, 0, 0, 0); +} + +.m-0 { + margin: 0 !important; +} + +.mt-0, +.my-0 { + margin-top: 0 !important; +} + +.mr-0, +.mx-0 { + margin-right: 0 !important; +} + +.mb-0, +.my-0 { + margin-bottom: 0 !important; +} + +.ml-0, +.mx-0 { + margin-left: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; +} + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; +} + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; +} + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; +} + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; +} + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; +} + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.mt-3, +.my-3 { + margin-top: 1rem !important; +} + +.mr-3, +.mx-3 { + margin-right: 1rem !important; +} + +.mb-3, +.my-3 { + margin-bottom: 1rem !important; +} + +.ml-3, +.mx-3 { + margin-left: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.mt-4, +.my-4 { + margin-top: 1.5rem !important; +} + +.mr-4, +.mx-4 { + margin-right: 1.5rem !important; +} + +.mb-4, +.my-4 { + margin-bottom: 1.5rem !important; +} + +.ml-4, +.mx-4 { + margin-left: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.mt-5, +.my-5 { + margin-top: 3rem !important; +} + +.mr-5, +.mx-5 { + margin-right: 3rem !important; +} + +.mb-5, +.my-5 { + margin-bottom: 3rem !important; +} + +.ml-5, +.mx-5 { + margin-left: 3rem !important; +} + +.p-0 { + padding: 0 !important; +} + +.pt-0, +.py-0 { + padding-top: 0 !important; +} + +.pr-0, +.px-0 { + padding-right: 0 !important; +} + +.pb-0, +.py-0 { + padding-bottom: 0 !important; +} + +.pl-0, +.px-0 { + padding-left: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; +} + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; +} + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; +} + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; +} + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; +} + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; +} + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.pt-3, +.py-3 { + padding-top: 1rem !important; +} + +.pr-3, +.px-3 { + padding-right: 1rem !important; +} + +.pb-3, +.py-3 { + padding-bottom: 1rem !important; +} + +.pl-3, +.px-3 { + padding-left: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.pt-4, +.py-4 { + padding-top: 1.5rem !important; +} + +.pr-4, +.px-4 { + padding-right: 1.5rem !important; +} + +.pb-4, +.py-4 { + padding-bottom: 1.5rem !important; +} + +.pl-4, +.px-4 { + padding-left: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.pt-5, +.py-5 { + padding-top: 3rem !important; +} + +.pr-5, +.px-5 { + padding-right: 3rem !important; +} + +.pb-5, +.py-5 { + padding-bottom: 3rem !important; +} + +.pl-5, +.px-5 { + padding-left: 3rem !important; +} + +.m-n1 { + margin: -0.25rem !important; +} + +.mt-n1, +.my-n1 { + margin-top: -0.25rem !important; +} + +.mr-n1, +.mx-n1 { + margin-right: -0.25rem !important; +} + +.mb-n1, +.my-n1 { + margin-bottom: -0.25rem !important; +} + +.ml-n1, +.mx-n1 { + margin-left: -0.25rem !important; +} + +.m-n2 { + margin: -0.5rem !important; +} + +.mt-n2, +.my-n2 { + margin-top: -0.5rem !important; +} + +.mr-n2, +.mx-n2 { + margin-right: -0.5rem !important; +} + +.mb-n2, +.my-n2 { + margin-bottom: -0.5rem !important; +} + +.ml-n2, +.mx-n2 { + margin-left: -0.5rem !important; +} + +.m-n3 { + margin: -1rem !important; +} + +.mt-n3, +.my-n3 { + margin-top: -1rem !important; +} + +.mr-n3, +.mx-n3 { + margin-right: -1rem !important; +} + +.mb-n3, +.my-n3 { + margin-bottom: -1rem !important; +} + +.ml-n3, +.mx-n3 { + margin-left: -1rem !important; +} + +.m-n4 { + margin: -1.5rem !important; +} + +.mt-n4, +.my-n4 { + margin-top: -1.5rem !important; +} + +.mr-n4, +.mx-n4 { + margin-right: -1.5rem !important; +} + +.mb-n4, +.my-n4 { + margin-bottom: -1.5rem !important; +} + +.ml-n4, +.mx-n4 { + margin-left: -1.5rem !important; +} + +.m-n5 { + margin: -3rem !important; +} + +.mt-n5, +.my-n5 { + margin-top: -3rem !important; +} + +.mr-n5, +.mx-n5 { + margin-right: -3rem !important; +} + +.mb-n5, +.my-n5 { + margin-bottom: -3rem !important; +} + +.ml-n5, +.mx-n5 { + margin-left: -3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mt-auto, +.my-auto { + margin-top: auto !important; +} + +.mr-auto, +.mx-auto { + margin-right: auto !important; +} + +.mb-auto, +.my-auto { + margin-bottom: auto !important; +} + +.ml-auto, +.mx-auto { + margin-left: auto !important; +} + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; + } + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; + } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; + } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; + } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; + } + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; + } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; + } + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; + } + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; + } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; + } + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; + } + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; + } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; + } + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; + } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; + } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; + } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; + } + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; + } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; + } + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; + } + .p-sm-0 { + padding: 0 !important; + } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; + } + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; + } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; + } + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; + } + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; + } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; + } + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; + } + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; + } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; + } + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; + } + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; + } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; + } + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; + } + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; + } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; + } + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; + } + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; + } + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; + } + .m-sm-n1 { + margin: -0.25rem !important; + } + .mt-sm-n1, + .my-sm-n1 { + margin-top: -0.25rem !important; + } + .mr-sm-n1, + .mx-sm-n1 { + margin-right: -0.25rem !important; + } + .mb-sm-n1, + .my-sm-n1 { + margin-bottom: -0.25rem !important; + } + .ml-sm-n1, + .mx-sm-n1 { + margin-left: -0.25rem !important; + } + .m-sm-n2 { + margin: -0.5rem !important; + } + .mt-sm-n2, + .my-sm-n2 { + margin-top: -0.5rem !important; + } + .mr-sm-n2, + .mx-sm-n2 { + margin-right: -0.5rem !important; + } + .mb-sm-n2, + .my-sm-n2 { + margin-bottom: -0.5rem !important; + } + .ml-sm-n2, + .mx-sm-n2 { + margin-left: -0.5rem !important; + } + .m-sm-n3 { + margin: -1rem !important; + } + .mt-sm-n3, + .my-sm-n3 { + margin-top: -1rem !important; + } + .mr-sm-n3, + .mx-sm-n3 { + margin-right: -1rem !important; + } + .mb-sm-n3, + .my-sm-n3 { + margin-bottom: -1rem !important; + } + .ml-sm-n3, + .mx-sm-n3 { + margin-left: -1rem !important; + } + .m-sm-n4 { + margin: -1.5rem !important; + } + .mt-sm-n4, + .my-sm-n4 { + margin-top: -1.5rem !important; + } + .mr-sm-n4, + .mx-sm-n4 { + margin-right: -1.5rem !important; + } + .mb-sm-n4, + .my-sm-n4 { + margin-bottom: -1.5rem !important; + } + .ml-sm-n4, + .mx-sm-n4 { + margin-left: -1.5rem !important; + } + .m-sm-n5 { + margin: -3rem !important; + } + .mt-sm-n5, + .my-sm-n5 { + margin-top: -3rem !important; + } + .mr-sm-n5, + .mx-sm-n5 { + margin-right: -3rem !important; + } + .mb-sm-n5, + .my-sm-n5 { + margin-bottom: -3rem !important; + } + .ml-sm-n5, + .mx-sm-n5 { + margin-left: -3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; + } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; + } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; + } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; + } +} + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; + } + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; + } + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; + } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; + } + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; + } + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; + } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; + } + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; + } + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; + } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; + } + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; + } + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; + } + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; + } + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; + } + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; + } + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; + } + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; + } + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; + } + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; + } + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; + } + .p-md-0 { + padding: 0 !important; + } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; + } + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; + } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; + } + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; + } + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; + } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; + } + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; + } + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; + } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; + } + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; + } + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; + } + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; + } + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; + } + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; + } + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; + } + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; + } + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; + } + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; + } + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; + } + .m-md-n1 { + margin: -0.25rem !important; + } + .mt-md-n1, + .my-md-n1 { + margin-top: -0.25rem !important; + } + .mr-md-n1, + .mx-md-n1 { + margin-right: -0.25rem !important; + } + .mb-md-n1, + .my-md-n1 { + margin-bottom: -0.25rem !important; + } + .ml-md-n1, + .mx-md-n1 { + margin-left: -0.25rem !important; + } + .m-md-n2 { + margin: -0.5rem !important; + } + .mt-md-n2, + .my-md-n2 { + margin-top: -0.5rem !important; + } + .mr-md-n2, + .mx-md-n2 { + margin-right: -0.5rem !important; + } + .mb-md-n2, + .my-md-n2 { + margin-bottom: -0.5rem !important; + } + .ml-md-n2, + .mx-md-n2 { + margin-left: -0.5rem !important; + } + .m-md-n3 { + margin: -1rem !important; + } + .mt-md-n3, + .my-md-n3 { + margin-top: -1rem !important; + } + .mr-md-n3, + .mx-md-n3 { + margin-right: -1rem !important; + } + .mb-md-n3, + .my-md-n3 { + margin-bottom: -1rem !important; + } + .ml-md-n3, + .mx-md-n3 { + margin-left: -1rem !important; + } + .m-md-n4 { + margin: -1.5rem !important; + } + .mt-md-n4, + .my-md-n4 { + margin-top: -1.5rem !important; + } + .mr-md-n4, + .mx-md-n4 { + margin-right: -1.5rem !important; + } + .mb-md-n4, + .my-md-n4 { + margin-bottom: -1.5rem !important; + } + .ml-md-n4, + .mx-md-n4 { + margin-left: -1.5rem !important; + } + .m-md-n5 { + margin: -3rem !important; + } + .mt-md-n5, + .my-md-n5 { + margin-top: -3rem !important; + } + .mr-md-n5, + .mx-md-n5 { + margin-right: -3rem !important; + } + .mb-md-n5, + .my-md-n5 { + margin-bottom: -3rem !important; + } + .ml-md-n5, + .mx-md-n5 { + margin-left: -3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; + } + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; + } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; + } + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; + } +} + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; + } + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; + } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; + } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; + } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; + } + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; + } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; + } + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; + } + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; + } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; + } + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; + } + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; + } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; + } + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; + } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; + } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; + } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; + } + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; + } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; + } + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; + } + .p-lg-0 { + padding: 0 !important; + } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; + } + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; + } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; + } + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; + } + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; + } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; + } + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; + } + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; + } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; + } + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; + } + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; + } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; + } + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; + } + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; + } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; + } + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; + } + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; + } + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; + } + .m-lg-n1 { + margin: -0.25rem !important; + } + .mt-lg-n1, + .my-lg-n1 { + margin-top: -0.25rem !important; + } + .mr-lg-n1, + .mx-lg-n1 { + margin-right: -0.25rem !important; + } + .mb-lg-n1, + .my-lg-n1 { + margin-bottom: -0.25rem !important; + } + .ml-lg-n1, + .mx-lg-n1 { + margin-left: -0.25rem !important; + } + .m-lg-n2 { + margin: -0.5rem !important; + } + .mt-lg-n2, + .my-lg-n2 { + margin-top: -0.5rem !important; + } + .mr-lg-n2, + .mx-lg-n2 { + margin-right: -0.5rem !important; + } + .mb-lg-n2, + .my-lg-n2 { + margin-bottom: -0.5rem !important; + } + .ml-lg-n2, + .mx-lg-n2 { + margin-left: -0.5rem !important; + } + .m-lg-n3 { + margin: -1rem !important; + } + .mt-lg-n3, + .my-lg-n3 { + margin-top: -1rem !important; + } + .mr-lg-n3, + .mx-lg-n3 { + margin-right: -1rem !important; + } + .mb-lg-n3, + .my-lg-n3 { + margin-bottom: -1rem !important; + } + .ml-lg-n3, + .mx-lg-n3 { + margin-left: -1rem !important; + } + .m-lg-n4 { + margin: -1.5rem !important; + } + .mt-lg-n4, + .my-lg-n4 { + margin-top: -1.5rem !important; + } + .mr-lg-n4, + .mx-lg-n4 { + margin-right: -1.5rem !important; + } + .mb-lg-n4, + .my-lg-n4 { + margin-bottom: -1.5rem !important; + } + .ml-lg-n4, + .mx-lg-n4 { + margin-left: -1.5rem !important; + } + .m-lg-n5 { + margin: -3rem !important; + } + .mt-lg-n5, + .my-lg-n5 { + margin-top: -3rem !important; + } + .mr-lg-n5, + .mx-lg-n5 { + margin-right: -3rem !important; + } + .mb-lg-n5, + .my-lg-n5 { + margin-bottom: -3rem !important; + } + .ml-lg-n5, + .mx-lg-n5 { + margin-left: -3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; + } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; + } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; + } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; + } +} + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; + } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; + } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; + } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; + } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; + } + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; + } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; + } + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; + } + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; + } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; + } + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; + } + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; + } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; + } + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; + } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; + } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; + } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; + } + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; + } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; + } + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; + } + .p-xl-0 { + padding: 0 !important; + } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; + } + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; + } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; + } + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; + } + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; + } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; + } + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; + } + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; + } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; + } + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; + } + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; + } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; + } + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; + } + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; + } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; + } + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; + } + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; + } + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; + } + .m-xl-n1 { + margin: -0.25rem !important; + } + .mt-xl-n1, + .my-xl-n1 { + margin-top: -0.25rem !important; + } + .mr-xl-n1, + .mx-xl-n1 { + margin-right: -0.25rem !important; + } + .mb-xl-n1, + .my-xl-n1 { + margin-bottom: -0.25rem !important; + } + .ml-xl-n1, + .mx-xl-n1 { + margin-left: -0.25rem !important; + } + .m-xl-n2 { + margin: -0.5rem !important; + } + .mt-xl-n2, + .my-xl-n2 { + margin-top: -0.5rem !important; + } + .mr-xl-n2, + .mx-xl-n2 { + margin-right: -0.5rem !important; + } + .mb-xl-n2, + .my-xl-n2 { + margin-bottom: -0.5rem !important; + } + .ml-xl-n2, + .mx-xl-n2 { + margin-left: -0.5rem !important; + } + .m-xl-n3 { + margin: -1rem !important; + } + .mt-xl-n3, + .my-xl-n3 { + margin-top: -1rem !important; + } + .mr-xl-n3, + .mx-xl-n3 { + margin-right: -1rem !important; + } + .mb-xl-n3, + .my-xl-n3 { + margin-bottom: -1rem !important; + } + .ml-xl-n3, + .mx-xl-n3 { + margin-left: -1rem !important; + } + .m-xl-n4 { + margin: -1.5rem !important; + } + .mt-xl-n4, + .my-xl-n4 { + margin-top: -1.5rem !important; + } + .mr-xl-n4, + .mx-xl-n4 { + margin-right: -1.5rem !important; + } + .mb-xl-n4, + .my-xl-n4 { + margin-bottom: -1.5rem !important; + } + .ml-xl-n4, + .mx-xl-n4 { + margin-left: -1.5rem !important; + } + .m-xl-n5 { + margin: -3rem !important; + } + .mt-xl-n5, + .my-xl-n5 { + margin-top: -3rem !important; + } + .mr-xl-n5, + .mx-xl-n5 { + margin-right: -3rem !important; + } + .mb-xl-n5, + .my-xl-n5 { + margin-bottom: -3rem !important; + } + .ml-xl-n5, + .mx-xl-n5 { + margin-left: -3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; + } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; + } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; + } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; + } +} + +.text-monospace { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; +} + +.text-justify { + text-align: justify !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-left { + text-align: left !important; +} + +.text-right { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; + } + .text-sm-right { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} + +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; + } + .text-md-right { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} + +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; + } + .text-lg-right { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} + +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; + } + .text-xl-right { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase, .dropdown .dropdown-menu .dropdown-header, .sidebar .sidebar-heading { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.font-weight-light { + font-weight: 300 !important; +} + +.font-weight-lighter { + font-weight: lighter !important; +} + +.font-weight-normal { + font-weight: 400 !important; +} + +.font-weight-bold { + font-weight: 700 !important; +} + +.font-weight-bolder { + font-weight: bolder !important; +} + +.font-italic { + font-style: italic !important; +} + +.text-white { + color: #fff !important; +} + +.text-primary { + color: #4e73df !important; +} + +a.text-primary:hover, a.text-primary:focus { + color: #224abe !important; +} + +.text-secondary { + color: #858796 !important; +} + +a.text-secondary:hover, a.text-secondary:focus { + color: #60616f !important; +} + +.text-success { + color: #1cc88a !important; +} + +a.text-success:hover, a.text-success:focus { + color: #13855c !important; +} + +.text-info { + color: #36b9cc !important; +} + +a.text-info:hover, a.text-info:focus { + color: #258391 !important; +} + +.text-warning { + color: #f6c23e !important; +} + +a.text-warning:hover, a.text-warning:focus { + color: #dda20a !important; +} + +.text-danger { + color: #e74a3b !important; +} + +a.text-danger:hover, a.text-danger:focus { + color: #be2617 !important; +} + +.text-light { + color: #f8f9fc !important; +} + +a.text-light:hover, a.text-light:focus { + color: #c2cbe5 !important; +} + +.text-dark { + color: #5a5c69 !important; +} + +a.text-dark:hover, a.text-dark:focus { + color: #373840 !important; +} + +.text-body { + color: #858796 !important; +} + +.text-muted { + color: #858796 !important; +} + +.text-black-50 { + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-break { + word-break: break-word !important; + overflow-wrap: break-word !important; +} + +.text-reset { + color: inherit !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +@media print { + *, + *::before, + *::after { + text-shadow: none !important; + box-shadow: none !important; + } + a:not(.btn) { + text-decoration: underline; + } + abbr[title]::after { + content: " (" attr(title) ")"; + } + pre { + white-space: pre-wrap !important; + } + pre, + blockquote { + border: 1px solid #b7b9cc; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + @page { + size: a3; + } + body { + min-width: 992px !important; + } + .container { + min-width: 992px !important; + } + .navbar { + display: none; + } + .badge { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #dddfeb !important; + } + .table-dark { + color: inherit; + } + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: #e3e6f0; + } + .table .thead-dark th { + color: inherit; + border-color: #e3e6f0; + } +} + +html { + position: relative; + min-height: 100%; +} + +body { + height: 100%; +} + +a:focus { + outline: none; +} + +#wrapper { + display: flex; +} + +#wrapper #content-wrapper { + background-color: #f8f9fc; + width: 100%; + overflow-x: hidden; +} + +#wrapper #content-wrapper #content { + flex: 1 0 auto; +} + +.container, +.container-fluid { + padding-left: 1.5rem; + padding-right: 1.5rem; +} + +.scroll-to-top { + position: fixed; + right: 1rem; + bottom: 1rem; + display: none; + width: 2.75rem; + height: 2.75rem; + text-align: center; + color: #fff; + background: rgba(90, 92, 105, 0.5); + line-height: 46px; +} + +.scroll-to-top:focus, .scroll-to-top:hover { + color: white; +} + +.scroll-to-top:hover { + background: #5a5c69; +} + +.scroll-to-top i { + font-weight: 800; +} + +@-webkit-keyframes growIn { + 0% { + transform: scale(0.9); + opacity: 0; + } + 100% { + transform: scale(1); + opacity: 1; + } +} + +@keyframes growIn { + 0% { + transform: scale(0.9); + opacity: 0; + } + 100% { + transform: scale(1); + opacity: 1; + } +} + +.animated--grow-in, .sidebar .nav-item .collapse { + -webkit-animation-name: growIn; + animation-name: growIn; + -webkit-animation-duration: 200ms; + animation-duration: 200ms; + -webkit-animation-timing-function: transform cubic-bezier(0.18, 1.25, 0.4, 1), opacity cubic-bezier(0, 1, 0.4, 1); + animation-timing-function: transform cubic-bezier(0.18, 1.25, 0.4, 1), opacity cubic-bezier(0, 1, 0.4, 1); +} + +@-webkit-keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +.animated--fade-in { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; + -webkit-animation-duration: 200ms; + animation-duration: 200ms; + -webkit-animation-timing-function: opacity cubic-bezier(0, 1, 0.4, 1); + animation-timing-function: opacity cubic-bezier(0, 1, 0.4, 1); +} + +.bg-gradient-primary { + background-color: #4e73df; + background-image: linear-gradient(180deg, #4e73df 10%, #224abe 100%); + background-size: cover; +} + +.bg-gradient-secondary { + background-color: #858796; + background-image: linear-gradient(180deg, #858796 10%, #60616f 100%); + background-size: cover; +} + +.bg-gradient-success { + background-color: #1cc88a; + background-image: linear-gradient(180deg, #1cc88a 10%, #13855c 100%); + background-size: cover; +} + +.bg-gradient-info { + background-color: #36b9cc; + background-image: linear-gradient(180deg, #36b9cc 10%, #258391 100%); + background-size: cover; +} + +.bg-gradient-warning { + background-color: #f6c23e; + background-image: linear-gradient(180deg, #f6c23e 10%, #dda20a 100%); + background-size: cover; +} + +.bg-gradient-danger { + background-color: #e74a3b; + background-image: linear-gradient(180deg, #e74a3b 10%, #be2617 100%); + background-size: cover; +} + +.bg-gradient-light { + background-color: #f8f9fc; + background-image: linear-gradient(180deg, #f8f9fc 10%, #c2cbe5 100%); + background-size: cover; +} + +.bg-gradient-dark { + background-color: #5a5c69; + background-image: linear-gradient(180deg, #5a5c69 10%, #373840 100%); + background-size: cover; +} + +.bg-gray-100 { + background-color: #f8f9fc !important; +} + +.bg-gray-200 { + background-color: #eaecf4 !important; +} + +.bg-gray-300 { + background-color: #dddfeb !important; +} + +.bg-gray-400 { + background-color: #d1d3e2 !important; +} + +.bg-gray-500 { + background-color: #b7b9cc !important; +} + +.bg-gray-600 { + background-color: #858796 !important; +} + +.bg-gray-700 { + background-color: #6e707e !important; +} + +.bg-gray-800 { + background-color: #5a5c69 !important; +} + +.bg-gray-900 { + background-color: #3a3b45 !important; +} + +.o-hidden { + overflow: hidden !important; +} + +.text-xs { + font-size: .7rem; +} + +.text-lg { + font-size: 1.2rem; +} + +.text-gray-100 { + color: #f8f9fc !important; +} + +.text-gray-200 { + color: #eaecf4 !important; +} + +.text-gray-300 { + color: #dddfeb !important; +} + +.text-gray-400 { + color: #d1d3e2 !important; +} + +.text-gray-500 { + color: #b7b9cc !important; +} + +.text-gray-600 { + color: #858796 !important; +} + +.text-gray-700 { + color: #6e707e !important; +} + +.text-gray-800 { + color: #5a5c69 !important; +} + +.text-gray-900 { + color: #3a3b45 !important; +} + +.icon-circle { + height: 2.5rem; + width: 2.5rem; + border-radius: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +.border-left-primary { + border-left: 0.25rem solid #4e73df !important; +} + +.border-bottom-primary { + border-bottom: 0.25rem solid #4e73df !important; +} + +.border-left-secondary { + border-left: 0.25rem solid #858796 !important; +} + +.border-bottom-secondary { + border-bottom: 0.25rem solid #858796 !important; +} + +.border-left-success { + border-left: 0.25rem solid #1cc88a !important; +} + +.border-bottom-success { + border-bottom: 0.25rem solid #1cc88a !important; +} + +.border-left-info { + border-left: 0.25rem solid #36b9cc !important; +} + +.border-bottom-info { + border-bottom: 0.25rem solid #36b9cc !important; +} + +.border-left-warning { + border-left: 0.25rem solid #f6c23e !important; +} + +.border-bottom-warning { + border-bottom: 0.25rem solid #f6c23e !important; +} + +.border-left-danger { + border-left: 0.25rem solid #e74a3b !important; +} + +.border-bottom-danger { + border-bottom: 0.25rem solid #e74a3b !important; +} + +.border-left-light { + border-left: 0.25rem solid #f8f9fc !important; +} + +.border-bottom-light { + border-bottom: 0.25rem solid #f8f9fc !important; +} + +.border-left-dark { + border-left: 0.25rem solid #5a5c69 !important; +} + +.border-bottom-dark { + border-bottom: 0.25rem solid #5a5c69 !important; +} + +.progress-sm { + height: .5rem; +} + +.rotate-15 { + transform: rotate(15deg); +} + +.rotate-n-15 { + transform: rotate(-15deg); +} + +.dropdown .dropdown-menu { + font-size: 0.85rem; +} + +.dropdown .dropdown-menu .dropdown-header { + font-weight: 800; + font-size: 0.65rem; + color: #b7b9cc; +} + +.dropdown.no-arrow .dropdown-toggle::after { + display: none; +} + +.sidebar .nav-item.dropdown .dropdown-toggle::after, +.topbar .nav-item.dropdown .dropdown-toggle::after { + width: 1rem; + text-align: center; + float: right; + vertical-align: 0; + border: 0; + font-weight: 900; + content: '\f105'; + font-family: 'Font Awesome 5 Free'; +} + +.sidebar .nav-item.dropdown.show .dropdown-toggle::after, +.topbar .nav-item.dropdown.show .dropdown-toggle::after { + content: '\f107'; +} + +.sidebar .nav-item .nav-link, +.topbar .nav-item .nav-link { + position: relative; +} + +.sidebar .nav-item .nav-link .badge-counter, +.topbar .nav-item .nav-link .badge-counter { + position: absolute; + transform: scale(0.7); + transform-origin: top right; + right: .25rem; + margin-top: -.25rem; +} + +.sidebar .nav-item .nav-link .img-profile, +.topbar .nav-item .nav-link .img-profile { + height: 2rem; + width: 2rem; +} + +.topbar { + height: 4.375rem; +} + +.topbar #sidebarToggleTop { + height: 2.5rem; + width: 2.5rem; +} + +.topbar #sidebarToggleTop:hover { + background-color: #eaecf4; +} + +.topbar #sidebarToggleTop:active { + background-color: #dddfeb; +} + +.topbar .navbar-search { + width: 25rem; +} + +.topbar .navbar-search input { + font-size: 0.85rem; + height: auto; +} + +.topbar .topbar-divider { + width: 0; + border-right: 1px solid #e3e6f0; + height: calc(4.375rem - 2rem); + margin: auto 1rem; +} + +.topbar .nav-item .nav-link { + height: 4.375rem; + display: flex; + align-items: center; + padding: 0 0.75rem; +} + +.topbar .nav-item .nav-link:focus { + outline: none; +} + +.topbar .nav-item:focus { + outline: none; +} + +.topbar .dropdown { + position: static; +} + +.topbar .dropdown .dropdown-menu { + width: calc(100% - 1.5rem); + right: 0.75rem; +} + +.topbar .dropdown-list { + padding: 0; + border: none; + overflow: hidden; +} + +.topbar .dropdown-list .dropdown-header { + background-color: #4e73df; + border: 1px solid #4e73df; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #fff; +} + +.topbar .dropdown-list .dropdown-item { + white-space: normal; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + border-left: 1px solid #e3e6f0; + border-right: 1px solid #e3e6f0; + border-bottom: 1px solid #e3e6f0; + line-height: 1.3rem; +} + +.topbar .dropdown-list .dropdown-item .dropdown-list-image { + position: relative; + height: 2.5rem; + width: 2.5rem; +} + +.topbar .dropdown-list .dropdown-item .dropdown-list-image img { + height: 2.5rem; + width: 2.5rem; +} + +.topbar .dropdown-list .dropdown-item .dropdown-list-image .status-indicator { + background-color: #eaecf4; + height: 0.75rem; + width: 0.75rem; + border-radius: 100%; + position: absolute; + bottom: 0; + right: 0; + border: 0.125rem solid #fff; +} + +.topbar .dropdown-list .dropdown-item .text-truncate { + max-width: 10rem; +} + +.topbar .dropdown-list .dropdown-item:active { + background-color: #eaecf4; + color: #3a3b45; +} + +@media (min-width: 576px) { + .topbar .dropdown { + position: relative; + } + .topbar .dropdown .dropdown-menu { + width: auto; + right: 0; + } + .topbar .dropdown-list { + width: 20rem !important; + } + .topbar .dropdown-list .dropdown-item .text-truncate { + max-width: 13.375rem; + } +} + +.topbar.navbar-light .navbar-nav .nav-item .nav-link { + color: #d1d3e2; +} + +.topbar.navbar-light .navbar-nav .nav-item .nav-link:hover { + color: #b7b9cc; +} + +.topbar.navbar-light .navbar-nav .nav-item .nav-link:active { + color: #858796; +} + +.sidebar { + width: 6.5rem; + min-height: 100vh; +} + +.sidebar .nav-item { + position: relative; +} + +.sidebar .nav-item:last-child { + margin-bottom: 1rem; +} + +.sidebar .nav-item .nav-link { + text-align: center; + padding: 0.75rem 1rem; + width: 6.5rem; +} + +.sidebar .nav-item .nav-link span { + font-size: 0.65rem; + display: block; +} + +.sidebar .nav-item.active .nav-link { + font-weight: 700; +} + +.sidebar .nav-item .collapse { + position: absolute; + left: calc(6.5rem + 1.5rem / 2); + z-index: 1; + top: 2px; +} + +.sidebar .nav-item .collapse .collapse-inner { + border-radius: 0.35rem; + box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15); +} + +.sidebar .nav-item .collapsing { + display: none; + transition: none; +} + +.sidebar .nav-item .collapse .collapse-inner, +.sidebar .nav-item .collapsing .collapse-inner { + padding: .5rem 0; + min-width: 10rem; + font-size: 0.85rem; + margin: 0 0 1rem 0; +} + +.sidebar .nav-item .collapse .collapse-inner .collapse-header, +.sidebar .nav-item .collapsing .collapse-inner .collapse-header { + margin: 0; + white-space: nowrap; + padding: .5rem 1.5rem; + text-transform: uppercase; + font-weight: 800; + font-size: 0.65rem; + color: #b7b9cc; +} + +.sidebar .nav-item .collapse .collapse-inner .collapse-item, +.sidebar .nav-item .collapsing .collapse-inner .collapse-item { + padding: 0.5rem 1rem; + margin: 0 0.5rem; + display: block; + color: #3a3b45; + text-decoration: none; + border-radius: 0.35rem; + white-space: nowrap; +} + +.sidebar .nav-item .collapse .collapse-inner .collapse-item:hover, +.sidebar .nav-item .collapsing .collapse-inner .collapse-item:hover { + background-color: #eaecf4; +} + +.sidebar .nav-item .collapse .collapse-inner .collapse-item:active, +.sidebar .nav-item .collapsing .collapse-inner .collapse-item:active { + background-color: #dddfeb; +} + +.sidebar .nav-item .collapse .collapse-inner .collapse-item.active, +.sidebar .nav-item .collapsing .collapse-inner .collapse-item.active { + color: #4e73df; + font-weight: 700; +} + +.sidebar #sidebarToggle { + width: 2.5rem; + height: 2.5rem; + text-align: center; + margin-bottom: 1rem; + cursor: pointer; +} + +.sidebar #sidebarToggle::after { + font-weight: 900; + content: '\f104'; + font-family: 'Font Awesome 5 Free'; + margin-right: 0.1rem; +} + +.sidebar #sidebarToggle:hover { + text-decoration: none; +} + +.sidebar #sidebarToggle:focus { + outline: none; +} + +.sidebar.toggled { + width: 0 !important; + overflow: hidden; +} + +.sidebar.toggled #sidebarToggle::after { + content: '\f105'; + font-family: 'Font Awesome 5 Free'; + margin-left: 0.25rem; +} + +.sidebar .sidebar-brand { + height: 4.375rem; + text-decoration: none; + font-size: 1rem; + font-weight: 800; + padding: 1.5rem 1rem; + text-align: center; + text-transform: uppercase; + letter-spacing: 0.05rem; + z-index: 1; +} + +.sidebar .sidebar-brand .sidebar-brand-icon i { + font-size: 2rem; +} + +.sidebar .sidebar-brand .sidebar-brand-text { + display: none; +} + +.sidebar hr.sidebar-divider { + margin: 0 1rem 1rem; +} + +.sidebar .sidebar-heading { + text-align: center; + padding: 0 1rem; + font-weight: 800; + font-size: 0.65rem; +} + +@media (min-width: 768px) { + .sidebar { + width: 14rem !important; + } + .sidebar .nav-item .collapse { + position: relative; + left: 0; + z-index: 1; + top: 0; + -webkit-animation: none; + animation: none; + } + .sidebar .nav-item .collapse .collapse-inner { + border-radius: 0; + box-shadow: none; + } + .sidebar .nav-item .collapsing { + display: block; + transition: height 0.15s ease; + } + .sidebar .nav-item .collapse, + .sidebar .nav-item .collapsing { + margin: 0 1rem; + } + .sidebar .nav-item .nav-link { + display: block; + width: 100%; + text-align: left; + padding: 1rem; + width: 14rem; + } + .sidebar .nav-item .nav-link i { + font-size: 0.85rem; + margin-right: 0.25rem; + } + .sidebar .nav-item .nav-link span { + font-size: 0.85rem; + display: inline; + } + .sidebar .nav-item .nav-link[data-toggle="collapse"]::after { + width: 1rem; + text-align: center; + float: right; + vertical-align: 0; + border: 0; + font-weight: 900; + content: '\f107'; + font-family: 'Font Awesome 5 Free'; + } + .sidebar .nav-item .nav-link[data-toggle="collapse"].collapsed::after { + content: '\f105'; + } + .sidebar .sidebar-brand .sidebar-brand-icon i { + font-size: 2rem; + } + .sidebar .sidebar-brand .sidebar-brand-text { + display: inline; + } + .sidebar .sidebar-heading { + text-align: left; + } + .sidebar.toggled { + overflow: visible; + width: 6.5rem !important; + } + .sidebar.toggled .nav-item .collapse { + position: absolute; + left: calc(6.5rem + 1.5rem / 2); + z-index: 1; + top: 2px; + -webkit-animation-name: growIn; + animation-name: growIn; + -webkit-animation-duration: 200ms; + animation-duration: 200ms; + -webkit-animation-timing-function: transform cubic-bezier(0.18, 1.25, 0.4, 1), opacity cubic-bezier(0, 1, 0.4, 1); + animation-timing-function: transform cubic-bezier(0.18, 1.25, 0.4, 1), opacity cubic-bezier(0, 1, 0.4, 1); + } + .sidebar.toggled .nav-item .collapse .collapse-inner { + box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15); + border-radius: 0.35rem; + } + .sidebar.toggled .nav-item .collapsing { + display: none; + transition: none; + } + .sidebar.toggled .nav-item .collapse, + .sidebar.toggled .nav-item .collapsing { + margin: 0; + } + .sidebar.toggled .nav-item:last-child { + margin-bottom: 1rem; + } + .sidebar.toggled .nav-item .nav-link { + text-align: center; + padding: 0.75rem 1rem; + width: 6.5rem; + } + .sidebar.toggled .nav-item .nav-link span { + font-size: 0.65rem; + display: block; + } + .sidebar.toggled .nav-item .nav-link i { + margin-right: 0; + } + .sidebar.toggled .nav-item .nav-link[data-toggle="collapse"]::after { + display: none; + } + .sidebar.toggled .sidebar-brand .sidebar-brand-icon i { + font-size: 2rem; + } + .sidebar.toggled .sidebar-brand .sidebar-brand-text { + display: none; + } + .sidebar.toggled .sidebar-heading { + text-align: center; + } +} + +.sidebar-light .sidebar-brand { + color: #6e707e; +} + +.sidebar-light hr.sidebar-divider { + border-top: 1px solid #eaecf4; +} + +.sidebar-light .sidebar-heading { + color: #b7b9cc; +} + +.sidebar-light .nav-item .nav-link { + color: #858796; +} + +.sidebar-light .nav-item .nav-link i { + color: #d1d3e2; +} + +.sidebar-light .nav-item .nav-link:active, .sidebar-light .nav-item .nav-link:focus, .sidebar-light .nav-item .nav-link:hover { + color: #6e707e; +} + +.sidebar-light .nav-item .nav-link:active i, .sidebar-light .nav-item .nav-link:focus i, .sidebar-light .nav-item .nav-link:hover i { + color: #6e707e; +} + +.sidebar-light .nav-item .nav-link[data-toggle="collapse"]::after { + color: #b7b9cc; +} + +.sidebar-light .nav-item.active .nav-link { + color: #6e707e; +} + +.sidebar-light .nav-item.active .nav-link i { + color: #6e707e; +} + +.sidebar-light #sidebarToggle { + background-color: #eaecf4; +} + +.sidebar-light #sidebarToggle::after { + color: #b7b9cc; +} + +.sidebar-light #sidebarToggle:hover { + background-color: #dddfeb; +} + +.sidebar-dark .sidebar-brand { + color: #fff; +} + +.sidebar-dark hr.sidebar-divider { + border-top: 1px solid rgba(255, 255, 255, 0.15); +} + +.sidebar-dark .sidebar-heading { + color: rgba(255, 255, 255, 0.4); +} + +.sidebar-dark .nav-item .nav-link { + color: rgba(255, 255, 255, 0.8); +} + +.sidebar-dark .nav-item .nav-link i { + color: rgba(255, 255, 255, 0.3); +} + +.sidebar-dark .nav-item .nav-link:active, .sidebar-dark .nav-item .nav-link:focus, .sidebar-dark .nav-item .nav-link:hover { + color: #fff; +} + +.sidebar-dark .nav-item .nav-link:active i, .sidebar-dark .nav-item .nav-link:focus i, .sidebar-dark .nav-item .nav-link:hover i { + color: #fff; +} + +.sidebar-dark .nav-item .nav-link[data-toggle="collapse"]::after { + color: rgba(255, 255, 255, 0.5); +} + +.sidebar-dark .nav-item.active .nav-link { + color: #fff; +} + +.sidebar-dark .nav-item.active .nav-link i { + color: #fff; +} + +.sidebar-dark #sidebarToggle { + background-color: rgba(255, 255, 255, 0.2); +} + +.sidebar-dark #sidebarToggle::after { + color: rgba(255, 255, 255, 0.5); +} + +.sidebar-dark #sidebarToggle:hover { + background-color: rgba(255, 255, 255, 0.25); +} + +.sidebar-dark.toggled #sidebarToggle::after { + color: rgba(255, 255, 255, 0.5); +} + +.btn-circle { + border-radius: 100%; + height: 2.5rem; + width: 2.5rem; + font-size: 1rem; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.btn-circle.btn-sm, .btn-group-sm > .btn-circle.btn { + height: 1.8rem; + width: 1.8rem; + font-size: 0.75rem; +} + +.btn-circle.btn-lg, .btn-group-lg > .btn-circle.btn { + height: 3.5rem; + width: 3.5rem; + font-size: 1.35rem; +} + +.btn-icon-split { + padding: 0; + overflow: hidden; + display: inline-flex; + align-items: stretch; + justify-content: center; +} + +.btn-icon-split .icon { + background: rgba(0, 0, 0, 0.15); + display: inline-block; + padding: 0.375rem 0.75rem; +} + +.btn-icon-split .text { + display: inline-block; + padding: 0.375rem 0.75rem; +} + +.btn-icon-split.btn-sm .icon, .btn-group-sm > .btn-icon-split.btn .icon { + padding: 0.25rem 0.5rem; +} + +.btn-icon-split.btn-sm .text, .btn-group-sm > .btn-icon-split.btn .text { + padding: 0.25rem 0.5rem; +} + +.btn-icon-split.btn-lg .icon, .btn-group-lg > .btn-icon-split.btn .icon { + padding: 0.5rem 1rem; +} + +.btn-icon-split.btn-lg .text, .btn-group-lg > .btn-icon-split.btn .text { + padding: 0.5rem 1rem; +} + +.card .card-header .dropdown { + line-height: 1; +} + +.card .card-header .dropdown .dropdown-menu { + line-height: 1.5; +} + +.card .card-header[data-toggle="collapse"] { + text-decoration: none; + position: relative; + padding: 0.75rem 3.25rem 0.75rem 1.25rem; +} + +.card .card-header[data-toggle="collapse"]::after { + position: absolute; + right: 0; + top: 0; + padding-right: 1.725rem; + line-height: 51px; + font-weight: 900; + content: '\f107'; + font-family: 'Font Awesome 5 Free'; + color: #d1d3e2; +} + +.card .card-header[data-toggle="collapse"].collapsed { + border-radius: 0.35rem; +} + +.card .card-header[data-toggle="collapse"].collapsed::after { + content: '\f105'; +} + +.chart-area { + position: relative; + height: 10rem; + width: 100%; +} + +@media (min-width: 768px) { + .chart-area { + height: 20rem; + } +} + +.chart-bar { + position: relative; + height: 10rem; + width: 100%; +} + +@media (min-width: 768px) { + .chart-bar { + height: 20rem; + } +} + +.chart-pie { + position: relative; + height: 15rem; + width: 100%; +} + +@media (min-width: 768px) { + .chart-pie { + height: calc(20rem - 43px) !important; + } +} + +.bg-login-image { + background: url("../img/man_reading.jpg"); + background-position: center; + background-size: cover; +} + +.bg-register-image { + background: url("https://source.unsplash.com/Mv9hjnEUHR4/600x800"); + background-position: center; + background-size: cover; +} + +.bg-password-image { + background: url("https://source.unsplash.com/oWTW-jNGl9I/600x800"); + background-position: center; + background-size: cover; +} + +form.user .custom-checkbox.small label { + line-height: 1.5rem; +} + +form.user .form-control-user { + font-size: 0.8rem; + border-radius: 10rem; + padding: 1.5rem 1rem; +} + +form.user .btn-user { + font-size: 0.8rem; + border-radius: 10rem; + padding: 0.75rem 1rem; +} + +.btn-google { + color: #fff; + background-color: #ea4335; + border-color: #fff; +} + +.btn-google:hover { + color: #fff; + background-color: #e12717; + border-color: #e6e6e6; +} + +.btn-google:focus, .btn-google.focus { + box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.5); +} + +.btn-google.disabled, .btn-google:disabled { + color: #fff; + background-color: #ea4335; + border-color: #fff; +} + +.btn-google:not(:disabled):not(.disabled):active, .btn-google:not(:disabled):not(.disabled).active, +.show > .btn-google.dropdown-toggle { + color: #fff; + background-color: #d62516; + border-color: #dfdfdf; +} + +.btn-google:not(:disabled):not(.disabled):active:focus, .btn-google:not(:disabled):not(.disabled).active:focus, +.show > .btn-google.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.5); +} + +.btn-facebook { + color: #fff; + background-color: #3b5998; + border-color: #fff; +} + +.btn-facebook:hover { + color: #fff; + background-color: #30497c; + border-color: #e6e6e6; +} + +.btn-facebook:focus, .btn-facebook.focus { + box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.5); +} + +.btn-facebook.disabled, .btn-facebook:disabled { + color: #fff; + background-color: #3b5998; + border-color: #fff; +} + +.btn-facebook:not(:disabled):not(.disabled):active, .btn-facebook:not(:disabled):not(.disabled).active, +.show > .btn-facebook.dropdown-toggle { + color: #fff; + background-color: #2d4373; + border-color: #dfdfdf; +} + +.btn-facebook:not(:disabled):not(.disabled):active:focus, .btn-facebook:not(:disabled):not(.disabled).active:focus, +.show > .btn-facebook.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(255, 255, 255, 0.5); +} + +.error { + color: #5a5c69; + font-size: 7rem; + position: relative; + line-height: 1; + width: 12.5rem; +} + +@-webkit-keyframes noise-anim { + 0% { + clip: rect(32px, 9999px, 16px, 0); + } + 5% { + clip: rect(5px, 9999px, 24px, 0); + } + 10% { + clip: rect(77px, 9999px, 87px, 0); + } + 15% { + clip: rect(91px, 9999px, 95px, 0); + } + 20% { + clip: rect(74px, 9999px, 9px, 0); + } + 25% { + clip: rect(37px, 9999px, 32px, 0); + } + 30% { + clip: rect(56px, 9999px, 27px, 0); + } + 35% { + clip: rect(35px, 9999px, 33px, 0); + } + 40% { + clip: rect(89px, 9999px, 6px, 0); + } + 45% { + clip: rect(81px, 9999px, 77px, 0); + } + 50% { + clip: rect(64px, 9999px, 69px, 0); + } + 55% { + clip: rect(12px, 9999px, 11px, 0); + } + 60% { + clip: rect(59px, 9999px, 11px, 0); + } + 65% { + clip: rect(69px, 9999px, 59px, 0); + } + 70% { + clip: rect(74px, 9999px, 65px, 0); + } + 75% { + clip: rect(56px, 9999px, 79px, 0); + } + 80% { + clip: rect(80px, 9999px, 64px, 0); + } + 85% { + clip: rect(87px, 9999px, 29px, 0); + } + 90% { + clip: rect(16px, 9999px, 21px, 0); + } + 95% { + clip: rect(69px, 9999px, 43px, 0); + } + 100% { + clip: rect(75px, 9999px, 63px, 0); + } +} + +@keyframes noise-anim { + 0% { + clip: rect(32px, 9999px, 16px, 0); + } + 5% { + clip: rect(5px, 9999px, 24px, 0); + } + 10% { + clip: rect(77px, 9999px, 87px, 0); + } + 15% { + clip: rect(91px, 9999px, 95px, 0); + } + 20% { + clip: rect(74px, 9999px, 9px, 0); + } + 25% { + clip: rect(37px, 9999px, 32px, 0); + } + 30% { + clip: rect(56px, 9999px, 27px, 0); + } + 35% { + clip: rect(35px, 9999px, 33px, 0); + } + 40% { + clip: rect(89px, 9999px, 6px, 0); + } + 45% { + clip: rect(81px, 9999px, 77px, 0); + } + 50% { + clip: rect(64px, 9999px, 69px, 0); + } + 55% { + clip: rect(12px, 9999px, 11px, 0); + } + 60% { + clip: rect(59px, 9999px, 11px, 0); + } + 65% { + clip: rect(69px, 9999px, 59px, 0); + } + 70% { + clip: rect(74px, 9999px, 65px, 0); + } + 75% { + clip: rect(56px, 9999px, 79px, 0); + } + 80% { + clip: rect(80px, 9999px, 64px, 0); + } + 85% { + clip: rect(87px, 9999px, 29px, 0); + } + 90% { + clip: rect(16px, 9999px, 21px, 0); + } + 95% { + clip: rect(69px, 9999px, 43px, 0); + } + 100% { + clip: rect(75px, 9999px, 63px, 0); + } +} + +.error:after { + content: attr(data-text); + position: absolute; + left: 2px; + text-shadow: -1px 0 #e74a3b; + top: 0; + color: #5a5c69; + background: #f8f9fc; + overflow: hidden; + clip: rect(0, 900px, 0, 0); + animation: noise-anim 2s infinite linear alternate-reverse; +} + +@-webkit-keyframes noise-anim-2 { + 0% { + clip: rect(12px, 9999px, 52px, 0); + } + 5% { + clip: rect(42px, 9999px, 39px, 0); + } + 10% { + clip: rect(64px, 9999px, 36px, 0); + } + 15% { + clip: rect(52px, 9999px, 15px, 0); + } + 20% { + clip: rect(79px, 9999px, 7px, 0); + } + 25% { + clip: rect(17px, 9999px, 41px, 0); + } + 30% { + clip: rect(15px, 9999px, 20px, 0); + } + 35% { + clip: rect(62px, 9999px, 87px, 0); + } + 40% { + clip: rect(94px, 9999px, 11px, 0); + } + 45% { + clip: rect(49px, 9999px, 10px, 0); + } + 50% { + clip: rect(82px, 9999px, 4px, 0); + } + 55% { + clip: rect(70px, 9999px, 100px, 0); + } + 60% { + clip: rect(62px, 9999px, 23px, 0); + } + 65% { + clip: rect(51px, 9999px, 56px, 0); + } + 70% { + clip: rect(41px, 9999px, 24px, 0); + } + 75% { + clip: rect(6px, 9999px, 85px, 0); + } + 80% { + clip: rect(96px, 9999px, 58px, 0); + } + 85% { + clip: rect(16px, 9999px, 24px, 0); + } + 90% { + clip: rect(40px, 9999px, 31px, 0); + } + 95% { + clip: rect(91px, 9999px, 34px, 0); + } + 100% { + clip: rect(87px, 9999px, 26px, 0); + } +} + +@keyframes noise-anim-2 { + 0% { + clip: rect(12px, 9999px, 52px, 0); + } + 5% { + clip: rect(42px, 9999px, 39px, 0); + } + 10% { + clip: rect(64px, 9999px, 36px, 0); + } + 15% { + clip: rect(52px, 9999px, 15px, 0); + } + 20% { + clip: rect(79px, 9999px, 7px, 0); + } + 25% { + clip: rect(17px, 9999px, 41px, 0); + } + 30% { + clip: rect(15px, 9999px, 20px, 0); + } + 35% { + clip: rect(62px, 9999px, 87px, 0); + } + 40% { + clip: rect(94px, 9999px, 11px, 0); + } + 45% { + clip: rect(49px, 9999px, 10px, 0); + } + 50% { + clip: rect(82px, 9999px, 4px, 0); + } + 55% { + clip: rect(70px, 9999px, 100px, 0); + } + 60% { + clip: rect(62px, 9999px, 23px, 0); + } + 65% { + clip: rect(51px, 9999px, 56px, 0); + } + 70% { + clip: rect(41px, 9999px, 24px, 0); + } + 75% { + clip: rect(6px, 9999px, 85px, 0); + } + 80% { + clip: rect(96px, 9999px, 58px, 0); + } + 85% { + clip: rect(16px, 9999px, 24px, 0); + } + 90% { + clip: rect(40px, 9999px, 31px, 0); + } + 95% { + clip: rect(91px, 9999px, 34px, 0); + } + 100% { + clip: rect(87px, 9999px, 26px, 0); + } +} + +.error:before { + content: attr(data-text); + position: absolute; + left: -2px; + text-shadow: 1px 0 #4e73df; + top: 0; + color: #5a5c69; + background: #f8f9fc; + overflow: hidden; + clip: rect(0, 900px, 0, 0); + animation: noise-anim-2 3s infinite linear alternate-reverse; +} + +footer.sticky-footer { + padding: 2rem 0; + flex-shrink: 0; +} + +footer.sticky-footer .copyright { + line-height: 1; + font-size: 0.8rem; +} + +body.sidebar-toggled footer.sticky-footer { + width: 100%; +} diff --git a/oxyapp/static/css/sb-admin-2.min.css b/oxyapp/static/css/sb-admin-2.min.css new file mode 100644 index 0000000..9045121 --- /dev/null +++ b/oxyapp/static/css/sb-admin-2.min.css @@ -0,0 +1,10 @@ +/*! + * Start Bootstrap - SB Admin 2 v4.0.7 (https://startbootstrap.com/template-overviews/sb-admin-2) + * Copyright 2013-2019 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-sb-admin-2/blob/master/LICENSE) + *//*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */:root{--blue:#4e73df;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#e74a3b;--orange:#fd7e14;--yellow:#f6c23e;--green:#1cc88a;--teal:#20c9a6;--cyan:#36b9cc;--white:#fff;--gray:#858796;--gray-dark:#5a5c69;--primary:#4e73df;--secondary:#858796;--success:#1cc88a;--info:#36b9cc;--warning:#f6c23e;--danger:#e74a3b;--light:#f8f9fc;--dark:#5a5c69;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Nunito,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#858796;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#4e73df;text-decoration:none;background-color:transparent}a:hover{color:#224abe;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#858796;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:400;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#858796}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dddfeb;border-radius:.35rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#858796}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#3a3b45;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#3a3b45}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:.75rem;padding-left:.75rem;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:.75rem;padding-left:.75rem;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-.75rem;margin-left:-.75rem}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:.75rem;padding-left:.75rem}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#858796}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #e3e6f0}.table thead th{vertical-align:bottom;border-bottom:2px solid #e3e6f0}.table tbody+tbody{border-top:2px solid #e3e6f0}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #e3e6f0}.table-bordered td,.table-bordered th{border:1px solid #e3e6f0}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#858796;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#cdd8f6}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#a3b6ee}.table-hover .table-primary:hover{background-color:#b7c7f2}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b7c7f2}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#dddde2}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#c0c1c8}.table-hover .table-secondary:hover{background-color:#cfcfd6}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#cfcfd6}.table-success,.table-success>td,.table-success>th{background-color:#bff0de}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#89e2c2}.table-hover .table-success:hover{background-color:#aaebd3}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#aaebd3}.table-info,.table-info>td,.table-info>th{background-color:#c7ebf1}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#96dbe4}.table-hover .table-info:hover{background-color:#b3e4ec}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#b3e4ec}.table-warning,.table-warning>td,.table-warning>th{background-color:#fceec9}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#fadf9b}.table-hover .table-warning:hover{background-color:#fbe6b1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#fbe6b1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f8ccc8}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#f3a199}.table-hover .table-danger:hover{background-color:#f5b7b1}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f5b7b1}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfd}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#d1d1d5}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#a9aab1}.table-hover .table-dark:hover{background-color:#c4c4c9}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#c4c4c9}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#5a5c69;border-color:#6c6e7e}.table .thead-light th{color:#6e707e;background-color:#eaecf4;border-color:#e3e6f0}.table-dark{color:#fff;background-color:#5a5c69}.table-dark td,.table-dark th,.table-dark thead th{border-color:#6c6e7e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#6e707e;background-color:#fff;background-clip:padding-box;border:1px solid #d1d3e2;border-radius:.35rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#6e707e;background-color:#fff;border-color:#bac8f3;outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,.25)}.form-control::-webkit-input-placeholder{color:#858796;opacity:1}.form-control::-moz-placeholder{color:#858796;opacity:1}.form-control:-ms-input-placeholder{color:#858796;opacity:1}.form-control::-ms-input-placeholder{color:#858796;opacity:1}.form-control::placeholder{color:#858796;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eaecf4;opacity:1}select.form-control:focus::-ms-value{color:#6e707e;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#858796;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#858796}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#1cc88a}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(28,200,138,.9);border-radius:.35rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#1cc88a;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#1cc88a;box-shadow:0 0 0 .2rem rgba(28,200,138,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#1cc88a;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#1cc88a;box-shadow:0 0 0 .2rem rgba(28,200,138,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#1cc88a}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#1cc88a}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#1cc88a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34e3a4;background-color:#34e3a4}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(28,200,138,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#1cc88a}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#1cc88a}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#1cc88a;box-shadow:0 0 0 .2rem rgba(28,200,138,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#e74a3b}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(231,74,59,.9);border-radius:.35rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#e74a3b;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23e74a3b' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23e74a3b' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#e74a3b;box-shadow:0 0 0 .2rem rgba(231,74,59,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#e74a3b;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23e74a3b' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23e74a3b' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#e74a3b;box-shadow:0 0 0 .2rem rgba(231,74,59,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#e74a3b}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#e74a3b}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#e74a3b}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#ed7468;background-color:#ed7468}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(231,74,59,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#e74a3b}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#e74a3b}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#e74a3b;box-shadow:0 0 0 .2rem rgba(231,74,59,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#858796;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.35rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#858796;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#4e73df;border-color:#4e73df}.btn-primary:hover{color:#fff;background-color:#2e59d9;border-color:#2653d4}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(105,136,228,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#4e73df;border-color:#4e73df}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#2653d4;border-color:#244ec9}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(105,136,228,.5)}.btn-secondary{color:#fff;background-color:#858796;border-color:#858796}.btn-secondary:hover{color:#fff;background-color:#717384;border-color:#6b6d7d}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(151,153,166,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#858796;border-color:#858796}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#6b6d7d;border-color:#656776}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(151,153,166,.5)}.btn-success{color:#fff;background-color:#1cc88a;border-color:#1cc88a}.btn-success:hover{color:#fff;background-color:#17a673;border-color:#169b6b}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(62,208,156,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#1cc88a;border-color:#1cc88a}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#169b6b;border-color:#149063}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(62,208,156,.5)}.btn-info{color:#fff;background-color:#36b9cc;border-color:#36b9cc}.btn-info:hover{color:#fff;background-color:#2c9faf;border-color:#2a96a5}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(84,196,212,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#36b9cc;border-color:#36b9cc}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#2a96a5;border-color:#278c9b}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(84,196,212,.5)}.btn-warning{color:#fff;background-color:#f6c23e;border-color:#f6c23e}.btn-warning:hover{color:#fff;background-color:#f4b619;border-color:#f4b30d}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(247,203,91,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#fff;background-color:#f6c23e;border-color:#f6c23e}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#f4b30d;border-color:#e9aa0b}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(247,203,91,.5)}.btn-danger{color:#fff;background-color:#e74a3b;border-color:#e74a3b}.btn-danger:hover{color:#fff;background-color:#e02d1b;border-color:#d52a1a}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(235,101,88,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#e74a3b;border-color:#e74a3b}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#d52a1a;border-color:#ca2819}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(235,101,88,.5)}.btn-light{color:#3a3b45;background-color:#f8f9fc;border-color:#f8f9fc}.btn-light:hover{color:#3a3b45;background-color:#dde2f1;border-color:#d4daed}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(220,221,225,.5)}.btn-light.disabled,.btn-light:disabled{color:#3a3b45;background-color:#f8f9fc;border-color:#f8f9fc}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#3a3b45;background-color:#d4daed;border-color:#cbd3e9}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,221,225,.5)}.btn-dark{color:#fff;background-color:#5a5c69;border-color:#5a5c69}.btn-dark:hover{color:#fff;background-color:#484a54;border-color:#42444e}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(115,116,128,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#5a5c69;border-color:#5a5c69}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#42444e;border-color:#3d3e47}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(115,116,128,.5)}.btn-outline-primary{color:#4e73df;border-color:#4e73df}.btn-outline-primary:hover{color:#fff;background-color:#4e73df;border-color:#4e73df}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(78,115,223,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#4e73df;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#4e73df;border-color:#4e73df}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(78,115,223,.5)}.btn-outline-secondary{color:#858796;border-color:#858796}.btn-outline-secondary:hover{color:#fff;background-color:#858796;border-color:#858796}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(133,135,150,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#858796;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#858796;border-color:#858796}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(133,135,150,.5)}.btn-outline-success{color:#1cc88a;border-color:#1cc88a}.btn-outline-success:hover{color:#fff;background-color:#1cc88a;border-color:#1cc88a}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(28,200,138,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#1cc88a;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#1cc88a;border-color:#1cc88a}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(28,200,138,.5)}.btn-outline-info{color:#36b9cc;border-color:#36b9cc}.btn-outline-info:hover{color:#fff;background-color:#36b9cc;border-color:#36b9cc}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(54,185,204,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#36b9cc;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#36b9cc;border-color:#36b9cc}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(54,185,204,.5)}.btn-outline-warning{color:#f6c23e;border-color:#f6c23e}.btn-outline-warning:hover{color:#fff;background-color:#f6c23e;border-color:#f6c23e}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(246,194,62,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#f6c23e;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f6c23e;border-color:#f6c23e}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(246,194,62,.5)}.btn-outline-danger{color:#e74a3b;border-color:#e74a3b}.btn-outline-danger:hover{color:#fff;background-color:#e74a3b;border-color:#e74a3b}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(231,74,59,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#e74a3b;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#e74a3b;border-color:#e74a3b}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(231,74,59,.5)}.btn-outline-light{color:#f8f9fc;border-color:#f8f9fc}.btn-outline-light:hover{color:#3a3b45;background-color:#f8f9fc;border-color:#f8f9fc}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,252,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fc;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#3a3b45;background-color:#f8f9fc;border-color:#f8f9fc}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,252,.5)}.btn-outline-dark{color:#5a5c69;border-color:#5a5c69}.btn-outline-dark:hover{color:#fff;background-color:#5a5c69;border-color:#5a5c69}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(90,92,105,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#5a5c69;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#5a5c69;border-color:#5a5c69}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(90,92,105,.5)}.btn-link{font-weight:400;color:#4e73df;text-decoration:none}.btn-link:hover{color:#224abe;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#858796;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .15s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:.85rem;color:#858796;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #e3e6f0;border-radius:.35rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #eaecf4}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#3a3b45;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#2e2f37;text-decoration:none;background-color:#f8f9fc}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#4e73df}.dropdown-item.disabled,.dropdown-item:disabled{color:#858796;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#858796;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#3a3b45}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#6e707e;text-align:center;white-space:nowrap;background-color:#eaecf4;border:1px solid #d1d3e2;border-radius:.35rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#4e73df;background-color:#4e73df}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(78,115,223,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#bac8f3}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#e5ebfa;border-color:#e5ebfa}.custom-control-input:disabled~.custom-control-label{color:#858796}.custom-control-input:disabled~.custom-control-label::before{background-color:#eaecf4}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#b7b9cc solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.35rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#4e73df;background-color:#4e73df}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(78,115,223,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(78,115,223,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(78,115,223,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#b7b9cc;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(78,115,223,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#6e707e;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #d1d3e2;border-radius:.35rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#bac8f3;outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,.25)}.custom-select:focus::-ms-value{color:#6e707e;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#858796;background-color:#eaecf4}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#bac8f3;box-shadow:0 0 0 .2rem rgba(78,115,223,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#eaecf4}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#6e707e;background-color:#fff;border:1px solid #d1d3e2;border-radius:.35rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#6e707e;content:"Browse";background-color:#eaecf4;border-left:inherit;border-radius:0 .35rem .35rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(78,115,223,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(78,115,223,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(78,115,223,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#4e73df;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#e5ebfa}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dddfeb;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#4e73df;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#e5ebfa}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dddfeb;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#4e73df;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#e5ebfa}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dddfeb;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dddfeb;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#b7b9cc}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#b7b9cc}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#b7b9cc}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#858796;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dddfeb}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eaecf4 #eaecf4 #dddfeb}.nav-tabs .nav-link.disabled{color:#858796;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#6e707e;background-color:#fff;border-color:#dddfeb #dddfeb #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.35rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#4e73df}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.35rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid #e3e6f0;border-radius:.35rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.35rem;border-top-right-radius:.35rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.35rem;border-bottom-left-radius:.35rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0}.card-header:first-child{border-radius:calc(.35rem - 1px) calc(.35rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:#f8f9fc;border-top:1px solid #e3e6f0}.card-footer:last-child{border-radius:0 0 calc(.35rem - 1px) calc(.35rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.35rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.35rem - 1px);border-top-right-radius:calc(.35rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.35rem - 1px);border-bottom-left-radius:calc(.35rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:.75rem}@media (min-width:576px){.card-deck{flex-flow:row wrap;margin-right:-.75rem;margin-left:-.75rem}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:.75rem;margin-bottom:0;margin-left:.75rem}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-moz-column-count:3;column-count:3;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eaecf4;border-radius:.35rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#858796;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#858796}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.35rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#4e73df;background-color:#fff;border:1px solid #dddfeb}.page-link:hover{z-index:2;color:#224abe;text-decoration:none;background-color:#eaecf4;border-color:#dddfeb}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.35rem;border-bottom-left-radius:.35rem}.page-item:last-child .page-link{border-top-right-radius:.35rem;border-bottom-right-radius:.35rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#4e73df;border-color:#4e73df}.page-item.disabled .page-link{color:#858796;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dddfeb}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.35rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#4e73df}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#2653d4}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,.5)}.badge-secondary{color:#fff;background-color:#858796}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#6b6d7d}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(133,135,150,.5)}.badge-success{color:#fff;background-color:#1cc88a}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#169b6b}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(28,200,138,.5)}.badge-info{color:#fff;background-color:#36b9cc}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#2a96a5}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(54,185,204,.5)}.badge-warning{color:#fff;background-color:#f6c23e}a.badge-warning:focus,a.badge-warning:hover{color:#fff;background-color:#f4b30d}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(246,194,62,.5)}.badge-danger{color:#fff;background-color:#e74a3b}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#d52a1a}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(231,74,59,.5)}.badge-light{color:#3a3b45;background-color:#f8f9fc}a.badge-light:focus,a.badge-light:hover{color:#3a3b45;background-color:#d4daed}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,252,.5)}.badge-dark{color:#fff;background-color:#5a5c69}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#42444e}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(90,92,105,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eaecf4;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.35rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#293c74;background-color:#dce3f9;border-color:#cdd8f6}.alert-primary hr{border-top-color:#b7c7f2}.alert-primary .alert-link{color:#1c294e}.alert-secondary{color:#45464e;background-color:#e7e7ea;border-color:#dddde2}.alert-secondary hr{border-top-color:#cfcfd6}.alert-secondary .alert-link{color:#2d2e33}.alert-success{color:#0f6848;background-color:#d2f4e8;border-color:#bff0de}.alert-success hr{border-top-color:#aaebd3}.alert-success .alert-link{color:#093b29}.alert-info{color:#1c606a;background-color:#d7f1f5;border-color:#c7ebf1}.alert-info hr{border-top-color:#b3e4ec}.alert-info .alert-link{color:#113b42}.alert-warning{color:#806520;background-color:#fdf3d8;border-color:#fceec9}.alert-warning hr{border-top-color:#fbe6b1}.alert-warning .alert-link{color:#574516}.alert-danger{color:#78261f;background-color:#fadbd8;border-color:#f8ccc8}.alert-danger hr{border-top-color:#f5b7b1}.alert-danger .alert-link{color:#4f1915}.alert-light{color:#818183;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686869}.alert-dark{color:#2f3037;background-color:#dedee1;border-color:#d1d1d5}.alert-dark hr{border-top-color:#c4c4c9}.alert-dark .alert-link{color:#18181c}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#eaecf4;border-radius:.35rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#4e73df;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#6e707e;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#6e707e;text-decoration:none;background-color:#f8f9fc}.list-group-item-action:active{color:#858796;background-color:#eaecf4}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.35rem;border-top-right-radius:.35rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.35rem;border-bottom-left-radius:.35rem}.list-group-item.disabled,.list-group-item:disabled{color:#858796;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#4e73df;border-color:#4e73df}.list-group-horizontal{flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.35rem;border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.35rem;border-bottom-right-radius:.35rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.35rem;border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.35rem;border-bottom-right-radius:.35rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.35rem;border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.35rem;border-bottom-right-radius:.35rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.35rem;border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.35rem;border-bottom-right-radius:.35rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.35rem;border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.35rem;border-bottom-right-radius:.35rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#293c74;background-color:#cdd8f6}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#293c74;background-color:#b7c7f2}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#293c74;border-color:#293c74}.list-group-item-secondary{color:#45464e;background-color:#dddde2}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#45464e;background-color:#cfcfd6}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#45464e;border-color:#45464e}.list-group-item-success{color:#0f6848;background-color:#bff0de}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f6848;background-color:#aaebd3}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f6848;border-color:#0f6848}.list-group-item-info{color:#1c606a;background-color:#c7ebf1}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#1c606a;background-color:#b3e4ec}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#1c606a;border-color:#1c606a}.list-group-item-warning{color:#806520;background-color:#fceec9}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#806520;background-color:#fbe6b1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#806520;border-color:#806520}.list-group-item-danger{color:#78261f;background-color:#f8ccc8}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#78261f;background-color:#f5b7b1}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#78261f;border-color:#78261f}.list-group-item-light{color:#818183;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818183;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818183;border-color:#818183}.list-group-item-dark{color:#2f3037;background-color:#d1d1d5}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#2f3037;background-color:#c4c4c9}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#2f3037;border-color:#2f3037}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#858796;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #e3e6f0;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e3e6f0;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:Nunito,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.35rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:Nunito,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#858796}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#4e73df!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#2653d4!important}.bg-secondary{background-color:#858796!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#6b6d7d!important}.bg-success{background-color:#1cc88a!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#169b6b!important}.bg-info{background-color:#36b9cc!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#2a96a5!important}.bg-warning{background-color:#f6c23e!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#f4b30d!important}.bg-danger{background-color:#e74a3b!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#d52a1a!important}.bg-light{background-color:#f8f9fc!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#d4daed!important}.bg-dark{background-color:#5a5c69!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#42444e!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #e3e6f0!important}.border-top{border-top:1px solid #e3e6f0!important}.border-right{border-right:1px solid #e3e6f0!important}.border-bottom{border-bottom:1px solid #e3e6f0!important}.border-left{border-left:1px solid #e3e6f0!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#4e73df!important}.border-secondary{border-color:#858796!important}.border-success{border-color:#1cc88a!important}.border-info{border-color:#36b9cc!important}.border-warning{border-color:#f6c23e!important}.border-danger{border-color:#e74a3b!important}.border-light{border-color:#f8f9fc!important}.border-dark{border-color:#5a5c69!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.35rem!important}.rounded-top{border-top-left-radius:.35rem!important;border-top-right-radius:.35rem!important}.rounded-right{border-top-right-radius:.35rem!important;border-bottom-right-radius:.35rem!important}.rounded-bottom{border-bottom-right-radius:.35rem!important;border-bottom-left-radius:.35rem!important}.rounded-left{border-top-left-radius:.35rem!important;border-bottom-left-radius:.35rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem 0 rgba(58,59,69,.2)!important}.shadow{box-shadow:0 .15rem 1.75rem 0 rgba(58,59,69,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.dropdown .dropdown-menu .dropdown-header,.sidebar .sidebar-heading,.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#4e73df!important}a.text-primary:focus,a.text-primary:hover{color:#224abe!important}.text-secondary{color:#858796!important}a.text-secondary:focus,a.text-secondary:hover{color:#60616f!important}.text-success{color:#1cc88a!important}a.text-success:focus,a.text-success:hover{color:#13855c!important}.text-info{color:#36b9cc!important}a.text-info:focus,a.text-info:hover{color:#258391!important}.text-warning{color:#f6c23e!important}a.text-warning:focus,a.text-warning:hover{color:#dda20a!important}.text-danger{color:#e74a3b!important}a.text-danger:focus,a.text-danger:hover{color:#be2617!important}.text-light{color:#f8f9fc!important}a.text-light:focus,a.text-light:hover{color:#c2cbe5!important}.text-dark{color:#5a5c69!important}a.text-dark:focus,a.text-dark:hover{color:#373840!important}.text-body{color:#858796!important}.text-muted{color:#858796!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #b7b9cc;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dddfeb!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#e3e6f0}.table .thead-dark th{color:inherit;border-color:#e3e6f0}}html{position:relative;min-height:100%}body{height:100%}a:focus{outline:0}#wrapper{display:flex}#wrapper #content-wrapper{background-color:#f8f9fc;width:100%;overflow-x:hidden}#wrapper #content-wrapper #content{flex:1 0 auto}.container,.container-fluid{padding-left:1.5rem;padding-right:1.5rem}.scroll-to-top{position:fixed;right:1rem;bottom:1rem;display:none;width:2.75rem;height:2.75rem;text-align:center;color:#fff;background:rgba(90,92,105,.5);line-height:46px}.scroll-to-top:focus,.scroll-to-top:hover{color:#fff}.scroll-to-top:hover{background:#5a5c69}.scroll-to-top i{font-weight:800}@-webkit-keyframes growIn{0%{transform:scale(.9);opacity:0}100%{transform:scale(1);opacity:1}}@keyframes growIn{0%{transform:scale(.9);opacity:0}100%{transform:scale(1);opacity:1}}.animated--grow-in,.sidebar .nav-item .collapse{-webkit-animation-name:growIn;animation-name:growIn;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-timing-function:transform cubic-bezier(.18,1.25,.4,1),opacity cubic-bezier(0,1,.4,1);animation-timing-function:transform cubic-bezier(.18,1.25,.4,1),opacity cubic-bezier(0,1,.4,1)}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.animated--fade-in{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-timing-function:opacity cubic-bezier(0,1,.4,1);animation-timing-function:opacity cubic-bezier(0,1,.4,1)}.bg-gradient-primary{background-color:#4e73df;background-image:linear-gradient(180deg,#4e73df 10%,#224abe 100%);background-size:cover}.bg-gradient-secondary{background-color:#858796;background-image:linear-gradient(180deg,#858796 10%,#60616f 100%);background-size:cover}.bg-gradient-success{background-color:#1cc88a;background-image:linear-gradient(180deg,#1cc88a 10%,#13855c 100%);background-size:cover}.bg-gradient-info{background-color:#36b9cc;background-image:linear-gradient(180deg,#36b9cc 10%,#258391 100%);background-size:cover}.bg-gradient-warning{background-color:#f6c23e;background-image:linear-gradient(180deg,#f6c23e 10%,#dda20a 100%);background-size:cover}.bg-gradient-danger{background-color:#e74a3b;background-image:linear-gradient(180deg,#e74a3b 10%,#be2617 100%);background-size:cover}.bg-gradient-light{background-color:#f8f9fc;background-image:linear-gradient(180deg,#f8f9fc 10%,#c2cbe5 100%);background-size:cover}.bg-gradient-dark{background-color:#5a5c69;background-image:linear-gradient(180deg,#5a5c69 10%,#373840 100%);background-size:cover}.bg-gray-100{background-color:#f8f9fc!important}.bg-gray-200{background-color:#eaecf4!important}.bg-gray-300{background-color:#dddfeb!important}.bg-gray-400{background-color:#d1d3e2!important}.bg-gray-500{background-color:#b7b9cc!important}.bg-gray-600{background-color:#858796!important}.bg-gray-700{background-color:#6e707e!important}.bg-gray-800{background-color:#5a5c69!important}.bg-gray-900{background-color:#3a3b45!important}.o-hidden{overflow:hidden!important}.text-xs{font-size:.7rem}.text-lg{font-size:1.2rem}.text-gray-100{color:#f8f9fc!important}.text-gray-200{color:#eaecf4!important}.text-gray-300{color:#dddfeb!important}.text-gray-400{color:#d1d3e2!important}.text-gray-500{color:#b7b9cc!important}.text-gray-600{color:#858796!important}.text-gray-700{color:#6e707e!important}.text-gray-800{color:#5a5c69!important}.text-gray-900{color:#3a3b45!important}.icon-circle{height:2.5rem;width:2.5rem;border-radius:100%;display:flex;align-items:center;justify-content:center}.border-left-primary{border-left:.25rem solid #4e73df!important}.border-bottom-primary{border-bottom:.25rem solid #4e73df!important}.border-left-secondary{border-left:.25rem solid #858796!important}.border-bottom-secondary{border-bottom:.25rem solid #858796!important}.border-left-success{border-left:.25rem solid #1cc88a!important}.border-bottom-success{border-bottom:.25rem solid #1cc88a!important}.border-left-info{border-left:.25rem solid #36b9cc!important}.border-bottom-info{border-bottom:.25rem solid #36b9cc!important}.border-left-warning{border-left:.25rem solid #f6c23e!important}.border-bottom-warning{border-bottom:.25rem solid #f6c23e!important}.border-left-danger{border-left:.25rem solid #e74a3b!important}.border-bottom-danger{border-bottom:.25rem solid #e74a3b!important}.border-left-light{border-left:.25rem solid #f8f9fc!important}.border-bottom-light{border-bottom:.25rem solid #f8f9fc!important}.border-left-dark{border-left:.25rem solid #5a5c69!important}.border-bottom-dark{border-bottom:.25rem solid #5a5c69!important}.progress-sm{height:.5rem}.rotate-15{transform:rotate(15deg)}.rotate-n-15{transform:rotate(-15deg)}.dropdown .dropdown-menu{font-size:.85rem}.dropdown .dropdown-menu .dropdown-header{font-weight:800;font-size:.65rem;color:#b7b9cc}.dropdown.no-arrow .dropdown-toggle::after{display:none}.sidebar .nav-item.dropdown .dropdown-toggle::after,.topbar .nav-item.dropdown .dropdown-toggle::after{width:1rem;text-align:center;float:right;vertical-align:0;border:0;font-weight:900;content:'\f105';font-family:'Font Awesome 5 Free'}.sidebar .nav-item.dropdown.show .dropdown-toggle::after,.topbar .nav-item.dropdown.show .dropdown-toggle::after{content:'\f107'}.sidebar .nav-item .nav-link,.topbar .nav-item .nav-link{position:relative}.sidebar .nav-item .nav-link .badge-counter,.topbar .nav-item .nav-link .badge-counter{position:absolute;transform:scale(.7);transform-origin:top right;right:.25rem;margin-top:-.25rem}.sidebar .nav-item .nav-link .img-profile,.topbar .nav-item .nav-link .img-profile{height:2rem;width:2rem}.topbar{height:4.375rem}.topbar #sidebarToggleTop{height:2.5rem;width:2.5rem}.topbar #sidebarToggleTop:hover{background-color:#eaecf4}.topbar #sidebarToggleTop:active{background-color:#dddfeb}.topbar .navbar-search{width:25rem}.topbar .navbar-search input{font-size:.85rem;height:auto}.topbar .topbar-divider{width:0;border-right:1px solid #e3e6f0;height:calc(4.375rem - 2rem);margin:auto 1rem}.topbar .nav-item .nav-link{height:4.375rem;display:flex;align-items:center;padding:0 .75rem}.topbar .nav-item .nav-link:focus{outline:0}.topbar .nav-item:focus{outline:0}.topbar .dropdown{position:static}.topbar .dropdown .dropdown-menu{width:calc(100% - 1.5rem);right:.75rem}.topbar .dropdown-list{padding:0;border:none;overflow:hidden}.topbar .dropdown-list .dropdown-header{background-color:#4e73df;border:1px solid #4e73df;padding-top:.75rem;padding-bottom:.75rem;color:#fff}.topbar .dropdown-list .dropdown-item{white-space:normal;padding-top:.5rem;padding-bottom:.5rem;border-left:1px solid #e3e6f0;border-right:1px solid #e3e6f0;border-bottom:1px solid #e3e6f0;line-height:1.3rem}.topbar .dropdown-list .dropdown-item .dropdown-list-image{position:relative;height:2.5rem;width:2.5rem}.topbar .dropdown-list .dropdown-item .dropdown-list-image img{height:2.5rem;width:2.5rem}.topbar .dropdown-list .dropdown-item .dropdown-list-image .status-indicator{background-color:#eaecf4;height:.75rem;width:.75rem;border-radius:100%;position:absolute;bottom:0;right:0;border:.125rem solid #fff}.topbar .dropdown-list .dropdown-item .text-truncate{max-width:10rem}.topbar .dropdown-list .dropdown-item:active{background-color:#eaecf4;color:#3a3b45}@media (min-width:576px){.topbar .dropdown{position:relative}.topbar .dropdown .dropdown-menu{width:auto;right:0}.topbar .dropdown-list{width:20rem!important}.topbar .dropdown-list .dropdown-item .text-truncate{max-width:13.375rem}}.topbar.navbar-light .navbar-nav .nav-item .nav-link{color:#d1d3e2}.topbar.navbar-light .navbar-nav .nav-item .nav-link:hover{color:#b7b9cc}.topbar.navbar-light .navbar-nav .nav-item .nav-link:active{color:#858796}.sidebar{width:6.5rem;min-height:100vh}.sidebar .nav-item{position:relative}.sidebar .nav-item:last-child{margin-bottom:1rem}.sidebar .nav-item .nav-link{text-align:center;padding:.75rem 1rem;width:6.5rem}.sidebar .nav-item .nav-link span{font-size:.65rem;display:block}.sidebar .nav-item.active .nav-link{font-weight:700}.sidebar .nav-item .collapse{position:absolute;left:calc(6.5rem + 1.5rem / 2);z-index:1;top:2px}.sidebar .nav-item .collapse .collapse-inner{border-radius:.35rem;box-shadow:0 .15rem 1.75rem 0 rgba(58,59,69,.15)}.sidebar .nav-item .collapsing{display:none;transition:none}.sidebar .nav-item .collapse .collapse-inner,.sidebar .nav-item .collapsing .collapse-inner{padding:.5rem 0;min-width:10rem;font-size:.85rem;margin:0 0 1rem 0}.sidebar .nav-item .collapse .collapse-inner .collapse-header,.sidebar .nav-item .collapsing .collapse-inner .collapse-header{margin:0;white-space:nowrap;padding:.5rem 1.5rem;text-transform:uppercase;font-weight:800;font-size:.65rem;color:#b7b9cc}.sidebar .nav-item .collapse .collapse-inner .collapse-item,.sidebar .nav-item .collapsing .collapse-inner .collapse-item{padding:.5rem 1rem;margin:0 .5rem;display:block;color:#3a3b45;text-decoration:none;border-radius:.35rem;white-space:nowrap}.sidebar .nav-item .collapse .collapse-inner .collapse-item:hover,.sidebar .nav-item .collapsing .collapse-inner .collapse-item:hover{background-color:#eaecf4}.sidebar .nav-item .collapse .collapse-inner .collapse-item:active,.sidebar .nav-item .collapsing .collapse-inner .collapse-item:active{background-color:#dddfeb}.sidebar .nav-item .collapse .collapse-inner .collapse-item.active,.sidebar .nav-item .collapsing .collapse-inner .collapse-item.active{color:#4e73df;font-weight:700}.sidebar #sidebarToggle{width:2.5rem;height:2.5rem;text-align:center;margin-bottom:1rem;cursor:pointer}.sidebar #sidebarToggle::after{font-weight:900;content:'\f104';font-family:'Font Awesome 5 Free';margin-right:.1rem}.sidebar #sidebarToggle:hover{text-decoration:none}.sidebar #sidebarToggle:focus{outline:0}.sidebar.toggled{width:0!important;overflow:hidden}.sidebar.toggled #sidebarToggle::after{content:'\f105';font-family:'Font Awesome 5 Free';margin-left:.25rem}.sidebar .sidebar-brand{height:4.375rem;text-decoration:none;font-size:1rem;font-weight:800;padding:1.5rem 1rem;text-align:center;text-transform:uppercase;letter-spacing:.05rem;z-index:1}.sidebar .sidebar-brand .sidebar-brand-icon i{font-size:2rem}.sidebar .sidebar-brand .sidebar-brand-text{display:none}.sidebar hr.sidebar-divider{margin:0 1rem 1rem}.sidebar .sidebar-heading{text-align:center;padding:0 1rem;font-weight:800;font-size:.65rem}@media (min-width:768px){.sidebar{width:14rem!important}.sidebar .nav-item .collapse{position:relative;left:0;z-index:1;top:0;-webkit-animation:none;animation:none}.sidebar .nav-item .collapse .collapse-inner{border-radius:0;box-shadow:none}.sidebar .nav-item .collapsing{display:block;transition:height .15s ease}.sidebar .nav-item .collapse,.sidebar .nav-item .collapsing{margin:0 1rem}.sidebar .nav-item .nav-link{display:block;width:100%;text-align:left;padding:1rem;width:14rem}.sidebar .nav-item .nav-link i{font-size:.85rem;margin-right:.25rem}.sidebar .nav-item .nav-link span{font-size:.85rem;display:inline}.sidebar .nav-item .nav-link[data-toggle=collapse]::after{width:1rem;text-align:center;float:right;vertical-align:0;border:0;font-weight:900;content:'\f107';font-family:'Font Awesome 5 Free'}.sidebar .nav-item .nav-link[data-toggle=collapse].collapsed::after{content:'\f105'}.sidebar .sidebar-brand .sidebar-brand-icon i{font-size:2rem}.sidebar .sidebar-brand .sidebar-brand-text{display:inline}.sidebar .sidebar-heading{text-align:left}.sidebar.toggled{overflow:visible;width:6.5rem!important}.sidebar.toggled .nav-item .collapse{position:absolute;left:calc(6.5rem + 1.5rem / 2);z-index:1;top:2px;-webkit-animation-name:growIn;animation-name:growIn;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-timing-function:transform cubic-bezier(.18,1.25,.4,1),opacity cubic-bezier(0,1,.4,1);animation-timing-function:transform cubic-bezier(.18,1.25,.4,1),opacity cubic-bezier(0,1,.4,1)}.sidebar.toggled .nav-item .collapse .collapse-inner{box-shadow:0 .15rem 1.75rem 0 rgba(58,59,69,.15);border-radius:.35rem}.sidebar.toggled .nav-item .collapsing{display:none;transition:none}.sidebar.toggled .nav-item .collapse,.sidebar.toggled .nav-item .collapsing{margin:0}.sidebar.toggled .nav-item:last-child{margin-bottom:1rem}.sidebar.toggled .nav-item .nav-link{text-align:center;padding:.75rem 1rem;width:6.5rem}.sidebar.toggled .nav-item .nav-link span{font-size:.65rem;display:block}.sidebar.toggled .nav-item .nav-link i{margin-right:0}.sidebar.toggled .nav-item .nav-link[data-toggle=collapse]::after{display:none}.sidebar.toggled .sidebar-brand .sidebar-brand-icon i{font-size:2rem}.sidebar.toggled .sidebar-brand .sidebar-brand-text{display:none}.sidebar.toggled .sidebar-heading{text-align:center}}.sidebar-light .sidebar-brand{color:#6e707e}.sidebar-light hr.sidebar-divider{border-top:1px solid #eaecf4}.sidebar-light .sidebar-heading{color:#b7b9cc}.sidebar-light .nav-item .nav-link{color:#858796}.sidebar-light .nav-item .nav-link i{color:#d1d3e2}.sidebar-light .nav-item .nav-link:active,.sidebar-light .nav-item .nav-link:focus,.sidebar-light .nav-item .nav-link:hover{color:#6e707e}.sidebar-light .nav-item .nav-link:active i,.sidebar-light .nav-item .nav-link:focus i,.sidebar-light .nav-item .nav-link:hover i{color:#6e707e}.sidebar-light .nav-item .nav-link[data-toggle=collapse]::after{color:#b7b9cc}.sidebar-light .nav-item.active .nav-link{color:#6e707e}.sidebar-light .nav-item.active .nav-link i{color:#6e707e}.sidebar-light #sidebarToggle{background-color:#eaecf4}.sidebar-light #sidebarToggle::after{color:#b7b9cc}.sidebar-light #sidebarToggle:hover{background-color:#dddfeb}.sidebar-dark .sidebar-brand{color:#fff}.sidebar-dark hr.sidebar-divider{border-top:1px solid rgba(255,255,255,.15)}.sidebar-dark .sidebar-heading{color:rgba(255,255,255,.4)}.sidebar-dark .nav-item .nav-link{color:rgba(255,255,255,.8)}.sidebar-dark .nav-item .nav-link i{color:rgba(255,255,255,.3)}.sidebar-dark .nav-item .nav-link:active,.sidebar-dark .nav-item .nav-link:focus,.sidebar-dark .nav-item .nav-link:hover{color:#fff}.sidebar-dark .nav-item .nav-link:active i,.sidebar-dark .nav-item .nav-link:focus i,.sidebar-dark .nav-item .nav-link:hover i{color:#fff}.sidebar-dark .nav-item .nav-link[data-toggle=collapse]::after{color:rgba(255,255,255,.5)}.sidebar-dark .nav-item.active .nav-link{color:#fff}.sidebar-dark .nav-item.active .nav-link i{color:#fff}.sidebar-dark #sidebarToggle{background-color:rgba(255,255,255,.2)}.sidebar-dark #sidebarToggle::after{color:rgba(255,255,255,.5)}.sidebar-dark #sidebarToggle:hover{background-color:rgba(255,255,255,.25)}.sidebar-dark.toggled #sidebarToggle::after{color:rgba(255,255,255,.5)}.btn-circle{border-radius:100%;height:2.5rem;width:2.5rem;font-size:1rem;display:inline-flex;align-items:center;justify-content:center}.btn-circle.btn-sm,.btn-group-sm>.btn-circle.btn{height:1.8rem;width:1.8rem;font-size:.75rem}.btn-circle.btn-lg,.btn-group-lg>.btn-circle.btn{height:3.5rem;width:3.5rem;font-size:1.35rem}.btn-icon-split{padding:0;overflow:hidden;display:inline-flex;align-items:stretch;justify-content:center}.btn-icon-split .icon{background:rgba(0,0,0,.15);display:inline-block;padding:.375rem .75rem}.btn-icon-split .text{display:inline-block;padding:.375rem .75rem}.btn-group-sm>.btn-icon-split.btn .icon,.btn-icon-split.btn-sm .icon{padding:.25rem .5rem}.btn-group-sm>.btn-icon-split.btn .text,.btn-icon-split.btn-sm .text{padding:.25rem .5rem}.btn-group-lg>.btn-icon-split.btn .icon,.btn-icon-split.btn-lg .icon{padding:.5rem 1rem}.btn-group-lg>.btn-icon-split.btn .text,.btn-icon-split.btn-lg .text{padding:.5rem 1rem}.card .card-header .dropdown{line-height:1}.card .card-header .dropdown .dropdown-menu{line-height:1.5}.card .card-header[data-toggle=collapse]{text-decoration:none;position:relative;padding:.75rem 3.25rem .75rem 1.25rem}.card .card-header[data-toggle=collapse]::after{position:absolute;right:0;top:0;padding-right:1.725rem;line-height:51px;font-weight:900;content:'\f107';font-family:'Font Awesome 5 Free';color:#d1d3e2}.card .card-header[data-toggle=collapse].collapsed{border-radius:.35rem}.card .card-header[data-toggle=collapse].collapsed::after{content:'\f105'}.chart-area{position:relative;height:10rem;width:100%}@media (min-width:768px){.chart-area{height:20rem}}.chart-bar{position:relative;height:10rem;width:100%}@media (min-width:768px){.chart-bar{height:20rem}}.chart-pie{position:relative;height:15rem;width:100%}@media (min-width:768px){.chart-pie{height:calc(20rem - 43px)!important}}.bg-login-image{background: url("../img/man_reading.jpg");background-position:center;background-size:cover}.bg-register-image{background:url(https://source.unsplash.com/Mv9hjnEUHR4/600x800);background-position:center;background-size:cover}.bg-password-image{background:url(https://source.unsplash.com/oWTW-jNGl9I/600x800);background-position:center;background-size:cover}form.user .custom-checkbox.small label{line-height:1.5rem}form.user .form-control-user{font-size:.8rem;border-radius:10rem;padding:1.5rem 1rem}form.user .btn-user{font-size:.8rem;border-radius:10rem;padding:.75rem 1rem}.btn-google{color:#fff;background-color:#ea4335;border-color:#fff}.btn-google:hover{color:#fff;background-color:#e12717;border-color:#e6e6e6}.btn-google.focus,.btn-google:focus{box-shadow:0 0 0 .2rem rgba(255,255,255,.5)}.btn-google.disabled,.btn-google:disabled{color:#fff;background-color:#ea4335;border-color:#fff}.btn-google:not(:disabled):not(.disabled).active,.btn-google:not(:disabled):not(.disabled):active,.show>.btn-google.dropdown-toggle{color:#fff;background-color:#d62516;border-color:#dfdfdf}.btn-google:not(:disabled):not(.disabled).active:focus,.btn-google:not(:disabled):not(.disabled):active:focus,.show>.btn-google.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,255,255,.5)}.btn-facebook{color:#fff;background-color:#3b5998;border-color:#fff}.btn-facebook:hover{color:#fff;background-color:#30497c;border-color:#e6e6e6}.btn-facebook.focus,.btn-facebook:focus{box-shadow:0 0 0 .2rem rgba(255,255,255,.5)}.btn-facebook.disabled,.btn-facebook:disabled{color:#fff;background-color:#3b5998;border-color:#fff}.btn-facebook:not(:disabled):not(.disabled).active,.btn-facebook:not(:disabled):not(.disabled):active,.show>.btn-facebook.dropdown-toggle{color:#fff;background-color:#2d4373;border-color:#dfdfdf}.btn-facebook:not(:disabled):not(.disabled).active:focus,.btn-facebook:not(:disabled):not(.disabled):active:focus,.show>.btn-facebook.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,255,255,.5)}.error{color:#5a5c69;font-size:7rem;position:relative;line-height:1;width:12.5rem}@-webkit-keyframes noise-anim{0%{clip:rect(32px,9999px,16px,0)}5%{clip:rect(5px,9999px,24px,0)}10%{clip:rect(77px,9999px,87px,0)}15%{clip:rect(91px,9999px,95px,0)}20%{clip:rect(74px,9999px,9px,0)}25%{clip:rect(37px,9999px,32px,0)}30%{clip:rect(56px,9999px,27px,0)}35%{clip:rect(35px,9999px,33px,0)}40%{clip:rect(89px,9999px,6px,0)}45%{clip:rect(81px,9999px,77px,0)}50%{clip:rect(64px,9999px,69px,0)}55%{clip:rect(12px,9999px,11px,0)}60%{clip:rect(59px,9999px,11px,0)}65%{clip:rect(69px,9999px,59px,0)}70%{clip:rect(74px,9999px,65px,0)}75%{clip:rect(56px,9999px,79px,0)}80%{clip:rect(80px,9999px,64px,0)}85%{clip:rect(87px,9999px,29px,0)}90%{clip:rect(16px,9999px,21px,0)}95%{clip:rect(69px,9999px,43px,0)}100%{clip:rect(75px,9999px,63px,0)}}@keyframes noise-anim{0%{clip:rect(32px,9999px,16px,0)}5%{clip:rect(5px,9999px,24px,0)}10%{clip:rect(77px,9999px,87px,0)}15%{clip:rect(91px,9999px,95px,0)}20%{clip:rect(74px,9999px,9px,0)}25%{clip:rect(37px,9999px,32px,0)}30%{clip:rect(56px,9999px,27px,0)}35%{clip:rect(35px,9999px,33px,0)}40%{clip:rect(89px,9999px,6px,0)}45%{clip:rect(81px,9999px,77px,0)}50%{clip:rect(64px,9999px,69px,0)}55%{clip:rect(12px,9999px,11px,0)}60%{clip:rect(59px,9999px,11px,0)}65%{clip:rect(69px,9999px,59px,0)}70%{clip:rect(74px,9999px,65px,0)}75%{clip:rect(56px,9999px,79px,0)}80%{clip:rect(80px,9999px,64px,0)}85%{clip:rect(87px,9999px,29px,0)}90%{clip:rect(16px,9999px,21px,0)}95%{clip:rect(69px,9999px,43px,0)}100%{clip:rect(75px,9999px,63px,0)}}.error:after{content:attr(data-text);position:absolute;left:2px;text-shadow:-1px 0 #e74a3b;top:0;color:#5a5c69;background:#f8f9fc;overflow:hidden;clip:rect(0,900px,0,0);animation:noise-anim 2s infinite linear alternate-reverse}@-webkit-keyframes noise-anim-2{0%{clip:rect(12px,9999px,52px,0)}5%{clip:rect(42px,9999px,39px,0)}10%{clip:rect(64px,9999px,36px,0)}15%{clip:rect(52px,9999px,15px,0)}20%{clip:rect(79px,9999px,7px,0)}25%{clip:rect(17px,9999px,41px,0)}30%{clip:rect(15px,9999px,20px,0)}35%{clip:rect(62px,9999px,87px,0)}40%{clip:rect(94px,9999px,11px,0)}45%{clip:rect(49px,9999px,10px,0)}50%{clip:rect(82px,9999px,4px,0)}55%{clip:rect(70px,9999px,100px,0)}60%{clip:rect(62px,9999px,23px,0)}65%{clip:rect(51px,9999px,56px,0)}70%{clip:rect(41px,9999px,24px,0)}75%{clip:rect(6px,9999px,85px,0)}80%{clip:rect(96px,9999px,58px,0)}85%{clip:rect(16px,9999px,24px,0)}90%{clip:rect(40px,9999px,31px,0)}95%{clip:rect(91px,9999px,34px,0)}100%{clip:rect(87px,9999px,26px,0)}}@keyframes noise-anim-2{0%{clip:rect(12px,9999px,52px,0)}5%{clip:rect(42px,9999px,39px,0)}10%{clip:rect(64px,9999px,36px,0)}15%{clip:rect(52px,9999px,15px,0)}20%{clip:rect(79px,9999px,7px,0)}25%{clip:rect(17px,9999px,41px,0)}30%{clip:rect(15px,9999px,20px,0)}35%{clip:rect(62px,9999px,87px,0)}40%{clip:rect(94px,9999px,11px,0)}45%{clip:rect(49px,9999px,10px,0)}50%{clip:rect(82px,9999px,4px,0)}55%{clip:rect(70px,9999px,100px,0)}60%{clip:rect(62px,9999px,23px,0)}65%{clip:rect(51px,9999px,56px,0)}70%{clip:rect(41px,9999px,24px,0)}75%{clip:rect(6px,9999px,85px,0)}80%{clip:rect(96px,9999px,58px,0)}85%{clip:rect(16px,9999px,24px,0)}90%{clip:rect(40px,9999px,31px,0)}95%{clip:rect(91px,9999px,34px,0)}100%{clip:rect(87px,9999px,26px,0)}}.error:before{content:attr(data-text);position:absolute;left:-2px;text-shadow:1px 0 #4e73df;top:0;color:#5a5c69;background:#f8f9fc;overflow:hidden;clip:rect(0,900px,0,0);animation:noise-anim-2 3s infinite linear alternate-reverse}footer.sticky-footer{padding:2rem 0;flex-shrink:0}footer.sticky-footer .copyright{line-height:1;font-size:.8rem}body.sidebar-toggled footer.sticky-footer{width:100%} \ No newline at end of file diff --git a/oxyapp/static/img/favicon.ico b/oxyapp/static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..fc5470c99fa5fa091c7e9bef983723228542ee77 GIT binary patch literal 318 zcma)0F%H5o5OXCS5OwGb4nyZ$`9S#?Utr@Ayn>-SLh8sTSP)eeeCZB#WIN|OT>?}( zAq43LZ3Q#{S}}-Q(R0VC=px>8eBLk2^Msr;9=9{b;ezM=x-?fPiFyZ;R`B1CKG)Iq l?!8%3&_#bVC8@wmElja^G&^{$mss5IT=B)9BVV0mCk+4q literal 0 HcmV?d00001 diff --git a/oxyapp/static/img/github_profile.png b/oxyapp/static/img/github_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..7bdd0e0f0f1e91f6c8e86698c38b81164f1c0752 GIT binary patch literal 9739 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 literal 0 HcmV?d00001 diff --git a/oxyapp/static/img/man_reading.jpg b/oxyapp/static/img/man_reading.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c1cbe299965cc0a0cf6830c8b67ddf2198becf72 GIT binary patch literal 82100 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 photo \ No newline at end of file diff --git a/oxyapp/static/js/alarm_div_reload.js b/oxyapp/static/js/alarm_div_reload.js new file mode 100644 index 0000000..e79c178 --- /dev/null +++ b/oxyapp/static/js/alarm_div_reload.js @@ -0,0 +1,113 @@ +document.getElementById("text_bpm").style.display = "none"; +document.getElementById("text_oxy").style.display = "none"; +document.getElementById("text_town").style.display = "none"; +document.getElementById("state_bpm_0").style.display = "none"; +document.getElementById("state_bpm_1").style.display = "none"; +document.getElementById("state_bpm_2").style.display = "none"; +document.getElementById("state_bpm_3").style.display = "none"; +document.getElementById("state_oxy_0").style.display = "none"; +document.getElementById("state_oxy_1").style.display = "none"; +document.getElementById("state_oxy_2").style.display = "none"; +document.getElementById("state_oxy_3").style.display = "none"; +document.getElementById("state_chute_0").style.display = "none"; +document.getElementById("state_chute_1").style.display = "none"; +document.getElementById("state_chute_2").style.display = "none"; +setInterval('load_alarms()', 2000); +function load_alarms(){ + var xhr = new XMLHttpRequest(); + xhr.onload = function () { + // Process our return data + if (xhr.status >= 200 && xhr.status < 300) { + // Runs when the request is successful + console.log(JSON.stringify(xhr.responseText)); + data = JSON.parse(xhr.responseText); + document.getElementById("value_bpm").innerHTML = data.bpm; + document.getElementById("value_oxy").innerHTML = data.oxy; + var state_bpm = data.state_bpm + var state_oxy = data.state_oxy + var state_chute = data.state_chute + var xCritiqueBPM = document.getElementById("state_bpm_0"); + var xStableBPM = document.getElementById("state_bpm_1"); + var xSurveilleBPM = document.getElementById("state_bpm_2"); + var xNodataBPM = document.getElementById("state_bpm_3"); + var xCritiqueOxy = document.getElementById("state_oxy_0"); + var xStableOxy = document.getElementById("state_oxy_1"); + var xSurveilleOxy = document.getElementById("state_oxy_2"); + var xNodataOxy = document.getElementById("state_oxy_3"); + var xRASChute = document.getElementById("state_chute_0"); + var xDownChute = document.getElementById("state_chute_1"); + var xNodataChute = document.getElementById("state_chute_2"); + document.getElementById("text_bpm").style.display = "block"; + document.getElementById("text_oxy").style.display = "block"; + document.getElementById("text_town").style.display = "block"; + if (state_bpm == "0") { + xCritiqueBPM.style.display = "block"; + xStableBPM.style.display = "none"; + xSurveilleBPM.style.display = "none"; + xNodataBPM.style.display = "none"; + } + if (state_bpm == "1") { + xCritiqueBPM.style.display = "none"; + xStableBPM.style.display = "block"; + xSurveilleBPM.style.display = "none"; + xNodataBPM.style.display = "none"; + } + if (state_bpm == "2") { + xCritiqueBPM.style.display = "none"; + xStableBPM.style.display = "none"; + xSurveilleBPM.style.display = "block"; + xNodataBPM.style.display = "none"; + } + if (state_bpm == "3") { + xCritiqueBPM.style.display = "none"; + xStableBPM.style.display = "none"; + xSurveilleBPM.style.display = "none"; + xNodataBPM.style.display = "block"; + } + if (state_oxy == "0") { + xCritiqueOxy.style.display = "block"; + xStableOxy.style.display = "none"; + xSurveilleOxy.style.display = "none"; + xNodataOxy.style.display = "none"; + } + if (state_oxy == "1") { + xCritiqueOxy.style.display = "none"; + xStableOxy.style.display = "block"; + xSurveilleOxy.style.display = "none"; + xNodataOxy.style.display = "none"; + } + if (state_oxy == "2") { + xCritiqueOxy.style.display = "none"; + xStableOxy.style.display = "none"; + xSurveilleOxy.style.display = "block"; + xNodataOxy.style.display = "none"; + } + if (state_oxy == "3") { + xCritiqueOxy.style.display = "none"; + xStableOxy.style.display = "none"; + xSurveilleOxy.style.display = "none"; + xNodataOxy.style.display = "block"; + } + if (state_chute == "0") { + xRASChute.style.display = "block"; + xDownChute.style.display = "none"; + xNodataChute.style.display = "none"; + } + if (state_chute == "1") { + xRASChute.style.display = "none"; + xDownChute.style.display = "block"; + xNodataChute.style.display = "none"; + } + if (state_chute == "2") { + xRASChute.style.display = "none"; + xDownChute.style.display = "none"; + xNodataChute.style.display = "block"; + } + } else { + // Runs when it's not + console.log(JSON.stringify(xhr.responseText)); + } + }; + xhr.open('GET', '/data-health'); + xhr.send(); +} \ No newline at end of file diff --git a/oxyapp/static/js/chart_coeur.js b/oxyapp/static/js/chart_coeur.js new file mode 100644 index 0000000..04f5752 --- /dev/null +++ b/oxyapp/static/js/chart_coeur.js @@ -0,0 +1,129 @@ + +function number_format(number, decimals, dec_point, thousands_sep) { +// * example: number_format(1234.56, 2, ',', ' '); +// * return: '1 234,56' +number = (number + '').replace(',', '').replace(' ', ''); +var n = !isFinite(+number) ? 0 : +number, + prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), + sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, + dec = (typeof dec_point === 'undefined') ? '.' : dec_point, + s = '', + toFixedFix = function(n, prec) { + var k = Math.pow(10, prec); + return '' + Math.round(n * k) / k; + }; + // Fix for IE parseFloat(0.55).toFixed(0) = 0; + s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); + if (s[0].length > 3) { + s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); + } + if ((s[1] || '').length < prec) { + s[1] = s[1] || ''; + s[1] += new Array(prec - s[1].length + 1).join('0'); + } + return s.join(dec); +} +$(document).ready(function () { + const config = { + type: 'line', + data: { + labels: [], + datasets: [{ + label: "BPM", + lineTension: 0.3, + backgroundColor: "rgb(255, 99, 132)", + borderColor: "rgb(255, 99, 132)", + pointRadius: 3, + pointBackgroundColor: "rgb(255, 99, 132)", + pointBorderColor: "rgb(255, 99, 132)", + pointHoverRadius: 3, + pointHoverBackgroundColor: "rgb(255, 99, 132)", + pointHoverBorderColor: "rgb(255, 99, 132)", + pointHitRadius: 10, + pointBorderWidth: 2, + data: [], + fill: false, + }], + }, + options: { + maintainAspectRatio: false, + layout: { + padding: { + left: 10, + right: 25, + top: 25, + bottom: 0 + } + }, + scales: { + xAxes: [{ + time: { + unit: 'date' + }, + gridLines: { + display: false, + drawBorder: false + }, + ticks: { + maxTicksLimit: 7 + } + }], + yAxes: [{ + ticks: { + maxTicksLimit: 5, + padding: 10, + // Include a dollar sign in the ticks + callback: function(value, index, values) { + return number_format(value); + } + }, + gridLines: { + color: "rgb(234, 236, 244)", + zeroLineColor: "rgb(234, 236, 244)", + drawBorder: false, + borderDash: [2], + zeroLineBorderDash: [2] + } + }], + }, + tooltips: { + backgroundColor: "rgb(255,255,255)", + bodyFontColor: "#858796", + titleMarginBottom: 10, + titleFontColor: '#6e707e', + titleFontSize: 14, + borderColor: '#858796', + borderWidth: 1, + xPadding: 15, + yPadding: 15, + displayColors: false, + intersect: false, + mode: 'index', + caretPadding: 10, + callbacks: { + label: function(tooltipItem, chart) { + var datasetLabel = chart.datasets[tooltipItem.datasetIndex].label || ''; + return datasetLabel + ': ' + number_format(tooltipItem.yLabel); + } + } + } + } + }; + + const context = document.getElementById('canvas').getContext('2d'); + + const lineChart = new Chart(context, config); + + const source = new EventSource("/chart-data"); + + source.onmessage = function (event) { + const data = JSON.parse(event.data); + if (config.data.labels.length === 40) { + config.data.labels.shift(); + config.data.datasets[0].data.shift(); + } + config.data.labels.push(data.time); + config.data.datasets[0].data.push(data.value_bpm); + lineChart.update(); + } +}); \ No newline at end of file diff --git a/oxyapp/static/js/chart_coeur_oxy.js b/oxyapp/static/js/chart_coeur_oxy.js new file mode 100644 index 0000000..027285f --- /dev/null +++ b/oxyapp/static/js/chart_coeur_oxy.js @@ -0,0 +1,145 @@ +function number_format(number, decimals, dec_point, thousands_sep) { +// * example: number_format(1234.56, 2, ',', ' '); +// * return: '1 234,56' +number = (number + '').replace(',', '').replace(' ', ''); +var n = !isFinite(+number) ? 0 : +number, + prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), + sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, + dec = (typeof dec_point === 'undefined') ? '.' : dec_point, + s = '', + toFixedFix = function(n, prec) { + var k = Math.pow(10, prec); + return '' + Math.round(n * k) / k; + }; + // Fix for IE parseFloat(0.55).toFixed(0) = 0; + s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); + if (s[0].length > 3) { + s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); + } + if ((s[1] || '').length < prec) { + s[1] = s[1] || ''; + s[1] += new Array(prec - s[1].length + 1).join('0'); + } + return s.join(dec); +} +$(document).ready(function () { + const config = { + type: 'line', + data: { + labels: [], + datasets: [{ + label: "BPM", + lineTension: 0.3, + backgroundColor: "rgb(255, 99, 132)", + borderColor: "rgb(255, 99, 132)", + pointRadius: 3, + pointBackgroundColor: "rgb(255, 99, 132)", + pointBorderColor: "rgb(255, 99, 132)", + pointHoverRadius: 3, + pointHoverBackgroundColor: "rgb(255, 99, 132)", + pointHoverBorderColor: "rgb(255, 99, 132)", + pointHitRadius: 10, + pointBorderWidth: 2, + data: [], + fill: false, + },{ + label: "OXY", + lineTension: 0.3, + backgroundColor: "rgb(135, 206, 235)", + borderColor: "rgb(135, 206, 235)", + pointRadius: 3, + pointBackgroundColor: "rgb(135, 206, 235)", + pointBorderColor: "rgb(135, 206, 235)", + pointHoverRadius: 3, + pointHoverBackgroundColor: "rgb(135, 206, 235)", + pointHoverBorderColor: "rgb(135, 206, 235)", + pointHitRadius: 10, + pointBorderWidth: 2, + data: [], + fill: false, + }], + }, + options: { + maintainAspectRatio: false, + layout: { + padding: { + left: 10, + right: 25, + top: 25, + bottom: 0 + } + }, + scales: { + xAxes: [{ + time: { + unit: 'date' + }, + gridLines: { + display: false, + drawBorder: false + }, + ticks: { + maxTicksLimit: 7 + } + }], + yAxes: [{ + ticks: { + maxTicksLimit: 5, + padding: 10, + // Include a dollar sign in the ticks + callback: function(value, index, values) { + return number_format(value); + } + }, + gridLines: { + color: "rgb(234, 236, 244)", + zeroLineColor: "rgb(234, 236, 244)", + drawBorder: false, + borderDash: [2], + zeroLineBorderDash: [2] + } + }], + }, + tooltips: { + backgroundColor: "rgb(255,255,255)", + bodyFontColor: "#858796", + titleMarginBottom: 10, + titleFontColor: '#6e707e', + titleFontSize: 14, + borderColor: '#858796', + borderWidth: 1, + xPadding: 15, + yPadding: 15, + displayColors: false, + intersect: false, + mode: 'index', + caretPadding: 10, + callbacks: { + label: function(tooltipItem, chart) { + var datasetLabel = chart.datasets[tooltipItem.datasetIndex].label || ''; + return datasetLabel + ': ' + number_format(tooltipItem.yLabel); + } + } + } + } + }; + + const context = document.getElementById('canvas').getContext('2d'); + + const lineChart = new Chart(context, config); + + const source = new EventSource("/chart-data"); + + source.onmessage = function (event) { + const data = JSON.parse(event.data); + if (config.data.labels.length === 40) { + config.data.labels.shift(); + config.data.datasets[0].data.shift(); + config.data.datasets[1].data.shift(); + } + config.data.labels.push(data.time); + config.data.datasets[0].data.push(data.value_bpm); + config.data.datasets[1].data.push(data.value_oxy); + lineChart.update(); + } +}); \ No newline at end of file diff --git a/oxyapp/static/js/chart_oxy.js b/oxyapp/static/js/chart_oxy.js new file mode 100644 index 0000000..be853c4 --- /dev/null +++ b/oxyapp/static/js/chart_oxy.js @@ -0,0 +1,128 @@ +function number_format(number, decimals, dec_point, thousands_sep) { +// * example: number_format(1234.56, 2, ',', ' '); +// * return: '1 234,56' +number = (number + '').replace(',', '').replace(' ', ''); +var n = !isFinite(+number) ? 0 : +number, + prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), + sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, + dec = (typeof dec_point === 'undefined') ? '.' : dec_point, + s = '', + toFixedFix = function(n, prec) { + var k = Math.pow(10, prec); + return '' + Math.round(n * k) / k; + }; + // Fix for IE parseFloat(0.55).toFixed(0) = 0; + s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); + if (s[0].length > 3) { + s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); + } + if ((s[1] || '').length < prec) { + s[1] = s[1] || ''; + s[1] += new Array(prec - s[1].length + 1).join('0'); + } + return s.join(dec); +} +$(document).ready(function () { + const config = { + type: 'line', + data: { + labels: [], + datasets: [{ + label: "Oxygène", + lineTension: 0.3, + backgroundColor: "rgb(135, 206, 235)", + borderColor: "rgb(135, 206, 235)", + pointRadius: 3, + pointBackgroundColor: "rgb(135, 206, 235)", + pointBorderColor: "rgb(135, 206, 235)", + pointHoverRadius: 3, + pointHoverBackgroundColor: "rgb(135, 206, 235)", + pointHoverBorderColor: "rgb(135, 206, 235)", + pointHitRadius: 10, + pointBorderWidth: 2, + data: [], + fill: false, + }], + }, + options: { + maintainAspectRatio: false, + layout: { + padding: { + left: 10, + right: 25, + top: 25, + bottom: 0 + } + }, + scales: { + xAxes: [{ + time: { + unit: 'date' + }, + gridLines: { + display: false, + drawBorder: false + }, + ticks: { + maxTicksLimit: 7 + } + }], + yAxes: [{ + ticks: { + maxTicksLimit: 5, + padding: 10, + // Include a dollar sign in the ticks + callback: function(value, index, values) { + return number_format(value); + } + }, + gridLines: { + color: "rgb(234, 236, 244)", + zeroLineColor: "rgb(234, 236, 244)", + drawBorder: false, + borderDash: [2], + zeroLineBorderDash: [2] + } + }], + }, + tooltips: { + backgroundColor: "rgb(255,255,255)", + bodyFontColor: "#858796", + titleMarginBottom: 10, + titleFontColor: '#6e707e', + titleFontSize: 14, + borderColor: '#858796', + borderWidth: 1, + xPadding: 15, + yPadding: 15, + displayColors: false, + intersect: false, + mode: 'index', + caretPadding: 10, + callbacks: { + label: function(tooltipItem, chart) { + var datasetLabel = chart.datasets[tooltipItem.datasetIndex].label || ''; + return datasetLabel + ': ' + number_format(tooltipItem.yLabel); + } + } + } + } + }; + + const context = document.getElementById('canvas').getContext('2d'); + + const lineChart = new Chart(context, config); + + const source = new EventSource("/chart-data"); + + source.onmessage = function (event) { + const data = JSON.parse(event.data); + if (config.data.labels.length === 40) { + config.data.labels.shift(); + config.data.datasets[0].data.shift(); + } + config.data.labels.push(data.time); + config.data.datasets[0].data.push(data.value_oxy); + lineChart.update(); + } +}); \ No newline at end of file diff --git a/oxyapp/static/js/gulpfile.js b/oxyapp/static/js/gulpfile.js new file mode 100644 index 0000000..2151860 --- /dev/null +++ b/oxyapp/static/js/gulpfile.js @@ -0,0 +1,145 @@ +"use strict"; + +// Load plugins +const autoprefixer = require("gulp-autoprefixer"); +const browsersync = require("browser-sync").create(); +const cleanCSS = require("gulp-clean-css"); +const del = require("del"); +const gulp = require("gulp"); +const header = require("gulp-header"); +const merge = require("merge-stream"); +const plumber = require("gulp-plumber"); +const rename = require("gulp-rename"); +const sass = require("gulp-sass"); +const uglify = require("gulp-uglify"); + +// Load package.json for banner +const pkg = require('./package.json'); + +// Set the banner content +const banner = ['/*!\n', + ' * Start Bootstrap - <%= pkg.title %> v<%= pkg.version %> (<%= pkg.homepage %>)\n', + ' * Copyright 2013-' + (new Date()).getFullYear(), ' <%= pkg.author %>\n', + ' * Licensed under <%= pkg.license %> (https://github.com/BlackrockDigital/<%= pkg.name %>/blob/master/LICENSE)\n', + ' */\n', + '\n' +].join(''); + +// BrowserSync +function browserSync(done) { + browsersync.init({ + server: { + baseDir: "./" + }, + port: 3000 + }); + done(); +} + +// BrowserSync reload +function browserSyncReload(done) { + browsersync.reload(); + done(); +} + +// Clean vendor +function clean() { + return del(["./vendor/"]); +} + +// Bring third party dependencies from node_modules into vendor directory +function modules() { + // Bootstrap JS + var bootstrapJS = gulp.src('./node_modules/bootstrap/dist/js/*') + .pipe(gulp.dest('./vendor/bootstrap/js')); + // Bootstrap SCSS + var bootstrapSCSS = gulp.src('./node_modules/bootstrap/scss/**/*') + .pipe(gulp.dest('./vendor/bootstrap/scss')); + // ChartJS + var chartJS = gulp.src('./node_modules/chart.js/dist/*.js') + .pipe(gulp.dest('./vendor/chart.js')); + // dataTables + var dataTables = gulp.src([ + './node_modules/datatables.net/js/*.js', + './node_modules/datatables.net-bs4/js/*.js', + './node_modules/datatables.net-bs4/css/*.css' + ]) + .pipe(gulp.dest('./vendor/datatables')); + // Font Awesome + var fontAwesome = gulp.src('./node_modules/@fortawesome/**/*') + .pipe(gulp.dest('./vendor')); + // jQuery Easing + var jqueryEasing = gulp.src('./node_modules/jquery.easing/*.js') + .pipe(gulp.dest('./vendor/jquery-easing')); + // jQuery + var jquery = gulp.src([ + './node_modules/jquery/dist/*', + '!./node_modules/jquery/dist/core.js' + ]) + .pipe(gulp.dest('./vendor/jquery')); + return merge(bootstrapJS, bootstrapSCSS, chartJS, dataTables, fontAwesome, jquery, jqueryEasing); +} + +// CSS task +function css() { + return gulp + .src("./scss/**/*.scss") + .pipe(plumber()) + .pipe(sass({ + outputStyle: "expanded", + includePaths: "./node_modules", + })) + .on("error", sass.logError) + .pipe(autoprefixer({ + cascade: false + })) + .pipe(header(banner, { + pkg: pkg + })) + .pipe(gulp.dest("./css")) + .pipe(rename({ + suffix: ".min" + })) + .pipe(cleanCSS()) + .pipe(gulp.dest("./css")) + .pipe(browsersync.stream()); +} + +// JS task +function js() { + return gulp + .src([ + './js/*.js', + '!./js/*.min.js', + ]) + .pipe(uglify()) + .pipe(header(banner, { + pkg: pkg + })) + .pipe(rename({ + suffix: '.min' + })) + .pipe(gulp.dest('./js')) + .pipe(browsersync.stream()); +} + +// Watch files +function watchFiles() { + gulp.watch("./scss/**/*", css); + gulp.watch(["./js/**/*", "!./js/**/*.min.js"], js); + gulp.watch("./**/*.html", browserSyncReload); +} + +// Define complex tasks +const vendor = gulp.series(clean, modules); +const build = gulp.series(vendor, gulp.parallel(css, js)); +const watch = gulp.series(build, gulp.parallel(watchFiles, browserSync)); + +// Export tasks +exports.css = css; +exports.js = js; +exports.clean = clean; +exports.vendor = vendor; +exports.build = build; +exports.watch = watch; +exports.default = build; diff --git a/oxyapp/static/js/localisation.js b/oxyapp/static/js/localisation.js new file mode 100644 index 0000000..b5ecb14 --- /dev/null +++ b/oxyapp/static/js/localisation.js @@ -0,0 +1,44 @@ +// On initialise la latitude et la longitude de Paris (centre de la carte) +var lat = {{lat}}; +var lon = {{lon}}; +var map = null; +var marker; +// Fonction d'initialisation de la carte +function initMap() { + // Créer l'objet "map" et l'insèrer dans l'élément HTML qui a l'ID "map" + map = new google.maps.Map(document.getElementById("map"), { + // Nous mettons la carte au centre avec les coordonnées + center: new google.maps.LatLng(lat, lon), + // Nous définissons le zoom par défaut (réglable in HTML) + zoom: 16, + // Nous activons en mode carte routière + mapTypeId: google.maps.MapTypeId.ROADMAP, + // Nous activons les options de contrôle de la carte + mapTypeControl: true, + // Nous désactivons la roulette de souris + scrollwheel: false, + // Nous désactivons le déplacement sur la carte + draggable: false, + mapTypeControlOptions: { + // Cette option sert à définir comment les options se placent + style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR + }, + // Activation des options de navigation dans la carte (zoom...) + navigationControl: true, + navigationControlOptions: { + // Comment ces options doivent-elles s'afficher + style: google.maps.NavigationControlStyle.ZOOM_PAN + } + }); + marker = new google.maps.Marker({ + map: map, + // Nous animons le marqueur en DROP + animation: google.maps.Animation.DROP, + // Nous définissons la position + position: {lat: {{lat}}, lng: {{lon}}} + }); +} +window.onload = function(){ + // Fonction d'initialisation qui s'exécute lorsque le DOM est chargé + initMap(); +}; \ No newline at end of file diff --git a/oxyapp/static/js/sb-admin-2.js b/oxyapp/static/js/sb-admin-2.js new file mode 100644 index 0000000..9e96613 --- /dev/null +++ b/oxyapp/static/js/sb-admin-2.js @@ -0,0 +1,49 @@ +(function($) { + "use strict"; // Start of use strict + + // Toggle the side navigation + $("#sidebarToggle, #sidebarToggleTop").on('click', function(e) { + $("body").toggleClass("sidebar-toggled"); + $(".sidebar").toggleClass("toggled"); + if ($(".sidebar").hasClass("toggled")) { + $('.sidebar .collapse').collapse('hide'); + }; + }); + + // Close any open menu accordions when window is resized below 768px + $(window).resize(function() { + if ($(window).width() < 768) { + $('.sidebar .collapse').collapse('hide'); + }; + }); + + // Prevent the content wrapper from scrolling when the fixed side navigation hovered over + $('body.fixed-nav .sidebar').on('mousewheel DOMMouseScroll wheel', function(e) { + if ($(window).width() > 768) { + var e0 = e.originalEvent, + delta = e0.wheelDelta || -e0.detail; + this.scrollTop += (delta < 0 ? 1 : -1) * 30; + e.preventDefault(); + } + }); + + // Scroll to top button appear + $(document).on('scroll', function() { + var scrollDistance = $(this).scrollTop(); + if (scrollDistance > 100) { + $('.scroll-to-top').fadeIn(); + } else { + $('.scroll-to-top').fadeOut(); + } + }); + + // Smooth scrolling using jQuery easing + $(document).on('click', 'a.scroll-to-top', function(e) { + var $anchor = $(this); + $('html, body').stop().animate({ + scrollTop: ($($anchor.attr('href')).offset().top) + }, 1000, 'easeInOutExpo'); + e.preventDefault(); + }); + +})(jQuery); // End of use strict diff --git a/oxyapp/static/js/sb-admin-2.min.js b/oxyapp/static/js/sb-admin-2.min.js new file mode 100644 index 0000000..595107e --- /dev/null +++ b/oxyapp/static/js/sb-admin-2.min.js @@ -0,0 +1,7 @@ +/*! + * Start Bootstrap - SB Admin 2 v4.0.7 (https://startbootstrap.com/template-overviews/sb-admin-2) + * Copyright 2013-2019 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-sb-admin-2/blob/master/LICENSE) + */ + +!function(t){"use strict";t("#sidebarToggle, #sidebarToggleTop").on("click",function(o){t("body").toggleClass("sidebar-toggled"),t(".sidebar").toggleClass("toggled"),t(".sidebar").hasClass("toggled")&&t(".sidebar .collapse").collapse("hide")}),t(window).resize(function(){t(window).width()<768&&t(".sidebar .collapse").collapse("hide")}),t("body.fixed-nav .sidebar").on("mousewheel DOMMouseScroll wheel",function(o){if(768 elements (which change the URL) not inside the collapsible element + if (event.currentTarget.tagName === 'A') { + event.preventDefault(); + } + + var $trigger = $(this); + var selector = Util.getSelectorFromElement(this); + var selectors = [].slice.call(document.querySelectorAll(selector)); + $(selectors).each(function () { + var $target = $(this); + var data = $target.data(DATA_KEY$3); + var config = data ? 'toggle' : $trigger.data(); + + Collapse._jQueryInterface.call($target, config); + }); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME$3] = Collapse._jQueryInterface; + $.fn[NAME$3].Constructor = Collapse; + + $.fn[NAME$3].noConflict = function () { + $.fn[NAME$3] = JQUERY_NO_CONFLICT$3; + return Collapse._jQueryInterface; + }; + + /**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.14.7 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; + + var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; + var timeoutDuration = 0; + for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { + if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { + timeoutDuration = 1; + break; + } + } + + function microtaskDebounce(fn) { + var called = false; + return function () { + if (called) { + return; + } + called = true; + window.Promise.resolve().then(function () { + called = false; + fn(); + }); + }; + } + + function taskDebounce(fn) { + var scheduled = false; + return function () { + if (!scheduled) { + scheduled = true; + setTimeout(function () { + scheduled = false; + fn(); + }, timeoutDuration); + } + }; + } + + var supportsMicroTasks = isBrowser && window.Promise; + + /** + * Create a debounced version of a method, that's asynchronously deferred + * but called in the minimum time possible. + * + * @method + * @memberof Popper.Utils + * @argument {Function} fn + * @returns {Function} + */ + var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce; + + /** + * Check if the given variable is a function + * @method + * @memberof Popper.Utils + * @argument {Any} functionToCheck - variable to check + * @returns {Boolean} answer to: is a function? + */ + function isFunction(functionToCheck) { + var getType = {}; + return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; + } + + /** + * Get CSS computed property of the given element + * @method + * @memberof Popper.Utils + * @argument {Eement} element + * @argument {String} property + */ + function getStyleComputedProperty(element, property) { + if (element.nodeType !== 1) { + return []; + } + // NOTE: 1 DOM access here + var window = element.ownerDocument.defaultView; + var css = window.getComputedStyle(element, null); + return property ? css[property] : css; + } + + /** + * Returns the parentNode or the host of the element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} parent + */ + function getParentNode(element) { + if (element.nodeName === 'HTML') { + return element; + } + return element.parentNode || element.host; + } + + /** + * Returns the scrolling parent of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} scroll parent + */ + function getScrollParent(element) { + // Return body, `getScroll` will take care to get the correct `scrollTop` from it + if (!element) { + return document.body; + } + + switch (element.nodeName) { + case 'HTML': + case 'BODY': + return element.ownerDocument.body; + case '#document': + return element.body; + } + + // Firefox want us to check `-x` and `-y` variations as well + + var _getStyleComputedProp = getStyleComputedProperty(element), + overflow = _getStyleComputedProp.overflow, + overflowX = _getStyleComputedProp.overflowX, + overflowY = _getStyleComputedProp.overflowY; + + if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { + return element; + } + + return getScrollParent(getParentNode(element)); + } + + var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode); + var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent); + + /** + * Determines if the browser is Internet Explorer + * @method + * @memberof Popper.Utils + * @param {Number} version to check + * @returns {Boolean} isIE + */ + function isIE(version) { + if (version === 11) { + return isIE11; + } + if (version === 10) { + return isIE10; + } + return isIE11 || isIE10; + } + + /** + * Returns the offset parent of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} offset parent + */ + function getOffsetParent(element) { + if (!element) { + return document.documentElement; + } + + var noOffsetParent = isIE(10) ? document.body : null; + + // NOTE: 1 DOM access here + var offsetParent = element.offsetParent || null; + // Skip hidden elements which don't have an offsetParent + while (offsetParent === noOffsetParent && element.nextElementSibling) { + offsetParent = (element = element.nextElementSibling).offsetParent; + } + + var nodeName = offsetParent && offsetParent.nodeName; + + if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { + return element ? element.ownerDocument.documentElement : document.documentElement; + } + + // .offsetParent will return the closest TH, TD or TABLE in case + // no offsetParent is present, I hate this job... + if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') { + return getOffsetParent(offsetParent); + } + + return offsetParent; + } + + function isOffsetContainer(element) { + var nodeName = element.nodeName; + + if (nodeName === 'BODY') { + return false; + } + return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element; + } + + /** + * Finds the root node (document, shadowDOM root) of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} node + * @returns {Element} root node + */ + function getRoot(node) { + if (node.parentNode !== null) { + return getRoot(node.parentNode); + } + + return node; + } + + /** + * Finds the offset parent common to the two provided nodes + * @method + * @memberof Popper.Utils + * @argument {Element} element1 + * @argument {Element} element2 + * @returns {Element} common offset parent + */ + function findCommonOffsetParent(element1, element2) { + // This check is needed to avoid errors in case one of the elements isn't defined for any reason + if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { + return document.documentElement; + } + + // Here we make sure to give as "start" the element that comes first in the DOM + var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; + var start = order ? element1 : element2; + var end = order ? element2 : element1; + + // Get common ancestor container + var range = document.createRange(); + range.setStart(start, 0); + range.setEnd(end, 0); + var commonAncestorContainer = range.commonAncestorContainer; + + // Both nodes are inside #document + + if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { + if (isOffsetContainer(commonAncestorContainer)) { + return commonAncestorContainer; + } + + return getOffsetParent(commonAncestorContainer); + } + + // one of the nodes is inside shadowDOM, find which one + var element1root = getRoot(element1); + if (element1root.host) { + return findCommonOffsetParent(element1root.host, element2); + } else { + return findCommonOffsetParent(element1, getRoot(element2).host); + } + } + + /** + * Gets the scroll value of the given element in the given side (top and left) + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @argument {String} side `top` or `left` + * @returns {number} amount of scrolled pixels + */ + function getScroll(element) { + var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top'; + + var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; + var nodeName = element.nodeName; + + if (nodeName === 'BODY' || nodeName === 'HTML') { + var html = element.ownerDocument.documentElement; + var scrollingElement = element.ownerDocument.scrollingElement || html; + return scrollingElement[upperSide]; + } + + return element[upperSide]; + } + + /* + * Sum or subtract the element scroll values (left and top) from a given rect object + * @method + * @memberof Popper.Utils + * @param {Object} rect - Rect object you want to change + * @param {HTMLElement} element - The element from the function reads the scroll values + * @param {Boolean} subtract - set to true if you want to subtract the scroll values + * @return {Object} rect - The modifier rect object + */ + function includeScroll(rect, element) { + var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + var scrollTop = getScroll(element, 'top'); + var scrollLeft = getScroll(element, 'left'); + var modifier = subtract ? -1 : 1; + rect.top += scrollTop * modifier; + rect.bottom += scrollTop * modifier; + rect.left += scrollLeft * modifier; + rect.right += scrollLeft * modifier; + return rect; + } + + /* + * Helper to detect borders of a given element + * @method + * @memberof Popper.Utils + * @param {CSSStyleDeclaration} styles + * Result of `getStyleComputedProperty` on the given element + * @param {String} axis - `x` or `y` + * @return {number} borders - The borders size of the given axis + */ + + function getBordersSize(styles, axis) { + var sideA = axis === 'x' ? 'Left' : 'Top'; + var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; + + return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10); + } + + function getSize(axis, body, html, computedStyle) { + return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0); + } + + function getWindowSizes(document) { + var body = document.body; + var html = document.documentElement; + var computedStyle = isIE(10) && getComputedStyle(html); + + return { + height: getSize('Height', body, html, computedStyle), + width: getSize('Width', body, html, computedStyle) + }; + } + + var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; + + var createClass = 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); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + + + + + + var defineProperty = function (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 _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + /** + * Given element offsets, generate an output similar to getBoundingClientRect + * @method + * @memberof Popper.Utils + * @argument {Object} offsets + * @returns {Object} ClientRect like output + */ + function getClientRect(offsets) { + return _extends({}, offsets, { + right: offsets.left + offsets.width, + bottom: offsets.top + offsets.height + }); + } + + /** + * Get bounding client rect of given element + * @method + * @memberof Popper.Utils + * @param {HTMLElement} element + * @return {Object} client rect + */ + function getBoundingClientRect(element) { + var rect = {}; + + // IE10 10 FIX: Please, don't ask, the element isn't + // considered in DOM in some circumstances... + // This isn't reproducible in IE10 compatibility mode of IE11 + try { + if (isIE(10)) { + rect = element.getBoundingClientRect(); + var scrollTop = getScroll(element, 'top'); + var scrollLeft = getScroll(element, 'left'); + rect.top += scrollTop; + rect.left += scrollLeft; + rect.bottom += scrollTop; + rect.right += scrollLeft; + } else { + rect = element.getBoundingClientRect(); + } + } catch (e) {} + + var result = { + left: rect.left, + top: rect.top, + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; + + // subtract scrollbar size from sizes + var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {}; + var width = sizes.width || element.clientWidth || result.right - result.left; + var height = sizes.height || element.clientHeight || result.bottom - result.top; + + var horizScrollbar = element.offsetWidth - width; + var vertScrollbar = element.offsetHeight - height; + + // if an hypothetical scrollbar is detected, we must be sure it's not a `border` + // we make this check conditional for performance reasons + if (horizScrollbar || vertScrollbar) { + var styles = getStyleComputedProperty(element); + horizScrollbar -= getBordersSize(styles, 'x'); + vertScrollbar -= getBordersSize(styles, 'y'); + + result.width -= horizScrollbar; + result.height -= vertScrollbar; + } + + return getClientRect(result); + } + + function getOffsetRectRelativeToArbitraryNode(children, parent) { + var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + var isIE10 = isIE(10); + var isHTML = parent.nodeName === 'HTML'; + var childrenRect = getBoundingClientRect(children); + var parentRect = getBoundingClientRect(parent); + var scrollParent = getScrollParent(children); + + var styles = getStyleComputedProperty(parent); + var borderTopWidth = parseFloat(styles.borderTopWidth, 10); + var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); + + // In cases where the parent is fixed, we must ignore negative scroll in offset calc + if (fixedPosition && isHTML) { + parentRect.top = Math.max(parentRect.top, 0); + parentRect.left = Math.max(parentRect.left, 0); + } + var offsets = getClientRect({ + top: childrenRect.top - parentRect.top - borderTopWidth, + left: childrenRect.left - parentRect.left - borderLeftWidth, + width: childrenRect.width, + height: childrenRect.height + }); + offsets.marginTop = 0; + offsets.marginLeft = 0; + + // Subtract margins of documentElement in case it's being used as parent + // we do this only on HTML because it's the only element that behaves + // differently when margins are applied to it. The margins are included in + // the box of the documentElement, in the other cases not. + if (!isIE10 && isHTML) { + var marginTop = parseFloat(styles.marginTop, 10); + var marginLeft = parseFloat(styles.marginLeft, 10); + + offsets.top -= borderTopWidth - marginTop; + offsets.bottom -= borderTopWidth - marginTop; + offsets.left -= borderLeftWidth - marginLeft; + offsets.right -= borderLeftWidth - marginLeft; + + // Attach marginTop and marginLeft because in some circumstances we may need them + offsets.marginTop = marginTop; + offsets.marginLeft = marginLeft; + } + + if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') { + offsets = includeScroll(offsets, parent); + } + + return offsets; + } + + function getViewportOffsetRectRelativeToArtbitraryNode(element) { + var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var html = element.ownerDocument.documentElement; + var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); + var width = Math.max(html.clientWidth, window.innerWidth || 0); + var height = Math.max(html.clientHeight, window.innerHeight || 0); + + var scrollTop = !excludeScroll ? getScroll(html) : 0; + var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0; + + var offset = { + top: scrollTop - relativeOffset.top + relativeOffset.marginTop, + left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, + width: width, + height: height + }; + + return getClientRect(offset); + } + + /** + * Check if the given element is fixed or is inside a fixed parent + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @argument {Element} customContainer + * @returns {Boolean} answer to "isFixed?" + */ + function isFixed(element) { + var nodeName = element.nodeName; + if (nodeName === 'BODY' || nodeName === 'HTML') { + return false; + } + if (getStyleComputedProperty(element, 'position') === 'fixed') { + return true; + } + var parentNode = getParentNode(element); + if (!parentNode) { + return false; + } + return isFixed(parentNode); + } + + /** + * Finds the first parent of an element that has a transformed property defined + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} first transformed parent or documentElement + */ + + function getFixedPositionOffsetParent(element) { + // This check is needed to avoid errors in case one of the elements isn't defined for any reason + if (!element || !element.parentElement || isIE()) { + return document.documentElement; + } + var el = element.parentElement; + while (el && getStyleComputedProperty(el, 'transform') === 'none') { + el = el.parentElement; + } + return el || document.documentElement; + } + + /** + * Computed the boundaries limits and return them + * @method + * @memberof Popper.Utils + * @param {HTMLElement} popper + * @param {HTMLElement} reference + * @param {number} padding + * @param {HTMLElement} boundariesElement - Element used to define the boundaries + * @param {Boolean} fixedPosition - Is in fixed position mode + * @returns {Object} Coordinates of the boundaries + */ + function getBoundaries(popper, reference, padding, boundariesElement) { + var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + + // NOTE: 1 DOM access here + + var boundaries = { top: 0, left: 0 }; + var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); + + // Handle viewport case + if (boundariesElement === 'viewport') { + boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); + } else { + // Handle other cases based on DOM element used as boundaries + var boundariesNode = void 0; + if (boundariesElement === 'scrollParent') { + boundariesNode = getScrollParent(getParentNode(reference)); + if (boundariesNode.nodeName === 'BODY') { + boundariesNode = popper.ownerDocument.documentElement; + } + } else if (boundariesElement === 'window') { + boundariesNode = popper.ownerDocument.documentElement; + } else { + boundariesNode = boundariesElement; + } + + var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); + + // In case of HTML, we need a different computation + if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) { + var _getWindowSizes = getWindowSizes(popper.ownerDocument), + height = _getWindowSizes.height, + width = _getWindowSizes.width; + + boundaries.top += offsets.top - offsets.marginTop; + boundaries.bottom = height + offsets.top; + boundaries.left += offsets.left - offsets.marginLeft; + boundaries.right = width + offsets.left; + } else { + // for all the other DOM elements, this one is good + boundaries = offsets; + } + } + + // Add paddings + padding = padding || 0; + var isPaddingNumber = typeof padding === 'number'; + boundaries.left += isPaddingNumber ? padding : padding.left || 0; + boundaries.top += isPaddingNumber ? padding : padding.top || 0; + boundaries.right -= isPaddingNumber ? padding : padding.right || 0; + boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; + + return boundaries; + } + + function getArea(_ref) { + var width = _ref.width, + height = _ref.height; + + return width * height; + } + + /** + * Utility used to transform the `auto` placement to the placement with more + * available space. + * @method + * @memberof Popper.Utils + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { + var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; + + if (placement.indexOf('auto') === -1) { + return placement; + } + + var boundaries = getBoundaries(popper, reference, padding, boundariesElement); + + var rects = { + top: { + width: boundaries.width, + height: refRect.top - boundaries.top + }, + right: { + width: boundaries.right - refRect.right, + height: boundaries.height + }, + bottom: { + width: boundaries.width, + height: boundaries.bottom - refRect.bottom + }, + left: { + width: refRect.left - boundaries.left, + height: boundaries.height + } + }; + + var sortedAreas = Object.keys(rects).map(function (key) { + return _extends({ + key: key + }, rects[key], { + area: getArea(rects[key]) + }); + }).sort(function (a, b) { + return b.area - a.area; + }); + + var filteredAreas = sortedAreas.filter(function (_ref2) { + var width = _ref2.width, + height = _ref2.height; + return width >= popper.clientWidth && height >= popper.clientHeight; + }); + + var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; + + var variation = placement.split('-')[1]; + + return computedPlacement + (variation ? '-' + variation : ''); + } + + /** + * Get offsets to the reference element + * @method + * @memberof Popper.Utils + * @param {Object} state + * @param {Element} popper - the popper element + * @param {Element} reference - the reference element (the popper will be relative to this) + * @param {Element} fixedPosition - is in fixed position mode + * @returns {Object} An object containing the offsets which will be applied to the popper + */ + function getReferenceOffsets(state, popper, reference) { + var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + + var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); + return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); + } + + /** + * Get the outer sizes of the given element (offset size + margins) + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Object} object containing width and height properties + */ + function getOuterSizes(element) { + var window = element.ownerDocument.defaultView; + var styles = window.getComputedStyle(element); + var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0); + var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0); + var result = { + width: element.offsetWidth + y, + height: element.offsetHeight + x + }; + return result; + } + + /** + * Get the opposite placement of the given one + * @method + * @memberof Popper.Utils + * @argument {String} placement + * @returns {String} flipped placement + */ + function getOppositePlacement(placement) { + var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash[matched]; + }); + } + + /** + * Get offsets to the popper + * @method + * @memberof Popper.Utils + * @param {Object} position - CSS position the Popper will get applied + * @param {HTMLElement} popper - the popper element + * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this) + * @param {String} placement - one of the valid placement options + * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper + */ + function getPopperOffsets(popper, referenceOffsets, placement) { + placement = placement.split('-')[0]; + + // Get popper node sizes + var popperRect = getOuterSizes(popper); + + // Add position, width and height to our offsets object + var popperOffsets = { + width: popperRect.width, + height: popperRect.height + }; + + // depending by the popper placement we have to compute its offsets slightly differently + var isHoriz = ['right', 'left'].indexOf(placement) !== -1; + var mainSide = isHoriz ? 'top' : 'left'; + var secondarySide = isHoriz ? 'left' : 'top'; + var measurement = isHoriz ? 'height' : 'width'; + var secondaryMeasurement = !isHoriz ? 'height' : 'width'; + + popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; + if (placement === secondarySide) { + popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; + } else { + popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; + } + + return popperOffsets; + } + + /** + * Mimics the `find` method of Array + * @method + * @memberof Popper.Utils + * @argument {Array} arr + * @argument prop + * @argument value + * @returns index or -1 + */ + function find(arr, check) { + // use native find if supported + if (Array.prototype.find) { + return arr.find(check); + } + + // use `filter` to obtain the same behavior of `find` + return arr.filter(check)[0]; + } + + /** + * Return the index of the matching object + * @method + * @memberof Popper.Utils + * @argument {Array} arr + * @argument prop + * @argument value + * @returns index or -1 + */ + function findIndex(arr, prop, value) { + // use native findIndex if supported + if (Array.prototype.findIndex) { + return arr.findIndex(function (cur) { + return cur[prop] === value; + }); + } + + // use `find` + `indexOf` if `findIndex` isn't supported + var match = find(arr, function (obj) { + return obj[prop] === value; + }); + return arr.indexOf(match); + } + + /** + * Loop trough the list of modifiers and run them in order, + * each of them will then edit the data object. + * @method + * @memberof Popper.Utils + * @param {dataObject} data + * @param {Array} modifiers + * @param {String} ends - Optional modifier name used as stopper + * @returns {dataObject} + */ + function runModifiers(modifiers, data, ends) { + var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends)); + + modifiersToRun.forEach(function (modifier) { + if (modifier['function']) { + // eslint-disable-line dot-notation + console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); + } + var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation + if (modifier.enabled && isFunction(fn)) { + // Add properties to offsets to make them a complete clientRect object + // we do this before each modifier to make sure the previous one doesn't + // mess with these values + data.offsets.popper = getClientRect(data.offsets.popper); + data.offsets.reference = getClientRect(data.offsets.reference); + + data = fn(data, modifier); + } + }); + + return data; + } + + /** + * Updates the position of the popper, computing the new offsets and applying + * the new style.
+ * Prefer `scheduleUpdate` over `update` because of performance reasons. + * @method + * @memberof Popper + */ + function update() { + // if popper is destroyed, don't perform any further update + if (this.state.isDestroyed) { + return; + } + + var data = { + instance: this, + styles: {}, + arrowStyles: {}, + attributes: {}, + flipped: false, + offsets: {} + }; + + // compute reference element offsets + data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); + + // compute auto placement, store placement inside the data object, + // modifiers will be able to edit `placement` if needed + // and refer to originalPlacement to know the original value + data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); + + // store the computed placement inside `originalPlacement` + data.originalPlacement = data.placement; + + data.positionFixed = this.options.positionFixed; + + // compute the popper offsets + data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); + + data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; + + // run the modifiers + data = runModifiers(this.modifiers, data); + + // the first `update` will call `onCreate` callback + // the other ones will call `onUpdate` callback + if (!this.state.isCreated) { + this.state.isCreated = true; + this.options.onCreate(data); + } else { + this.options.onUpdate(data); + } + } + + /** + * Helper used to know if the given modifier is enabled. + * @method + * @memberof Popper.Utils + * @returns {Boolean} + */ + function isModifierEnabled(modifiers, modifierName) { + return modifiers.some(function (_ref) { + var name = _ref.name, + enabled = _ref.enabled; + return enabled && name === modifierName; + }); + } + + /** + * Get the prefixed supported property name + * @method + * @memberof Popper.Utils + * @argument {String} property (camelCase) + * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix) + */ + function getSupportedPropertyName(property) { + var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O']; + var upperProp = property.charAt(0).toUpperCase() + property.slice(1); + + for (var i = 0; i < prefixes.length; i++) { + var prefix = prefixes[i]; + var toCheck = prefix ? '' + prefix + upperProp : property; + if (typeof document.body.style[toCheck] !== 'undefined') { + return toCheck; + } + } + return null; + } + + /** + * Destroys the popper. + * @method + * @memberof Popper + */ + function destroy() { + this.state.isDestroyed = true; + + // touch DOM only if `applyStyle` modifier is enabled + if (isModifierEnabled(this.modifiers, 'applyStyle')) { + this.popper.removeAttribute('x-placement'); + this.popper.style.position = ''; + this.popper.style.top = ''; + this.popper.style.left = ''; + this.popper.style.right = ''; + this.popper.style.bottom = ''; + this.popper.style.willChange = ''; + this.popper.style[getSupportedPropertyName('transform')] = ''; + } + + this.disableEventListeners(); + + // remove the popper if user explicity asked for the deletion on destroy + // do not use `remove` because IE11 doesn't support it + if (this.options.removeOnDestroy) { + this.popper.parentNode.removeChild(this.popper); + } + return this; + } + + /** + * Get the window associated with the element + * @argument {Element} element + * @returns {Window} + */ + function getWindow(element) { + var ownerDocument = element.ownerDocument; + return ownerDocument ? ownerDocument.defaultView : window; + } + + function attachToScrollParents(scrollParent, event, callback, scrollParents) { + var isBody = scrollParent.nodeName === 'BODY'; + var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; + target.addEventListener(event, callback, { passive: true }); + + if (!isBody) { + attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); + } + scrollParents.push(target); + } + + /** + * Setup needed event listeners used to update the popper position + * @method + * @memberof Popper.Utils + * @private + */ + function setupEventListeners(reference, options, state, updateBound) { + // Resize event listener on window + state.updateBound = updateBound; + getWindow(reference).addEventListener('resize', state.updateBound, { passive: true }); + + // Scroll event listener on scroll parents + var scrollElement = getScrollParent(reference); + attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents); + state.scrollElement = scrollElement; + state.eventsEnabled = true; + + return state; + } + + /** + * It will add resize/scroll events and start recalculating + * position of the popper element when they are triggered. + * @method + * @memberof Popper + */ + function enableEventListeners() { + if (!this.state.eventsEnabled) { + this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); + } + } + + /** + * Remove event listeners used to update the popper position + * @method + * @memberof Popper.Utils + * @private + */ + function removeEventListeners(reference, state) { + // Remove resize event listener on window + getWindow(reference).removeEventListener('resize', state.updateBound); + + // Remove scroll event listener on scroll parents + state.scrollParents.forEach(function (target) { + target.removeEventListener('scroll', state.updateBound); + }); + + // Reset state + state.updateBound = null; + state.scrollParents = []; + state.scrollElement = null; + state.eventsEnabled = false; + return state; + } + + /** + * It will remove resize/scroll events and won't recalculate popper position + * when they are triggered. It also won't trigger `onUpdate` callback anymore, + * unless you call `update` method manually. + * @method + * @memberof Popper + */ + function disableEventListeners() { + if (this.state.eventsEnabled) { + cancelAnimationFrame(this.scheduleUpdate); + this.state = removeEventListeners(this.reference, this.state); + } + } + + /** + * Tells if a given input is a number + * @method + * @memberof Popper.Utils + * @param {*} input to check + * @return {Boolean} + */ + function isNumeric(n) { + return n !== '' && !isNaN(parseFloat(n)) && isFinite(n); + } + + /** + * Set the style to the given popper + * @method + * @memberof Popper.Utils + * @argument {Element} element - Element to apply the style to + * @argument {Object} styles + * Object with a list of properties and values which will be applied to the element + */ + function setStyles(element, styles) { + Object.keys(styles).forEach(function (prop) { + var unit = ''; + // add unit if the value is numeric and is one of the following + if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) { + unit = 'px'; + } + element.style[prop] = styles[prop] + unit; + }); + } + + /** + * Set the attributes to the given popper + * @method + * @memberof Popper.Utils + * @argument {Element} element - Element to apply the attributes to + * @argument {Object} styles + * Object with a list of properties and values which will be applied to the element + */ + function setAttributes(element, attributes) { + Object.keys(attributes).forEach(function (prop) { + var value = attributes[prop]; + if (value !== false) { + element.setAttribute(prop, attributes[prop]); + } else { + element.removeAttribute(prop); + } + }); + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} data.styles - List of style properties - values to apply to popper element + * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The same data object + */ + function applyStyle(data) { + // any property present in `data.styles` will be applied to the popper, + // in this way we can make the 3rd party modifiers add custom styles to it + // Be aware, modifiers could override the properties defined in the previous + // lines of this modifier! + setStyles(data.instance.popper, data.styles); + + // any property present in `data.attributes` will be applied to the popper, + // they will be set as HTML attributes of the element + setAttributes(data.instance.popper, data.attributes); + + // if arrowElement is defined and arrowStyles has some properties + if (data.arrowElement && Object.keys(data.arrowStyles).length) { + setStyles(data.arrowElement, data.arrowStyles); + } + + return data; + } + + /** + * Set the x-placement attribute before everything else because it could be used + * to add margins to the popper margins needs to be calculated to get the + * correct popper offsets. + * @method + * @memberof Popper.modifiers + * @param {HTMLElement} reference - The reference element used to position the popper + * @param {HTMLElement} popper - The HTML element used as popper + * @param {Object} options - Popper.js options + */ + function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { + // compute reference element offsets + var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); + + // compute auto placement, store placement inside the data object, + // modifiers will be able to edit `placement` if needed + // and refer to originalPlacement to know the original value + var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); + + popper.setAttribute('x-placement', placement); + + // Apply `position` to popper before anything else because + // without the position applied we can't guarantee correct computations + setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' }); + + return options; + } + + /** + * @function + * @memberof Popper.Utils + * @argument {Object} data - The data object generated by `update` method + * @argument {Boolean} shouldRound - If the offsets should be rounded at all + * @returns {Object} The popper's position offsets rounded + * + * The tale of pixel-perfect positioning. It's still not 100% perfect, but as + * good as it can be within reason. + * Discussion here: https://github.com/FezVrasta/popper.js/pull/715 + * + * Low DPI screens cause a popper to be blurry if not using full pixels (Safari + * as well on High DPI screens). + * + * Firefox prefers no rounding for positioning and does not have blurriness on + * high DPI screens. + * + * Only horizontal placement and left/right values need to be considered. + */ + function getRoundedOffsets(data, shouldRound) { + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + var round = Math.round, + floor = Math.floor; + + var noRound = function noRound(v) { + return v; + }; + + var referenceWidth = round(reference.width); + var popperWidth = round(popper.width); + + var isVertical = ['left', 'right'].indexOf(data.placement) !== -1; + var isVariation = data.placement.indexOf('-') !== -1; + var sameWidthParity = referenceWidth % 2 === popperWidth % 2; + var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1; + + var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor; + var verticalToInteger = !shouldRound ? noRound : round; + + return { + left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left), + top: verticalToInteger(popper.top), + bottom: verticalToInteger(popper.bottom), + right: horizontalToInteger(popper.right) + }; + } + + var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent); + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function computeStyle(data, options) { + var x = options.x, + y = options.y; + var popper = data.offsets.popper; + + // Remove this legacy support in Popper.js v2 + + var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) { + return modifier.name === 'applyStyle'; + }).gpuAcceleration; + if (legacyGpuAccelerationOption !== undefined) { + console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); + } + var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration; + + var offsetParent = getOffsetParent(data.instance.popper); + var offsetParentRect = getBoundingClientRect(offsetParent); + + // Styles + var styles = { + position: popper.position + }; + + var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox); + + var sideA = x === 'bottom' ? 'top' : 'bottom'; + var sideB = y === 'right' ? 'left' : 'right'; + + // if gpuAcceleration is set to `true` and transform is supported, + // we use `translate3d` to apply the position to the popper we + // automatically use the supported prefixed version if needed + var prefixedProperty = getSupportedPropertyName('transform'); + + // now, let's make a step back and look at this code closely (wtf?) + // If the content of the popper grows once it's been positioned, it + // may happen that the popper gets misplaced because of the new content + // overflowing its reference element + // To avoid this problem, we provide two options (x and y), which allow + // the consumer to define the offset origin. + // If we position a popper on top of a reference element, we can set + // `x` to `top` to make the popper grow towards its top instead of + // its bottom. + var left = void 0, + top = void 0; + if (sideA === 'bottom') { + // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar) + // and not the bottom of the html element + if (offsetParent.nodeName === 'HTML') { + top = -offsetParent.clientHeight + offsets.bottom; + } else { + top = -offsetParentRect.height + offsets.bottom; + } + } else { + top = offsets.top; + } + if (sideB === 'right') { + if (offsetParent.nodeName === 'HTML') { + left = -offsetParent.clientWidth + offsets.right; + } else { + left = -offsetParentRect.width + offsets.right; + } + } else { + left = offsets.left; + } + if (gpuAcceleration && prefixedProperty) { + styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)'; + styles[sideA] = 0; + styles[sideB] = 0; + styles.willChange = 'transform'; + } else { + // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties + var invertTop = sideA === 'bottom' ? -1 : 1; + var invertLeft = sideB === 'right' ? -1 : 1; + styles[sideA] = top * invertTop; + styles[sideB] = left * invertLeft; + styles.willChange = sideA + ', ' + sideB; + } + + // Attributes + var attributes = { + 'x-placement': data.placement + }; + + // Update `data` attributes, styles and arrowStyles + data.attributes = _extends({}, attributes, data.attributes); + data.styles = _extends({}, styles, data.styles); + data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles); + + return data; + } + + /** + * Helper used to know if the given modifier depends from another one.
+ * It checks if the needed modifier is listed and enabled. + * @method + * @memberof Popper.Utils + * @param {Array} modifiers - list of modifiers + * @param {String} requestingName - name of requesting modifier + * @param {String} requestedName - name of requested modifier + * @returns {Boolean} + */ + function isModifierRequired(modifiers, requestingName, requestedName) { + var requesting = find(modifiers, function (_ref) { + var name = _ref.name; + return name === requestingName; + }); + + var isRequired = !!requesting && modifiers.some(function (modifier) { + return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; + }); + + if (!isRequired) { + var _requesting = '`' + requestingName + '`'; + var requested = '`' + requestedName + '`'; + console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!'); + } + return isRequired; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function arrow(data, options) { + var _data$offsets$arrow; + + // arrow depends on keepTogether in order to work + if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { + return data; + } + + var arrowElement = options.element; + + // if arrowElement is a string, suppose it's a CSS selector + if (typeof arrowElement === 'string') { + arrowElement = data.instance.popper.querySelector(arrowElement); + + // if arrowElement is not found, don't run the modifier + if (!arrowElement) { + return data; + } + } else { + // if the arrowElement isn't a query selector we must check that the + // provided DOM node is child of its popper node + if (!data.instance.popper.contains(arrowElement)) { + console.warn('WARNING: `arrow.element` must be child of its popper element!'); + return data; + } + } + + var placement = data.placement.split('-')[0]; + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var isVertical = ['left', 'right'].indexOf(placement) !== -1; + + var len = isVertical ? 'height' : 'width'; + var sideCapitalized = isVertical ? 'Top' : 'Left'; + var side = sideCapitalized.toLowerCase(); + var altSide = isVertical ? 'left' : 'top'; + var opSide = isVertical ? 'bottom' : 'right'; + var arrowElementSize = getOuterSizes(arrowElement)[len]; + + // + // extends keepTogether behavior making sure the popper and its + // reference have enough pixels in conjunction + // + + // top/left side + if (reference[opSide] - arrowElementSize < popper[side]) { + data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); + } + // bottom/right side + if (reference[side] + arrowElementSize > popper[opSide]) { + data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; + } + data.offsets.popper = getClientRect(data.offsets.popper); + + // compute center of the popper + var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; + + // Compute the sideValue using the updated popper offsets + // take popper margin in account because we don't have this info available + var css = getStyleComputedProperty(data.instance.popper); + var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10); + var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10); + var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; + + // prevent arrowElement from being placed not contiguously to its popper + sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); + + data.arrowElement = arrowElement; + data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); + + return data; + } + + /** + * Get the opposite placement variation of the given one + * @method + * @memberof Popper.Utils + * @argument {String} placement variation + * @returns {String} flipped placement variation + */ + function getOppositeVariation(variation) { + if (variation === 'end') { + return 'start'; + } else if (variation === 'start') { + return 'end'; + } + return variation; + } + + /** + * List of accepted placements to use as values of the `placement` option.
+ * Valid placements are: + * - `auto` + * - `top` + * - `right` + * - `bottom` + * - `left` + * + * Each placement can have a variation from this list: + * - `-start` + * - `-end` + * + * Variations are interpreted easily if you think of them as the left to right + * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` + * is right.
+ * Vertically (`left` and `right`), `start` is top and `end` is bottom. + * + * Some valid examples are: + * - `top-end` (on top of reference, right aligned) + * - `right-start` (on right of reference, top aligned) + * - `bottom` (on bottom, centered) + * - `auto-end` (on the side with more space available, alignment depends by placement) + * + * @static + * @type {Array} + * @enum {String} + * @readonly + * @method placements + * @memberof Popper + */ + var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; + + // Get rid of `auto` `auto-start` and `auto-end` + var validPlacements = placements.slice(3); + + /** + * Given an initial placement, returns all the subsequent placements + * clockwise (or counter-clockwise). + * + * @method + * @memberof Popper.Utils + * @argument {String} placement - A valid placement (it accepts variations) + * @argument {Boolean} counter - Set to true to walk the placements counterclockwise + * @returns {Array} placements including their variations + */ + function clockwise(placement) { + var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var index = validPlacements.indexOf(placement); + var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); + return counter ? arr.reverse() : arr; + } + + var BEHAVIORS = { + FLIP: 'flip', + CLOCKWISE: 'clockwise', + COUNTERCLOCKWISE: 'counterclockwise' + }; + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function flip(data, options) { + // if `inner` modifier is enabled, we can't use the `flip` modifier + if (isModifierEnabled(data.instance.modifiers, 'inner')) { + return data; + } + + if (data.flipped && data.placement === data.originalPlacement) { + // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides + return data; + } + + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); + + var placement = data.placement.split('-')[0]; + var placementOpposite = getOppositePlacement(placement); + var variation = data.placement.split('-')[1] || ''; + + var flipOrder = []; + + switch (options.behavior) { + case BEHAVIORS.FLIP: + flipOrder = [placement, placementOpposite]; + break; + case BEHAVIORS.CLOCKWISE: + flipOrder = clockwise(placement); + break; + case BEHAVIORS.COUNTERCLOCKWISE: + flipOrder = clockwise(placement, true); + break; + default: + flipOrder = options.behavior; + } + + flipOrder.forEach(function (step, index) { + if (placement !== step || flipOrder.length === index + 1) { + return data; + } + + placement = data.placement.split('-')[0]; + placementOpposite = getOppositePlacement(placement); + + var popperOffsets = data.offsets.popper; + var refOffsets = data.offsets.reference; + + // using floor because the reference offsets may contain decimals we are not going to consider here + var floor = Math.floor; + var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom); + + var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); + var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); + var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); + var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); + + var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; + + // flip the variation if required + var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; + var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); + + if (overlapsRef || overflowsBoundaries || flippedVariation) { + // this boolean to detect any flip loop + data.flipped = true; + + if (overlapsRef || overflowsBoundaries) { + placement = flipOrder[index + 1]; + } + + if (flippedVariation) { + variation = getOppositeVariation(variation); + } + + data.placement = placement + (variation ? '-' + variation : ''); + + // this object contains `position`, we want to preserve it along with + // any additional property we may add in the future + data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); + + data = runModifiers(data.instance.modifiers, data, 'flip'); + } + }); + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function keepTogether(data) { + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var placement = data.placement.split('-')[0]; + var floor = Math.floor; + var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; + var side = isVertical ? 'right' : 'bottom'; + var opSide = isVertical ? 'left' : 'top'; + var measurement = isVertical ? 'width' : 'height'; + + if (popper[side] < floor(reference[opSide])) { + data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; + } + if (popper[opSide] > floor(reference[side])) { + data.offsets.popper[opSide] = floor(reference[side]); + } + + return data; + } + + /** + * Converts a string containing value + unit into a px value number + * @function + * @memberof {modifiers~offset} + * @private + * @argument {String} str - Value + unit string + * @argument {String} measurement - `height` or `width` + * @argument {Object} popperOffsets + * @argument {Object} referenceOffsets + * @returns {Number|String} + * Value in pixels, or original string if no values were extracted + */ + function toValue(str, measurement, popperOffsets, referenceOffsets) { + // separate value from unit + var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); + var value = +split[1]; + var unit = split[2]; + + // If it's not a number it's an operator, I guess + if (!value) { + return str; + } + + if (unit.indexOf('%') === 0) { + var element = void 0; + switch (unit) { + case '%p': + element = popperOffsets; + break; + case '%': + case '%r': + default: + element = referenceOffsets; + } + + var rect = getClientRect(element); + return rect[measurement] / 100 * value; + } else if (unit === 'vh' || unit === 'vw') { + // if is a vh or vw, we calculate the size based on the viewport + var size = void 0; + if (unit === 'vh') { + size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); + } else { + size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); + } + return size / 100 * value; + } else { + // if is an explicit pixel unit, we get rid of the unit and keep the value + // if is an implicit unit, it's px, and we return just the value + return value; + } + } + + /** + * Parse an `offset` string to extrapolate `x` and `y` numeric offsets. + * @function + * @memberof {modifiers~offset} + * @private + * @argument {String} offset + * @argument {Object} popperOffsets + * @argument {Object} referenceOffsets + * @argument {String} basePlacement + * @returns {Array} a two cells array with x and y offsets in numbers + */ + function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) { + var offsets = [0, 0]; + + // Use height if placement is left or right and index is 0 otherwise use width + // in this way the first offset will use an axis and the second one + // will use the other one + var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; + + // Split the offset string to obtain a list of values and operands + // The regex addresses values with the plus or minus sign in front (+10, -20, etc) + var fragments = offset.split(/(\+|\-)/).map(function (frag) { + return frag.trim(); + }); + + // Detect if the offset string contains a pair of values or a single one + // they could be separated by comma or space + var divider = fragments.indexOf(find(fragments, function (frag) { + return frag.search(/,|\s/) !== -1; + })); + + if (fragments[divider] && fragments[divider].indexOf(',') === -1) { + console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); + } + + // If divider is found, we divide the list of values and operands to divide + // them by ofset X and Y. + var splitRegex = /\s*,\s*|\s+/; + var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; + + // Convert the values with units to absolute pixels to allow our computations + ops = ops.map(function (op, index) { + // Most of the units rely on the orientation of the popper + var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width'; + var mergeWithPrevious = false; + return op + // This aggregates any `+` or `-` sign that aren't considered operators + // e.g.: 10 + +5 => [10, +, +5] + .reduce(function (a, b) { + if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) { + a[a.length - 1] = b; + mergeWithPrevious = true; + return a; + } else if (mergeWithPrevious) { + a[a.length - 1] += b; + mergeWithPrevious = false; + return a; + } else { + return a.concat(b); + } + }, []) + // Here we convert the string values into number values (in px) + .map(function (str) { + return toValue(str, measurement, popperOffsets, referenceOffsets); + }); + }); + + // Loop trough the offsets arrays and execute the operations + ops.forEach(function (op, index) { + op.forEach(function (frag, index2) { + if (isNumeric(frag)) { + offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1); + } + }); + }); + return offsets; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @argument {Number|String} options.offset=0 + * The offset value as described in the modifier description + * @returns {Object} The data object, properly modified + */ + function offset(data, _ref) { + var offset = _ref.offset; + var placement = data.placement, + _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var basePlacement = placement.split('-')[0]; + + var offsets = void 0; + if (isNumeric(+offset)) { + offsets = [+offset, 0]; + } else { + offsets = parseOffset(offset, popper, reference, basePlacement); + } + + if (basePlacement === 'left') { + popper.top += offsets[0]; + popper.left -= offsets[1]; + } else if (basePlacement === 'right') { + popper.top += offsets[0]; + popper.left += offsets[1]; + } else if (basePlacement === 'top') { + popper.left += offsets[0]; + popper.top -= offsets[1]; + } else if (basePlacement === 'bottom') { + popper.left += offsets[0]; + popper.top += offsets[1]; + } + + data.popper = popper; + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function preventOverflow(data, options) { + var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); + + // If offsetParent is the reference element, we really want to + // go one step up and use the next offsetParent as reference to + // avoid to make this modifier completely useless and look like broken + if (data.instance.reference === boundariesElement) { + boundariesElement = getOffsetParent(boundariesElement); + } + + // NOTE: DOM access here + // resets the popper's position so that the document size can be calculated excluding + // the size of the popper element itself + var transformProp = getSupportedPropertyName('transform'); + var popperStyles = data.instance.popper.style; // assignment to help minification + var top = popperStyles.top, + left = popperStyles.left, + transform = popperStyles[transformProp]; + + popperStyles.top = ''; + popperStyles.left = ''; + popperStyles[transformProp] = ''; + + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); + + // NOTE: DOM access here + // restores the original style properties after the offsets have been computed + popperStyles.top = top; + popperStyles.left = left; + popperStyles[transformProp] = transform; + + options.boundaries = boundaries; + + var order = options.priority; + var popper = data.offsets.popper; + + var check = { + primary: function primary(placement) { + var value = popper[placement]; + if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { + value = Math.max(popper[placement], boundaries[placement]); + } + return defineProperty({}, placement, value); + }, + secondary: function secondary(placement) { + var mainSide = placement === 'right' ? 'left' : 'top'; + var value = popper[mainSide]; + if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { + value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height)); + } + return defineProperty({}, mainSide, value); + } + }; + + order.forEach(function (placement) { + var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary'; + popper = _extends({}, popper, check[side](placement)); + }); + + data.offsets.popper = popper; + + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function shift(data) { + var placement = data.placement; + var basePlacement = placement.split('-')[0]; + var shiftvariation = placement.split('-')[1]; + + // if shift shiftvariation is specified, run the modifier + if (shiftvariation) { + var _data$offsets = data.offsets, + reference = _data$offsets.reference, + popper = _data$offsets.popper; + + var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1; + var side = isVertical ? 'left' : 'top'; + var measurement = isVertical ? 'width' : 'height'; + + var shiftOffsets = { + start: defineProperty({}, side, reference[side]), + end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement]) + }; + + data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]); + } + + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function hide(data) { + if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) { + return data; + } + + var refRect = data.offsets.reference; + var bound = find(data.instance.modifiers, function (modifier) { + return modifier.name === 'preventOverflow'; + }).boundaries; + + if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { + // Avoid unnecessary DOM access if visibility hasn't changed + if (data.hide === true) { + return data; + } + + data.hide = true; + data.attributes['x-out-of-boundaries'] = ''; + } else { + // Avoid unnecessary DOM access if visibility hasn't changed + if (data.hide === false) { + return data; + } + + data.hide = false; + data.attributes['x-out-of-boundaries'] = false; + } + + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function inner(data) { + var placement = data.placement; + var basePlacement = placement.split('-')[0]; + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1; + + var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1; + + popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0); + + data.placement = getOppositePlacement(placement); + data.offsets.popper = getClientRect(popper); + + return data; + } + + /** + * Modifier function, each modifier can have a function of this type assigned + * to its `fn` property.
+ * These functions will be called on each update, this means that you must + * make sure they are performant enough to avoid performance bottlenecks. + * + * @function ModifierFn + * @argument {dataObject} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {dataObject} The data object, properly modified + */ + + /** + * Modifiers are plugins used to alter the behavior of your poppers.
+ * Popper.js uses a set of 9 modifiers to provide all the basic functionalities + * needed by the library. + * + * Usually you don't want to override the `order`, `fn` and `onLoad` props. + * All the other properties are configurations that could be tweaked. + * @namespace modifiers + */ + var modifiers = { + /** + * Modifier used to shift the popper on the start or end of its reference + * element.
+ * It will read the variation of the `placement` property.
+ * It can be one either `-end` or `-start`. + * @memberof modifiers + * @inner + */ + shift: { + /** @prop {number} order=100 - Index used to define the order of execution */ + order: 100, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: shift + }, + + /** + * The `offset` modifier can shift your popper on both its axis. + * + * It accepts the following units: + * - `px` or unit-less, interpreted as pixels + * - `%` or `%r`, percentage relative to the length of the reference element + * - `%p`, percentage relative to the length of the popper element + * - `vw`, CSS viewport width unit + * - `vh`, CSS viewport height unit + * + * For length is intended the main axis relative to the placement of the popper.
+ * This means that if the placement is `top` or `bottom`, the length will be the + * `width`. In case of `left` or `right`, it will be the `height`. + * + * You can provide a single value (as `Number` or `String`), or a pair of values + * as `String` divided by a comma or one (or more) white spaces.
+ * The latter is a deprecated method because it leads to confusion and will be + * removed in v2.
+ * Additionally, it accepts additions and subtractions between different units. + * Note that multiplications and divisions aren't supported. + * + * Valid examples are: + * ``` + * 10 + * '10%' + * '10, 10' + * '10%, 10' + * '10 + 10%' + * '10 - 5vh + 3%' + * '-10px + 5vh, 5px - 6%' + * ``` + * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap + * > with their reference element, unfortunately, you will have to disable the `flip` modifier. + * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373). + * + * @memberof modifiers + * @inner + */ + offset: { + /** @prop {number} order=200 - Index used to define the order of execution */ + order: 200, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: offset, + /** @prop {Number|String} offset=0 + * The offset value as described in the modifier description + */ + offset: 0 + }, + + /** + * Modifier used to prevent the popper from being positioned outside the boundary. + * + * A scenario exists where the reference itself is not within the boundaries.
+ * We can say it has "escaped the boundaries" — or just "escaped".
+ * In this case we need to decide whether the popper should either: + * + * - detach from the reference and remain "trapped" in the boundaries, or + * - if it should ignore the boundary and "escape with its reference" + * + * When `escapeWithReference` is set to`true` and reference is completely + * outside its boundaries, the popper will overflow (or completely leave) + * the boundaries in order to remain attached to the edge of the reference. + * + * @memberof modifiers + * @inner + */ + preventOverflow: { + /** @prop {number} order=300 - Index used to define the order of execution */ + order: 300, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: preventOverflow, + /** + * @prop {Array} [priority=['left','right','top','bottom']] + * Popper will try to prevent overflow following these priorities by default, + * then, it could overflow on the left and on top of the `boundariesElement` + */ + priority: ['left', 'right', 'top', 'bottom'], + /** + * @prop {number} padding=5 + * Amount of pixel used to define a minimum distance between the boundaries + * and the popper. This makes sure the popper always has a little padding + * between the edges of its container + */ + padding: 5, + /** + * @prop {String|HTMLElement} boundariesElement='scrollParent' + * Boundaries used by the modifier. Can be `scrollParent`, `window`, + * `viewport` or any DOM element. + */ + boundariesElement: 'scrollParent' + }, + + /** + * Modifier used to make sure the reference and its popper stay near each other + * without leaving any gap between the two. Especially useful when the arrow is + * enabled and you want to ensure that it points to its reference element. + * It cares only about the first axis. You can still have poppers with margin + * between the popper and its reference element. + * @memberof modifiers + * @inner + */ + keepTogether: { + /** @prop {number} order=400 - Index used to define the order of execution */ + order: 400, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: keepTogether + }, + + /** + * This modifier is used to move the `arrowElement` of the popper to make + * sure it is positioned between the reference element and its popper element. + * It will read the outer size of the `arrowElement` node to detect how many + * pixels of conjunction are needed. + * + * It has no effect if no `arrowElement` is provided. + * @memberof modifiers + * @inner + */ + arrow: { + /** @prop {number} order=500 - Index used to define the order of execution */ + order: 500, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: arrow, + /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */ + element: '[x-arrow]' + }, + + /** + * Modifier used to flip the popper's placement when it starts to overlap its + * reference element. + * + * Requires the `preventOverflow` modifier before it in order to work. + * + * **NOTE:** this modifier will interrupt the current update cycle and will + * restart it if it detects the need to flip the placement. + * @memberof modifiers + * @inner + */ + flip: { + /** @prop {number} order=600 - Index used to define the order of execution */ + order: 600, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: flip, + /** + * @prop {String|Array} behavior='flip' + * The behavior used to change the popper's placement. It can be one of + * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid + * placements (with optional variations) + */ + behavior: 'flip', + /** + * @prop {number} padding=5 + * The popper will flip if it hits the edges of the `boundariesElement` + */ + padding: 5, + /** + * @prop {String|HTMLElement} boundariesElement='viewport' + * The element which will define the boundaries of the popper position. + * The popper will never be placed outside of the defined boundaries + * (except if `keepTogether` is enabled) + */ + boundariesElement: 'viewport' + }, + + /** + * Modifier used to make the popper flow toward the inner of the reference element. + * By default, when this modifier is disabled, the popper will be placed outside + * the reference element. + * @memberof modifiers + * @inner + */ + inner: { + /** @prop {number} order=700 - Index used to define the order of execution */ + order: 700, + /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */ + enabled: false, + /** @prop {ModifierFn} */ + fn: inner + }, + + /** + * Modifier used to hide the popper when its reference element is outside of the + * popper boundaries. It will set a `x-out-of-boundaries` attribute which can + * be used to hide with a CSS selector the popper when its reference is + * out of boundaries. + * + * Requires the `preventOverflow` modifier before it in order to work. + * @memberof modifiers + * @inner + */ + hide: { + /** @prop {number} order=800 - Index used to define the order of execution */ + order: 800, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: hide + }, + + /** + * Computes the style that will be applied to the popper element to gets + * properly positioned. + * + * Note that this modifier will not touch the DOM, it just prepares the styles + * so that `applyStyle` modifier can apply it. This separation is useful + * in case you need to replace `applyStyle` with a custom implementation. + * + * This modifier has `850` as `order` value to maintain backward compatibility + * with previous versions of Popper.js. Expect the modifiers ordering method + * to change in future major versions of the library. + * + * @memberof modifiers + * @inner + */ + computeStyle: { + /** @prop {number} order=850 - Index used to define the order of execution */ + order: 850, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: computeStyle, + /** + * @prop {Boolean} gpuAcceleration=true + * If true, it uses the CSS 3D transformation to position the popper. + * Otherwise, it will use the `top` and `left` properties + */ + gpuAcceleration: true, + /** + * @prop {string} [x='bottom'] + * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin. + * Change this if your popper should grow in a direction different from `bottom` + */ + x: 'bottom', + /** + * @prop {string} [x='left'] + * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin. + * Change this if your popper should grow in a direction different from `right` + */ + y: 'right' + }, + + /** + * Applies the computed styles to the popper element. + * + * All the DOM manipulations are limited to this modifier. This is useful in case + * you want to integrate Popper.js inside a framework or view library and you + * want to delegate all the DOM manipulations to it. + * + * Note that if you disable this modifier, you must make sure the popper element + * has its position set to `absolute` before Popper.js can do its work! + * + * Just disable this modifier and define your own to achieve the desired effect. + * + * @memberof modifiers + * @inner + */ + applyStyle: { + /** @prop {number} order=900 - Index used to define the order of execution */ + order: 900, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: applyStyle, + /** @prop {Function} */ + onLoad: applyStyleOnLoad, + /** + * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier + * @prop {Boolean} gpuAcceleration=true + * If true, it uses the CSS 3D transformation to position the popper. + * Otherwise, it will use the `top` and `left` properties + */ + gpuAcceleration: undefined + } + }; + + /** + * The `dataObject` is an object containing all the information used by Popper.js. + * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks. + * @name dataObject + * @property {Object} data.instance The Popper.js instance + * @property {String} data.placement Placement applied to popper + * @property {String} data.originalPlacement Placement originally defined on init + * @property {Boolean} data.flipped True if popper has been flipped by flip modifier + * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper + * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier + * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`) + * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`) + * @property {Object} data.boundaries Offsets of the popper boundaries + * @property {Object} data.offsets The measurements of popper, reference and arrow elements + * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values + * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values + * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0 + */ + + /** + * Default options provided to Popper.js constructor.
+ * These can be overridden using the `options` argument of Popper.js.
+ * To override an option, simply pass an object with the same + * structure of the `options` object, as the 3rd argument. For example: + * ``` + * new Popper(ref, pop, { + * modifiers: { + * preventOverflow: { enabled: false } + * } + * }) + * ``` + * @type {Object} + * @static + * @memberof Popper + */ + var Defaults = { + /** + * Popper's placement. + * @prop {Popper.placements} placement='bottom' + */ + placement: 'bottom', + + /** + * Set this to true if you want popper to position it self in 'fixed' mode + * @prop {Boolean} positionFixed=false + */ + positionFixed: false, + + /** + * Whether events (resize, scroll) are initially enabled. + * @prop {Boolean} eventsEnabled=true + */ + eventsEnabled: true, + + /** + * Set to true if you want to automatically remove the popper when + * you call the `destroy` method. + * @prop {Boolean} removeOnDestroy=false + */ + removeOnDestroy: false, + + /** + * Callback called when the popper is created.
+ * By default, it is set to no-op.
+ * Access Popper.js instance with `data.instance`. + * @prop {onCreate} + */ + onCreate: function onCreate() {}, + + /** + * Callback called when the popper is updated. This callback is not called + * on the initialization/creation of the popper, but only on subsequent + * updates.
+ * By default, it is set to no-op.
+ * Access Popper.js instance with `data.instance`. + * @prop {onUpdate} + */ + onUpdate: function onUpdate() {}, + + /** + * List of modifiers used to modify the offsets before they are applied to the popper. + * They provide most of the functionalities of Popper.js. + * @prop {modifiers} + */ + modifiers: modifiers + }; + + /** + * @callback onCreate + * @param {dataObject} data + */ + + /** + * @callback onUpdate + * @param {dataObject} data + */ + + // Utils + // Methods + var Popper = function () { + /** + * Creates a new Popper.js instance. + * @class Popper + * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper + * @param {HTMLElement} popper - The HTML element used as the popper + * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults) + * @return {Object} instance - The generated Popper.js instance + */ + function Popper(reference, popper) { + var _this = this; + + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + classCallCheck(this, Popper); + + this.scheduleUpdate = function () { + return requestAnimationFrame(_this.update); + }; + + // make update() debounced, so that it only runs at most once-per-tick + this.update = debounce(this.update.bind(this)); + + // with {} we create a new object with the options inside it + this.options = _extends({}, Popper.Defaults, options); + + // init state + this.state = { + isDestroyed: false, + isCreated: false, + scrollParents: [] + }; + + // get reference and popper elements (allow jQuery wrappers) + this.reference = reference && reference.jquery ? reference[0] : reference; + this.popper = popper && popper.jquery ? popper[0] : popper; + + // Deep merge modifiers options + this.options.modifiers = {}; + Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) { + _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); + }); + + // Refactoring modifiers' list (Object => Array) + this.modifiers = Object.keys(this.options.modifiers).map(function (name) { + return _extends({ + name: name + }, _this.options.modifiers[name]); + }) + // sort the modifiers by order + .sort(function (a, b) { + return a.order - b.order; + }); + + // modifiers have the ability to execute arbitrary code when Popper.js get inited + // such code is executed in the same order of its modifier + // they could add new properties to their options configuration + // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`! + this.modifiers.forEach(function (modifierOptions) { + if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { + modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); + } + }); + + // fire the first update to position the popper in the right place + this.update(); + + var eventsEnabled = this.options.eventsEnabled; + if (eventsEnabled) { + // setup event listeners, they will take care of update the position in specific situations + this.enableEventListeners(); + } + + this.state.eventsEnabled = eventsEnabled; + } + + // We can't use class properties because they don't get listed in the + // class prototype and break stuff like Sinon stubs + + + createClass(Popper, [{ + key: 'update', + value: function update$$1() { + return update.call(this); + } + }, { + key: 'destroy', + value: function destroy$$1() { + return destroy.call(this); + } + }, { + key: 'enableEventListeners', + value: function enableEventListeners$$1() { + return enableEventListeners.call(this); + } + }, { + key: 'disableEventListeners', + value: function disableEventListeners$$1() { + return disableEventListeners.call(this); + } + + /** + * Schedules an update. It will run on the next UI update available. + * @method scheduleUpdate + * @memberof Popper + */ + + + /** + * Collection of utilities useful when writing custom modifiers. + * Starting from version 1.7, this method is available only if you + * include `popper-utils.js` before `popper.js`. + * + * **DEPRECATION**: This way to access PopperUtils is deprecated + * and will be removed in v2! Use the PopperUtils module directly instead. + * Due to the high instability of the methods contained in Utils, we can't + * guarantee them to follow semver. Use them at your own risk! + * @static + * @private + * @type {Object} + * @deprecated since version 1.8 + * @member Utils + * @memberof Popper + */ + + }]); + return Popper; + }(); + + /** + * The `referenceObject` is an object that provides an interface compatible with Popper.js + * and lets you use it as replacement of a real DOM node.
+ * You can use this method to position a popper relatively to a set of coordinates + * in case you don't have a DOM node to use as reference. + * + * ``` + * new Popper(referenceObject, popperNode); + * ``` + * + * NB: This feature isn't supported in Internet Explorer 10. + * @name referenceObject + * @property {Function} data.getBoundingClientRect + * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method. + * @property {number} data.clientWidth + * An ES6 getter that will return the width of the virtual reference element. + * @property {number} data.clientHeight + * An ES6 getter that will return the height of the virtual reference element. + */ + + + Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils; + Popper.placements = placements; + Popper.Defaults = Defaults; + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME$4 = 'dropdown'; + var VERSION$4 = '4.3.1'; + var DATA_KEY$4 = 'bs.dropdown'; + var EVENT_KEY$4 = "." + DATA_KEY$4; + var DATA_API_KEY$4 = '.data-api'; + var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4]; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key + + var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key + + var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + + var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + + var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) + + var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE); + var Event$4 = { + HIDE: "hide" + EVENT_KEY$4, + HIDDEN: "hidden" + EVENT_KEY$4, + SHOW: "show" + EVENT_KEY$4, + SHOWN: "shown" + EVENT_KEY$4, + CLICK: "click" + EVENT_KEY$4, + CLICK_DATA_API: "click" + EVENT_KEY$4 + DATA_API_KEY$4, + KEYDOWN_DATA_API: "keydown" + EVENT_KEY$4 + DATA_API_KEY$4, + KEYUP_DATA_API: "keyup" + EVENT_KEY$4 + DATA_API_KEY$4 + }; + var ClassName$4 = { + DISABLED: 'disabled', + SHOW: 'show', + DROPUP: 'dropup', + DROPRIGHT: 'dropright', + DROPLEFT: 'dropleft', + MENURIGHT: 'dropdown-menu-right', + MENULEFT: 'dropdown-menu-left', + POSITION_STATIC: 'position-static' + }; + var Selector$4 = { + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + MENU: '.dropdown-menu', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' + }; + var AttachmentMap = { + TOP: 'top-start', + TOPEND: 'top-end', + BOTTOM: 'bottom-start', + BOTTOMEND: 'bottom-end', + RIGHT: 'right-start', + RIGHTEND: 'right-end', + LEFT: 'left-start', + LEFTEND: 'left-end' + }; + var Default$2 = { + offset: 0, + flip: true, + boundary: 'scrollParent', + reference: 'toggle', + display: 'dynamic' + }; + var DefaultType$2 = { + offset: '(number|string|function)', + flip: 'boolean', + boundary: '(string|element)', + reference: '(string|element)', + display: 'string' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Dropdown = + /*#__PURE__*/ + function () { + function Dropdown(element, config) { + this._element = element; + this._popper = null; + this._config = this._getConfig(config); + this._menu = this._getMenuElement(); + this._inNavbar = this._detectNavbar(); + + this._addEventListeners(); + } // Getters + + + var _proto = Dropdown.prototype; + + // Public + _proto.toggle = function toggle() { + if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this._element); + + var isActive = $(this._menu).hasClass(ClassName$4.SHOW); + + Dropdown._clearMenus(); + + if (isActive) { + return; + } + + var relatedTarget = { + relatedTarget: this._element + }; + var showEvent = $.Event(Event$4.SHOW, relatedTarget); + $(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return; + } // Disable totally Popper.js for Dropdown in Navbar + + + if (!this._inNavbar) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)'); + } + + var referenceElement = this._element; + + if (this._config.reference === 'parent') { + referenceElement = parent; + } else if (Util.isElement(this._config.reference)) { + referenceElement = this._config.reference; // Check if it's jQuery element + + if (typeof this._config.reference.jquery !== 'undefined') { + referenceElement = this._config.reference[0]; + } + } // If boundary is not `scrollParent`, then set position to `static` + // to allow the menu to "escape" the scroll parent's boundaries + // https://github.com/twbs/bootstrap/issues/24251 + + + if (this._config.boundary !== 'scrollParent') { + $(parent).addClass(ClassName$4.POSITION_STATIC); + } + + this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig()); + } // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + + if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) { + $(document.body).children().on('mouseover', null, $.noop); + } + + this._element.focus(); + + this._element.setAttribute('aria-expanded', true); + + $(this._menu).toggleClass(ClassName$4.SHOW); + $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget)); + }; + + _proto.show = function show() { + if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) { + return; + } + + var relatedTarget = { + relatedTarget: this._element + }; + var showEvent = $.Event(Event$4.SHOW, relatedTarget); + + var parent = Dropdown._getParentFromElement(this._element); + + $(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return; + } + + $(this._menu).toggleClass(ClassName$4.SHOW); + $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget)); + }; + + _proto.hide = function hide() { + if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) { + return; + } + + var relatedTarget = { + relatedTarget: this._element + }; + var hideEvent = $.Event(Event$4.HIDE, relatedTarget); + + var parent = Dropdown._getParentFromElement(this._element); + + $(parent).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + $(this._menu).toggleClass(ClassName$4.SHOW); + $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget)); + }; + + _proto.dispose = function dispose() { + $.removeData(this._element, DATA_KEY$4); + $(this._element).off(EVENT_KEY$4); + this._element = null; + this._menu = null; + + if (this._popper !== null) { + this._popper.destroy(); + + this._popper = null; + } + }; + + _proto.update = function update() { + this._inNavbar = this._detectNavbar(); + + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + } // Private + ; + + _proto._addEventListeners = function _addEventListeners() { + var _this = this; + + $(this._element).on(Event$4.CLICK, function (event) { + event.preventDefault(); + event.stopPropagation(); + + _this.toggle(); + }); + }; + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config); + Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType); + return config; + }; + + _proto._getMenuElement = function _getMenuElement() { + if (!this._menu) { + var parent = Dropdown._getParentFromElement(this._element); + + if (parent) { + this._menu = parent.querySelector(Selector$4.MENU); + } + } + + return this._menu; + }; + + _proto._getPlacement = function _getPlacement() { + var $parentDropdown = $(this._element.parentNode); + var placement = AttachmentMap.BOTTOM; // Handle dropup + + if ($parentDropdown.hasClass(ClassName$4.DROPUP)) { + placement = AttachmentMap.TOP; + + if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) { + placement = AttachmentMap.TOPEND; + } + } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) { + placement = AttachmentMap.RIGHT; + } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) { + placement = AttachmentMap.LEFT; + } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) { + placement = AttachmentMap.BOTTOMEND; + } + + return placement; + }; + + _proto._detectNavbar = function _detectNavbar() { + return $(this._element).closest('.navbar').length > 0; + }; + + _proto._getOffset = function _getOffset() { + var _this2 = this; + + var offset = {}; + + if (typeof this._config.offset === 'function') { + offset.fn = function (data) { + data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {}); + return data; + }; + } else { + offset.offset = this._config.offset; + } + + return offset; + }; + + _proto._getPopperConfig = function _getPopperConfig() { + var popperConfig = { + placement: this._getPlacement(), + modifiers: { + offset: this._getOffset(), + flip: { + enabled: this._config.flip + }, + preventOverflow: { + boundariesElement: this._config.boundary + } + } // Disable Popper.js if we have a static display + + }; + + if (this._config.display === 'static') { + popperConfig.modifiers.applyStyle = { + enabled: false + }; + } + + return popperConfig; + } // Static + ; + + Dropdown._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY$4); + + var _config = typeof config === 'object' ? config : null; + + if (!data) { + data = new Dropdown(this, _config); + $(this).data(DATA_KEY$4, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + Dropdown._clearMenus = function _clearMenus(event) { + if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { + return; + } + + var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE)); + + for (var i = 0, len = toggles.length; i < len; i++) { + var parent = Dropdown._getParentFromElement(toggles[i]); + + var context = $(toggles[i]).data(DATA_KEY$4); + var relatedTarget = { + relatedTarget: toggles[i] + }; + + if (event && event.type === 'click') { + relatedTarget.clickEvent = event; + } + + if (!context) { + continue; + } + + var dropdownMenu = context._menu; + + if (!$(parent).hasClass(ClassName$4.SHOW)) { + continue; + } + + if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) { + continue; + } + + var hideEvent = $.Event(Event$4.HIDE, relatedTarget); + $(parent).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + continue; + } // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + + if ('ontouchstart' in document.documentElement) { + $(document.body).children().off('mouseover', null, $.noop); + } + + toggles[i].setAttribute('aria-expanded', 'false'); + $(dropdownMenu).removeClass(ClassName$4.SHOW); + $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget)); + } + }; + + Dropdown._getParentFromElement = function _getParentFromElement(element) { + var parent; + var selector = Util.getSelectorFromElement(element); + + if (selector) { + parent = document.querySelector(selector); + } + + return parent || element.parentNode; + } // eslint-disable-next-line complexity + ; + + Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { + // If not input/textarea: + // - And not a key in REGEXP_KEYDOWN => not a dropdown command + // If input/textarea: + // - If space key => not a dropdown command + // - If key is other than escape + // - If key is not up or down => not a dropdown command + // - If trigger inside the menu => not a dropdown command + if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + + var isActive = $(parent).hasClass(ClassName$4.SHOW); + + if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { + if (event.which === ESCAPE_KEYCODE) { + var toggle = parent.querySelector(Selector$4.DATA_TOGGLE); + $(toggle).trigger('focus'); + } + + $(this).trigger('click'); + return; + } + + var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS)); + + if (items.length === 0) { + return; + } + + var index = items.indexOf(event.target); + + if (event.which === ARROW_UP_KEYCODE && index > 0) { + // Up + index--; + } + + if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { + // Down + index++; + } + + if (index < 0) { + index = 0; + } + + items[index].focus(); + }; + + _createClass(Dropdown, null, [{ + key: "VERSION", + get: function get() { + return VERSION$4; + } + }, { + key: "Default", + get: function get() { + return Default$2; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType$2; + } + }]); + + return Dropdown; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + " " + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) { + event.preventDefault(); + event.stopPropagation(); + + Dropdown._jQueryInterface.call($(this), 'toggle'); + }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME$4] = Dropdown._jQueryInterface; + $.fn[NAME$4].Constructor = Dropdown; + + $.fn[NAME$4].noConflict = function () { + $.fn[NAME$4] = JQUERY_NO_CONFLICT$4; + return Dropdown._jQueryInterface; + }; + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME$5 = 'modal'; + var VERSION$5 = '4.3.1'; + var DATA_KEY$5 = 'bs.modal'; + var EVENT_KEY$5 = "." + DATA_KEY$5; + var DATA_API_KEY$5 = '.data-api'; + var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5]; + var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key + + var Default$3 = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + var DefaultType$3 = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + var Event$5 = { + HIDE: "hide" + EVENT_KEY$5, + HIDDEN: "hidden" + EVENT_KEY$5, + SHOW: "show" + EVENT_KEY$5, + SHOWN: "shown" + EVENT_KEY$5, + FOCUSIN: "focusin" + EVENT_KEY$5, + RESIZE: "resize" + EVENT_KEY$5, + CLICK_DISMISS: "click.dismiss" + EVENT_KEY$5, + KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY$5, + MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY$5, + MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY$5, + CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5 + }; + var ClassName$5 = { + SCROLLABLE: 'modal-dialog-scrollable', + SCROLLBAR_MEASURER: 'modal-scrollbar-measure', + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + SHOW: 'show' + }; + var Selector$5 = { + DIALOG: '.modal-dialog', + MODAL_BODY: '.modal-body', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', + STICKY_CONTENT: '.sticky-top' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Modal = + /*#__PURE__*/ + function () { + function Modal(element, config) { + this._config = this._getConfig(config); + this._element = element; + this._dialog = element.querySelector(Selector$5.DIALOG); + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._isTransitioning = false; + this._scrollbarWidth = 0; + } // Getters + + + var _proto = Modal.prototype; + + // Public + _proto.toggle = function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + }; + + _proto.show = function show(relatedTarget) { + var _this = this; + + if (this._isShown || this._isTransitioning) { + return; + } + + if ($(this._element).hasClass(ClassName$5.FADE)) { + this._isTransitioning = true; + } + + var showEvent = $.Event(Event$5.SHOW, { + relatedTarget: relatedTarget + }); + $(this._element).trigger(showEvent); + + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } + + this._isShown = true; + + this._checkScrollbar(); + + this._setScrollbar(); + + this._adjustDialog(); + + this._setEscapeEvent(); + + this._setResizeEvent(); + + $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) { + return _this.hide(event); + }); + $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () { + $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) { + if ($(event.target).is(_this._element)) { + _this._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop(function () { + return _this._showElement(relatedTarget); + }); + }; + + _proto.hide = function hide(event) { + var _this2 = this; + + if (event) { + event.preventDefault(); + } + + if (!this._isShown || this._isTransitioning) { + return; + } + + var hideEvent = $.Event(Event$5.HIDE); + $(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + var transition = $(this._element).hasClass(ClassName$5.FADE); + + if (transition) { + this._isTransitioning = true; + } + + this._setEscapeEvent(); + + this._setResizeEvent(); + + $(document).off(Event$5.FOCUSIN); + $(this._element).removeClass(ClassName$5.SHOW); + $(this._element).off(Event$5.CLICK_DISMISS); + $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS); + + if (transition) { + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $(this._element).one(Util.TRANSITION_END, function (event) { + return _this2._hideModal(event); + }).emulateTransitionEnd(transitionDuration); + } else { + this._hideModal(); + } + }; + + _proto.dispose = function dispose() { + [window, this._element, this._dialog].forEach(function (htmlElement) { + return $(htmlElement).off(EVENT_KEY$5); + }); + /** + * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API` + * Do not move `document` in `htmlElements` array + * It will remove `Event.CLICK_DATA_API` event that should remain + */ + + $(document).off(Event$5.FOCUSIN); + $.removeData(this._element, DATA_KEY$5); + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._isTransitioning = null; + this._scrollbarWidth = null; + }; + + _proto.handleUpdate = function handleUpdate() { + this._adjustDialog(); + } // Private + ; + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default$3, config); + Util.typeCheckConfig(NAME$5, config, DefaultType$3); + return config; + }; + + _proto._showElement = function _showElement(relatedTarget) { + var _this3 = this; + + var transition = $(this._element).hasClass(ClassName$5.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // Don't move modal's DOM position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + + this._element.removeAttribute('aria-hidden'); + + this._element.setAttribute('aria-modal', true); + + if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) { + this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0; + } else { + this._element.scrollTop = 0; + } + + if (transition) { + Util.reflow(this._element); + } + + $(this._element).addClass(ClassName$5.SHOW); + + if (this._config.focus) { + this._enforceFocus(); + } + + var shownEvent = $.Event(Event$5.SHOWN, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this3._config.focus) { + _this3._element.focus(); + } + + _this3._isTransitioning = false; + $(_this3._element).trigger(shownEvent); + }; + + if (transition) { + var transitionDuration = Util.getTransitionDurationFromElement(this._dialog); + $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); + } else { + transitionComplete(); + } + }; + + _proto._enforceFocus = function _enforceFocus() { + var _this4 = this; + + $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop + .on(Event$5.FOCUSIN, function (event) { + if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) { + _this4._element.focus(); + } + }); + }; + + _proto._setEscapeEvent = function _setEscapeEvent() { + var _this5 = this; + + if (this._isShown && this._config.keyboard) { + $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) { + if (event.which === ESCAPE_KEYCODE$1) { + event.preventDefault(); + + _this5.hide(); + } + }); + } else if (!this._isShown) { + $(this._element).off(Event$5.KEYDOWN_DISMISS); + } + }; + + _proto._setResizeEvent = function _setResizeEvent() { + var _this6 = this; + + if (this._isShown) { + $(window).on(Event$5.RESIZE, function (event) { + return _this6.handleUpdate(event); + }); + } else { + $(window).off(Event$5.RESIZE); + } + }; + + _proto._hideModal = function _hideModal() { + var _this7 = this; + + this._element.style.display = 'none'; + + this._element.setAttribute('aria-hidden', true); + + this._element.removeAttribute('aria-modal'); + + this._isTransitioning = false; + + this._showBackdrop(function () { + $(document.body).removeClass(ClassName$5.OPEN); + + _this7._resetAdjustments(); + + _this7._resetScrollbar(); + + $(_this7._element).trigger(Event$5.HIDDEN); + }); + }; + + _proto._removeBackdrop = function _removeBackdrop() { + if (this._backdrop) { + $(this._backdrop).remove(); + this._backdrop = null; + } + }; + + _proto._showBackdrop = function _showBackdrop(callback) { + var _this8 = this; + + var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : ''; + + if (this._isShown && this._config.backdrop) { + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName$5.BACKDROP; + + if (animate) { + this._backdrop.classList.add(animate); + } + + $(this._backdrop).appendTo(document.body); + $(this._element).on(Event$5.CLICK_DISMISS, function (event) { + if (_this8._ignoreBackdropClick) { + _this8._ignoreBackdropClick = false; + return; + } + + if (event.target !== event.currentTarget) { + return; + } + + if (_this8._config.backdrop === 'static') { + _this8._element.focus(); + } else { + _this8.hide(); + } + }); + + if (animate) { + Util.reflow(this._backdrop); + } + + $(this._backdrop).addClass(ClassName$5.SHOW); + + if (!callback) { + return; + } + + if (!animate) { + callback(); + return; + } + + var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); + } else if (!this._isShown && this._backdrop) { + $(this._backdrop).removeClass(ClassName$5.SHOW); + + var callbackRemove = function callbackRemove() { + _this8._removeBackdrop(); + + if (callback) { + callback(); + } + }; + + if ($(this._element).hasClass(ClassName$5.FADE)) { + var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + + $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + } // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + ; + + _proto._adjustDialog = function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + "px"; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + "px"; + } + }; + + _proto._resetAdjustments = function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + }; + + _proto._checkScrollbar = function _checkScrollbar() { + var rect = document.body.getBoundingClientRect(); + this._isBodyOverflowing = rect.left + rect.right < window.innerWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + }; + + _proto._setScrollbar = function _setScrollbar() { + var _this9 = this; + + if (this._isBodyOverflowing) { + // Note: DOMNode.style.paddingRight returns the actual value or '' if not set + // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set + var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT)); + var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding + + $(fixedContent).each(function (index, element) { + var actualPadding = element.style.paddingRight; + var calculatedPadding = $(element).css('padding-right'); + $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px"); + }); // Adjust sticky content margin + + $(stickyContent).each(function (index, element) { + var actualMargin = element.style.marginRight; + var calculatedMargin = $(element).css('margin-right'); + $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px"); + }); // Adjust body padding + + var actualPadding = document.body.style.paddingRight; + var calculatedPadding = $(document.body).css('padding-right'); + $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); + } + + $(document.body).addClass(ClassName$5.OPEN); + }; + + _proto._resetScrollbar = function _resetScrollbar() { + // Restore fixed content padding + var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT)); + $(fixedContent).each(function (index, element) { + var padding = $(element).data('padding-right'); + $(element).removeData('padding-right'); + element.style.paddingRight = padding ? padding : ''; + }); // Restore sticky content + + var elements = [].slice.call(document.querySelectorAll("" + Selector$5.STICKY_CONTENT)); + $(elements).each(function (index, element) { + var margin = $(element).data('margin-right'); + + if (typeof margin !== 'undefined') { + $(element).css('margin-right', margin).removeData('margin-right'); + } + }); // Restore body padding + + var padding = $(document.body).data('padding-right'); + $(document.body).removeData('padding-right'); + document.body.style.paddingRight = padding ? padding : ''; + }; + + _proto._getScrollbarWidth = function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + } // Static + ; + + Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $(this).data(DATA_KEY$5); + + var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {}); + + if (!data) { + data = new Modal(this, _config); + $(this).data(DATA_KEY$5, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + }; + + _createClass(Modal, null, [{ + key: "VERSION", + get: function get() { + return VERSION$5; + } + }, { + key: "Default", + get: function get() { + return Default$3; + } + }]); + + return Modal; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + + $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) { + var _this10 = this; + + var target; + var selector = Util.getSelectorFromElement(this); + + if (selector) { + target = document.querySelector(selector); + } + + var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data()); + + if (this.tagName === 'A' || this.tagName === 'AREA') { + event.preventDefault(); + } + + var $target = $(target).one(Event$5.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // Only register focus restorer if modal will actually get shown + return; + } + + $target.one(Event$5.HIDDEN, function () { + if ($(_this10).is(':visible')) { + _this10.focus(); + } + }); + }); + + Modal._jQueryInterface.call($(target), config, this); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME$5] = Modal._jQueryInterface; + $.fn[NAME$5].Constructor = Modal; + + $.fn[NAME$5].noConflict = function () { + $.fn[NAME$5] = JQUERY_NO_CONFLICT$5; + return Modal._jQueryInterface; + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): tools/sanitizer.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']; + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + var DefaultWhitelist = { + // Global attributes allowed on any supplied element below. + '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + /** + * A pattern that recognizes a commonly useful subset of URLs that are safe. + * + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + */ + + }; + var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi; + /** + * A pattern that matches safe data URLs. Only matches image, video and audio types. + * + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + */ + + var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; + + function allowedAttribute(attr, allowedAttributeList) { + var attrName = attr.nodeName.toLowerCase(); + + if (allowedAttributeList.indexOf(attrName) !== -1) { + if (uriAttrs.indexOf(attrName) !== -1) { + return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)); + } + + return true; + } + + var regExp = allowedAttributeList.filter(function (attrRegex) { + return attrRegex instanceof RegExp; + }); // Check if a regular expression validates the attribute. + + for (var i = 0, l = regExp.length; i < l; i++) { + if (attrName.match(regExp[i])) { + return true; + } + } + + return false; + } + + function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { + if (unsafeHtml.length === 0) { + return unsafeHtml; + } + + if (sanitizeFn && typeof sanitizeFn === 'function') { + return sanitizeFn(unsafeHtml); + } + + var domParser = new window.DOMParser(); + var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); + var whitelistKeys = Object.keys(whiteList); + var elements = [].slice.call(createdDocument.body.querySelectorAll('*')); + + var _loop = function _loop(i, len) { + var el = elements[i]; + var elName = el.nodeName.toLowerCase(); + + if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) { + el.parentNode.removeChild(el); + return "continue"; + } + + var attributeList = [].slice.call(el.attributes); + var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []); + attributeList.forEach(function (attr) { + if (!allowedAttribute(attr, whitelistedAttributes)) { + el.removeAttribute(attr.nodeName); + } + }); + }; + + for (var i = 0, len = elements.length; i < len; i++) { + var _ret = _loop(i, len); + + if (_ret === "continue") continue; + } + + return createdDocument.body.innerHTML; + } + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME$6 = 'tooltip'; + var VERSION$6 = '4.3.1'; + var DATA_KEY$6 = 'bs.tooltip'; + var EVENT_KEY$6 = "." + DATA_KEY$6; + var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6]; + var CLASS_PREFIX = 'bs-tooltip'; + var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); + var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']; + var DefaultType$4 = { + animation: 'boolean', + template: 'string', + title: '(string|element|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: '(number|string|function)', + container: '(string|element|boolean)', + fallbackPlacement: '(string|array)', + boundary: '(string|element)', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + whiteList: 'object' + }; + var AttachmentMap$1 = { + AUTO: 'auto', + TOP: 'top', + RIGHT: 'right', + BOTTOM: 'bottom', + LEFT: 'left' + }; + var Default$4 = { + animation: true, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: 0, + container: false, + fallbackPlacement: 'flip', + boundary: 'scrollParent', + sanitize: true, + sanitizeFn: null, + whiteList: DefaultWhitelist + }; + var HoverState = { + SHOW: 'show', + OUT: 'out' + }; + var Event$6 = { + HIDE: "hide" + EVENT_KEY$6, + HIDDEN: "hidden" + EVENT_KEY$6, + SHOW: "show" + EVENT_KEY$6, + SHOWN: "shown" + EVENT_KEY$6, + INSERTED: "inserted" + EVENT_KEY$6, + CLICK: "click" + EVENT_KEY$6, + FOCUSIN: "focusin" + EVENT_KEY$6, + FOCUSOUT: "focusout" + EVENT_KEY$6, + MOUSEENTER: "mouseenter" + EVENT_KEY$6, + MOUSELEAVE: "mouseleave" + EVENT_KEY$6 + }; + var ClassName$6 = { + FADE: 'fade', + SHOW: 'show' + }; + var Selector$6 = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner', + ARROW: '.arrow' + }; + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Tooltip = + /*#__PURE__*/ + function () { + function Tooltip(element, config) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)'); + } // private + + + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._popper = null; // Protected + + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } // Getters + + + var _proto = Tooltip.prototype; + + // Public + _proto.enable = function enable() { + this._isEnabled = true; + }; + + _proto.disable = function disable() { + this._isEnabled = false; + }; + + _proto.toggleEnabled = function toggleEnabled() { + this._isEnabled = !this._isEnabled; + }; + + _proto.toggle = function toggle(event) { + if (!this._isEnabled) { + return; + } + + if (event) { + var dataKey = this.constructor.DATA_KEY; + var context = $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) { + this._leave(null, this); + + return; + } + + this._enter(null, this); + } + }; + + _proto.dispose = function dispose() { + clearTimeout(this._timeout); + $.removeData(this.element, this.constructor.DATA_KEY); + $(this.element).off(this.constructor.EVENT_KEY); + $(this.element).closest('.modal').off('hide.bs.modal'); + + if (this.tip) { + $(this.tip).remove(); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + + if (this._popper !== null) { + this._popper.destroy(); + } + + this._popper = null; + this.element = null; + this.config = null; + this.tip = null; + }; + + _proto.show = function show() { + var _this = this; + + if ($(this.element).css('display') === 'none') { + throw new Error('Please use show on visible elements'); + } + + var showEvent = $.Event(this.constructor.Event.SHOW); + + if (this.isWithContent() && this._isEnabled) { + $(this.element).trigger(showEvent); + var shadowRoot = Util.findShadowRoot(this.element); + var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element); + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } + + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + this.setContent(); + + if (this.config.animation) { + $(tip).addClass(ClassName$6.FADE); + } + + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + var attachment = this._getAttachment(placement); + + this.addAttachmentClass(attachment); + + var container = this._getContainer(); + + $(tip).data(this.constructor.DATA_KEY, this); + + if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) { + $(tip).appendTo(container); + } + + $(this.element).trigger(this.constructor.Event.INSERTED); + this._popper = new Popper(this.element, tip, { + placement: attachment, + modifiers: { + offset: this._getOffset(), + flip: { + behavior: this.config.fallbackPlacement + }, + arrow: { + element: Selector$6.ARROW + }, + preventOverflow: { + boundariesElement: this.config.boundary + } + }, + onCreate: function onCreate(data) { + if (data.originalPlacement !== data.placement) { + _this._handlePopperPlacementChange(data); + } + }, + onUpdate: function onUpdate(data) { + return _this._handlePopperPlacementChange(data); + } + }); + $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + if ('ontouchstart' in document.documentElement) { + $(document.body).children().on('mouseover', null, $.noop); + } + + var complete = function complete() { + if (_this.config.animation) { + _this._fixTransition(); + } + + var prevHoverState = _this._hoverState; + _this._hoverState = null; + $(_this.element).trigger(_this.constructor.Event.SHOWN); + + if (prevHoverState === HoverState.OUT) { + _this._leave(null, _this); + } + }; + + if ($(this.tip).hasClass(ClassName$6.FADE)) { + var transitionDuration = Util.getTransitionDurationFromElement(this.tip); + $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + } else { + complete(); + } + } + }; + + _proto.hide = function hide(callback) { + var _this2 = this; + + var tip = this.getTipElement(); + var hideEvent = $.Event(this.constructor.Event.HIDE); + + var complete = function complete() { + if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + + _this2._cleanTipClass(); + + _this2.element.removeAttribute('aria-describedby'); + + $(_this2.element).trigger(_this2.constructor.Event.HIDDEN); + + if (_this2._popper !== null) { + _this2._popper.destroy(); + } + + if (callback) { + callback(); + } + }; + + $(this.element).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + if ('ontouchstart' in document.documentElement) { + $(document.body).children().off('mouseover', null, $.noop); + } + + this._activeTrigger[Trigger.CLICK] = false; + this._activeTrigger[Trigger.FOCUS] = false; + this._activeTrigger[Trigger.HOVER] = false; + + if ($(this.tip).hasClass(ClassName$6.FADE)) { + var transitionDuration = Util.getTransitionDurationFromElement(tip); + $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + } else { + complete(); + } + + this._hoverState = ''; + }; + + _proto.update = function update() { + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + } // Protected + ; + + _proto.isWithContent = function isWithContent() { + return Boolean(this.getTitle()); + }; + + _proto.addAttachmentClass = function addAttachmentClass(attachment) { + $(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); + }; + + _proto.getTipElement = function getTipElement() { + this.tip = this.tip || $(this.config.template)[0]; + return this.tip; + }; + + _proto.setContent = function setContent() { + var tip = this.getTipElement(); + this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle()); + $(tip).removeClass(ClassName$6.FADE + " " + ClassName$6.SHOW); + }; + + _proto.setElementContent = function setElementContent($element, content) { + if (typeof content === 'object' && (content.nodeType || content.jquery)) { + // Content is a DOM node or a jQuery + if (this.config.html) { + if (!$(content).parent().is($element)) { + $element.empty().append(content); + } + } else { + $element.text($(content).text()); + } + + return; + } + + if (this.config.html) { + if (this.config.sanitize) { + content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn); + } + + $element.html(content); + } else { + $element.text(content); + } + }; + + _proto.getTitle = function getTitle() { + var title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + } // Private + ; + + _proto._getOffset = function _getOffset() { + var _this3 = this; + + var offset = {}; + + if (typeof this.config.offset === 'function') { + offset.fn = function (data) { + data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {}); + return data; + }; + } else { + offset.offset = this.config.offset; + } + + return offset; + }; + + _proto._getContainer = function _getContainer() { + if (this.config.container === false) { + return document.body; + } + + if (Util.isElement(this.config.container)) { + return $(this.config.container); + } + + return $(document).find(this.config.container); + }; + + _proto._getAttachment = function _getAttachment(placement) { + return AttachmentMap$1[placement.toUpperCase()]; + }; + + _proto._setListeners = function _setListeners() { + var _this4 = this; + + var triggers = this.config.trigger.split(' '); + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) { + return _this4.toggle(event); + }); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN; + var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT; + $(_this4.element).on(eventIn, _this4.config.selector, function (event) { + return _this4._enter(event); + }).on(eventOut, _this4.config.selector, function (event) { + return _this4._leave(event); + }); + } + }); + $(this.element).closest('.modal').on('hide.bs.modal', function () { + if (_this4.element) { + _this4.hide(); + } + }); + + if (this.config.selector) { + this.config = _objectSpread({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + }; + + _proto._fixTitle = function _fixTitle() { + var titleType = typeof this.element.getAttribute('data-original-title'); + + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + }; + + _proto._enter = function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } + + if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) { + context._hoverState = HoverState.SHOW; + return; + } + + clearTimeout(context._timeout); + context._hoverState = HoverState.SHOW; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.SHOW) { + context.show(); + } + }, context.config.delay.show); + }; + + _proto._leave = function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + context._hoverState = HoverState.OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + }; + + _proto._isWithActiveTrigger = function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + }; + + _proto._getConfig = function _getConfig(config) { + var dataAttributes = $(this.element).data(); + Object.keys(dataAttributes).forEach(function (dataAttr) { + if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) { + delete dataAttributes[dataAttr]; + } + }); + config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {}); + + if (typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + if (typeof config.title === 'number') { + config.title = config.title.toString(); + } + + if (typeof config.content === 'number') { + config.content = config.content.toString(); + } + + Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType); + + if (config.sanitize) { + config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn); + } + + return config; + }; + + _proto._getDelegateConfig = function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; + } + } + } + + return config; + }; + + _proto._cleanTipClass = function _cleanTipClass() { + var $tip = $(this.getTipElement()); + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); + + if (tabClass !== null && tabClass.length) { + $tip.removeClass(tabClass.join('')); + } + }; + + _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) { + var popperInstance = popperData.instance; + this.tip = popperInstance.popper; + + this._cleanTipClass(); + + this.addAttachmentClass(this._getAttachment(popperData.placement)); + }; + + _proto._fixTransition = function _fixTransition() { + var tip = this.getTipElement(); + var initConfigAnimation = this.config.animation; + + if (tip.getAttribute('x-placement') !== null) { + return; + } + + $(tip).removeClass(ClassName$6.FADE); + this.config.animation = false; + this.hide(); + this.show(); + this.config.animation = initConfigAnimation; + } // Static + ; + + Tooltip._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY$6); + + var _config = typeof config === 'object' && config; + + if (!data && /dispose|hide/.test(config)) { + return; + } + + if (!data) { + data = new Tooltip(this, _config); + $(this).data(DATA_KEY$6, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + _createClass(Tooltip, null, [{ + key: "VERSION", + get: function get() { + return VERSION$6; + } + }, { + key: "Default", + get: function get() { + return Default$4; + } + }, { + key: "NAME", + get: function get() { + return NAME$6; + } + }, { + key: "DATA_KEY", + get: function get() { + return DATA_KEY$6; + } + }, { + key: "Event", + get: function get() { + return Event$6; + } + }, { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY$6; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType$4; + } + }]); + + return Tooltip; + }(); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + + $.fn[NAME$6] = Tooltip._jQueryInterface; + $.fn[NAME$6].Constructor = Tooltip; + + $.fn[NAME$6].noConflict = function () { + $.fn[NAME$6] = JQUERY_NO_CONFLICT$6; + return Tooltip._jQueryInterface; + }; + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME$7 = 'popover'; + var VERSION$7 = '4.3.1'; + var DATA_KEY$7 = 'bs.popover'; + var EVENT_KEY$7 = "." + DATA_KEY$7; + var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7]; + var CLASS_PREFIX$1 = 'bs-popover'; + var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g'); + + var Default$5 = _objectSpread({}, Tooltip.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }); + + var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, { + content: '(string|element|function)' + }); + + var ClassName$7 = { + FADE: 'fade', + SHOW: 'show' + }; + var Selector$7 = { + TITLE: '.popover-header', + CONTENT: '.popover-body' + }; + var Event$7 = { + HIDE: "hide" + EVENT_KEY$7, + HIDDEN: "hidden" + EVENT_KEY$7, + SHOW: "show" + EVENT_KEY$7, + SHOWN: "shown" + EVENT_KEY$7, + INSERTED: "inserted" + EVENT_KEY$7, + CLICK: "click" + EVENT_KEY$7, + FOCUSIN: "focusin" + EVENT_KEY$7, + FOCUSOUT: "focusout" + EVENT_KEY$7, + MOUSEENTER: "mouseenter" + EVENT_KEY$7, + MOUSELEAVE: "mouseleave" + EVENT_KEY$7 + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var Popover = + /*#__PURE__*/ + function (_Tooltip) { + _inheritsLoose(Popover, _Tooltip); + + function Popover() { + return _Tooltip.apply(this, arguments) || this; + } + + var _proto = Popover.prototype; + + // Overrides + _proto.isWithContent = function isWithContent() { + return this.getTitle() || this._getContent(); + }; + + _proto.addAttachmentClass = function addAttachmentClass(attachment) { + $(this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment); + }; + + _proto.getTipElement = function getTipElement() { + this.tip = this.tip || $(this.config.template)[0]; + return this.tip; + }; + + _proto.setContent = function setContent() { + var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events + + this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle()); + + var content = this._getContent(); + + if (typeof content === 'function') { + content = content.call(this.element); + } + + this.setElementContent($tip.find(Selector$7.CONTENT), content); + $tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW); + } // Private + ; + + _proto._getContent = function _getContent() { + return this.element.getAttribute('data-content') || this.config.content; + }; + + _proto._cleanTipClass = function _cleanTipClass() { + var $tip = $(this.getTipElement()); + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1); + + if (tabClass !== null && tabClass.length > 0) { + $tip.removeClass(tabClass.join('')); + } + } // Static + ; + + Popover._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY$7); + + var _config = typeof config === 'object' ? config : null; + + if (!data && /dispose|hide/.test(config)) { + return; + } + + if (!data) { + data = new Popover(this, _config); + $(this).data(DATA_KEY$7, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + + data[config](); + } + }); + }; + + _createClass(Popover, null, [{ + key: "VERSION", + // Getters + get: function get() { + return VERSION$7; + } + }, { + key: "Default", + get: function get() { + return Default$5; + } + }, { + key: "NAME", + get: function get() { + return NAME$7; + } + }, { + key: "DATA_KEY", + get: function get() { + return DATA_KEY$7; + } + }, { + key: "Event", + get: function get() { + return Event$7; + } + }, { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY$7; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType$5; + } + }]); + + return Popover; + }(Tooltip); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + + $.fn[NAME$7] = Popover._jQueryInterface; + $.fn[NAME$7].Constructor = Popover; + + $.fn[NAME$7].noConflict = function () { + $.fn[NAME$7] = JQUERY_NO_CONFLICT$7; + return Popover._jQueryInterface; + }; + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME$8 = 'scrollspy'; + var VERSION$8 = '4.3.1'; + var DATA_KEY$8 = 'bs.scrollspy'; + var EVENT_KEY$8 = "." + DATA_KEY$8; + var DATA_API_KEY$6 = '.data-api'; + var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8]; + var Default$6 = { + offset: 10, + method: 'auto', + target: '' + }; + var DefaultType$6 = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + var Event$8 = { + ACTIVATE: "activate" + EVENT_KEY$8, + SCROLL: "scroll" + EVENT_KEY$8, + LOAD_DATA_API: "load" + EVENT_KEY$8 + DATA_API_KEY$6 + }; + var ClassName$8 = { + DROPDOWN_ITEM: 'dropdown-item', + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active' + }; + var Selector$8 = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + NAV_LIST_GROUP: '.nav, .list-group', + NAV_LINKS: '.nav-link', + NAV_ITEMS: '.nav-item', + LIST_ITEMS: '.list-group-item', + DROPDOWN: '.dropdown', + DROPDOWN_ITEMS: '.dropdown-item', + DROPDOWN_TOGGLE: '.dropdown-toggle' + }; + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + }; + + var ScrollSpy = + /*#__PURE__*/ + function () { + function ScrollSpy(element, config) { + var _this = this; + + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = this._config.target + " " + Selector$8.NAV_LINKS + "," + (this._config.target + " " + Selector$8.LIST_ITEMS + ",") + (this._config.target + " " + Selector$8.DROPDOWN_ITEMS); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + $(this._scrollElement).on(Event$8.SCROLL, function (event) { + return _this._process(event); + }); + this.refresh(); + + this._process(); + } // Getters + + + var _proto = ScrollSpy.prototype; + + // Public + _proto.refresh = function refresh() { + var _this2 = this; + + var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION; + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + this._offsets = []; + this._targets = []; + this._scrollHeight = this._getScrollHeight(); + var targets = [].slice.call(document.querySelectorAll(this._selector)); + targets.map(function (element) { + var target; + var targetSelector = Util.getSelectorFromElement(element); + + if (targetSelector) { + target = document.querySelector(targetSelector); + } + + if (target) { + var targetBCR = target.getBoundingClientRect(); + + if (targetBCR.width || targetBCR.height) { + // TODO (fat): remove sketch reliance on jQuery position/offset + return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + } + + return null; + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this2._offsets.push(item[0]); + + _this2._targets.push(item[1]); + }); + }; + + _proto.dispose = function dispose() { + $.removeData(this._element, DATA_KEY$8); + $(this._scrollElement).off(EVENT_KEY$8); + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + } // Private + ; + + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {}); + + if (typeof config.target !== 'string') { + var id = $(config.target).attr('id'); + + if (!id) { + id = Util.getUID(NAME$8); + $(config.target).attr('id', id); + } + + config.target = "#" + id; + } + + Util.typeCheckConfig(NAME$8, config, DefaultType$6); + return config; + }; + + _proto._getScrollTop = function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + }; + + _proto._getScrollHeight = function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + }; + + _proto._getOffsetHeight = function _getOffsetHeight() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; + }; + + _proto._process = function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + + var scrollHeight = this._getScrollHeight(); + + var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + + return; + } + + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { + this._activeTarget = null; + + this._clear(); + + return; + } + + var offsetLength = this._offsets.length; + + for (var i = offsetLength; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + }; + + _proto._activate = function _activate(target) { + this._activeTarget = target; + + this._clear(); + + var queries = this._selector.split(',').map(function (selector) { + return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]"; + }); + + var $link = $([].slice.call(document.querySelectorAll(queries.join(',')))); + + if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) { + $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE); + $link.addClass(ClassName$8.ACTIVE); + } else { + // Set triggered link as active + $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active + // With both