Files
replayweb.page/ui.js
T
Ilya Kreymer d1e84b1b52 Custom SW filename (#175)
* embed: support using custom filename for service worker instead of sw.js
can be set via <replay-web-page swName='custom.js' ... > property
docs: update embedding docs to mention new option
fixes #160
2023-06-14 17:06:51 -07:00

217 lines
822 KiB
JavaScript

/*! 'ui.js is part of ReplayWeb.page (https://replayweb.page) Copyright (C) 2020-2023, Webrecorder Software. Licensed under the Affero General Public License v3.' */(()=>{var __webpack_modules__={"./assets/main.scss":
/*!**************************!*\
!*** ./assets/main.scss ***!
\**************************/(module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, "/*$wr-green: #64e986;*/\\n.input::placeholder, .textarea::placeholder, .select select::placeholder {\\n opacity: 1; }\\n\\na:focus {\\n color: #363636; }\\n\\n.file-label:focus-within .file-cta {\\n background-color: #e8e8e8;\\n color: #363636; }\\n\\n.button.is-primary:focus, .button.is-primary:hover, .button.is-primary:active {\\n background-color: #459558 !important;\\n color: white !important; }\\n\\n.replay-bar .button {\\n margin: 0 1px; }\\n\\n.replay-bar .button:focus {\\n box-shadow: none !important;\\n outline: 1px dotted #4876ff;\\n outline: -webkit-focus-ring-color auto 1px; }\\n\\n.skip-link {\\n border: 0;\\n clip: rect(1px, 1px, 1px, 1px);\\n clip-path: inset(50%);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute !important;\\n width: 1px;\\n word-wrap: normal !important;\\n /* Many screen reader and browser combinations announce broken words as they would appear visually. */ }\\n .skip-link:focus {\\n background-color: black;\\n border-radius: 3px;\\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);\\n clip: auto !important;\\n clip-path: none;\\n color: white;\\n display: block;\\n font-family: inherit;\\n font-size: 1.3em;\\n font-weight: bold;\\n height: auto;\\n left: 5px;\\n line-height: normal;\\n padding: 15px 23px 14px;\\n text-decoration: none;\\n top: 5px;\\n width: auto;\\n z-index: 100000; }\\n\\n.main-scroll {\\n flex: 1;\\n scroll-behavior: smooth;\\n overflow-y: auto;\\n max-height: 100vh;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n overflow-x: hidden; }\\n\\n/*! bulma.io v0.9.3 | MIT License | github.com/jgthms/bulma */\\n/* Bulma Utilities */\\n.button, .input, .textarea, .select select, .file-cta,\\n.file-name, .pagination-previous,\\n.pagination-next,\\n.pagination-link,\\n.pagination-ellipsis {\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n align-items: center;\\n border: 1px solid transparent;\\n border-radius: 4px;\\n box-shadow: none;\\n display: inline-flex;\\n font-size: 1rem;\\n height: 2.5em;\\n justify-content: flex-start;\\n line-height: 1.5;\\n padding-bottom: calc(0.5em - 1px);\\n padding-left: calc(0.75em - 1px);\\n padding-right: calc(0.75em - 1px);\\n padding-top: calc(0.5em - 1px);\\n position: relative;\\n vertical-align: top; }\\n .button:focus, .input:focus, .textarea:focus, .select select:focus, .file-cta:focus,\\n .file-name:focus, .pagination-previous:focus,\\n .pagination-next:focus,\\n .pagination-link:focus,\\n .pagination-ellipsis:focus, .is-focused.button, .is-focused.input, .is-focused.textarea, .select select.is-focused, .is-focused.file-cta,\\n .is-focused.file-name, .is-focused.pagination-previous,\\n .is-focused.pagination-next,\\n .is-focused.pagination-link,\\n .is-focused.pagination-ellipsis, .button:active, .input:active, .textarea:active, .select select:active, .file-cta:active,\\n .file-name:active, .pagination-previous:active,\\n .pagination-next:active,\\n .pagination-link:active,\\n .pagination-ellipsis:active, .is-active.button, .is-active.input, .is-active.textarea, .select select.is-active, .is-active.file-cta,\\n .is-active.file-name, .is-active.pagination-previous,\\n .is-active.pagination-next,\\n .is-active.pagination-link,\\n .is-active.pagination-ellipsis {\\n outline: none; }\\n .button[disabled], .input[disabled], .textarea[disabled], .select select[disabled], .file-cta[disabled],\\n .file-name[disabled], .pagination-previous[disabled],\\n .pagination-next[disabled],\\n .pagination-link[disabled],\\n .pagination-ellipsis[disabled],\\n fieldset[disabled] .button,\\n fieldset[disabled] .input,\\n fieldset[disabled] .textarea,\\n fieldset[disabled] .select select,\\n .select fieldset[disabled] select,\\n fieldset[disabled] .file-cta,\\n fieldset[disabled] .file-name,\\n fieldset[disabled] .pagination-previous,\\n fieldset[disabled] .pagination-next,\\n fieldset[disabled] .pagination-link,\\n fieldset[disabled] .pagination-ellipsis {\\n cursor: not-allowed; }\\n\\n.button, .file, .breadcrumb, .pagination-previous,\\n.pagination-next,\\n.pagination-link,\\n.pagination-ellipsis, .tabs, .is-unselectable {\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n\\n.select:not(.is-multiple):not(.is-loading)::after, .navbar-link:not(.is-arrowless)::after {\\n border: 3px solid transparent;\\n border-radius: 2px;\\n border-right: 0;\\n border-top: 0;\\n content: \\" \\";\\n display: block;\\n height: 0.625em;\\n margin-top: -0.4375em;\\n pointer-events: none;\\n position: absolute;\\n top: 50%;\\n transform: rotate(-45deg);\\n transform-origin: center;\\n width: 0.625em; }\\n\\n.box:not(:last-child), .content:not(:last-child), .notification:not(:last-child), .progress:not(:last-child), .table:not(:last-child), .table-container:not(:last-child), .title:not(:last-child),\\n.subtitle:not(:last-child), .block:not(:last-child), .breadcrumb:not(:last-child), .level:not(:last-child), .message:not(:last-child), .pagination:not(:last-child), .tabs:not(:last-child) {\\n margin-bottom: 1.5rem; }\\n\\n.delete, .modal-close {\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n background-color: rgba(10, 10, 10, 0.2);\\n border: none;\\n border-radius: 9999px;\\n cursor: pointer;\\n pointer-events: auto;\\n display: inline-block;\\n flex-grow: 0;\\n flex-shrink: 0;\\n font-size: 0;\\n height: 20px;\\n max-height: 20px;\\n max-width: 20px;\\n min-height: 20px;\\n min-width: 20px;\\n outline: none;\\n position: relative;\\n vertical-align: top;\\n width: 20px; }\\n .delete::before, .modal-close::before, .delete::after, .modal-close::after {\\n background-color: white;\\n content: \\"\\";\\n display: block;\\n left: 50%;\\n position: absolute;\\n top: 50%;\\n transform: translateX(-50%) translateY(-50%) rotate(45deg);\\n transform-origin: center center; }\\n .delete::before, .modal-close::before {\\n height: 2px;\\n width: 50%; }\\n .delete::after, .modal-close::after {\\n height: 50%;\\n width: 2px; }\\n .delete:hover, .modal-close:hover, .delete:focus, .modal-close:focus {\\n background-color: rgba(10, 10, 10, 0.3); }\\n .delete:active, .modal-close:active {\\n background-color: rgba(10, 10, 10, 0.4); }\\n .is-small.delete, .is-small.modal-close {\\n height: 16px;\\n max-height: 16px;\\n max-width: 16px;\\n min-height: 16px;\\n min-width: 16px;\\n width: 16px; }\\n .is-medium.delete, .is-medium.modal-close {\\n height: 24px;\\n max-height: 24px;\\n max-width: 24px;\\n min-height: 24px;\\n min-width: 24px;\\n width: 24px; }\\n .is-large.delete, .is-large.modal-close {\\n height: 32px;\\n max-height: 32px;\\n max-width: 32px;\\n min-height: 32px;\\n min-width: 32px;\\n width: 32px; }\\n\\n.button.is-loading::after, .loader, .select.is-loading::after, .control.is-loading::after {\\n animation: spinAround 500ms infinite linear;\\n border: 2px solid #dbdbdb;\\n border-radius: 9999px;\\n border-right-color: transparent;\\n border-top-color: transparent;\\n content: \\"\\";\\n display: block;\\n height: 1em;\\n position: relative;\\n width: 1em; }\\n\\n.image.is-square img,\\n.image.is-square .has-ratio, .image.is-1by1 img,\\n.image.is-1by1 .has-ratio, .image.is-5by4 img,\\n.image.is-5by4 .has-ratio, .image.is-4by3 img,\\n.image.is-4by3 .has-ratio, .image.is-3by2 img,\\n.image.is-3by2 .has-ratio, .image.is-5by3 img,\\n.image.is-5by3 .has-ratio, .image.is-16by9 img,\\n.image.is-16by9 .has-ratio, .image.is-2by1 img,\\n.image.is-2by1 .has-ratio, .image.is-3by1 img,\\n.image.is-3by1 .has-ratio, .image.is-4by5 img,\\n.image.is-4by5 .has-ratio, .image.is-3by4 img,\\n.image.is-3by4 .has-ratio, .image.is-2by3 img,\\n.image.is-2by3 .has-ratio, .image.is-3by5 img,\\n.image.is-3by5 .has-ratio, .image.is-9by16 img,\\n.image.is-9by16 .has-ratio, .image.is-1by2 img,\\n.image.is-1by2 .has-ratio, .image.is-1by3 img,\\n.image.is-1by3 .has-ratio, .modal, .modal-background, .is-overlay, .hero-video {\\n bottom: 0;\\n left: 0;\\n position: absolute;\\n right: 0;\\n top: 0; }\\n\\n.navbar-burger {\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n appearance: none;\\n background: none;\\n border: none;\\n color: currentColor;\\n font-family: inherit;\\n font-size: 1em;\\n margin: 0;\\n padding: 0; }\\n\\n/* Bulma Base */\\n/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */\\nhtml,\\nbody,\\np,\\nol,\\nul,\\nli,\\ndl,\\ndt,\\ndd,\\nblockquote,\\nfigure,\\nfieldset,\\nlegend,\\ntextarea,\\npre,\\niframe,\\nhr,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n margin: 0;\\n padding: 0; }\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n font-size: 100%;\\n font-weight: normal; }\\n\\nul {\\n list-style: none; }\\n\\nbutton,\\ninput,\\nselect,\\ntextarea {\\n margin: 0; }\\n\\nhtml {\\n box-sizing: border-box; }\\n\\n*, *::before, *::after {\\n box-sizing: inherit; }\\n\\nimg,\\nvideo {\\n height: auto;\\n max-width: 100%; }\\n\\niframe {\\n border: 0; }\\n\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0; }\\n\\ntd,\\nth {\\n padding: 0; }\\n td:not([align]),\\n th:not([align]) {\\n text-align: inherit; }\\n\\nhtml {\\n background-color: white;\\n font-size: 16px;\\n -moz-osx-font-smoothing: grayscale;\\n -webkit-font-smoothing: antialiased;\\n min-width: 300px;\\n overflow-x: hidden;\\n overflow-y: scroll;\\n text-rendering: optimizeLegibility;\\n text-size-adjust: 100%; }\\n\\narticle,\\naside,\\nfigure,\\nfooter,\\nheader,\\nhgroup,\\nsection {\\n display: block; }\\n\\nbody,\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n font-family: BlinkMacSystemFont, -apple-system, \\"Segoe UI\\", \\"Roboto\\", \\"Oxygen\\", \\"Ubuntu\\", \\"Cantarell\\", \\"Fira Sans\\", \\"Droid Sans\\", \\"Helvetica Neue\\", \\"Helvetica\\", \\"Arial\\", sans-serif; }\\n\\ncode,\\npre {\\n -moz-osx-font-smoothing: auto;\\n -webkit-font-smoothing: auto;\\n font-family: monospace; }\\n\\nbody {\\n color: #4a4a4a;\\n font-size: 1em;\\n font-weight: 400;\\n line-height: 1.5; }\\n\\na {\\n color: #4876ff;\\n cursor: pointer;\\n text-decoration: none; }\\n a strong {\\n color: currentColor; }\\n a:hover {\\n color: #363636; }\\n\\ncode {\\n background-color: whitesmoke;\\n color: #da1039;\\n font-size: 0.875em;\\n font-weight: normal;\\n padding: 0.25em 0.5em 0.25em; }\\n\\nhr {\\n background-color: whitesmoke;\\n border: none;\\n display: block;\\n height: 2px;\\n margin: 1.5rem 0; }\\n\\nimg {\\n height: auto;\\n max-width: 100%; }\\n\\ninput[type=\\"checkbox\\"],\\ninput[type=\\"radio\\"] {\\n vertical-align: baseline; }\\n\\nsmall {\\n font-size: 0.875em; }\\n\\nspan {\\n font-style: inherit;\\n font-weight: inherit; }\\n\\nstrong {\\n color: #363636;\\n font-weight: 700; }\\n\\nfieldset {\\n border: none; }\\n\\npre {\\n -webkit-overflow-scrolling: touch;\\n background-color: whitesmoke;\\n color: #4a4a4a;\\n font-size: 0.875em;\\n overflow-x: auto;\\n padding: 1.25rem 1.5rem;\\n white-space: pre;\\n word-wrap: normal; }\\n pre code {\\n background-color: transparent;\\n color: currentColor;\\n font-size: 1em;\\n padding: 0; }\\n\\ntable td,\\ntable th {\\n vertical-align: top; }\\n table td:not([align]),\\n table th:not([align]) {\\n text-align: inherit; }\\n\\ntable th {\\n color: #363636; }\\n\\n@keyframes spinAround {\\n from {\\n transform: rotate(0deg); }\\n to {\\n transform: rotate(359deg); } }\\n\\n/* Bulma Elements */\\n.box {\\n background-color: white;\\n border-radius: 6px;\\n box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02);\\n color: #4a4a4a;\\n display: block;\\n padding: 1.25rem; }\\n\\na.box:hover, a.box:focus {\\n box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0 0 1px #4876ff; }\\n\\na.box:active {\\n box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #4876ff; }\\n\\n.button {\\n background-color: white;\\n border-color: #dbdbdb;\\n border-width: 1px;\\n color: #363636;\\n cursor: pointer;\\n justify-content: center;\\n padding-bottom: calc(0.5em - 1px);\\n padding-left: 1em;\\n padding-right: 1em;\\n padding-top: calc(0.5em - 1px);\\n text-align: center;\\n white-space: nowrap; }\\n .button strong {\\n color: inherit; }\\n .button .icon, .button .icon.is-small, .button .icon.is-medium, .button .icon.is-large {\\n height: 1.5em;\\n width: 1.5em; }\\n .button .icon:first-child:not(:last-child) {\\n margin-left: calc(-0.5em - 1px);\\n margin-right: 0.25em; }\\n .button .icon:last-child:not(:first-child) {\\n margin-left: 0.25em;\\n margin-right: calc(-0.5em - 1px); }\\n .button .icon:first-child:last-child {\\n margin-left: calc(-0.5em - 1px);\\n margin-right: calc(-0.5em - 1px); }\\n .button:hover, .button.is-hovered {\\n border-color: #b5b5b5;\\n color: #363636; }\\n .button:focus, .button.is-focused {\\n border-color: #485fc7;\\n color: #363636; }\\n .button:focus:not(:active), .button.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(72, 118, 255, 0.25); }\\n .button:active, .button.is-active {\\n border-color: #4a4a4a;\\n color: #363636; }\\n .button.is-text {\\n background-color: transparent;\\n border-color: transparent;\\n color: #4a4a4a;\\n text-decoration: underline; }\\n .button.is-text:hover, .button.is-text.is-hovered, .button.is-text:focus, .button.is-text.is-focused {\\n background-color: whitesmoke;\\n color: #363636; }\\n .button.is-text:active, .button.is-text.is-active {\\n background-color: #e8e8e8;\\n color: #363636; }\\n .button.is-text[disabled],\\n fieldset[disabled] .button.is-text {\\n background-color: transparent;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-ghost {\\n background: none;\\n border-color: transparent;\\n color: #4876ff;\\n text-decoration: none; }\\n .button.is-ghost:hover, .button.is-ghost.is-hovered {\\n color: #4876ff;\\n text-decoration: underline; }\\n .button.is-white {\\n background-color: white;\\n border-color: transparent;\\n color: #0a0a0a; }\\n .button.is-white:hover, .button.is-white.is-hovered {\\n background-color: #f9f9f9;\\n border-color: transparent;\\n color: #0a0a0a; }\\n .button.is-white:focus, .button.is-white.is-focused {\\n border-color: transparent;\\n color: #0a0a0a; }\\n .button.is-white:focus:not(:active), .button.is-white.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }\\n .button.is-white:active, .button.is-white.is-active {\\n background-color: #f2f2f2;\\n border-color: transparent;\\n color: #0a0a0a; }\\n .button.is-white[disabled],\\n fieldset[disabled] .button.is-white {\\n background-color: white;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-white.is-inverted {\\n background-color: #0a0a0a;\\n color: white; }\\n .button.is-white.is-inverted:hover, .button.is-white.is-inverted.is-hovered {\\n background-color: black; }\\n .button.is-white.is-inverted[disabled],\\n fieldset[disabled] .button.is-white.is-inverted {\\n background-color: #0a0a0a;\\n border-color: transparent;\\n box-shadow: none;\\n color: white; }\\n .button.is-white.is-loading::after {\\n border-color: transparent transparent #0a0a0a #0a0a0a !important; }\\n .button.is-white.is-outlined {\\n background-color: transparent;\\n border-color: white;\\n color: white; }\\n .button.is-white.is-outlined:hover, .button.is-white.is-outlined.is-hovered, .button.is-white.is-outlined:focus, .button.is-white.is-outlined.is-focused {\\n background-color: white;\\n border-color: white;\\n color: #0a0a0a; }\\n .button.is-white.is-outlined.is-loading::after {\\n border-color: transparent transparent white white !important; }\\n .button.is-white.is-outlined.is-loading:hover::after, .button.is-white.is-outlined.is-loading.is-hovered::after, .button.is-white.is-outlined.is-loading:focus::after, .button.is-white.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #0a0a0a #0a0a0a !important; }\\n .button.is-white.is-outlined[disabled],\\n fieldset[disabled] .button.is-white.is-outlined {\\n background-color: transparent;\\n border-color: white;\\n box-shadow: none;\\n color: white; }\\n .button.is-white.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #0a0a0a;\\n color: #0a0a0a; }\\n .button.is-white.is-inverted.is-outlined:hover, .button.is-white.is-inverted.is-outlined.is-hovered, .button.is-white.is-inverted.is-outlined:focus, .button.is-white.is-inverted.is-outlined.is-focused {\\n background-color: #0a0a0a;\\n color: white; }\\n .button.is-white.is-inverted.is-outlined.is-loading:hover::after, .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-white.is-inverted.is-outlined.is-loading:focus::after, .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent white white !important; }\\n .button.is-white.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-white.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #0a0a0a;\\n box-shadow: none;\\n color: #0a0a0a; }\\n .button.is-black {\\n background-color: #0a0a0a;\\n border-color: transparent;\\n color: white; }\\n .button.is-black:hover, .button.is-black.is-hovered {\\n background-color: #040404;\\n border-color: transparent;\\n color: white; }\\n .button.is-black:focus, .button.is-black.is-focused {\\n border-color: transparent;\\n color: white; }\\n .button.is-black:focus:not(:active), .button.is-black.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }\\n .button.is-black:active, .button.is-black.is-active {\\n background-color: black;\\n border-color: transparent;\\n color: white; }\\n .button.is-black[disabled],\\n fieldset[disabled] .button.is-black {\\n background-color: #0a0a0a;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-black.is-inverted {\\n background-color: white;\\n color: #0a0a0a; }\\n .button.is-black.is-inverted:hover, .button.is-black.is-inverted.is-hovered {\\n background-color: #f2f2f2; }\\n .button.is-black.is-inverted[disabled],\\n fieldset[disabled] .button.is-black.is-inverted {\\n background-color: white;\\n border-color: transparent;\\n box-shadow: none;\\n color: #0a0a0a; }\\n .button.is-black.is-loading::after {\\n border-color: transparent transparent white white !important; }\\n .button.is-black.is-outlined {\\n background-color: transparent;\\n border-color: #0a0a0a;\\n color: #0a0a0a; }\\n .button.is-black.is-outlined:hover, .button.is-black.is-outlined.is-hovered, .button.is-black.is-outlined:focus, .button.is-black.is-outlined.is-focused {\\n background-color: #0a0a0a;\\n border-color: #0a0a0a;\\n color: white; }\\n .button.is-black.is-outlined.is-loading::after {\\n border-color: transparent transparent #0a0a0a #0a0a0a !important; }\\n .button.is-black.is-outlined.is-loading:hover::after, .button.is-black.is-outlined.is-loading.is-hovered::after, .button.is-black.is-outlined.is-loading:focus::after, .button.is-black.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent white white !important; }\\n .button.is-black.is-outlined[disabled],\\n fieldset[disabled] .button.is-black.is-outlined {\\n background-color: transparent;\\n border-color: #0a0a0a;\\n box-shadow: none;\\n color: #0a0a0a; }\\n .button.is-black.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: white;\\n color: white; }\\n .button.is-black.is-inverted.is-outlined:hover, .button.is-black.is-inverted.is-outlined.is-hovered, .button.is-black.is-inverted.is-outlined:focus, .button.is-black.is-inverted.is-outlined.is-focused {\\n background-color: white;\\n color: #0a0a0a; }\\n .button.is-black.is-inverted.is-outlined.is-loading:hover::after, .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-black.is-inverted.is-outlined.is-loading:focus::after, .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #0a0a0a #0a0a0a !important; }\\n .button.is-black.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-black.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: white;\\n box-shadow: none;\\n color: white; }\\n .button.is-light {\\n background-color: #d2f9d6;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-light:hover, .button.is-light.is-hovered {\\n background-color: #c7f8cc;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-light:focus, .button.is-light.is-focused {\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-light:focus:not(:active), .button.is-light.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(210, 249, 214, 0.25); }\\n .button.is-light:active, .button.is-light.is-active {\\n background-color: #bcf6c2;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-light[disabled],\\n fieldset[disabled] .button.is-light {\\n background-color: #d2f9d6;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-light.is-inverted {\\n background-color: rgba(0, 0, 0, 0.7);\\n color: #d2f9d6; }\\n .button.is-light.is-inverted:hover, .button.is-light.is-inverted.is-hovered {\\n background-color: rgba(0, 0, 0, 0.7); }\\n .button.is-light.is-inverted[disabled],\\n fieldset[disabled] .button.is-light.is-inverted {\\n background-color: rgba(0, 0, 0, 0.7);\\n border-color: transparent;\\n box-shadow: none;\\n color: #d2f9d6; }\\n .button.is-light.is-loading::after {\\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\\n .button.is-light.is-outlined {\\n background-color: transparent;\\n border-color: #d2f9d6;\\n color: #d2f9d6; }\\n .button.is-light.is-outlined:hover, .button.is-light.is-outlined.is-hovered, .button.is-light.is-outlined:focus, .button.is-light.is-outlined.is-focused {\\n background-color: #d2f9d6;\\n border-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-light.is-outlined.is-loading::after {\\n border-color: transparent transparent #d2f9d6 #d2f9d6 !important; }\\n .button.is-light.is-outlined.is-loading:hover::after, .button.is-light.is-outlined.is-loading.is-hovered::after, .button.is-light.is-outlined.is-loading:focus::after, .button.is-light.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\\n .button.is-light.is-outlined[disabled],\\n fieldset[disabled] .button.is-light.is-outlined {\\n background-color: transparent;\\n border-color: #d2f9d6;\\n box-shadow: none;\\n color: #d2f9d6; }\\n .button.is-light.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: rgba(0, 0, 0, 0.7);\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-light.is-inverted.is-outlined:hover, .button.is-light.is-inverted.is-outlined.is-hovered, .button.is-light.is-inverted.is-outlined:focus, .button.is-light.is-inverted.is-outlined.is-focused {\\n background-color: rgba(0, 0, 0, 0.7);\\n color: #d2f9d6; }\\n .button.is-light.is-inverted.is-outlined.is-loading:hover::after, .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-light.is-inverted.is-outlined.is-loading:focus::after, .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #d2f9d6 #d2f9d6 !important; }\\n .button.is-light.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-light.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: rgba(0, 0, 0, 0.7);\\n box-shadow: none;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-dark {\\n background-color: #459558;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-dark:hover, .button.is-dark.is-hovered {\\n background-color: #418c53;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-dark:focus, .button.is-dark.is-focused {\\n border-color: transparent;\\n color: #fff; }\\n .button.is-dark:focus:not(:active), .button.is-dark.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(69, 149, 88, 0.25); }\\n .button.is-dark:active, .button.is-dark.is-active {\\n background-color: #3d844e;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-dark[disabled],\\n fieldset[disabled] .button.is-dark {\\n background-color: #459558;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-dark.is-inverted {\\n background-color: #fff;\\n color: #459558; }\\n .button.is-dark.is-inverted:hover, .button.is-dark.is-inverted.is-hovered {\\n background-color: #f2f2f2; }\\n .button.is-dark.is-inverted[disabled],\\n fieldset[disabled] .button.is-dark.is-inverted {\\n background-color: #fff;\\n border-color: transparent;\\n box-shadow: none;\\n color: #459558; }\\n .button.is-dark.is-loading::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-dark.is-outlined {\\n background-color: transparent;\\n border-color: #459558;\\n color: #459558; }\\n .button.is-dark.is-outlined:hover, .button.is-dark.is-outlined.is-hovered, .button.is-dark.is-outlined:focus, .button.is-dark.is-outlined.is-focused {\\n background-color: #459558;\\n border-color: #459558;\\n color: #fff; }\\n .button.is-dark.is-outlined.is-loading::after {\\n border-color: transparent transparent #459558 #459558 !important; }\\n .button.is-dark.is-outlined.is-loading:hover::after, .button.is-dark.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-outlined.is-loading:focus::after, .button.is-dark.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-dark.is-outlined[disabled],\\n fieldset[disabled] .button.is-dark.is-outlined {\\n background-color: transparent;\\n border-color: #459558;\\n box-shadow: none;\\n color: #459558; }\\n .button.is-dark.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n color: #fff; }\\n .button.is-dark.is-inverted.is-outlined:hover, .button.is-dark.is-inverted.is-outlined.is-hovered, .button.is-dark.is-inverted.is-outlined:focus, .button.is-dark.is-inverted.is-outlined.is-focused {\\n background-color: #fff;\\n color: #459558; }\\n .button.is-dark.is-inverted.is-outlined.is-loading:hover::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #459558 #459558 !important; }\\n .button.is-dark.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-dark.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n box-shadow: none;\\n color: #fff; }\\n .button.is-primary {\\n background-color: #55be6f;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-primary:hover, .button.is-primary.is-hovered {\\n background-color: #4cba67;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-primary:focus, .button.is-primary.is-focused {\\n border-color: transparent;\\n color: #fff; }\\n .button.is-primary:focus:not(:active), .button.is-primary.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(85, 190, 111, 0.25); }\\n .button.is-primary:active, .button.is-primary.is-active {\\n background-color: #45b461;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-primary[disabled],\\n fieldset[disabled] .button.is-primary {\\n background-color: #55be6f;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-primary.is-inverted {\\n background-color: #fff;\\n color: #55be6f; }\\n .button.is-primary.is-inverted:hover, .button.is-primary.is-inverted.is-hovered {\\n background-color: #f2f2f2; }\\n .button.is-primary.is-inverted[disabled],\\n fieldset[disabled] .button.is-primary.is-inverted {\\n background-color: #fff;\\n border-color: transparent;\\n box-shadow: none;\\n color: #55be6f; }\\n .button.is-primary.is-loading::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-primary.is-outlined {\\n background-color: transparent;\\n border-color: #55be6f;\\n color: #55be6f; }\\n .button.is-primary.is-outlined:hover, .button.is-primary.is-outlined.is-hovered, .button.is-primary.is-outlined:focus, .button.is-primary.is-outlined.is-focused {\\n background-color: #55be6f;\\n border-color: #55be6f;\\n color: #fff; }\\n .button.is-primary.is-outlined.is-loading::after {\\n border-color: transparent transparent #55be6f #55be6f !important; }\\n .button.is-primary.is-outlined.is-loading:hover::after, .button.is-primary.is-outlined.is-loading.is-hovered::after, .button.is-primary.is-outlined.is-loading:focus::after, .button.is-primary.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-primary.is-outlined[disabled],\\n fieldset[disabled] .button.is-primary.is-outlined {\\n background-color: transparent;\\n border-color: #55be6f;\\n box-shadow: none;\\n color: #55be6f; }\\n .button.is-primary.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n color: #fff; }\\n .button.is-primary.is-inverted.is-outlined:hover, .button.is-primary.is-inverted.is-outlined.is-hovered, .button.is-primary.is-inverted.is-outlined:focus, .button.is-primary.is-inverted.is-outlined.is-focused {\\n background-color: #fff;\\n color: #55be6f; }\\n .button.is-primary.is-inverted.is-outlined.is-loading:hover::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #55be6f #55be6f !important; }\\n .button.is-primary.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-primary.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n box-shadow: none;\\n color: #fff; }\\n .button.is-primary.is-light {\\n background-color: #f0f9f2;\\n color: #2f7a41; }\\n .button.is-primary.is-light:hover, .button.is-primary.is-light.is-hovered {\\n background-color: #e7f6eb;\\n border-color: transparent;\\n color: #2f7a41; }\\n .button.is-primary.is-light:active, .button.is-primary.is-light.is-active {\\n background-color: #def2e3;\\n border-color: transparent;\\n color: #2f7a41; }\\n .button.is-link {\\n background-color: #4876ff;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-link:hover, .button.is-link.is-hovered {\\n background-color: #3b6cff;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-link:focus, .button.is-link.is-focused {\\n border-color: transparent;\\n color: #fff; }\\n .button.is-link:focus:not(:active), .button.is-link.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(72, 118, 255, 0.25); }\\n .button.is-link:active, .button.is-link.is-active {\\n background-color: #2f63ff;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-link[disabled],\\n fieldset[disabled] .button.is-link {\\n background-color: #4876ff;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-link.is-inverted {\\n background-color: #fff;\\n color: #4876ff; }\\n .button.is-link.is-inverted:hover, .button.is-link.is-inverted.is-hovered {\\n background-color: #f2f2f2; }\\n .button.is-link.is-inverted[disabled],\\n fieldset[disabled] .button.is-link.is-inverted {\\n background-color: #fff;\\n border-color: transparent;\\n box-shadow: none;\\n color: #4876ff; }\\n .button.is-link.is-loading::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-link.is-outlined {\\n background-color: transparent;\\n border-color: #4876ff;\\n color: #4876ff; }\\n .button.is-link.is-outlined:hover, .button.is-link.is-outlined.is-hovered, .button.is-link.is-outlined:focus, .button.is-link.is-outlined.is-focused {\\n background-color: #4876ff;\\n border-color: #4876ff;\\n color: #fff; }\\n .button.is-link.is-outlined.is-loading::after {\\n border-color: transparent transparent #4876ff #4876ff !important; }\\n .button.is-link.is-outlined.is-loading:hover::after, .button.is-link.is-outlined.is-loading.is-hovered::after, .button.is-link.is-outlined.is-loading:focus::after, .button.is-link.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-link.is-outlined[disabled],\\n fieldset[disabled] .button.is-link.is-outlined {\\n background-color: transparent;\\n border-color: #4876ff;\\n box-shadow: none;\\n color: #4876ff; }\\n .button.is-link.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n color: #fff; }\\n .button.is-link.is-inverted.is-outlined:hover, .button.is-link.is-inverted.is-outlined.is-hovered, .button.is-link.is-inverted.is-outlined:focus, .button.is-link.is-inverted.is-outlined.is-focused {\\n background-color: #fff;\\n color: #4876ff; }\\n .button.is-link.is-inverted.is-outlined.is-loading:hover::after, .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-link.is-inverted.is-outlined.is-loading:focus::after, .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #4876ff #4876ff !important; }\\n .button.is-link.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-link.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n box-shadow: none;\\n color: #fff; }\\n .button.is-link.is-light {\\n background-color: #ebf0ff;\\n color: #0037db; }\\n .button.is-link.is-light:hover, .button.is-link.is-light.is-hovered {\\n background-color: #dee6ff;\\n border-color: transparent;\\n color: #0037db; }\\n .button.is-link.is-light:active, .button.is-link.is-light.is-active {\\n background-color: #d1ddff;\\n border-color: transparent;\\n color: #0037db; }\\n .button.is-info {\\n background-color: #f0f8ff;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info:hover, .button.is-info.is-hovered {\\n background-color: #e3f2ff;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info:focus, .button.is-info.is-focused {\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info:focus:not(:active), .button.is-info.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(240, 248, 255, 0.25); }\\n .button.is-info:active, .button.is-info.is-active {\\n background-color: #d7ecff;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info[disabled],\\n fieldset[disabled] .button.is-info {\\n background-color: #f0f8ff;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-info.is-inverted {\\n background-color: rgba(0, 0, 0, 0.7);\\n color: #f0f8ff; }\\n .button.is-info.is-inverted:hover, .button.is-info.is-inverted.is-hovered {\\n background-color: rgba(0, 0, 0, 0.7); }\\n .button.is-info.is-inverted[disabled],\\n fieldset[disabled] .button.is-info.is-inverted {\\n background-color: rgba(0, 0, 0, 0.7);\\n border-color: transparent;\\n box-shadow: none;\\n color: #f0f8ff; }\\n .button.is-info.is-loading::after {\\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\\n .button.is-info.is-outlined {\\n background-color: transparent;\\n border-color: #f0f8ff;\\n color: #f0f8ff; }\\n .button.is-info.is-outlined:hover, .button.is-info.is-outlined.is-hovered, .button.is-info.is-outlined:focus, .button.is-info.is-outlined.is-focused {\\n background-color: #f0f8ff;\\n border-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info.is-outlined.is-loading::after {\\n border-color: transparent transparent #f0f8ff #f0f8ff !important; }\\n .button.is-info.is-outlined.is-loading:hover::after, .button.is-info.is-outlined.is-loading.is-hovered::after, .button.is-info.is-outlined.is-loading:focus::after, .button.is-info.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\\n .button.is-info.is-outlined[disabled],\\n fieldset[disabled] .button.is-info.is-outlined {\\n background-color: transparent;\\n border-color: #f0f8ff;\\n box-shadow: none;\\n color: #f0f8ff; }\\n .button.is-info.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: rgba(0, 0, 0, 0.7);\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info.is-inverted.is-outlined:hover, .button.is-info.is-inverted.is-outlined.is-hovered, .button.is-info.is-inverted.is-outlined:focus, .button.is-info.is-inverted.is-outlined.is-focused {\\n background-color: rgba(0, 0, 0, 0.7);\\n color: #f0f8ff; }\\n .button.is-info.is-inverted.is-outlined.is-loading:hover::after, .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-info.is-inverted.is-outlined.is-loading:focus::after, .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #f0f8ff #f0f8ff !important; }\\n .button.is-info.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-info.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: rgba(0, 0, 0, 0.7);\\n box-shadow: none;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-info.is-light {\\n background-color: aliceblue;\\n color: #004f94; }\\n .button.is-info.is-light:hover, .button.is-info.is-light.is-hovered {\\n background-color: #e3f2ff;\\n border-color: transparent;\\n color: #004f94; }\\n .button.is-info.is-light:active, .button.is-info.is-light.is-active {\\n background-color: #d7ecff;\\n border-color: transparent;\\n color: #004f94; }\\n .button.is-success {\\n background-color: #48c78e;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-success:hover, .button.is-success.is-hovered {\\n background-color: #3ec487;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-success:focus, .button.is-success.is-focused {\\n border-color: transparent;\\n color: #fff; }\\n .button.is-success:focus:not(:active), .button.is-success.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(72, 199, 142, 0.25); }\\n .button.is-success:active, .button.is-success.is-active {\\n background-color: #3abb81;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-success[disabled],\\n fieldset[disabled] .button.is-success {\\n background-color: #48c78e;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-success.is-inverted {\\n background-color: #fff;\\n color: #48c78e; }\\n .button.is-success.is-inverted:hover, .button.is-success.is-inverted.is-hovered {\\n background-color: #f2f2f2; }\\n .button.is-success.is-inverted[disabled],\\n fieldset[disabled] .button.is-success.is-inverted {\\n background-color: #fff;\\n border-color: transparent;\\n box-shadow: none;\\n color: #48c78e; }\\n .button.is-success.is-loading::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-success.is-outlined {\\n background-color: transparent;\\n border-color: #48c78e;\\n color: #48c78e; }\\n .button.is-success.is-outlined:hover, .button.is-success.is-outlined.is-hovered, .button.is-success.is-outlined:focus, .button.is-success.is-outlined.is-focused {\\n background-color: #48c78e;\\n border-color: #48c78e;\\n color: #fff; }\\n .button.is-success.is-outlined.is-loading::after {\\n border-color: transparent transparent #48c78e #48c78e !important; }\\n .button.is-success.is-outlined.is-loading:hover::after, .button.is-success.is-outlined.is-loading.is-hovered::after, .button.is-success.is-outlined.is-loading:focus::after, .button.is-success.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-success.is-outlined[disabled],\\n fieldset[disabled] .button.is-success.is-outlined {\\n background-color: transparent;\\n border-color: #48c78e;\\n box-shadow: none;\\n color: #48c78e; }\\n .button.is-success.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n color: #fff; }\\n .button.is-success.is-inverted.is-outlined:hover, .button.is-success.is-inverted.is-outlined.is-hovered, .button.is-success.is-inverted.is-outlined:focus, .button.is-success.is-inverted.is-outlined.is-focused {\\n background-color: #fff;\\n color: #48c78e; }\\n .button.is-success.is-inverted.is-outlined.is-loading:hover::after, .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-success.is-inverted.is-outlined.is-loading:focus::after, .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #48c78e #48c78e !important; }\\n .button.is-success.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-success.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n box-shadow: none;\\n color: #fff; }\\n .button.is-success.is-light {\\n background-color: #effaf5;\\n color: #257953; }\\n .button.is-success.is-light:hover, .button.is-success.is-light.is-hovered {\\n background-color: #e6f7ef;\\n border-color: transparent;\\n color: #257953; }\\n .button.is-success.is-light:active, .button.is-success.is-light.is-active {\\n background-color: #dcf4e9;\\n border-color: transparent;\\n color: #257953; }\\n .button.is-warning {\\n background-color: #ffd975;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning:hover, .button.is-warning.is-hovered {\\n background-color: #ffd568;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning:focus, .button.is-warning.is-focused {\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning:focus:not(:active), .button.is-warning.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(255, 217, 117, 0.25); }\\n .button.is-warning:active, .button.is-warning.is-active {\\n background-color: #ffd25c;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning[disabled],\\n fieldset[disabled] .button.is-warning {\\n background-color: #ffd975;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-warning.is-inverted {\\n background-color: rgba(0, 0, 0, 0.7);\\n color: #ffd975; }\\n .button.is-warning.is-inverted:hover, .button.is-warning.is-inverted.is-hovered {\\n background-color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning.is-inverted[disabled],\\n fieldset[disabled] .button.is-warning.is-inverted {\\n background-color: rgba(0, 0, 0, 0.7);\\n border-color: transparent;\\n box-shadow: none;\\n color: #ffd975; }\\n .button.is-warning.is-loading::after {\\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\\n .button.is-warning.is-outlined {\\n background-color: transparent;\\n border-color: #ffd975;\\n color: #ffd975; }\\n .button.is-warning.is-outlined:hover, .button.is-warning.is-outlined.is-hovered, .button.is-warning.is-outlined:focus, .button.is-warning.is-outlined.is-focused {\\n background-color: #ffd975;\\n border-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning.is-outlined.is-loading::after {\\n border-color: transparent transparent #ffd975 #ffd975 !important; }\\n .button.is-warning.is-outlined.is-loading:hover::after, .button.is-warning.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-outlined.is-loading:focus::after, .button.is-warning.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\\n .button.is-warning.is-outlined[disabled],\\n fieldset[disabled] .button.is-warning.is-outlined {\\n background-color: transparent;\\n border-color: #ffd975;\\n box-shadow: none;\\n color: #ffd975; }\\n .button.is-warning.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: rgba(0, 0, 0, 0.7);\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning.is-inverted.is-outlined:hover, .button.is-warning.is-inverted.is-outlined.is-hovered, .button.is-warning.is-inverted.is-outlined:focus, .button.is-warning.is-inverted.is-outlined.is-focused {\\n background-color: rgba(0, 0, 0, 0.7);\\n color: #ffd975; }\\n .button.is-warning.is-inverted.is-outlined.is-loading:hover::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #ffd975 #ffd975 !important; }\\n .button.is-warning.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-warning.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: rgba(0, 0, 0, 0.7);\\n box-shadow: none;\\n color: rgba(0, 0, 0, 0.7); }\\n .button.is-warning.is-light {\\n background-color: #fff9eb;\\n color: #946b00; }\\n .button.is-warning.is-light:hover, .button.is-warning.is-light.is-hovered {\\n background-color: #fff6de;\\n border-color: transparent;\\n color: #946b00; }\\n .button.is-warning.is-light:active, .button.is-warning.is-light.is-active {\\n background-color: #fff2d1;\\n border-color: transparent;\\n color: #946b00; }\\n .button.is-danger {\\n background-color: #f14668;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-danger:hover, .button.is-danger.is-hovered {\\n background-color: #f03a5f;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-danger:focus, .button.is-danger.is-focused {\\n border-color: transparent;\\n color: #fff; }\\n .button.is-danger:focus:not(:active), .button.is-danger.is-focused:not(:active) {\\n box-shadow: 0 0 0 0.125em rgba(241, 70, 104, 0.25); }\\n .button.is-danger:active, .button.is-danger.is-active {\\n background-color: #ef2e55;\\n border-color: transparent;\\n color: #fff; }\\n .button.is-danger[disabled],\\n fieldset[disabled] .button.is-danger {\\n background-color: #f14668;\\n border-color: transparent;\\n box-shadow: none; }\\n .button.is-danger.is-inverted {\\n background-color: #fff;\\n color: #f14668; }\\n .button.is-danger.is-inverted:hover, .button.is-danger.is-inverted.is-hovered {\\n background-color: #f2f2f2; }\\n .button.is-danger.is-inverted[disabled],\\n fieldset[disabled] .button.is-danger.is-inverted {\\n background-color: #fff;\\n border-color: transparent;\\n box-shadow: none;\\n color: #f14668; }\\n .button.is-danger.is-loading::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-danger.is-outlined {\\n background-color: transparent;\\n border-color: #f14668;\\n color: #f14668; }\\n .button.is-danger.is-outlined:hover, .button.is-danger.is-outlined.is-hovered, .button.is-danger.is-outlined:focus, .button.is-danger.is-outlined.is-focused {\\n background-color: #f14668;\\n border-color: #f14668;\\n color: #fff; }\\n .button.is-danger.is-outlined.is-loading::after {\\n border-color: transparent transparent #f14668 #f14668 !important; }\\n .button.is-danger.is-outlined.is-loading:hover::after, .button.is-danger.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-outlined.is-loading:focus::after, .button.is-danger.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #fff #fff !important; }\\n .button.is-danger.is-outlined[disabled],\\n fieldset[disabled] .button.is-danger.is-outlined {\\n background-color: transparent;\\n border-color: #f14668;\\n box-shadow: none;\\n color: #f14668; }\\n .button.is-danger.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n color: #fff; }\\n .button.is-danger.is-inverted.is-outlined:hover, .button.is-danger.is-inverted.is-outlined.is-hovered, .button.is-danger.is-inverted.is-outlined:focus, .button.is-danger.is-inverted.is-outlined.is-focused {\\n background-color: #fff;\\n color: #f14668; }\\n .button.is-danger.is-inverted.is-outlined.is-loading:hover::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after {\\n border-color: transparent transparent #f14668 #f14668 !important; }\\n .button.is-danger.is-inverted.is-outlined[disabled],\\n fieldset[disabled] .button.is-danger.is-inverted.is-outlined {\\n background-color: transparent;\\n border-color: #fff;\\n box-shadow: none;\\n color: #fff; }\\n .button.is-danger.is-light {\\n background-color: #feecf0;\\n color: #cc0f35; }\\n .button.is-danger.is-light:hover, .button.is-danger.is-light.is-hovered {\\n background-color: #fde0e6;\\n border-color: transparent;\\n color: #cc0f35; }\\n .button.is-danger.is-light:active, .button.is-danger.is-light.is-active {\\n background-color: #fcd4dc;\\n border-color: transparent;\\n color: #cc0f35; }\\n .button.is-small {\\n font-size: 0.75rem; }\\n .button.is-small:not(.is-rounded) {\\n border-radius: 2px; }\\n .button.is-normal {\\n font-size: 1rem; }\\n .button.is-medium {\\n font-size: 1.25rem; }\\n .button.is-large {\\n font-size: 1.5rem; }\\n .button[disabled],\\n fieldset[disabled] .button {\\n background-color: white;\\n border-color: #dbdbdb;\\n box-shadow: none;\\n opacity: 0.5; }\\n .button.is-fullwidth {\\n display: flex;\\n width: 100%; }\\n .button.is-loading {\\n color: transparent !important;\\n pointer-events: none; }\\n .button.is-loading::after {\\n position: absolute;\\n left: calc(50% - (1em * 0.5));\\n top: calc(50% - (1em * 0.5));\\n position: absolute !important; }\\n .button.is-static {\\n background-color: whitesmoke;\\n border-color: #dbdbdb;\\n color: #7a7a7a;\\n box-shadow: none;\\n pointer-events: none; }\\n .button.is-rounded {\\n border-radius: 9999px;\\n padding-left: calc(1em + 0.25em);\\n padding-right: calc(1em + 0.25em); }\\n\\n.buttons {\\n align-items: center;\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-start; }\\n .buttons .button {\\n margin-bottom: 0.5rem; }\\n .buttons .button:not(:last-child):not(.is-fullwidth) {\\n margin-right: 0.5rem; }\\n .buttons:last-child {\\n margin-bottom: -0.5rem; }\\n .buttons:not(:last-child) {\\n margin-bottom: 1rem; }\\n .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) {\\n font-size: 0.75rem; }\\n .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded) {\\n border-radius: 2px; }\\n .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) {\\n font-size: 1.25rem; }\\n .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) {\\n font-size: 1.5rem; }\\n .buttons.has-addons .button:not(:first-child) {\\n border-bottom-left-radius: 0;\\n border-top-left-radius: 0; }\\n .buttons.has-addons .button:not(:last-child) {\\n border-bottom-right-radius: 0;\\n border-top-right-radius: 0;\\n margin-right: -1px; }\\n .buttons.has-addons .button:last-child {\\n margin-right: 0; }\\n .buttons.has-addons .button:hover, .buttons.has-addons .button.is-hovered {\\n z-index: 2; }\\n .buttons.has-addons .button:focus, .buttons.has-addons .button.is-focused, .buttons.has-addons .button:active, .buttons.has-addons .button.is-active, .buttons.has-addons .button.is-selected {\\n z-index: 3; }\\n .buttons.has-addons .button:focus:hover, .buttons.has-addons .button.is-focused:hover, .buttons.has-addons .button:active:hover, .buttons.has-addons .button.is-active:hover, .buttons.has-addons .button.is-selected:hover {\\n z-index: 4; }\\n .buttons.has-addons .button.is-expanded {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .buttons.is-centered {\\n justify-content: center; }\\n .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) {\\n margin-left: 0.25rem;\\n margin-right: 0.25rem; }\\n .buttons.is-right {\\n justify-content: flex-end; }\\n .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) {\\n margin-left: 0.25rem;\\n margin-right: 0.25rem; }\\n\\n.container {\\n flex-grow: 1;\\n margin: 0 auto;\\n position: relative;\\n width: auto; }\\n .container.is-fluid {\\n max-width: none !important;\\n padding-left: 32px;\\n padding-right: 32px;\\n width: 100%; }\\n @media screen and (min-width: 1024px) {\\n .container {\\n max-width: 960px; } }\\n @media screen and (max-width: 1215px) {\\n .container.is-widescreen:not(.is-max-desktop) {\\n max-width: 1152px; } }\\n @media screen and (max-width: 1407px) {\\n .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen) {\\n max-width: 1344px; } }\\n @media screen and (min-width: 1216px) {\\n .container:not(.is-max-desktop) {\\n max-width: 1152px; } }\\n @media screen and (min-width: 1408px) {\\n .container:not(.is-max-desktop):not(.is-max-widescreen) {\\n max-width: 1344px; } }\\n\\n.content li + li {\\n margin-top: 0.25em; }\\n\\n.content p:not(:last-child),\\n.content dl:not(:last-child),\\n.content ol:not(:last-child),\\n.content ul:not(:last-child),\\n.content blockquote:not(:last-child),\\n.content pre:not(:last-child),\\n.content table:not(:last-child) {\\n margin-bottom: 1em; }\\n\\n.content h1,\\n.content h2,\\n.content h3,\\n.content h4,\\n.content h5,\\n.content h6 {\\n color: #363636;\\n font-weight: 600;\\n line-height: 1.125; }\\n\\n.content h1 {\\n font-size: 2em;\\n margin-bottom: 0.5em; }\\n .content h1:not(:first-child) {\\n margin-top: 1em; }\\n\\n.content h2 {\\n font-size: 1.75em;\\n margin-bottom: 0.5714em; }\\n .content h2:not(:first-child) {\\n margin-top: 1.1428em; }\\n\\n.content h3 {\\n font-size: 1.5em;\\n margin-bottom: 0.6666em; }\\n .content h3:not(:first-child) {\\n margin-top: 1.3333em; }\\n\\n.content h4 {\\n font-size: 1.25em;\\n margin-bottom: 0.8em; }\\n\\n.content h5 {\\n font-size: 1.125em;\\n margin-bottom: 0.8888em; }\\n\\n.content h6 {\\n font-size: 1em;\\n margin-bottom: 1em; }\\n\\n.content blockquote {\\n background-color: whitesmoke;\\n border-left: 5px solid #dbdbdb;\\n padding: 1.25em 1.5em; }\\n\\n.content ol {\\n list-style-position: outside;\\n margin-left: 2em;\\n margin-top: 1em; }\\n .content ol:not([type]) {\\n list-style-type: decimal; }\\n .content ol:not([type]).is-lower-alpha {\\n list-style-type: lower-alpha; }\\n .content ol:not([type]).is-lower-roman {\\n list-style-type: lower-roman; }\\n .content ol:not([type]).is-upper-alpha {\\n list-style-type: upper-alpha; }\\n .content ol:not([type]).is-upper-roman {\\n list-style-type: upper-roman; }\\n\\n.content ul {\\n list-style: disc outside;\\n margin-left: 2em;\\n margin-top: 1em; }\\n .content ul ul {\\n list-style-type: circle;\\n margin-top: 0.5em; }\\n .content ul ul ul {\\n list-style-type: square; }\\n\\n.content dd {\\n margin-left: 2em; }\\n\\n.content figure {\\n margin-left: 2em;\\n margin-right: 2em;\\n text-align: center; }\\n .content figure:not(:first-child) {\\n margin-top: 2em; }\\n .content figure:not(:last-child) {\\n margin-bottom: 2em; }\\n .content figure img {\\n display: inline-block; }\\n .content figure figcaption {\\n font-style: italic; }\\n\\n.content pre {\\n -webkit-overflow-scrolling: touch;\\n overflow-x: auto;\\n padding: 1.25em 1.5em;\\n white-space: pre;\\n word-wrap: normal; }\\n\\n.content sup,\\n.content sub {\\n font-size: 75%; }\\n\\n.content table {\\n width: 100%; }\\n .content table td,\\n .content table th {\\n border: 1px solid #dbdbdb;\\n border-width: 0 0 1px;\\n padding: 0.5em 0.75em;\\n vertical-align: top; }\\n .content table th {\\n color: #363636; }\\n .content table th:not([align]) {\\n text-align: inherit; }\\n .content table thead td,\\n .content table thead th {\\n border-width: 0 0 2px;\\n color: #363636; }\\n .content table tfoot td,\\n .content table tfoot th {\\n border-width: 2px 0 0;\\n color: #363636; }\\n .content table tbody tr:last-child td,\\n .content table tbody tr:last-child th {\\n border-bottom-width: 0; }\\n\\n.content .tabs li + li {\\n margin-top: 0; }\\n\\n.content.is-small {\\n font-size: 0.75rem; }\\n\\n.content.is-normal {\\n font-size: 1rem; }\\n\\n.content.is-medium {\\n font-size: 1.25rem; }\\n\\n.content.is-large {\\n font-size: 1.5rem; }\\n\\n.icon {\\n align-items: center;\\n display: inline-flex;\\n justify-content: center;\\n height: 1.5rem;\\n width: 1.5rem; }\\n .icon.is-small {\\n height: 1rem;\\n width: 1rem; }\\n .icon.is-medium {\\n height: 2rem;\\n width: 2rem; }\\n .icon.is-large {\\n height: 3rem;\\n width: 3rem; }\\n\\n.icon-text {\\n align-items: flex-start;\\n color: inherit;\\n display: inline-flex;\\n flex-wrap: wrap;\\n line-height: 1.5rem;\\n vertical-align: top; }\\n .icon-text .icon {\\n flex-grow: 0;\\n flex-shrink: 0; }\\n .icon-text .icon:not(:last-child) {\\n margin-right: 0.25em; }\\n .icon-text .icon:not(:first-child) {\\n margin-left: 0.25em; }\\n\\ndiv.icon-text {\\n display: flex; }\\n\\n.image {\\n display: block;\\n position: relative; }\\n .image img {\\n display: block;\\n height: auto;\\n width: 100%; }\\n .image img.is-rounded {\\n border-radius: 9999px; }\\n .image.is-fullwidth {\\n width: 100%; }\\n .image.is-square img,\\n .image.is-square .has-ratio, .image.is-1by1 img,\\n .image.is-1by1 .has-ratio, .image.is-5by4 img,\\n .image.is-5by4 .has-ratio, .image.is-4by3 img,\\n .image.is-4by3 .has-ratio, .image.is-3by2 img,\\n .image.is-3by2 .has-ratio, .image.is-5by3 img,\\n .image.is-5by3 .has-ratio, .image.is-16by9 img,\\n .image.is-16by9 .has-ratio, .image.is-2by1 img,\\n .image.is-2by1 .has-ratio, .image.is-3by1 img,\\n .image.is-3by1 .has-ratio, .image.is-4by5 img,\\n .image.is-4by5 .has-ratio, .image.is-3by4 img,\\n .image.is-3by4 .has-ratio, .image.is-2by3 img,\\n .image.is-2by3 .has-ratio, .image.is-3by5 img,\\n .image.is-3by5 .has-ratio, .image.is-9by16 img,\\n .image.is-9by16 .has-ratio, .image.is-1by2 img,\\n .image.is-1by2 .has-ratio, .image.is-1by3 img,\\n .image.is-1by3 .has-ratio {\\n height: 100%;\\n width: 100%; }\\n .image.is-square, .image.is-1by1 {\\n padding-top: 100%; }\\n .image.is-5by4 {\\n padding-top: 80%; }\\n .image.is-4by3 {\\n padding-top: 75%; }\\n .image.is-3by2 {\\n padding-top: 66.6666%; }\\n .image.is-5by3 {\\n padding-top: 60%; }\\n .image.is-16by9 {\\n padding-top: 56.25%; }\\n .image.is-2by1 {\\n padding-top: 50%; }\\n .image.is-3by1 {\\n padding-top: 33.3333%; }\\n .image.is-4by5 {\\n padding-top: 125%; }\\n .image.is-3by4 {\\n padding-top: 133.3333%; }\\n .image.is-2by3 {\\n padding-top: 150%; }\\n .image.is-3by5 {\\n padding-top: 166.6666%; }\\n .image.is-9by16 {\\n padding-top: 177.7777%; }\\n .image.is-1by2 {\\n padding-top: 200%; }\\n .image.is-1by3 {\\n padding-top: 300%; }\\n .image.is-16x16 {\\n height: 16px;\\n width: 16px; }\\n .image.is-24x24 {\\n height: 24px;\\n width: 24px; }\\n .image.is-32x32 {\\n height: 32px;\\n width: 32px; }\\n .image.is-48x48 {\\n height: 48px;\\n width: 48px; }\\n .image.is-64x64 {\\n height: 64px;\\n width: 64px; }\\n .image.is-96x96 {\\n height: 96px;\\n width: 96px; }\\n .image.is-128x128 {\\n height: 128px;\\n width: 128px; }\\n\\n.notification {\\n background-color: whitesmoke;\\n border-radius: 4px;\\n position: relative;\\n padding: 1.25rem 2.5rem 1.25rem 1.5rem; }\\n .notification a:not(.button):not(.dropdown-item) {\\n color: currentColor;\\n text-decoration: underline; }\\n .notification strong {\\n color: currentColor; }\\n .notification code,\\n .notification pre {\\n background: white; }\\n .notification pre code {\\n background: transparent; }\\n .notification > .delete {\\n right: 0.5rem;\\n position: absolute;\\n top: 0.5rem; }\\n .notification .title,\\n .notification .subtitle,\\n .notification .content {\\n color: currentColor; }\\n .notification.is-white {\\n background-color: white;\\n color: #0a0a0a; }\\n .notification.is-black {\\n background-color: #0a0a0a;\\n color: white; }\\n .notification.is-light {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .notification.is-dark {\\n background-color: #459558;\\n color: #fff; }\\n .notification.is-primary {\\n background-color: #55be6f;\\n color: #fff; }\\n .notification.is-primary.is-light {\\n background-color: #f0f9f2;\\n color: #2f7a41; }\\n .notification.is-link {\\n background-color: #4876ff;\\n color: #fff; }\\n .notification.is-link.is-light {\\n background-color: #ebf0ff;\\n color: #0037db; }\\n .notification.is-info {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .notification.is-info.is-light {\\n background-color: aliceblue;\\n color: #004f94; }\\n .notification.is-success {\\n background-color: #48c78e;\\n color: #fff; }\\n .notification.is-success.is-light {\\n background-color: #effaf5;\\n color: #257953; }\\n .notification.is-warning {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .notification.is-warning.is-light {\\n background-color: #fff9eb;\\n color: #946b00; }\\n .notification.is-danger {\\n background-color: #f14668;\\n color: #fff; }\\n .notification.is-danger.is-light {\\n background-color: #feecf0;\\n color: #cc0f35; }\\n\\n.progress {\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n border: none;\\n border-radius: 9999px;\\n display: block;\\n height: 1rem;\\n overflow: hidden;\\n padding: 0;\\n width: 100%; }\\n .progress::-webkit-progress-bar {\\n background-color: #ededed; }\\n .progress::-webkit-progress-value {\\n background-color: #4a4a4a; }\\n .progress::-moz-progress-bar {\\n background-color: #4a4a4a; }\\n .progress::-ms-fill {\\n background-color: #4a4a4a;\\n border: none; }\\n .progress.is-white::-webkit-progress-value {\\n background-color: white; }\\n .progress.is-white::-moz-progress-bar {\\n background-color: white; }\\n .progress.is-white::-ms-fill {\\n background-color: white; }\\n .progress.is-white:indeterminate {\\n background-image: linear-gradient(to right, white 30%, #ededed 30%); }\\n .progress.is-black::-webkit-progress-value {\\n background-color: #0a0a0a; }\\n .progress.is-black::-moz-progress-bar {\\n background-color: #0a0a0a; }\\n .progress.is-black::-ms-fill {\\n background-color: #0a0a0a; }\\n .progress.is-black:indeterminate {\\n background-image: linear-gradient(to right, #0a0a0a 30%, #ededed 30%); }\\n .progress.is-light::-webkit-progress-value {\\n background-color: #d2f9d6; }\\n .progress.is-light::-moz-progress-bar {\\n background-color: #d2f9d6; }\\n .progress.is-light::-ms-fill {\\n background-color: #d2f9d6; }\\n .progress.is-light:indeterminate {\\n background-image: linear-gradient(to right, #d2f9d6 30%, #ededed 30%); }\\n .progress.is-dark::-webkit-progress-value {\\n background-color: #459558; }\\n .progress.is-dark::-moz-progress-bar {\\n background-color: #459558; }\\n .progress.is-dark::-ms-fill {\\n background-color: #459558; }\\n .progress.is-dark:indeterminate {\\n background-image: linear-gradient(to right, #459558 30%, #ededed 30%); }\\n .progress.is-primary::-webkit-progress-value {\\n background-color: #55be6f; }\\n .progress.is-primary::-moz-progress-bar {\\n background-color: #55be6f; }\\n .progress.is-primary::-ms-fill {\\n background-color: #55be6f; }\\n .progress.is-primary:indeterminate {\\n background-image: linear-gradient(to right, #55be6f 30%, #ededed 30%); }\\n .progress.is-link::-webkit-progress-value {\\n background-color: #4876ff; }\\n .progress.is-link::-moz-progress-bar {\\n background-color: #4876ff; }\\n .progress.is-link::-ms-fill {\\n background-color: #4876ff; }\\n .progress.is-link:indeterminate {\\n background-image: linear-gradient(to right, #4876ff 30%, #ededed 30%); }\\n .progress.is-info::-webkit-progress-value {\\n background-color: #f0f8ff; }\\n .progress.is-info::-moz-progress-bar {\\n background-color: #f0f8ff; }\\n .progress.is-info::-ms-fill {\\n background-color: #f0f8ff; }\\n .progress.is-info:indeterminate {\\n background-image: linear-gradient(to right, #f0f8ff 30%, #ededed 30%); }\\n .progress.is-success::-webkit-progress-value {\\n background-color: #48c78e; }\\n .progress.is-success::-moz-progress-bar {\\n background-color: #48c78e; }\\n .progress.is-success::-ms-fill {\\n background-color: #48c78e; }\\n .progress.is-success:indeterminate {\\n background-image: linear-gradient(to right, #48c78e 30%, #ededed 30%); }\\n .progress.is-warning::-webkit-progress-value {\\n background-color: #ffd975; }\\n .progress.is-warning::-moz-progress-bar {\\n background-color: #ffd975; }\\n .progress.is-warning::-ms-fill {\\n background-color: #ffd975; }\\n .progress.is-warning:indeterminate {\\n background-image: linear-gradient(to right, #ffd975 30%, #ededed 30%); }\\n .progress.is-danger::-webkit-progress-value {\\n background-color: #f14668; }\\n .progress.is-danger::-moz-progress-bar {\\n background-color: #f14668; }\\n .progress.is-danger::-ms-fill {\\n background-color: #f14668; }\\n .progress.is-danger:indeterminate {\\n background-image: linear-gradient(to right, #f14668 30%, #ededed 30%); }\\n .progress:indeterminate {\\n animation-duration: 1.5s;\\n animation-iteration-count: infinite;\\n animation-name: moveIndeterminate;\\n animation-timing-function: linear;\\n background-color: #ededed;\\n background-image: linear-gradient(to right, #4a4a4a 30%, #ededed 30%);\\n background-position: top left;\\n background-repeat: no-repeat;\\n background-size: 150% 150%; }\\n .progress:indeterminate::-webkit-progress-bar {\\n background-color: transparent; }\\n .progress:indeterminate::-moz-progress-bar {\\n background-color: transparent; }\\n .progress:indeterminate::-ms-fill {\\n animation-name: none; }\\n .progress.is-small {\\n height: 0.75rem; }\\n .progress.is-medium {\\n height: 1.25rem; }\\n .progress.is-large {\\n height: 1.5rem; }\\n\\n@keyframes moveIndeterminate {\\n from {\\n background-position: 200% 0; }\\n to {\\n background-position: -200% 0; } }\\n\\n.table {\\n background-color: white;\\n color: #363636; }\\n .table td,\\n .table th {\\n border: 1px solid #dbdbdb;\\n border-width: 0 0 1px;\\n padding: 0.5em 0.75em;\\n vertical-align: top; }\\n .table td.is-white,\\n .table th.is-white {\\n background-color: white;\\n border-color: white;\\n color: #0a0a0a; }\\n .table td.is-black,\\n .table th.is-black {\\n background-color: #0a0a0a;\\n border-color: #0a0a0a;\\n color: white; }\\n .table td.is-light,\\n .table th.is-light {\\n background-color: #d2f9d6;\\n border-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .table td.is-dark,\\n .table th.is-dark {\\n background-color: #459558;\\n border-color: #459558;\\n color: #fff; }\\n .table td.is-primary,\\n .table th.is-primary {\\n background-color: #55be6f;\\n border-color: #55be6f;\\n color: #fff; }\\n .table td.is-link,\\n .table th.is-link {\\n background-color: #4876ff;\\n border-color: #4876ff;\\n color: #fff; }\\n .table td.is-info,\\n .table th.is-info {\\n background-color: #f0f8ff;\\n border-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .table td.is-success,\\n .table th.is-success {\\n background-color: #48c78e;\\n border-color: #48c78e;\\n color: #fff; }\\n .table td.is-warning,\\n .table th.is-warning {\\n background-color: #ffd975;\\n border-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .table td.is-danger,\\n .table th.is-danger {\\n background-color: #f14668;\\n border-color: #f14668;\\n color: #fff; }\\n .table td.is-narrow,\\n .table th.is-narrow {\\n white-space: nowrap;\\n width: 1%; }\\n .table td.is-selected,\\n .table th.is-selected {\\n background-color: #55be6f;\\n color: #fff; }\\n .table td.is-selected a,\\n .table td.is-selected strong,\\n .table th.is-selected a,\\n .table th.is-selected strong {\\n color: currentColor; }\\n .table td.is-vcentered,\\n .table th.is-vcentered {\\n vertical-align: middle; }\\n .table th {\\n color: #363636; }\\n .table th:not([align]) {\\n text-align: inherit; }\\n .table tr.is-selected {\\n background-color: #55be6f;\\n color: #fff; }\\n .table tr.is-selected a,\\n .table tr.is-selected strong {\\n color: currentColor; }\\n .table tr.is-selected td,\\n .table tr.is-selected th {\\n border-color: #fff;\\n color: currentColor; }\\n .table thead {\\n background-color: transparent; }\\n .table thead td,\\n .table thead th {\\n border-width: 0 0 2px;\\n color: #363636; }\\n .table tfoot {\\n background-color: transparent; }\\n .table tfoot td,\\n .table tfoot th {\\n border-width: 2px 0 0;\\n color: #363636; }\\n .table tbody {\\n background-color: transparent; }\\n .table tbody tr:last-child td,\\n .table tbody tr:last-child th {\\n border-bottom-width: 0; }\\n .table.is-bordered td,\\n .table.is-bordered th {\\n border-width: 1px; }\\n .table.is-bordered tr:last-child td,\\n .table.is-bordered tr:last-child th {\\n border-bottom-width: 1px; }\\n .table.is-fullwidth {\\n width: 100%; }\\n .table.is-hoverable tbody tr:not(.is-selected):hover {\\n background-color: #fafafa; }\\n .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover {\\n background-color: #fafafa; }\\n .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even) {\\n background-color: whitesmoke; }\\n .table.is-narrow td,\\n .table.is-narrow th {\\n padding: 0.25em 0.5em; }\\n .table.is-striped tbody tr:not(.is-selected):nth-child(even) {\\n background-color: #fafafa; }\\n\\n.table-container {\\n -webkit-overflow-scrolling: touch;\\n overflow: auto;\\n overflow-y: hidden;\\n max-width: 100%; }\\n\\n.tags {\\n align-items: center;\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-start; }\\n .tags .tag {\\n margin-bottom: 0.5rem; }\\n .tags .tag:not(:last-child) {\\n margin-right: 0.5rem; }\\n .tags:last-child {\\n margin-bottom: -0.5rem; }\\n .tags:not(:last-child) {\\n margin-bottom: 1rem; }\\n .tags.are-medium .tag:not(.is-normal):not(.is-large) {\\n font-size: 1rem; }\\n .tags.are-large .tag:not(.is-normal):not(.is-medium) {\\n font-size: 1.25rem; }\\n .tags.is-centered {\\n justify-content: center; }\\n .tags.is-centered .tag {\\n margin-right: 0.25rem;\\n margin-left: 0.25rem; }\\n .tags.is-right {\\n justify-content: flex-end; }\\n .tags.is-right .tag:not(:first-child) {\\n margin-left: 0.5rem; }\\n .tags.is-right .tag:not(:last-child) {\\n margin-right: 0; }\\n .tags.has-addons .tag {\\n margin-right: 0; }\\n .tags.has-addons .tag:not(:first-child) {\\n margin-left: 0;\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0; }\\n .tags.has-addons .tag:not(:last-child) {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.tag:not(body) {\\n align-items: center;\\n background-color: whitesmoke;\\n border-radius: 4px;\\n color: #4a4a4a;\\n display: inline-flex;\\n font-size: 0.75rem;\\n height: 2em;\\n justify-content: center;\\n line-height: 1.5;\\n padding-left: 0.75em;\\n padding-right: 0.75em;\\n white-space: nowrap; }\\n .tag:not(body) .delete {\\n margin-left: 0.25rem;\\n margin-right: -0.375rem; }\\n .tag:not(body).is-white {\\n background-color: white;\\n color: #0a0a0a; }\\n .tag:not(body).is-black {\\n background-color: #0a0a0a;\\n color: white; }\\n .tag:not(body).is-light {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .tag:not(body).is-dark {\\n background-color: #459558;\\n color: #fff; }\\n .tag:not(body).is-primary {\\n background-color: #55be6f;\\n color: #fff; }\\n .tag:not(body).is-primary.is-light {\\n background-color: #f0f9f2;\\n color: #2f7a41; }\\n .tag:not(body).is-link {\\n background-color: #4876ff;\\n color: #fff; }\\n .tag:not(body).is-link.is-light {\\n background-color: #ebf0ff;\\n color: #0037db; }\\n .tag:not(body).is-info {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .tag:not(body).is-info.is-light {\\n background-color: aliceblue;\\n color: #004f94; }\\n .tag:not(body).is-success {\\n background-color: #48c78e;\\n color: #fff; }\\n .tag:not(body).is-success.is-light {\\n background-color: #effaf5;\\n color: #257953; }\\n .tag:not(body).is-warning {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .tag:not(body).is-warning.is-light {\\n background-color: #fff9eb;\\n color: #946b00; }\\n .tag:not(body).is-danger {\\n background-color: #f14668;\\n color: #fff; }\\n .tag:not(body).is-danger.is-light {\\n background-color: #feecf0;\\n color: #cc0f35; }\\n .tag:not(body).is-normal {\\n font-size: 0.75rem; }\\n .tag:not(body).is-medium {\\n font-size: 1rem; }\\n .tag:not(body).is-large {\\n font-size: 1.25rem; }\\n .tag:not(body) .icon:first-child:not(:last-child) {\\n margin-left: -0.375em;\\n margin-right: 0.1875em; }\\n .tag:not(body) .icon:last-child:not(:first-child) {\\n margin-left: 0.1875em;\\n margin-right: -0.375em; }\\n .tag:not(body) .icon:first-child:last-child {\\n margin-left: -0.375em;\\n margin-right: -0.375em; }\\n .tag:not(body).is-delete {\\n margin-left: 1px;\\n padding: 0;\\n position: relative;\\n width: 2em; }\\n .tag:not(body).is-delete::before, .tag:not(body).is-delete::after {\\n background-color: currentColor;\\n content: \\"\\";\\n display: block;\\n left: 50%;\\n position: absolute;\\n top: 50%;\\n transform: translateX(-50%) translateY(-50%) rotate(45deg);\\n transform-origin: center center; }\\n .tag:not(body).is-delete::before {\\n height: 1px;\\n width: 50%; }\\n .tag:not(body).is-delete::after {\\n height: 50%;\\n width: 1px; }\\n .tag:not(body).is-delete:hover, .tag:not(body).is-delete:focus {\\n background-color: #e8e8e8; }\\n .tag:not(body).is-delete:active {\\n background-color: #dbdbdb; }\\n .tag:not(body).is-rounded {\\n border-radius: 9999px; }\\n\\na.tag:hover {\\n text-decoration: underline; }\\n\\n.title,\\n.subtitle {\\n word-break: break-word; }\\n .title em,\\n .title span,\\n .subtitle em,\\n .subtitle span {\\n font-weight: inherit; }\\n .title sub,\\n .subtitle sub {\\n font-size: 0.75em; }\\n .title sup,\\n .subtitle sup {\\n font-size: 0.75em; }\\n .title .tag,\\n .subtitle .tag {\\n vertical-align: middle; }\\n\\n.title {\\n color: #363636;\\n font-size: 2rem;\\n font-weight: 600;\\n line-height: 1.125; }\\n .title strong {\\n color: inherit;\\n font-weight: inherit; }\\n .title:not(.is-spaced) + .subtitle {\\n margin-top: -1.25rem; }\\n .title.is-1 {\\n font-size: 3rem; }\\n .title.is-2 {\\n font-size: 2.5rem; }\\n .title.is-3 {\\n font-size: 2rem; }\\n .title.is-4 {\\n font-size: 1.5rem; }\\n .title.is-5 {\\n font-size: 1.25rem; }\\n .title.is-6 {\\n font-size: 1rem; }\\n .title.is-7 {\\n font-size: 0.75rem; }\\n\\n.subtitle {\\n color: #4a4a4a;\\n font-size: 1.25rem;\\n font-weight: 400;\\n line-height: 1.25; }\\n .subtitle strong {\\n color: #363636;\\n font-weight: 600; }\\n .subtitle:not(.is-spaced) + .title {\\n margin-top: -1.25rem; }\\n .subtitle.is-1 {\\n font-size: 3rem; }\\n .subtitle.is-2 {\\n font-size: 2.5rem; }\\n .subtitle.is-3 {\\n font-size: 2rem; }\\n .subtitle.is-4 {\\n font-size: 1.5rem; }\\n .subtitle.is-5 {\\n font-size: 1.25rem; }\\n .subtitle.is-6 {\\n font-size: 1rem; }\\n .subtitle.is-7 {\\n font-size: 0.75rem; }\\n\\n.heading {\\n display: block;\\n font-size: 11px;\\n letter-spacing: 1px;\\n margin-bottom: 5px;\\n text-transform: uppercase; }\\n\\n.number {\\n align-items: center;\\n background-color: whitesmoke;\\n border-radius: 9999px;\\n display: inline-flex;\\n font-size: 1.25rem;\\n height: 2em;\\n justify-content: center;\\n margin-right: 1.5rem;\\n min-width: 2.5em;\\n padding: 0.25rem 0.5rem;\\n text-align: center;\\n vertical-align: top; }\\n\\n/* Bulma Form */\\n.input, .textarea, .select select {\\n background-color: white;\\n border-color: #dbdbdb;\\n border-radius: 4px;\\n color: #363636; }\\n .input::-moz-placeholder, .textarea::-moz-placeholder, .select select::-moz-placeholder {\\n color: #757575; }\\n .input::-webkit-input-placeholder, .textarea::-webkit-input-placeholder, .select select::-webkit-input-placeholder {\\n color: #757575; }\\n .input:-moz-placeholder, .textarea:-moz-placeholder, .select select:-moz-placeholder {\\n color: #757575; }\\n .input:-ms-input-placeholder, .textarea:-ms-input-placeholder, .select select:-ms-input-placeholder {\\n color: #757575; }\\n .input:hover, .textarea:hover, .select select:hover, .is-hovered.input, .is-hovered.textarea, .select select.is-hovered {\\n border-color: #b5b5b5; }\\n .input:focus, .textarea:focus, .select select:focus, .is-focused.input, .is-focused.textarea, .select select.is-focused, .input:active, .textarea:active, .select select:active, .is-active.input, .is-active.textarea, .select select.is-active {\\n border-color: #4876ff;\\n box-shadow: 0 0 0 0.125em rgba(72, 118, 255, 0.25); }\\n .input[disabled], .textarea[disabled], .select select[disabled],\\n fieldset[disabled] .input,\\n fieldset[disabled] .textarea,\\n fieldset[disabled] .select select,\\n .select fieldset[disabled] select {\\n background-color: whitesmoke;\\n border-color: whitesmoke;\\n box-shadow: none;\\n color: #7a7a7a; }\\n .input[disabled]::-moz-placeholder, .textarea[disabled]::-moz-placeholder, .select select[disabled]::-moz-placeholder,\\n fieldset[disabled] .input::-moz-placeholder,\\n fieldset[disabled] .textarea::-moz-placeholder,\\n fieldset[disabled] .select select::-moz-placeholder,\\n .select fieldset[disabled] select::-moz-placeholder {\\n color: #707070; }\\n .input[disabled]::-webkit-input-placeholder, .textarea[disabled]::-webkit-input-placeholder, .select select[disabled]::-webkit-input-placeholder,\\n fieldset[disabled] .input::-webkit-input-placeholder,\\n fieldset[disabled] .textarea::-webkit-input-placeholder,\\n fieldset[disabled] .select select::-webkit-input-placeholder,\\n .select fieldset[disabled] select::-webkit-input-placeholder {\\n color: #707070; }\\n .input[disabled]:-moz-placeholder, .textarea[disabled]:-moz-placeholder, .select select[disabled]:-moz-placeholder,\\n fieldset[disabled] .input:-moz-placeholder,\\n fieldset[disabled] .textarea:-moz-placeholder,\\n fieldset[disabled] .select select:-moz-placeholder,\\n .select fieldset[disabled] select:-moz-placeholder {\\n color: #707070; }\\n .input[disabled]:-ms-input-placeholder, .textarea[disabled]:-ms-input-placeholder, .select select[disabled]:-ms-input-placeholder,\\n fieldset[disabled] .input:-ms-input-placeholder,\\n fieldset[disabled] .textarea:-ms-input-placeholder,\\n fieldset[disabled] .select select:-ms-input-placeholder,\\n .select fieldset[disabled] select:-ms-input-placeholder {\\n color: #707070; }\\n\\n.input, .textarea {\\n box-shadow: inset 0 0.0625em 0.125em rgba(10, 10, 10, 0.05);\\n max-width: 100%;\\n width: 100%; }\\n .input[readonly], .textarea[readonly] {\\n box-shadow: none; }\\n .is-white.input, .is-white.textarea {\\n border-color: white; }\\n .is-white.input:focus, .is-white.textarea:focus, .is-white.is-focused.input, .is-white.is-focused.textarea, .is-white.input:active, .is-white.textarea:active, .is-white.is-active.input, .is-white.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }\\n .is-black.input, .is-black.textarea {\\n border-color: #0a0a0a; }\\n .is-black.input:focus, .is-black.textarea:focus, .is-black.is-focused.input, .is-black.is-focused.textarea, .is-black.input:active, .is-black.textarea:active, .is-black.is-active.input, .is-black.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }\\n .is-light.input, .is-light.textarea {\\n border-color: #d2f9d6; }\\n .is-light.input:focus, .is-light.textarea:focus, .is-light.is-focused.input, .is-light.is-focused.textarea, .is-light.input:active, .is-light.textarea:active, .is-light.is-active.input, .is-light.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(210, 249, 214, 0.25); }\\n .is-dark.input, .is-dark.textarea {\\n border-color: #459558; }\\n .is-dark.input:focus, .is-dark.textarea:focus, .is-dark.is-focused.input, .is-dark.is-focused.textarea, .is-dark.input:active, .is-dark.textarea:active, .is-dark.is-active.input, .is-dark.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(69, 149, 88, 0.25); }\\n .is-primary.input, .is-primary.textarea {\\n border-color: #55be6f; }\\n .is-primary.input:focus, .is-primary.textarea:focus, .is-primary.is-focused.input, .is-primary.is-focused.textarea, .is-primary.input:active, .is-primary.textarea:active, .is-primary.is-active.input, .is-primary.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(85, 190, 111, 0.25); }\\n .is-link.input, .is-link.textarea {\\n border-color: #4876ff; }\\n .is-link.input:focus, .is-link.textarea:focus, .is-link.is-focused.input, .is-link.is-focused.textarea, .is-link.input:active, .is-link.textarea:active, .is-link.is-active.input, .is-link.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(72, 118, 255, 0.25); }\\n .is-info.input, .is-info.textarea {\\n border-color: #f0f8ff; }\\n .is-info.input:focus, .is-info.textarea:focus, .is-info.is-focused.input, .is-info.is-focused.textarea, .is-info.input:active, .is-info.textarea:active, .is-info.is-active.input, .is-info.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(240, 248, 255, 0.25); }\\n .is-success.input, .is-success.textarea {\\n border-color: #48c78e; }\\n .is-success.input:focus, .is-success.textarea:focus, .is-success.is-focused.input, .is-success.is-focused.textarea, .is-success.input:active, .is-success.textarea:active, .is-success.is-active.input, .is-success.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(72, 199, 142, 0.25); }\\n .is-warning.input, .is-warning.textarea {\\n border-color: #ffd975; }\\n .is-warning.input:focus, .is-warning.textarea:focus, .is-warning.is-focused.input, .is-warning.is-focused.textarea, .is-warning.input:active, .is-warning.textarea:active, .is-warning.is-active.input, .is-warning.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(255, 217, 117, 0.25); }\\n .is-danger.input, .is-danger.textarea {\\n border-color: #f14668; }\\n .is-danger.input:focus, .is-danger.textarea:focus, .is-danger.is-focused.input, .is-danger.is-focused.textarea, .is-danger.input:active, .is-danger.textarea:active, .is-danger.is-active.input, .is-danger.is-active.textarea {\\n box-shadow: 0 0 0 0.125em rgba(241, 70, 104, 0.25); }\\n .is-small.input, .is-small.textarea {\\n border-radius: 2px;\\n font-size: 0.75rem; }\\n .is-medium.input, .is-medium.textarea {\\n font-size: 1.25rem; }\\n .is-large.input, .is-large.textarea {\\n font-size: 1.5rem; }\\n .is-fullwidth.input, .is-fullwidth.textarea {\\n display: block;\\n width: 100%; }\\n .is-inline.input, .is-inline.textarea {\\n display: inline;\\n width: auto; }\\n\\n.input.is-rounded {\\n border-radius: 9999px;\\n padding-left: calc(calc(0.75em - 1px) + 0.375em);\\n padding-right: calc(calc(0.75em - 1px) + 0.375em); }\\n\\n.input.is-static {\\n background-color: transparent;\\n border-color: transparent;\\n box-shadow: none;\\n padding-left: 0;\\n padding-right: 0; }\\n\\n.textarea {\\n display: block;\\n max-width: 100%;\\n min-width: 100%;\\n padding: calc(0.75em - 1px);\\n resize: vertical; }\\n .textarea:not([rows]) {\\n max-height: 40em;\\n min-height: 8em; }\\n .textarea[rows] {\\n height: initial; }\\n .textarea.has-fixed-size {\\n resize: none; }\\n\\n.checkbox, .radio {\\n cursor: pointer;\\n display: inline-block;\\n line-height: 1.25;\\n position: relative; }\\n .checkbox input, .radio input {\\n cursor: pointer; }\\n .checkbox:hover, .radio:hover {\\n color: #363636; }\\n .checkbox[disabled], .radio[disabled],\\n fieldset[disabled] .checkbox,\\n fieldset[disabled] .radio,\\n .checkbox input[disabled],\\n .radio input[disabled] {\\n color: #7a7a7a;\\n cursor: not-allowed; }\\n\\n.radio + .radio {\\n margin-left: 0.5em; }\\n\\n.select {\\n display: inline-block;\\n max-width: 100%;\\n position: relative;\\n vertical-align: top; }\\n .select:not(.is-multiple) {\\n height: 2.5em; }\\n .select:not(.is-multiple):not(.is-loading)::after {\\n border-color: #4876ff;\\n right: 1.125em;\\n z-index: 4; }\\n .select.is-rounded select {\\n border-radius: 9999px;\\n padding-left: 1em; }\\n .select select {\\n cursor: pointer;\\n display: block;\\n font-size: 1em;\\n max-width: 100%;\\n outline: none; }\\n .select select::-ms-expand {\\n display: none; }\\n .select select[disabled]:hover,\\n fieldset[disabled] .select select:hover {\\n border-color: whitesmoke; }\\n .select select:not([multiple]) {\\n padding-right: 2.5em; }\\n .select select[multiple] {\\n height: auto;\\n padding: 0; }\\n .select select[multiple] option {\\n padding: 0.5em 1em; }\\n .select:not(.is-multiple):not(.is-loading):hover::after {\\n border-color: #363636; }\\n .select.is-white:not(:hover)::after {\\n border-color: white; }\\n .select.is-white select {\\n border-color: white; }\\n .select.is-white select:hover, .select.is-white select.is-hovered {\\n border-color: #f2f2f2; }\\n .select.is-white select:focus, .select.is-white select.is-focused, .select.is-white select:active, .select.is-white select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }\\n .select.is-black:not(:hover)::after {\\n border-color: #0a0a0a; }\\n .select.is-black select {\\n border-color: #0a0a0a; }\\n .select.is-black select:hover, .select.is-black select.is-hovered {\\n border-color: black; }\\n .select.is-black select:focus, .select.is-black select.is-focused, .select.is-black select:active, .select.is-black select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }\\n .select.is-light:not(:hover)::after {\\n border-color: #d2f9d6; }\\n .select.is-light select {\\n border-color: #d2f9d6; }\\n .select.is-light select:hover, .select.is-light select.is-hovered {\\n border-color: #bcf6c2; }\\n .select.is-light select:focus, .select.is-light select.is-focused, .select.is-light select:active, .select.is-light select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(210, 249, 214, 0.25); }\\n .select.is-dark:not(:hover)::after {\\n border-color: #459558; }\\n .select.is-dark select {\\n border-color: #459558; }\\n .select.is-dark select:hover, .select.is-dark select.is-hovered {\\n border-color: #3d844e; }\\n .select.is-dark select:focus, .select.is-dark select.is-focused, .select.is-dark select:active, .select.is-dark select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(69, 149, 88, 0.25); }\\n .select.is-primary:not(:hover)::after {\\n border-color: #55be6f; }\\n .select.is-primary select {\\n border-color: #55be6f; }\\n .select.is-primary select:hover, .select.is-primary select.is-hovered {\\n border-color: #45b461; }\\n .select.is-primary select:focus, .select.is-primary select.is-focused, .select.is-primary select:active, .select.is-primary select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(85, 190, 111, 0.25); }\\n .select.is-link:not(:hover)::after {\\n border-color: #4876ff; }\\n .select.is-link select {\\n border-color: #4876ff; }\\n .select.is-link select:hover, .select.is-link select.is-hovered {\\n border-color: #2f63ff; }\\n .select.is-link select:focus, .select.is-link select.is-focused, .select.is-link select:active, .select.is-link select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(72, 118, 255, 0.25); }\\n .select.is-info:not(:hover)::after {\\n border-color: #f0f8ff; }\\n .select.is-info select {\\n border-color: #f0f8ff; }\\n .select.is-info select:hover, .select.is-info select.is-hovered {\\n border-color: #d7ecff; }\\n .select.is-info select:focus, .select.is-info select.is-focused, .select.is-info select:active, .select.is-info select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(240, 248, 255, 0.25); }\\n .select.is-success:not(:hover)::after {\\n border-color: #48c78e; }\\n .select.is-success select {\\n border-color: #48c78e; }\\n .select.is-success select:hover, .select.is-success select.is-hovered {\\n border-color: #3abb81; }\\n .select.is-success select:focus, .select.is-success select.is-focused, .select.is-success select:active, .select.is-success select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(72, 199, 142, 0.25); }\\n .select.is-warning:not(:hover)::after {\\n border-color: #ffd975; }\\n .select.is-warning select {\\n border-color: #ffd975; }\\n .select.is-warning select:hover, .select.is-warning select.is-hovered {\\n border-color: #ffd25c; }\\n .select.is-warning select:focus, .select.is-warning select.is-focused, .select.is-warning select:active, .select.is-warning select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(255, 217, 117, 0.25); }\\n .select.is-danger:not(:hover)::after {\\n border-color: #f14668; }\\n .select.is-danger select {\\n border-color: #f14668; }\\n .select.is-danger select:hover, .select.is-danger select.is-hovered {\\n border-color: #ef2e55; }\\n .select.is-danger select:focus, .select.is-danger select.is-focused, .select.is-danger select:active, .select.is-danger select.is-active {\\n box-shadow: 0 0 0 0.125em rgba(241, 70, 104, 0.25); }\\n .select.is-small {\\n border-radius: 2px;\\n font-size: 0.75rem; }\\n .select.is-medium {\\n font-size: 1.25rem; }\\n .select.is-large {\\n font-size: 1.5rem; }\\n .select.is-disabled::after {\\n border-color: #7a7a7a; }\\n .select.is-fullwidth {\\n width: 100%; }\\n .select.is-fullwidth select {\\n width: 100%; }\\n .select.is-loading::after {\\n margin-top: 0;\\n position: absolute;\\n right: 0.625em;\\n top: 0.625em;\\n transform: none; }\\n .select.is-loading.is-small:after {\\n font-size: 0.75rem; }\\n .select.is-loading.is-medium:after {\\n font-size: 1.25rem; }\\n .select.is-loading.is-large:after {\\n font-size: 1.5rem; }\\n\\n.file {\\n align-items: stretch;\\n display: flex;\\n justify-content: flex-start;\\n position: relative; }\\n .file.is-white .file-cta {\\n background-color: white;\\n border-color: transparent;\\n color: #0a0a0a; }\\n .file.is-white:hover .file-cta, .file.is-white.is-hovered .file-cta {\\n background-color: #f9f9f9;\\n border-color: transparent;\\n color: #0a0a0a; }\\n .file.is-white:focus .file-cta, .file.is-white.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25);\\n color: #0a0a0a; }\\n .file.is-white:active .file-cta, .file.is-white.is-active .file-cta {\\n background-color: #f2f2f2;\\n border-color: transparent;\\n color: #0a0a0a; }\\n .file.is-black .file-cta {\\n background-color: #0a0a0a;\\n border-color: transparent;\\n color: white; }\\n .file.is-black:hover .file-cta, .file.is-black.is-hovered .file-cta {\\n background-color: #040404;\\n border-color: transparent;\\n color: white; }\\n .file.is-black:focus .file-cta, .file.is-black.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25);\\n color: white; }\\n .file.is-black:active .file-cta, .file.is-black.is-active .file-cta {\\n background-color: black;\\n border-color: transparent;\\n color: white; }\\n .file.is-light .file-cta {\\n background-color: #d2f9d6;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-light:hover .file-cta, .file.is-light.is-hovered .file-cta {\\n background-color: #c7f8cc;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-light:focus .file-cta, .file.is-light.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(210, 249, 214, 0.25);\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-light:active .file-cta, .file.is-light.is-active .file-cta {\\n background-color: #bcf6c2;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-dark .file-cta {\\n background-color: #459558;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-dark:hover .file-cta, .file.is-dark.is-hovered .file-cta {\\n background-color: #418c53;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-dark:focus .file-cta, .file.is-dark.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(69, 149, 88, 0.25);\\n color: #fff; }\\n .file.is-dark:active .file-cta, .file.is-dark.is-active .file-cta {\\n background-color: #3d844e;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-primary .file-cta {\\n background-color: #55be6f;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-primary:hover .file-cta, .file.is-primary.is-hovered .file-cta {\\n background-color: #4cba67;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-primary:focus .file-cta, .file.is-primary.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(85, 190, 111, 0.25);\\n color: #fff; }\\n .file.is-primary:active .file-cta, .file.is-primary.is-active .file-cta {\\n background-color: #45b461;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-link .file-cta {\\n background-color: #4876ff;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-link:hover .file-cta, .file.is-link.is-hovered .file-cta {\\n background-color: #3b6cff;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-link:focus .file-cta, .file.is-link.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(72, 118, 255, 0.25);\\n color: #fff; }\\n .file.is-link:active .file-cta, .file.is-link.is-active .file-cta {\\n background-color: #2f63ff;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-info .file-cta {\\n background-color: #f0f8ff;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-info:hover .file-cta, .file.is-info.is-hovered .file-cta {\\n background-color: #e3f2ff;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-info:focus .file-cta, .file.is-info.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(240, 248, 255, 0.25);\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-info:active .file-cta, .file.is-info.is-active .file-cta {\\n background-color: #d7ecff;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-success .file-cta {\\n background-color: #48c78e;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-success:hover .file-cta, .file.is-success.is-hovered .file-cta {\\n background-color: #3ec487;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-success:focus .file-cta, .file.is-success.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(72, 199, 142, 0.25);\\n color: #fff; }\\n .file.is-success:active .file-cta, .file.is-success.is-active .file-cta {\\n background-color: #3abb81;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-warning .file-cta {\\n background-color: #ffd975;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-warning:hover .file-cta, .file.is-warning.is-hovered .file-cta {\\n background-color: #ffd568;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-warning:focus .file-cta, .file.is-warning.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(255, 217, 117, 0.25);\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-warning:active .file-cta, .file.is-warning.is-active .file-cta {\\n background-color: #ffd25c;\\n border-color: transparent;\\n color: rgba(0, 0, 0, 0.7); }\\n .file.is-danger .file-cta {\\n background-color: #f14668;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-danger:hover .file-cta, .file.is-danger.is-hovered .file-cta {\\n background-color: #f03a5f;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-danger:focus .file-cta, .file.is-danger.is-focused .file-cta {\\n border-color: transparent;\\n box-shadow: 0 0 0.5em rgba(241, 70, 104, 0.25);\\n color: #fff; }\\n .file.is-danger:active .file-cta, .file.is-danger.is-active .file-cta {\\n background-color: #ef2e55;\\n border-color: transparent;\\n color: #fff; }\\n .file.is-small {\\n font-size: 0.75rem; }\\n .file.is-normal {\\n font-size: 1rem; }\\n .file.is-medium {\\n font-size: 1.25rem; }\\n .file.is-medium .file-icon .fa {\\n font-size: 21px; }\\n .file.is-large {\\n font-size: 1.5rem; }\\n .file.is-large .file-icon .fa {\\n font-size: 28px; }\\n .file.has-name .file-cta {\\n border-bottom-right-radius: 0;\\n border-top-right-radius: 0; }\\n .file.has-name .file-name {\\n border-bottom-left-radius: 0;\\n border-top-left-radius: 0; }\\n .file.has-name.is-empty .file-cta {\\n border-radius: 4px; }\\n .file.has-name.is-empty .file-name {\\n display: none; }\\n .file.is-boxed .file-label {\\n flex-direction: column; }\\n .file.is-boxed .file-cta {\\n flex-direction: column;\\n height: auto;\\n padding: 1em 3em; }\\n .file.is-boxed .file-name {\\n border-width: 0 1px 1px; }\\n .file.is-boxed .file-icon {\\n height: 1.5em;\\n width: 1.5em; }\\n .file.is-boxed .file-icon .fa {\\n font-size: 21px; }\\n .file.is-boxed.is-small .file-icon .fa {\\n font-size: 14px; }\\n .file.is-boxed.is-medium .file-icon .fa {\\n font-size: 28px; }\\n .file.is-boxed.is-large .file-icon .fa {\\n font-size: 35px; }\\n .file.is-boxed.has-name .file-cta {\\n border-radius: 4px 4px 0 0; }\\n .file.is-boxed.has-name .file-name {\\n border-radius: 0 0 4px 4px;\\n border-width: 0 1px 1px; }\\n .file.is-centered {\\n justify-content: center; }\\n .file.is-fullwidth .file-label {\\n width: 100%; }\\n .file.is-fullwidth .file-name {\\n flex-grow: 1;\\n max-width: none; }\\n .file.is-right {\\n justify-content: flex-end; }\\n .file.is-right .file-cta {\\n border-radius: 0 4px 4px 0; }\\n .file.is-right .file-name {\\n border-radius: 4px 0 0 4px;\\n border-width: 1px 0 1px 1px;\\n order: -1; }\\n\\n.file-label {\\n align-items: stretch;\\n display: flex;\\n cursor: pointer;\\n justify-content: flex-start;\\n overflow: hidden;\\n position: relative; }\\n .file-label:hover .file-cta {\\n background-color: #eeeeee;\\n color: #363636; }\\n .file-label:hover .file-name {\\n border-color: #d5d5d5; }\\n .file-label:active .file-cta {\\n background-color: #e8e8e8;\\n color: #363636; }\\n .file-label:active .file-name {\\n border-color: #cfcfcf; }\\n\\n.file-input {\\n height: 100%;\\n left: 0;\\n opacity: 0;\\n outline: none;\\n position: absolute;\\n top: 0;\\n width: 100%; }\\n\\n.file-cta,\\n.file-name {\\n border-color: #dbdbdb;\\n border-radius: 4px;\\n font-size: 1em;\\n padding-left: 1em;\\n padding-right: 1em;\\n white-space: nowrap; }\\n\\n.file-cta {\\n background-color: whitesmoke;\\n color: #4a4a4a; }\\n\\n.file-name {\\n border-color: #dbdbdb;\\n border-style: solid;\\n border-width: 1px 1px 1px 0;\\n display: block;\\n max-width: 16em;\\n overflow: hidden;\\n text-align: inherit;\\n text-overflow: ellipsis; }\\n\\n.file-icon {\\n align-items: center;\\n display: flex;\\n height: 1em;\\n justify-content: center;\\n margin-right: 0.5em;\\n width: 1em; }\\n .file-icon .fa {\\n font-size: 14px; }\\n\\n.label {\\n color: #363636;\\n display: block;\\n font-size: 1rem;\\n font-weight: 700; }\\n .label:not(:last-child) {\\n margin-bottom: 0.5em; }\\n .label.is-small {\\n font-size: 0.75rem; }\\n .label.is-medium {\\n font-size: 1.25rem; }\\n .label.is-large {\\n font-size: 1.5rem; }\\n\\n.help {\\n display: block;\\n font-size: 0.75rem;\\n margin-top: 0.25rem; }\\n .help.is-white {\\n color: white; }\\n .help.is-black {\\n color: #0a0a0a; }\\n .help.is-light {\\n color: #d2f9d6; }\\n .help.is-dark {\\n color: #459558; }\\n .help.is-primary {\\n color: #55be6f; }\\n .help.is-link {\\n color: #4876ff; }\\n .help.is-info {\\n color: #f0f8ff; }\\n .help.is-success {\\n color: #48c78e; }\\n .help.is-warning {\\n color: #ffd975; }\\n .help.is-danger {\\n color: #f14668; }\\n\\n.field:not(:last-child) {\\n margin-bottom: 0.75rem; }\\n\\n.field.has-addons {\\n display: flex;\\n justify-content: flex-start; }\\n .field.has-addons .control:not(:last-child) {\\n margin-right: -1px; }\\n .field.has-addons .control:not(:first-child):not(:last-child) .button,\\n .field.has-addons .control:not(:first-child):not(:last-child) .input,\\n .field.has-addons .control:not(:first-child):not(:last-child) .select select {\\n border-radius: 0; }\\n .field.has-addons .control:first-child:not(:only-child) .button,\\n .field.has-addons .control:first-child:not(:only-child) .input,\\n .field.has-addons .control:first-child:not(:only-child) .select select {\\n border-bottom-right-radius: 0;\\n border-top-right-radius: 0; }\\n .field.has-addons .control:last-child:not(:only-child) .button,\\n .field.has-addons .control:last-child:not(:only-child) .input,\\n .field.has-addons .control:last-child:not(:only-child) .select select {\\n border-bottom-left-radius: 0;\\n border-top-left-radius: 0; }\\n .field.has-addons .control .button:not([disabled]):hover, .field.has-addons .control .button:not([disabled]).is-hovered,\\n .field.has-addons .control .input:not([disabled]):hover,\\n .field.has-addons .control .input:not([disabled]).is-hovered,\\n .field.has-addons .control .select select:not([disabled]):hover,\\n .field.has-addons .control .select select:not([disabled]).is-hovered {\\n z-index: 2; }\\n .field.has-addons .control .button:not([disabled]):focus, .field.has-addons .control .button:not([disabled]).is-focused, .field.has-addons .control .button:not([disabled]):active, .field.has-addons .control .button:not([disabled]).is-active,\\n .field.has-addons .control .input:not([disabled]):focus,\\n .field.has-addons .control .input:not([disabled]).is-focused,\\n .field.has-addons .control .input:not([disabled]):active,\\n .field.has-addons .control .input:not([disabled]).is-active,\\n .field.has-addons .control .select select:not([disabled]):focus,\\n .field.has-addons .control .select select:not([disabled]).is-focused,\\n .field.has-addons .control .select select:not([disabled]):active,\\n .field.has-addons .control .select select:not([disabled]).is-active {\\n z-index: 3; }\\n .field.has-addons .control .button:not([disabled]):focus:hover, .field.has-addons .control .button:not([disabled]).is-focused:hover, .field.has-addons .control .button:not([disabled]):active:hover, .field.has-addons .control .button:not([disabled]).is-active:hover,\\n .field.has-addons .control .input:not([disabled]):focus:hover,\\n .field.has-addons .control .input:not([disabled]).is-focused:hover,\\n .field.has-addons .control .input:not([disabled]):active:hover,\\n .field.has-addons .control .input:not([disabled]).is-active:hover,\\n .field.has-addons .control .select select:not([disabled]):focus:hover,\\n .field.has-addons .control .select select:not([disabled]).is-focused:hover,\\n .field.has-addons .control .select select:not([disabled]):active:hover,\\n .field.has-addons .control .select select:not([disabled]).is-active:hover {\\n z-index: 4; }\\n .field.has-addons .control.is-expanded {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .field.has-addons.has-addons-centered {\\n justify-content: center; }\\n .field.has-addons.has-addons-right {\\n justify-content: flex-end; }\\n .field.has-addons.has-addons-fullwidth .control {\\n flex-grow: 1;\\n flex-shrink: 0; }\\n\\n.field.is-grouped {\\n display: flex;\\n justify-content: flex-start; }\\n .field.is-grouped > .control {\\n flex-shrink: 0; }\\n .field.is-grouped > .control:not(:last-child) {\\n margin-bottom: 0;\\n margin-right: 0.75rem; }\\n .field.is-grouped > .control.is-expanded {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .field.is-grouped.is-grouped-centered {\\n justify-content: center; }\\n .field.is-grouped.is-grouped-right {\\n justify-content: flex-end; }\\n .field.is-grouped.is-grouped-multiline {\\n flex-wrap: wrap; }\\n .field.is-grouped.is-grouped-multiline > .control:last-child, .field.is-grouped.is-grouped-multiline > .control:not(:last-child) {\\n margin-bottom: 0.75rem; }\\n .field.is-grouped.is-grouped-multiline:last-child {\\n margin-bottom: -0.75rem; }\\n .field.is-grouped.is-grouped-multiline:not(:last-child) {\\n margin-bottom: 0; }\\n\\n@media screen and (min-width: 769px), print {\\n .field.is-horizontal {\\n display: flex; } }\\n\\n.field-label .label {\\n font-size: inherit; }\\n\\n@media screen and (max-width: 768px) {\\n .field-label {\\n margin-bottom: 0.5rem; } }\\n\\n@media screen and (min-width: 769px), print {\\n .field-label {\\n flex-basis: 0;\\n flex-grow: 1;\\n flex-shrink: 0;\\n margin-right: 1.5rem;\\n text-align: right; }\\n .field-label.is-small {\\n font-size: 0.75rem;\\n padding-top: 0.375em; }\\n .field-label.is-normal {\\n padding-top: 0.375em; }\\n .field-label.is-medium {\\n font-size: 1.25rem;\\n padding-top: 0.375em; }\\n .field-label.is-large {\\n font-size: 1.5rem;\\n padding-top: 0.375em; } }\\n\\n.field-body .field .field {\\n margin-bottom: 0; }\\n\\n@media screen and (min-width: 769px), print {\\n .field-body {\\n display: flex;\\n flex-basis: 0;\\n flex-grow: 5;\\n flex-shrink: 1; }\\n .field-body .field {\\n margin-bottom: 0; }\\n .field-body > .field {\\n flex-shrink: 1; }\\n .field-body > .field:not(.is-narrow) {\\n flex-grow: 1; }\\n .field-body > .field:not(:last-child) {\\n margin-right: 0.75rem; } }\\n\\n.control {\\n box-sizing: border-box;\\n clear: both;\\n font-size: 1rem;\\n position: relative;\\n text-align: inherit; }\\n .control.has-icons-left .input:focus ~ .icon,\\n .control.has-icons-left .select:focus ~ .icon, .control.has-icons-right .input:focus ~ .icon,\\n .control.has-icons-right .select:focus ~ .icon {\\n color: #4a4a4a; }\\n .control.has-icons-left .input.is-small ~ .icon,\\n .control.has-icons-left .select.is-small ~ .icon, .control.has-icons-right .input.is-small ~ .icon,\\n .control.has-icons-right .select.is-small ~ .icon {\\n font-size: 0.75rem; }\\n .control.has-icons-left .input.is-medium ~ .icon,\\n .control.has-icons-left .select.is-medium ~ .icon, .control.has-icons-right .input.is-medium ~ .icon,\\n .control.has-icons-right .select.is-medium ~ .icon {\\n font-size: 1.25rem; }\\n .control.has-icons-left .input.is-large ~ .icon,\\n .control.has-icons-left .select.is-large ~ .icon, .control.has-icons-right .input.is-large ~ .icon,\\n .control.has-icons-right .select.is-large ~ .icon {\\n font-size: 1.5rem; }\\n .control.has-icons-left .icon, .control.has-icons-right .icon {\\n color: #dbdbdb;\\n height: 2.5em;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n width: 2.5em;\\n z-index: 4; }\\n .control.has-icons-left .input,\\n .control.has-icons-left .select select {\\n padding-left: 2.5em; }\\n .control.has-icons-left .icon.is-left {\\n left: 0; }\\n .control.has-icons-right .input,\\n .control.has-icons-right .select select {\\n padding-right: 2.5em; }\\n .control.has-icons-right .icon.is-right {\\n right: 0; }\\n .control.is-loading::after {\\n position: absolute !important;\\n right: 0.625em;\\n top: 0.625em;\\n z-index: 4; }\\n .control.is-loading.is-small:after {\\n font-size: 0.75rem; }\\n .control.is-loading.is-medium:after {\\n font-size: 1.25rem; }\\n .control.is-loading.is-large:after {\\n font-size: 1.5rem; }\\n\\n/* Bulma Components */\\n.breadcrumb {\\n font-size: 1rem;\\n white-space: nowrap; }\\n .breadcrumb a {\\n align-items: center;\\n color: #4876ff;\\n display: flex;\\n justify-content: center;\\n padding: 0 0.75em; }\\n .breadcrumb a:hover {\\n color: #363636; }\\n .breadcrumb li {\\n align-items: center;\\n display: flex; }\\n .breadcrumb li:first-child a {\\n padding-left: 0; }\\n .breadcrumb li.is-active a {\\n color: #363636;\\n cursor: default;\\n pointer-events: none; }\\n .breadcrumb li + li::before {\\n color: #b5b5b5;\\n content: \\"\\\\0002f\\"; }\\n .breadcrumb ul,\\n .breadcrumb ol {\\n align-items: flex-start;\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-start; }\\n .breadcrumb .icon:first-child {\\n margin-right: 0.5em; }\\n .breadcrumb .icon:last-child {\\n margin-left: 0.5em; }\\n .breadcrumb.is-centered ol,\\n .breadcrumb.is-centered ul {\\n justify-content: center; }\\n .breadcrumb.is-right ol,\\n .breadcrumb.is-right ul {\\n justify-content: flex-end; }\\n .breadcrumb.is-small {\\n font-size: 0.75rem; }\\n .breadcrumb.is-medium {\\n font-size: 1.25rem; }\\n .breadcrumb.is-large {\\n font-size: 1.5rem; }\\n .breadcrumb.has-arrow-separator li + li::before {\\n content: \\"\\\\02192\\"; }\\n .breadcrumb.has-bullet-separator li + li::before {\\n content: \\"\\\\02022\\"; }\\n .breadcrumb.has-dot-separator li + li::before {\\n content: \\"\\\\000b7\\"; }\\n .breadcrumb.has-succeeds-separator li + li::before {\\n content: \\"\\\\0227B\\"; }\\n\\n.card {\\n background-color: white;\\n border-radius: 0.25rem;\\n box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02);\\n color: #4a4a4a;\\n max-width: 100%;\\n position: relative; }\\n\\n.card-header:first-child, .card-content:first-child, .card-footer:first-child {\\n border-top-left-radius: 0.25rem;\\n border-top-right-radius: 0.25rem; }\\n\\n.card-header:last-child, .card-content:last-child, .card-footer:last-child {\\n border-bottom-left-radius: 0.25rem;\\n border-bottom-right-radius: 0.25rem; }\\n\\n.card-header {\\n background-color: transparent;\\n align-items: stretch;\\n box-shadow: 0 0.125em 0.25em rgba(10, 10, 10, 0.1);\\n display: flex; }\\n\\n.card-header-title {\\n align-items: center;\\n color: #363636;\\n display: flex;\\n flex-grow: 1;\\n font-weight: 700;\\n padding: 0.75rem 1rem; }\\n .card-header-title.is-centered {\\n justify-content: center; }\\n\\n.card-header-icon {\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n appearance: none;\\n background: none;\\n border: none;\\n color: currentColor;\\n font-family: inherit;\\n font-size: 1em;\\n margin: 0;\\n padding: 0;\\n align-items: center;\\n cursor: pointer;\\n display: flex;\\n justify-content: center;\\n padding: 0.75rem 1rem; }\\n\\n.card-image {\\n display: block;\\n position: relative; }\\n .card-image:first-child img {\\n border-top-left-radius: 0.25rem;\\n border-top-right-radius: 0.25rem; }\\n .card-image:last-child img {\\n border-bottom-left-radius: 0.25rem;\\n border-bottom-right-radius: 0.25rem; }\\n\\n.card-content {\\n background-color: transparent;\\n padding: 1.5rem; }\\n\\n.card-footer {\\n background-color: transparent;\\n border-top: 1px solid #ededed;\\n align-items: stretch;\\n display: flex; }\\n\\n.card-footer-item {\\n align-items: center;\\n display: flex;\\n flex-basis: 0;\\n flex-grow: 1;\\n flex-shrink: 0;\\n justify-content: center;\\n padding: 0.75rem; }\\n .card-footer-item:not(:last-child) {\\n border-right: 1px solid #ededed; }\\n\\n.card .media:not(:last-child) {\\n margin-bottom: 1.5rem; }\\n\\n.dropdown {\\n display: inline-flex;\\n position: relative;\\n vertical-align: top; }\\n .dropdown.is-active .dropdown-menu, .dropdown.is-hoverable:hover .dropdown-menu {\\n display: block; }\\n .dropdown.is-right .dropdown-menu {\\n left: auto;\\n right: 0; }\\n .dropdown.is-up .dropdown-menu {\\n bottom: 100%;\\n padding-bottom: 4px;\\n padding-top: initial;\\n top: auto; }\\n\\n.dropdown-menu {\\n display: none;\\n left: 0;\\n min-width: 12rem;\\n padding-top: 4px;\\n position: absolute;\\n top: 100%;\\n z-index: 20; }\\n\\n.dropdown-content {\\n background-color: white;\\n border-radius: 4px;\\n box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02);\\n padding-bottom: 0.5rem;\\n padding-top: 0.5rem; }\\n\\n.dropdown-item {\\n color: #4a4a4a;\\n display: block;\\n font-size: 0.875rem;\\n line-height: 1.5;\\n padding: 0.375rem 1rem;\\n position: relative; }\\n\\na.dropdown-item,\\nbutton.dropdown-item {\\n padding-right: 3rem;\\n text-align: inherit;\\n white-space: nowrap;\\n width: 100%; }\\n a.dropdown-item:hover,\\n button.dropdown-item:hover {\\n background-color: whitesmoke;\\n color: #0a0a0a; }\\n a.dropdown-item.is-active,\\n button.dropdown-item.is-active {\\n background-color: #4876ff;\\n color: #fff; }\\n\\n.dropdown-divider {\\n background-color: #ededed;\\n border: none;\\n display: block;\\n height: 1px;\\n margin: 0.5rem 0; }\\n\\n.level {\\n align-items: center;\\n justify-content: space-between; }\\n .level code {\\n border-radius: 4px; }\\n .level img {\\n display: inline-block;\\n vertical-align: top; }\\n .level.is-mobile {\\n display: flex; }\\n .level.is-mobile .level-left,\\n .level.is-mobile .level-right {\\n display: flex; }\\n .level.is-mobile .level-left + .level-right {\\n margin-top: 0; }\\n .level.is-mobile .level-item:not(:last-child) {\\n margin-bottom: 0;\\n margin-right: 0.75rem; }\\n .level.is-mobile .level-item:not(.is-narrow) {\\n flex-grow: 1; }\\n @media screen and (min-width: 769px), print {\\n .level {\\n display: flex; }\\n .level > .level-item:not(.is-narrow) {\\n flex-grow: 1; } }\\n\\n.level-item {\\n align-items: center;\\n display: flex;\\n flex-basis: auto;\\n flex-grow: 0;\\n flex-shrink: 0;\\n justify-content: center; }\\n .level-item .title,\\n .level-item .subtitle {\\n margin-bottom: 0; }\\n @media screen and (max-width: 768px) {\\n .level-item:not(:last-child) {\\n margin-bottom: 0.75rem; } }\\n\\n.level-left,\\n.level-right {\\n flex-basis: auto;\\n flex-grow: 0;\\n flex-shrink: 0; }\\n .level-left .level-item.is-flexible,\\n .level-right .level-item.is-flexible {\\n flex-grow: 1; }\\n @media screen and (min-width: 769px), print {\\n .level-left .level-item:not(:last-child),\\n .level-right .level-item:not(:last-child) {\\n margin-right: 0.75rem; } }\\n\\n.level-left {\\n align-items: center;\\n justify-content: flex-start; }\\n @media screen and (max-width: 768px) {\\n .level-left + .level-right {\\n margin-top: 1.5rem; } }\\n @media screen and (min-width: 769px), print {\\n .level-left {\\n display: flex; } }\\n\\n.level-right {\\n align-items: center;\\n justify-content: flex-end; }\\n @media screen and (min-width: 769px), print {\\n .level-right {\\n display: flex; } }\\n\\n.media {\\n align-items: flex-start;\\n display: flex;\\n text-align: inherit; }\\n .media .content:not(:last-child) {\\n margin-bottom: 0.75rem; }\\n .media .media {\\n border-top: 1px solid rgba(219, 219, 219, 0.5);\\n display: flex;\\n padding-top: 0.75rem; }\\n .media .media .content:not(:last-child),\\n .media .media .control:not(:last-child) {\\n margin-bottom: 0.5rem; }\\n .media .media .media {\\n padding-top: 0.5rem; }\\n .media .media .media + .media {\\n margin-top: 0.5rem; }\\n .media + .media {\\n border-top: 1px solid rgba(219, 219, 219, 0.5);\\n margin-top: 1rem;\\n padding-top: 1rem; }\\n .media.is-large + .media {\\n margin-top: 1.5rem;\\n padding-top: 1.5rem; }\\n\\n.media-left,\\n.media-right {\\n flex-basis: auto;\\n flex-grow: 0;\\n flex-shrink: 0; }\\n\\n.media-left {\\n margin-right: 1rem; }\\n\\n.media-right {\\n margin-left: 1rem; }\\n\\n.media-content {\\n flex-basis: auto;\\n flex-grow: 1;\\n flex-shrink: 1;\\n text-align: inherit; }\\n\\n@media screen and (max-width: 768px) {\\n .media-content {\\n overflow-x: auto; } }\\n\\n.menu {\\n font-size: 1rem; }\\n .menu.is-small {\\n font-size: 0.75rem; }\\n .menu.is-medium {\\n font-size: 1.25rem; }\\n .menu.is-large {\\n font-size: 1.5rem; }\\n\\n.menu-list {\\n line-height: 1.25; }\\n .menu-list a {\\n border-radius: 2px;\\n color: #4a4a4a;\\n display: block;\\n padding: 0.5em 0.75em; }\\n .menu-list a:hover {\\n background-color: whitesmoke;\\n color: #363636; }\\n .menu-list a.is-active {\\n background-color: #4876ff;\\n color: #fff; }\\n .menu-list li ul {\\n border-left: 1px solid #dbdbdb;\\n margin: 0.75em;\\n padding-left: 0.75em; }\\n\\n.menu-label {\\n color: #7a7a7a;\\n font-size: 0.75em;\\n letter-spacing: 0.1em;\\n text-transform: uppercase; }\\n .menu-label:not(:first-child) {\\n margin-top: 1em; }\\n .menu-label:not(:last-child) {\\n margin-bottom: 1em; }\\n\\n.message {\\n background-color: whitesmoke;\\n border-radius: 4px;\\n font-size: 1rem; }\\n .message strong {\\n color: currentColor; }\\n .message a:not(.button):not(.tag):not(.dropdown-item) {\\n color: currentColor;\\n text-decoration: underline; }\\n .message.is-small {\\n font-size: 0.75rem; }\\n .message.is-medium {\\n font-size: 1.25rem; }\\n .message.is-large {\\n font-size: 1.5rem; }\\n .message.is-white {\\n background-color: white; }\\n .message.is-white .message-header {\\n background-color: white;\\n color: #0a0a0a; }\\n .message.is-white .message-body {\\n border-color: white; }\\n .message.is-black {\\n background-color: #fafafa; }\\n .message.is-black .message-header {\\n background-color: #0a0a0a;\\n color: white; }\\n .message.is-black .message-body {\\n border-color: #0a0a0a; }\\n .message.is-light {\\n background-color: #f6fef7; }\\n .message.is-light .message-header {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .message.is-light .message-body {\\n border-color: #d2f9d6; }\\n .message.is-dark {\\n background-color: #f8fcf9; }\\n .message.is-dark .message-header {\\n background-color: #459558;\\n color: #fff; }\\n .message.is-dark .message-body {\\n border-color: #459558; }\\n .message.is-primary {\\n background-color: #f0f9f2; }\\n .message.is-primary .message-header {\\n background-color: #55be6f;\\n color: #fff; }\\n .message.is-primary .message-body {\\n border-color: #55be6f;\\n color: #2f7a41; }\\n .message.is-link {\\n background-color: #ebf0ff; }\\n .message.is-link .message-header {\\n background-color: #4876ff;\\n color: #fff; }\\n .message.is-link .message-body {\\n border-color: #4876ff;\\n color: #0037db; }\\n .message.is-info {\\n background-color: aliceblue; }\\n .message.is-info .message-header {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .message.is-info .message-body {\\n border-color: #f0f8ff;\\n color: #004f94; }\\n .message.is-success {\\n background-color: #effaf5; }\\n .message.is-success .message-header {\\n background-color: #48c78e;\\n color: #fff; }\\n .message.is-success .message-body {\\n border-color: #48c78e;\\n color: #257953; }\\n .message.is-warning {\\n background-color: #fff9eb; }\\n .message.is-warning .message-header {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .message.is-warning .message-body {\\n border-color: #ffd975;\\n color: #946b00; }\\n .message.is-danger {\\n background-color: #feecf0; }\\n .message.is-danger .message-header {\\n background-color: #f14668;\\n color: #fff; }\\n .message.is-danger .message-body {\\n border-color: #f14668;\\n color: #cc0f35; }\\n\\n.message-header {\\n align-items: center;\\n background-color: #4a4a4a;\\n border-radius: 4px 4px 0 0;\\n color: #fff;\\n display: flex;\\n font-weight: 700;\\n justify-content: space-between;\\n line-height: 1.25;\\n padding: 0.75em 1em;\\n position: relative; }\\n .message-header .delete {\\n flex-grow: 0;\\n flex-shrink: 0;\\n margin-left: 0.75em; }\\n .message-header + .message-body {\\n border-width: 0;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0; }\\n\\n.message-body {\\n border-color: #dbdbdb;\\n border-radius: 4px;\\n border-style: solid;\\n border-width: 0 0 0 4px;\\n color: #4a4a4a;\\n padding: 1.25em 1.5em; }\\n .message-body code,\\n .message-body pre {\\n background-color: white; }\\n .message-body pre code {\\n background-color: transparent; }\\n\\n.modal {\\n align-items: center;\\n display: none;\\n flex-direction: column;\\n justify-content: center;\\n overflow: hidden;\\n position: fixed;\\n z-index: 40; }\\n .modal.is-active {\\n display: flex; }\\n\\n.modal-background {\\n background-color: rgba(10, 10, 10, 0.86); }\\n\\n.modal-content,\\n.modal-card {\\n margin: 0 20px;\\n max-height: calc(100vh - 160px);\\n overflow: auto;\\n position: relative;\\n width: 100%; }\\n @media screen and (min-width: 769px) {\\n .modal-content,\\n .modal-card {\\n margin: 0 auto;\\n max-height: calc(100vh - 40px);\\n width: 640px; } }\\n\\n.modal-close {\\n background: none;\\n height: 40px;\\n position: fixed;\\n right: 20px;\\n top: 20px;\\n width: 40px; }\\n\\n.modal-card {\\n display: flex;\\n flex-direction: column;\\n max-height: calc(100vh - 40px);\\n overflow: hidden;\\n -ms-overflow-y: visible; }\\n\\n.modal-card-head,\\n.modal-card-foot {\\n align-items: center;\\n background-color: whitesmoke;\\n display: flex;\\n flex-shrink: 0;\\n justify-content: flex-start;\\n padding: 20px;\\n position: relative; }\\n\\n.modal-card-head {\\n border-bottom: 1px solid #dbdbdb;\\n border-top-left-radius: 6px;\\n border-top-right-radius: 6px; }\\n\\n.modal-card-title {\\n color: #363636;\\n flex-grow: 1;\\n flex-shrink: 0;\\n font-size: 1.2rem;\\n line-height: 1; }\\n\\n.modal-card-foot {\\n border-bottom-left-radius: 6px;\\n border-bottom-right-radius: 6px;\\n border-top: 1px solid #dbdbdb; }\\n .modal-card-foot .button:not(:last-child) {\\n margin-right: 0.5em; }\\n\\n.modal-card-body {\\n -webkit-overflow-scrolling: touch;\\n background-color: white;\\n flex-grow: 1;\\n flex-shrink: 1;\\n overflow: auto;\\n padding: 20px; }\\n\\n.navbar {\\n background-color: white;\\n min-height: 2rem;\\n position: relative;\\n z-index: 30; }\\n .navbar.is-white {\\n background-color: white;\\n color: #0a0a0a; }\\n .navbar.is-white .navbar-brand > .navbar-item,\\n .navbar.is-white .navbar-brand .navbar-link {\\n color: #0a0a0a; }\\n .navbar.is-white .navbar-brand > a.navbar-item:focus, .navbar.is-white .navbar-brand > a.navbar-item:hover, .navbar.is-white .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-white .navbar-brand .navbar-link:focus,\\n .navbar.is-white .navbar-brand .navbar-link:hover,\\n .navbar.is-white .navbar-brand .navbar-link.is-active {\\n background-color: #f2f2f2;\\n color: #0a0a0a; }\\n .navbar.is-white .navbar-brand .navbar-link::after {\\n border-color: #0a0a0a; }\\n .navbar.is-white .navbar-burger {\\n color: #0a0a0a; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-white .navbar-start > .navbar-item,\\n .navbar.is-white .navbar-start .navbar-link,\\n .navbar.is-white .navbar-end > .navbar-item,\\n .navbar.is-white .navbar-end .navbar-link {\\n color: #0a0a0a; }\\n .navbar.is-white .navbar-start > a.navbar-item:focus, .navbar.is-white .navbar-start > a.navbar-item:hover, .navbar.is-white .navbar-start > a.navbar-item.is-active,\\n .navbar.is-white .navbar-start .navbar-link:focus,\\n .navbar.is-white .navbar-start .navbar-link:hover,\\n .navbar.is-white .navbar-start .navbar-link.is-active,\\n .navbar.is-white .navbar-end > a.navbar-item:focus,\\n .navbar.is-white .navbar-end > a.navbar-item:hover,\\n .navbar.is-white .navbar-end > a.navbar-item.is-active,\\n .navbar.is-white .navbar-end .navbar-link:focus,\\n .navbar.is-white .navbar-end .navbar-link:hover,\\n .navbar.is-white .navbar-end .navbar-link.is-active {\\n background-color: #f2f2f2;\\n color: #0a0a0a; }\\n .navbar.is-white .navbar-start .navbar-link::after,\\n .navbar.is-white .navbar-end .navbar-link::after {\\n border-color: #0a0a0a; }\\n .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #f2f2f2;\\n color: #0a0a0a; }\\n .navbar.is-white .navbar-dropdown a.navbar-item.is-active {\\n background-color: white;\\n color: #0a0a0a; } }\\n .navbar.is-black {\\n background-color: #0a0a0a;\\n color: white; }\\n .navbar.is-black .navbar-brand > .navbar-item,\\n .navbar.is-black .navbar-brand .navbar-link {\\n color: white; }\\n .navbar.is-black .navbar-brand > a.navbar-item:focus, .navbar.is-black .navbar-brand > a.navbar-item:hover, .navbar.is-black .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-black .navbar-brand .navbar-link:focus,\\n .navbar.is-black .navbar-brand .navbar-link:hover,\\n .navbar.is-black .navbar-brand .navbar-link.is-active {\\n background-color: black;\\n color: white; }\\n .navbar.is-black .navbar-brand .navbar-link::after {\\n border-color: white; }\\n .navbar.is-black .navbar-burger {\\n color: white; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-black .navbar-start > .navbar-item,\\n .navbar.is-black .navbar-start .navbar-link,\\n .navbar.is-black .navbar-end > .navbar-item,\\n .navbar.is-black .navbar-end .navbar-link {\\n color: white; }\\n .navbar.is-black .navbar-start > a.navbar-item:focus, .navbar.is-black .navbar-start > a.navbar-item:hover, .navbar.is-black .navbar-start > a.navbar-item.is-active,\\n .navbar.is-black .navbar-start .navbar-link:focus,\\n .navbar.is-black .navbar-start .navbar-link:hover,\\n .navbar.is-black .navbar-start .navbar-link.is-active,\\n .navbar.is-black .navbar-end > a.navbar-item:focus,\\n .navbar.is-black .navbar-end > a.navbar-item:hover,\\n .navbar.is-black .navbar-end > a.navbar-item.is-active,\\n .navbar.is-black .navbar-end .navbar-link:focus,\\n .navbar.is-black .navbar-end .navbar-link:hover,\\n .navbar.is-black .navbar-end .navbar-link.is-active {\\n background-color: black;\\n color: white; }\\n .navbar.is-black .navbar-start .navbar-link::after,\\n .navbar.is-black .navbar-end .navbar-link::after {\\n border-color: white; }\\n .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: black;\\n color: white; }\\n .navbar.is-black .navbar-dropdown a.navbar-item.is-active {\\n background-color: #0a0a0a;\\n color: white; } }\\n .navbar.is-light {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-brand > .navbar-item,\\n .navbar.is-light .navbar-brand .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-brand > a.navbar-item:focus, .navbar.is-light .navbar-brand > a.navbar-item:hover, .navbar.is-light .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-light .navbar-brand .navbar-link:focus,\\n .navbar.is-light .navbar-brand .navbar-link:hover,\\n .navbar.is-light .navbar-brand .navbar-link.is-active {\\n background-color: #bcf6c2;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-brand .navbar-link::after {\\n border-color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-burger {\\n color: rgba(0, 0, 0, 0.7); }\\n @media screen and (min-width: 840px) {\\n .navbar.is-light .navbar-start > .navbar-item,\\n .navbar.is-light .navbar-start .navbar-link,\\n .navbar.is-light .navbar-end > .navbar-item,\\n .navbar.is-light .navbar-end .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-start > a.navbar-item:focus, .navbar.is-light .navbar-start > a.navbar-item:hover, .navbar.is-light .navbar-start > a.navbar-item.is-active,\\n .navbar.is-light .navbar-start .navbar-link:focus,\\n .navbar.is-light .navbar-start .navbar-link:hover,\\n .navbar.is-light .navbar-start .navbar-link.is-active,\\n .navbar.is-light .navbar-end > a.navbar-item:focus,\\n .navbar.is-light .navbar-end > a.navbar-item:hover,\\n .navbar.is-light .navbar-end > a.navbar-item.is-active,\\n .navbar.is-light .navbar-end .navbar-link:focus,\\n .navbar.is-light .navbar-end .navbar-link:hover,\\n .navbar.is-light .navbar-end .navbar-link.is-active {\\n background-color: #bcf6c2;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-start .navbar-link::after,\\n .navbar.is-light .navbar-end .navbar-link::after {\\n border-color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #bcf6c2;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-light .navbar-dropdown a.navbar-item.is-active {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); } }\\n .navbar.is-dark {\\n background-color: #459558;\\n color: #fff; }\\n .navbar.is-dark .navbar-brand > .navbar-item,\\n .navbar.is-dark .navbar-brand .navbar-link {\\n color: #fff; }\\n .navbar.is-dark .navbar-brand > a.navbar-item:focus, .navbar.is-dark .navbar-brand > a.navbar-item:hover, .navbar.is-dark .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-dark .navbar-brand .navbar-link:focus,\\n .navbar.is-dark .navbar-brand .navbar-link:hover,\\n .navbar.is-dark .navbar-brand .navbar-link.is-active {\\n background-color: #3d844e;\\n color: #fff; }\\n .navbar.is-dark .navbar-brand .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-dark .navbar-burger {\\n color: #fff; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-dark .navbar-start > .navbar-item,\\n .navbar.is-dark .navbar-start .navbar-link,\\n .navbar.is-dark .navbar-end > .navbar-item,\\n .navbar.is-dark .navbar-end .navbar-link {\\n color: #fff; }\\n .navbar.is-dark .navbar-start > a.navbar-item:focus, .navbar.is-dark .navbar-start > a.navbar-item:hover, .navbar.is-dark .navbar-start > a.navbar-item.is-active,\\n .navbar.is-dark .navbar-start .navbar-link:focus,\\n .navbar.is-dark .navbar-start .navbar-link:hover,\\n .navbar.is-dark .navbar-start .navbar-link.is-active,\\n .navbar.is-dark .navbar-end > a.navbar-item:focus,\\n .navbar.is-dark .navbar-end > a.navbar-item:hover,\\n .navbar.is-dark .navbar-end > a.navbar-item.is-active,\\n .navbar.is-dark .navbar-end .navbar-link:focus,\\n .navbar.is-dark .navbar-end .navbar-link:hover,\\n .navbar.is-dark .navbar-end .navbar-link.is-active {\\n background-color: #3d844e;\\n color: #fff; }\\n .navbar.is-dark .navbar-start .navbar-link::after,\\n .navbar.is-dark .navbar-end .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #3d844e;\\n color: #fff; }\\n .navbar.is-dark .navbar-dropdown a.navbar-item.is-active {\\n background-color: #459558;\\n color: #fff; } }\\n .navbar.is-primary {\\n background-color: #55be6f;\\n color: #fff; }\\n .navbar.is-primary .navbar-brand > .navbar-item,\\n .navbar.is-primary .navbar-brand .navbar-link {\\n color: #fff; }\\n .navbar.is-primary .navbar-brand > a.navbar-item:focus, .navbar.is-primary .navbar-brand > a.navbar-item:hover, .navbar.is-primary .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-primary .navbar-brand .navbar-link:focus,\\n .navbar.is-primary .navbar-brand .navbar-link:hover,\\n .navbar.is-primary .navbar-brand .navbar-link.is-active {\\n background-color: #45b461;\\n color: #fff; }\\n .navbar.is-primary .navbar-brand .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-primary .navbar-burger {\\n color: #fff; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-primary .navbar-start > .navbar-item,\\n .navbar.is-primary .navbar-start .navbar-link,\\n .navbar.is-primary .navbar-end > .navbar-item,\\n .navbar.is-primary .navbar-end .navbar-link {\\n color: #fff; }\\n .navbar.is-primary .navbar-start > a.navbar-item:focus, .navbar.is-primary .navbar-start > a.navbar-item:hover, .navbar.is-primary .navbar-start > a.navbar-item.is-active,\\n .navbar.is-primary .navbar-start .navbar-link:focus,\\n .navbar.is-primary .navbar-start .navbar-link:hover,\\n .navbar.is-primary .navbar-start .navbar-link.is-active,\\n .navbar.is-primary .navbar-end > a.navbar-item:focus,\\n .navbar.is-primary .navbar-end > a.navbar-item:hover,\\n .navbar.is-primary .navbar-end > a.navbar-item.is-active,\\n .navbar.is-primary .navbar-end .navbar-link:focus,\\n .navbar.is-primary .navbar-end .navbar-link:hover,\\n .navbar.is-primary .navbar-end .navbar-link.is-active {\\n background-color: #45b461;\\n color: #fff; }\\n .navbar.is-primary .navbar-start .navbar-link::after,\\n .navbar.is-primary .navbar-end .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #45b461;\\n color: #fff; }\\n .navbar.is-primary .navbar-dropdown a.navbar-item.is-active {\\n background-color: #55be6f;\\n color: #fff; } }\\n .navbar.is-link {\\n background-color: #4876ff;\\n color: #fff; }\\n .navbar.is-link .navbar-brand > .navbar-item,\\n .navbar.is-link .navbar-brand .navbar-link {\\n color: #fff; }\\n .navbar.is-link .navbar-brand > a.navbar-item:focus, .navbar.is-link .navbar-brand > a.navbar-item:hover, .navbar.is-link .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-link .navbar-brand .navbar-link:focus,\\n .navbar.is-link .navbar-brand .navbar-link:hover,\\n .navbar.is-link .navbar-brand .navbar-link.is-active {\\n background-color: #2f63ff;\\n color: #fff; }\\n .navbar.is-link .navbar-brand .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-link .navbar-burger {\\n color: #fff; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-link .navbar-start > .navbar-item,\\n .navbar.is-link .navbar-start .navbar-link,\\n .navbar.is-link .navbar-end > .navbar-item,\\n .navbar.is-link .navbar-end .navbar-link {\\n color: #fff; }\\n .navbar.is-link .navbar-start > a.navbar-item:focus, .navbar.is-link .navbar-start > a.navbar-item:hover, .navbar.is-link .navbar-start > a.navbar-item.is-active,\\n .navbar.is-link .navbar-start .navbar-link:focus,\\n .navbar.is-link .navbar-start .navbar-link:hover,\\n .navbar.is-link .navbar-start .navbar-link.is-active,\\n .navbar.is-link .navbar-end > a.navbar-item:focus,\\n .navbar.is-link .navbar-end > a.navbar-item:hover,\\n .navbar.is-link .navbar-end > a.navbar-item.is-active,\\n .navbar.is-link .navbar-end .navbar-link:focus,\\n .navbar.is-link .navbar-end .navbar-link:hover,\\n .navbar.is-link .navbar-end .navbar-link.is-active {\\n background-color: #2f63ff;\\n color: #fff; }\\n .navbar.is-link .navbar-start .navbar-link::after,\\n .navbar.is-link .navbar-end .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #2f63ff;\\n color: #fff; }\\n .navbar.is-link .navbar-dropdown a.navbar-item.is-active {\\n background-color: #4876ff;\\n color: #fff; } }\\n .navbar.is-info {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-brand > .navbar-item,\\n .navbar.is-info .navbar-brand .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-brand > a.navbar-item:focus, .navbar.is-info .navbar-brand > a.navbar-item:hover, .navbar.is-info .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-info .navbar-brand .navbar-link:focus,\\n .navbar.is-info .navbar-brand .navbar-link:hover,\\n .navbar.is-info .navbar-brand .navbar-link.is-active {\\n background-color: #d7ecff;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-brand .navbar-link::after {\\n border-color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-burger {\\n color: rgba(0, 0, 0, 0.7); }\\n @media screen and (min-width: 840px) {\\n .navbar.is-info .navbar-start > .navbar-item,\\n .navbar.is-info .navbar-start .navbar-link,\\n .navbar.is-info .navbar-end > .navbar-item,\\n .navbar.is-info .navbar-end .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-start > a.navbar-item:focus, .navbar.is-info .navbar-start > a.navbar-item:hover, .navbar.is-info .navbar-start > a.navbar-item.is-active,\\n .navbar.is-info .navbar-start .navbar-link:focus,\\n .navbar.is-info .navbar-start .navbar-link:hover,\\n .navbar.is-info .navbar-start .navbar-link.is-active,\\n .navbar.is-info .navbar-end > a.navbar-item:focus,\\n .navbar.is-info .navbar-end > a.navbar-item:hover,\\n .navbar.is-info .navbar-end > a.navbar-item.is-active,\\n .navbar.is-info .navbar-end .navbar-link:focus,\\n .navbar.is-info .navbar-end .navbar-link:hover,\\n .navbar.is-info .navbar-end .navbar-link.is-active {\\n background-color: #d7ecff;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-start .navbar-link::after,\\n .navbar.is-info .navbar-end .navbar-link::after {\\n border-color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #d7ecff;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-info .navbar-dropdown a.navbar-item.is-active {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); } }\\n .navbar.is-success {\\n background-color: #48c78e;\\n color: #fff; }\\n .navbar.is-success .navbar-brand > .navbar-item,\\n .navbar.is-success .navbar-brand .navbar-link {\\n color: #fff; }\\n .navbar.is-success .navbar-brand > a.navbar-item:focus, .navbar.is-success .navbar-brand > a.navbar-item:hover, .navbar.is-success .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-success .navbar-brand .navbar-link:focus,\\n .navbar.is-success .navbar-brand .navbar-link:hover,\\n .navbar.is-success .navbar-brand .navbar-link.is-active {\\n background-color: #3abb81;\\n color: #fff; }\\n .navbar.is-success .navbar-brand .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-success .navbar-burger {\\n color: #fff; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-success .navbar-start > .navbar-item,\\n .navbar.is-success .navbar-start .navbar-link,\\n .navbar.is-success .navbar-end > .navbar-item,\\n .navbar.is-success .navbar-end .navbar-link {\\n color: #fff; }\\n .navbar.is-success .navbar-start > a.navbar-item:focus, .navbar.is-success .navbar-start > a.navbar-item:hover, .navbar.is-success .navbar-start > a.navbar-item.is-active,\\n .navbar.is-success .navbar-start .navbar-link:focus,\\n .navbar.is-success .navbar-start .navbar-link:hover,\\n .navbar.is-success .navbar-start .navbar-link.is-active,\\n .navbar.is-success .navbar-end > a.navbar-item:focus,\\n .navbar.is-success .navbar-end > a.navbar-item:hover,\\n .navbar.is-success .navbar-end > a.navbar-item.is-active,\\n .navbar.is-success .navbar-end .navbar-link:focus,\\n .navbar.is-success .navbar-end .navbar-link:hover,\\n .navbar.is-success .navbar-end .navbar-link.is-active {\\n background-color: #3abb81;\\n color: #fff; }\\n .navbar.is-success .navbar-start .navbar-link::after,\\n .navbar.is-success .navbar-end .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #3abb81;\\n color: #fff; }\\n .navbar.is-success .navbar-dropdown a.navbar-item.is-active {\\n background-color: #48c78e;\\n color: #fff; } }\\n .navbar.is-warning {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-brand > .navbar-item,\\n .navbar.is-warning .navbar-brand .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-brand > a.navbar-item:focus, .navbar.is-warning .navbar-brand > a.navbar-item:hover, .navbar.is-warning .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-warning .navbar-brand .navbar-link:focus,\\n .navbar.is-warning .navbar-brand .navbar-link:hover,\\n .navbar.is-warning .navbar-brand .navbar-link.is-active {\\n background-color: #ffd25c;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-brand .navbar-link::after {\\n border-color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-burger {\\n color: rgba(0, 0, 0, 0.7); }\\n @media screen and (min-width: 840px) {\\n .navbar.is-warning .navbar-start > .navbar-item,\\n .navbar.is-warning .navbar-start .navbar-link,\\n .navbar.is-warning .navbar-end > .navbar-item,\\n .navbar.is-warning .navbar-end .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-start > a.navbar-item:focus, .navbar.is-warning .navbar-start > a.navbar-item:hover, .navbar.is-warning .navbar-start > a.navbar-item.is-active,\\n .navbar.is-warning .navbar-start .navbar-link:focus,\\n .navbar.is-warning .navbar-start .navbar-link:hover,\\n .navbar.is-warning .navbar-start .navbar-link.is-active,\\n .navbar.is-warning .navbar-end > a.navbar-item:focus,\\n .navbar.is-warning .navbar-end > a.navbar-item:hover,\\n .navbar.is-warning .navbar-end > a.navbar-item.is-active,\\n .navbar.is-warning .navbar-end .navbar-link:focus,\\n .navbar.is-warning .navbar-end .navbar-link:hover,\\n .navbar.is-warning .navbar-end .navbar-link.is-active {\\n background-color: #ffd25c;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-start .navbar-link::after,\\n .navbar.is-warning .navbar-end .navbar-link::after {\\n border-color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #ffd25c;\\n color: rgba(0, 0, 0, 0.7); }\\n .navbar.is-warning .navbar-dropdown a.navbar-item.is-active {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); } }\\n .navbar.is-danger {\\n background-color: #f14668;\\n color: #fff; }\\n .navbar.is-danger .navbar-brand > .navbar-item,\\n .navbar.is-danger .navbar-brand .navbar-link {\\n color: #fff; }\\n .navbar.is-danger .navbar-brand > a.navbar-item:focus, .navbar.is-danger .navbar-brand > a.navbar-item:hover, .navbar.is-danger .navbar-brand > a.navbar-item.is-active,\\n .navbar.is-danger .navbar-brand .navbar-link:focus,\\n .navbar.is-danger .navbar-brand .navbar-link:hover,\\n .navbar.is-danger .navbar-brand .navbar-link.is-active {\\n background-color: #ef2e55;\\n color: #fff; }\\n .navbar.is-danger .navbar-brand .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-danger .navbar-burger {\\n color: #fff; }\\n @media screen and (min-width: 840px) {\\n .navbar.is-danger .navbar-start > .navbar-item,\\n .navbar.is-danger .navbar-start .navbar-link,\\n .navbar.is-danger .navbar-end > .navbar-item,\\n .navbar.is-danger .navbar-end .navbar-link {\\n color: #fff; }\\n .navbar.is-danger .navbar-start > a.navbar-item:focus, .navbar.is-danger .navbar-start > a.navbar-item:hover, .navbar.is-danger .navbar-start > a.navbar-item.is-active,\\n .navbar.is-danger .navbar-start .navbar-link:focus,\\n .navbar.is-danger .navbar-start .navbar-link:hover,\\n .navbar.is-danger .navbar-start .navbar-link.is-active,\\n .navbar.is-danger .navbar-end > a.navbar-item:focus,\\n .navbar.is-danger .navbar-end > a.navbar-item:hover,\\n .navbar.is-danger .navbar-end > a.navbar-item.is-active,\\n .navbar.is-danger .navbar-end .navbar-link:focus,\\n .navbar.is-danger .navbar-end .navbar-link:hover,\\n .navbar.is-danger .navbar-end .navbar-link.is-active {\\n background-color: #ef2e55;\\n color: #fff; }\\n .navbar.is-danger .navbar-start .navbar-link::after,\\n .navbar.is-danger .navbar-end .navbar-link::after {\\n border-color: #fff; }\\n .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,\\n .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,\\n .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #ef2e55;\\n color: #fff; }\\n .navbar.is-danger .navbar-dropdown a.navbar-item.is-active {\\n background-color: #f14668;\\n color: #fff; } }\\n .navbar > .container {\\n align-items: stretch;\\n display: flex;\\n min-height: 2rem;\\n width: 100%; }\\n .navbar.has-shadow {\\n box-shadow: 0 2px 0 0 whitesmoke; }\\n .navbar.is-fixed-bottom, .navbar.is-fixed-top {\\n left: 0;\\n position: fixed;\\n right: 0;\\n z-index: 30; }\\n .navbar.is-fixed-bottom {\\n bottom: 0; }\\n .navbar.is-fixed-bottom.has-shadow {\\n box-shadow: 0 -2px 0 0 whitesmoke; }\\n .navbar.is-fixed-top {\\n top: 0; }\\n\\nhtml.has-navbar-fixed-top,\\nbody.has-navbar-fixed-top {\\n padding-top: 2rem; }\\n\\nhtml.has-navbar-fixed-bottom,\\nbody.has-navbar-fixed-bottom {\\n padding-bottom: 2rem; }\\n\\n.navbar-brand,\\n.navbar-tabs {\\n align-items: stretch;\\n display: flex;\\n flex-shrink: 0;\\n min-height: 2rem; }\\n\\n.navbar-brand a.navbar-item:focus, .navbar-brand a.navbar-item:hover {\\n background-color: transparent; }\\n\\n.navbar-tabs {\\n -webkit-overflow-scrolling: touch;\\n max-width: 100vw;\\n overflow-x: auto;\\n overflow-y: hidden; }\\n\\n.navbar-burger {\\n color: #4a4a4a;\\n cursor: pointer;\\n display: block;\\n height: 2rem;\\n position: relative;\\n width: 2rem;\\n margin-left: auto; }\\n .navbar-burger span {\\n background-color: currentColor;\\n display: block;\\n height: 1px;\\n left: calc(50% - 8px);\\n position: absolute;\\n transform-origin: center;\\n transition-duration: 86ms;\\n transition-property: background-color, opacity, transform;\\n transition-timing-function: ease-out;\\n width: 16px; }\\n .navbar-burger span:nth-child(1) {\\n top: calc(50% - 6px); }\\n .navbar-burger span:nth-child(2) {\\n top: calc(50% - 1px); }\\n .navbar-burger span:nth-child(3) {\\n top: calc(50% + 4px); }\\n .navbar-burger:hover {\\n background-color: rgba(0, 0, 0, 0.05); }\\n .navbar-burger.is-active span:nth-child(1) {\\n transform: translateY(5px) rotate(45deg); }\\n .navbar-burger.is-active span:nth-child(2) {\\n opacity: 0; }\\n .navbar-burger.is-active span:nth-child(3) {\\n transform: translateY(-5px) rotate(-45deg); }\\n\\n.navbar-menu {\\n display: none; }\\n\\n.navbar-item,\\n.navbar-link {\\n color: #4a4a4a;\\n display: block;\\n line-height: 1.5;\\n padding: 0.5rem 0.75rem;\\n position: relative; }\\n .navbar-item .icon:only-child,\\n .navbar-link .icon:only-child {\\n margin-left: -0.25rem;\\n margin-right: -0.25rem; }\\n\\na.navbar-item,\\n.navbar-link {\\n cursor: pointer; }\\n a.navbar-item:focus, a.navbar-item:focus-within, a.navbar-item:hover, a.navbar-item.is-active,\\n .navbar-link:focus,\\n .navbar-link:focus-within,\\n .navbar-link:hover,\\n .navbar-link.is-active {\\n background-color: #fafafa;\\n color: #4876ff; }\\n\\n.navbar-item {\\n flex-grow: 0;\\n flex-shrink: 0; }\\n .navbar-item img {\\n max-height: 1.75rem; }\\n .navbar-item.has-dropdown {\\n padding: 0; }\\n .navbar-item.is-expanded {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .navbar-item.is-tab {\\n border-bottom: 1px solid transparent;\\n min-height: 2rem;\\n padding-bottom: calc(0.5rem - 1px); }\\n .navbar-item.is-tab:focus, .navbar-item.is-tab:hover {\\n background-color: transparent;\\n border-bottom-color: #4876ff; }\\n .navbar-item.is-tab.is-active {\\n background-color: transparent;\\n border-bottom-color: #4876ff;\\n border-bottom-style: solid;\\n border-bottom-width: 3px;\\n color: #4876ff;\\n padding-bottom: calc(0.5rem - 3px); }\\n\\n.navbar-content {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n\\n.navbar-link:not(.is-arrowless) {\\n padding-right: 2.5em; }\\n .navbar-link:not(.is-arrowless)::after {\\n border-color: #4876ff;\\n margin-top: -0.375em;\\n right: 1.125em; }\\n\\n.navbar-dropdown {\\n font-size: 0.875rem;\\n padding-bottom: 0.5rem;\\n padding-top: 0.5rem; }\\n .navbar-dropdown .navbar-item {\\n padding-left: 1.5rem;\\n padding-right: 1.5rem; }\\n\\n.navbar-divider {\\n background-color: whitesmoke;\\n border: none;\\n display: none;\\n height: 2px;\\n margin: 0.5rem 0; }\\n\\n@media screen and (max-width: 839px) {\\n .navbar > .container {\\n display: block; }\\n .navbar-brand .navbar-item,\\n .navbar-tabs .navbar-item {\\n align-items: center;\\n display: flex; }\\n .navbar-link::after {\\n display: none; }\\n .navbar-menu {\\n background-color: white;\\n box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1);\\n padding: 0.5rem 0; }\\n .navbar-menu.is-active {\\n display: block; }\\n .navbar.is-fixed-bottom-touch, .navbar.is-fixed-top-touch {\\n left: 0;\\n position: fixed;\\n right: 0;\\n z-index: 30; }\\n .navbar.is-fixed-bottom-touch {\\n bottom: 0; }\\n .navbar.is-fixed-bottom-touch.has-shadow {\\n box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); }\\n .navbar.is-fixed-top-touch {\\n top: 0; }\\n .navbar.is-fixed-top .navbar-menu, .navbar.is-fixed-top-touch .navbar-menu {\\n -webkit-overflow-scrolling: touch;\\n max-height: calc(100vh - 2rem);\\n overflow: auto; }\\n html.has-navbar-fixed-top-touch,\\n body.has-navbar-fixed-top-touch {\\n padding-top: 2rem; }\\n html.has-navbar-fixed-bottom-touch,\\n body.has-navbar-fixed-bottom-touch {\\n padding-bottom: 2rem; } }\\n\\n@media screen and (min-width: 840px) {\\n .navbar,\\n .navbar-menu,\\n .navbar-start,\\n .navbar-end {\\n align-items: stretch;\\n display: flex; }\\n .navbar {\\n min-height: 2rem; }\\n .navbar.is-spaced {\\n padding: 1rem 2rem; }\\n .navbar.is-spaced .navbar-start,\\n .navbar.is-spaced .navbar-end {\\n align-items: center; }\\n .navbar.is-spaced a.navbar-item,\\n .navbar.is-spaced .navbar-link {\\n border-radius: 4px; }\\n .navbar.is-transparent a.navbar-item:focus, .navbar.is-transparent a.navbar-item:hover, .navbar.is-transparent a.navbar-item.is-active,\\n .navbar.is-transparent .navbar-link:focus,\\n .navbar.is-transparent .navbar-link:hover,\\n .navbar.is-transparent .navbar-link.is-active {\\n background-color: transparent !important; }\\n .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link {\\n background-color: transparent !important; }\\n .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, .navbar.is-transparent .navbar-dropdown a.navbar-item:hover {\\n background-color: whitesmoke;\\n color: #0a0a0a; }\\n .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active {\\n background-color: whitesmoke;\\n color: #4876ff; }\\n .navbar-burger {\\n display: none; }\\n .navbar-item,\\n .navbar-link {\\n align-items: center;\\n display: flex; }\\n .navbar-item.has-dropdown {\\n align-items: stretch; }\\n .navbar-item.has-dropdown-up .navbar-link::after {\\n transform: rotate(135deg) translate(0.25em, -0.25em); }\\n .navbar-item.has-dropdown-up .navbar-dropdown {\\n border-bottom: 2px solid #dbdbdb;\\n border-radius: 6px 6px 0 0;\\n border-top: none;\\n bottom: 100%;\\n box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1);\\n top: auto; }\\n .navbar-item.is-active .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown {\\n display: block; }\\n .navbar.is-spaced .navbar-item.is-active .navbar-dropdown, .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed {\\n opacity: 1;\\n pointer-events: auto;\\n transform: translateY(0); }\\n .navbar-menu {\\n flex-grow: 1;\\n flex-shrink: 0; }\\n .navbar-start {\\n justify-content: flex-start;\\n margin-right: auto; }\\n .navbar-end {\\n justify-content: flex-end;\\n margin-left: auto; }\\n .navbar-dropdown {\\n background-color: white;\\n border-bottom-left-radius: 6px;\\n border-bottom-right-radius: 6px;\\n border-top: 2px solid #dbdbdb;\\n box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1);\\n display: none;\\n font-size: 0.875rem;\\n left: 0;\\n min-width: 100%;\\n position: absolute;\\n top: 100%;\\n z-index: 20; }\\n .navbar-dropdown .navbar-item {\\n padding: 0.375rem 1rem;\\n white-space: nowrap; }\\n .navbar-dropdown a.navbar-item {\\n padding-right: 3rem; }\\n .navbar-dropdown a.navbar-item:focus, .navbar-dropdown a.navbar-item:hover {\\n background-color: whitesmoke;\\n color: #0a0a0a; }\\n .navbar-dropdown a.navbar-item.is-active {\\n background-color: whitesmoke;\\n color: #4876ff; }\\n .navbar.is-spaced .navbar-dropdown, .navbar-dropdown.is-boxed {\\n border-radius: 6px;\\n border-top: none;\\n box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);\\n display: block;\\n opacity: 0;\\n pointer-events: none;\\n top: calc(100% + (-4px));\\n transform: translateY(-5px);\\n transition-duration: 86ms;\\n transition-property: opacity, transform; }\\n .navbar-dropdown.is-right {\\n left: auto;\\n right: 0; }\\n .navbar-divider {\\n display: block; }\\n .navbar > .container .navbar-brand,\\n .container > .navbar .navbar-brand {\\n margin-left: -0.75rem; }\\n .navbar > .container .navbar-menu,\\n .container > .navbar .navbar-menu {\\n margin-right: -0.75rem; }\\n .navbar.is-fixed-bottom-desktop, .navbar.is-fixed-top-desktop {\\n left: 0;\\n position: fixed;\\n right: 0;\\n z-index: 30; }\\n .navbar.is-fixed-bottom-desktop {\\n bottom: 0; }\\n .navbar.is-fixed-bottom-desktop.has-shadow {\\n box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); }\\n .navbar.is-fixed-top-desktop {\\n top: 0; }\\n html.has-navbar-fixed-top-desktop,\\n body.has-navbar-fixed-top-desktop {\\n padding-top: 2rem; }\\n html.has-navbar-fixed-bottom-desktop,\\n body.has-navbar-fixed-bottom-desktop {\\n padding-bottom: 2rem; }\\n html.has-spaced-navbar-fixed-top,\\n body.has-spaced-navbar-fixed-top {\\n padding-top: 4rem; }\\n html.has-spaced-navbar-fixed-bottom,\\n body.has-spaced-navbar-fixed-bottom {\\n padding-bottom: 4rem; }\\n a.navbar-item.is-active,\\n .navbar-link.is-active {\\n color: #0a0a0a; }\\n a.navbar-item.is-active:not(:focus):not(:hover),\\n .navbar-link.is-active:not(:focus):not(:hover) {\\n background-color: transparent; }\\n .navbar-item.has-dropdown:focus .navbar-link, .navbar-item.has-dropdown:hover .navbar-link, .navbar-item.has-dropdown.is-active .navbar-link {\\n background-color: #fafafa; } }\\n\\n.hero.is-fullheight-with-navbar {\\n min-height: calc(100vh - 2rem); }\\n\\n.pagination {\\n font-size: 1rem;\\n margin: -0.25rem; }\\n .pagination.is-small {\\n font-size: 0.75rem; }\\n .pagination.is-medium {\\n font-size: 1.25rem; }\\n .pagination.is-large {\\n font-size: 1.5rem; }\\n .pagination.is-rounded .pagination-previous,\\n .pagination.is-rounded .pagination-next {\\n padding-left: 1em;\\n padding-right: 1em;\\n border-radius: 9999px; }\\n .pagination.is-rounded .pagination-link {\\n border-radius: 9999px; }\\n\\n.pagination,\\n.pagination-list {\\n align-items: center;\\n display: flex;\\n justify-content: center;\\n text-align: center; }\\n\\n.pagination-previous,\\n.pagination-next,\\n.pagination-link,\\n.pagination-ellipsis {\\n font-size: 1em;\\n justify-content: center;\\n margin: 0.25rem;\\n padding-left: 0.5em;\\n padding-right: 0.5em;\\n text-align: center; }\\n\\n.pagination-previous,\\n.pagination-next,\\n.pagination-link {\\n border-color: #dbdbdb;\\n color: #363636;\\n min-width: 2.5em; }\\n .pagination-previous:hover,\\n .pagination-next:hover,\\n .pagination-link:hover {\\n border-color: #b5b5b5;\\n color: #363636; }\\n .pagination-previous:focus,\\n .pagination-next:focus,\\n .pagination-link:focus {\\n border-color: #485fc7; }\\n .pagination-previous:active,\\n .pagination-next:active,\\n .pagination-link:active {\\n box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); }\\n .pagination-previous[disabled],\\n .pagination-next[disabled],\\n .pagination-link[disabled] {\\n background-color: #dbdbdb;\\n border-color: #dbdbdb;\\n box-shadow: none;\\n color: #7a7a7a;\\n opacity: 0.5; }\\n\\n.pagination-previous,\\n.pagination-next {\\n padding-left: 0.75em;\\n padding-right: 0.75em;\\n white-space: nowrap; }\\n\\n.pagination-link.is-current {\\n background-color: #4876ff;\\n border-color: #4876ff;\\n color: #fff; }\\n\\n.pagination-ellipsis {\\n color: #b5b5b5;\\n pointer-events: none; }\\n\\n.pagination-list {\\n flex-wrap: wrap; }\\n .pagination-list li {\\n list-style: none; }\\n\\n@media screen and (max-width: 768px) {\\n .pagination {\\n flex-wrap: wrap; }\\n .pagination-previous,\\n .pagination-next {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .pagination-list li {\\n flex-grow: 1;\\n flex-shrink: 1; } }\\n\\n@media screen and (min-width: 769px), print {\\n .pagination-list {\\n flex-grow: 1;\\n flex-shrink: 1;\\n justify-content: flex-start;\\n order: 1; }\\n .pagination-previous,\\n .pagination-next,\\n .pagination-link,\\n .pagination-ellipsis {\\n margin-bottom: 0;\\n margin-top: 0; }\\n .pagination-previous {\\n order: 2; }\\n .pagination-next {\\n order: 3; }\\n .pagination {\\n justify-content: space-between;\\n margin-bottom: 0;\\n margin-top: 0; }\\n .pagination.is-centered .pagination-previous {\\n order: 1; }\\n .pagination.is-centered .pagination-list {\\n justify-content: center;\\n order: 2; }\\n .pagination.is-centered .pagination-next {\\n order: 3; }\\n .pagination.is-right .pagination-previous {\\n order: 1; }\\n .pagination.is-right .pagination-next {\\n order: 2; }\\n .pagination.is-right .pagination-list {\\n justify-content: flex-end;\\n order: 3; } }\\n\\n.panel {\\n border-radius: 6px;\\n box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02);\\n font-size: 1rem; }\\n .panel:not(:last-child) {\\n margin-bottom: 1.5rem; }\\n .panel.is-white .panel-heading {\\n background-color: white;\\n color: #0a0a0a; }\\n .panel.is-white .panel-tabs a.is-active {\\n border-bottom-color: white; }\\n .panel.is-white .panel-block.is-active .panel-icon {\\n color: white; }\\n .panel.is-black .panel-heading {\\n background-color: #0a0a0a;\\n color: white; }\\n .panel.is-black .panel-tabs a.is-active {\\n border-bottom-color: #0a0a0a; }\\n .panel.is-black .panel-block.is-active .panel-icon {\\n color: #0a0a0a; }\\n .panel.is-light .panel-heading {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .panel.is-light .panel-tabs a.is-active {\\n border-bottom-color: #d2f9d6; }\\n .panel.is-light .panel-block.is-active .panel-icon {\\n color: #d2f9d6; }\\n .panel.is-dark .panel-heading {\\n background-color: #459558;\\n color: #fff; }\\n .panel.is-dark .panel-tabs a.is-active {\\n border-bottom-color: #459558; }\\n .panel.is-dark .panel-block.is-active .panel-icon {\\n color: #459558; }\\n .panel.is-primary .panel-heading {\\n background-color: #55be6f;\\n color: #fff; }\\n .panel.is-primary .panel-tabs a.is-active {\\n border-bottom-color: #55be6f; }\\n .panel.is-primary .panel-block.is-active .panel-icon {\\n color: #55be6f; }\\n .panel.is-link .panel-heading {\\n background-color: #4876ff;\\n color: #fff; }\\n .panel.is-link .panel-tabs a.is-active {\\n border-bottom-color: #4876ff; }\\n .panel.is-link .panel-block.is-active .panel-icon {\\n color: #4876ff; }\\n .panel.is-info .panel-heading {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .panel.is-info .panel-tabs a.is-active {\\n border-bottom-color: #f0f8ff; }\\n .panel.is-info .panel-block.is-active .panel-icon {\\n color: #f0f8ff; }\\n .panel.is-success .panel-heading {\\n background-color: #48c78e;\\n color: #fff; }\\n .panel.is-success .panel-tabs a.is-active {\\n border-bottom-color: #48c78e; }\\n .panel.is-success .panel-block.is-active .panel-icon {\\n color: #48c78e; }\\n .panel.is-warning .panel-heading {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .panel.is-warning .panel-tabs a.is-active {\\n border-bottom-color: #ffd975; }\\n .panel.is-warning .panel-block.is-active .panel-icon {\\n color: #ffd975; }\\n .panel.is-danger .panel-heading {\\n background-color: #f14668;\\n color: #fff; }\\n .panel.is-danger .panel-tabs a.is-active {\\n border-bottom-color: #f14668; }\\n .panel.is-danger .panel-block.is-active .panel-icon {\\n color: #f14668; }\\n\\n.panel-tabs:not(:last-child),\\n.panel-block:not(:last-child) {\\n border-bottom: 1px solid #ededed; }\\n\\n.panel-heading {\\n background-color: #ededed;\\n border-radius: 6px 6px 0 0;\\n color: #363636;\\n font-size: 1.25em;\\n font-weight: 700;\\n line-height: 1.25;\\n padding: 0.75em 1em; }\\n\\n.panel-tabs {\\n align-items: flex-end;\\n display: flex;\\n font-size: 0.875em;\\n justify-content: center; }\\n .panel-tabs a {\\n border-bottom: 1px solid #dbdbdb;\\n margin-bottom: -1px;\\n padding: 0.5em; }\\n .panel-tabs a.is-active {\\n border-bottom-color: #4a4a4a;\\n color: #363636; }\\n\\n.panel-list a {\\n color: #4a4a4a; }\\n .panel-list a:hover {\\n color: #4876ff; }\\n\\n.panel-block {\\n align-items: center;\\n color: #363636;\\n display: flex;\\n justify-content: flex-start;\\n padding: 0.5em 0.75em; }\\n .panel-block input[type=\\"checkbox\\"] {\\n margin-right: 0.75em; }\\n .panel-block > .control {\\n flex-grow: 1;\\n flex-shrink: 1;\\n width: 100%; }\\n .panel-block.is-wrapped {\\n flex-wrap: wrap; }\\n .panel-block.is-active {\\n border-left-color: #4876ff;\\n color: #363636; }\\n .panel-block.is-active .panel-icon {\\n color: #4876ff; }\\n .panel-block:last-child {\\n border-bottom-left-radius: 6px;\\n border-bottom-right-radius: 6px; }\\n\\na.panel-block,\\nlabel.panel-block {\\n cursor: pointer; }\\n a.panel-block:hover,\\n label.panel-block:hover {\\n background-color: whitesmoke; }\\n\\n.panel-icon {\\n display: inline-block;\\n font-size: 14px;\\n height: 1em;\\n line-height: 1em;\\n text-align: center;\\n vertical-align: top;\\n width: 1em;\\n color: #7a7a7a;\\n margin-right: 0.75em; }\\n .panel-icon .fa {\\n font-size: inherit;\\n line-height: inherit; }\\n\\n.tabs {\\n -webkit-overflow-scrolling: touch;\\n align-items: stretch;\\n display: flex;\\n font-size: 1rem;\\n justify-content: space-between;\\n overflow: hidden;\\n overflow-x: auto;\\n white-space: nowrap; }\\n .tabs a {\\n align-items: center;\\n border-bottom-color: #dbdbdb;\\n border-bottom-style: solid;\\n border-bottom-width: 1px;\\n color: #4a4a4a;\\n display: flex;\\n justify-content: center;\\n margin-bottom: -1px;\\n padding: 0.5em 1em;\\n vertical-align: top; }\\n .tabs a:hover {\\n border-bottom-color: #363636;\\n color: #363636; }\\n .tabs li {\\n display: block; }\\n .tabs li.is-active a {\\n border-bottom-color: #4876ff;\\n color: #4876ff; }\\n .tabs ul {\\n align-items: center;\\n border-bottom-color: #dbdbdb;\\n border-bottom-style: solid;\\n border-bottom-width: 1px;\\n display: flex;\\n flex-grow: 1;\\n flex-shrink: 0;\\n justify-content: flex-start; }\\n .tabs ul.is-left {\\n padding-right: 0.75em; }\\n .tabs ul.is-center {\\n flex: none;\\n justify-content: center;\\n padding-left: 0.75em;\\n padding-right: 0.75em; }\\n .tabs ul.is-right {\\n justify-content: flex-end;\\n padding-left: 0.75em; }\\n .tabs .icon:first-child {\\n margin-right: 0.5em; }\\n .tabs .icon:last-child {\\n margin-left: 0.5em; }\\n .tabs.is-centered ul {\\n justify-content: center; }\\n .tabs.is-right ul {\\n justify-content: flex-end; }\\n .tabs.is-boxed a {\\n border: 1px solid transparent;\\n border-radius: 4px 4px 0 0; }\\n .tabs.is-boxed a:hover {\\n background-color: whitesmoke;\\n border-bottom-color: #dbdbdb; }\\n .tabs.is-boxed li.is-active a {\\n background-color: white;\\n border-color: #dbdbdb;\\n border-bottom-color: transparent !important; }\\n .tabs.is-fullwidth li {\\n flex-grow: 1;\\n flex-shrink: 0; }\\n .tabs.is-toggle a {\\n border-color: #dbdbdb;\\n border-style: solid;\\n border-width: 1px;\\n margin-bottom: 0;\\n position: relative; }\\n .tabs.is-toggle a:hover {\\n background-color: whitesmoke;\\n border-color: #b5b5b5;\\n z-index: 2; }\\n .tabs.is-toggle li + li {\\n margin-left: -1px; }\\n .tabs.is-toggle li:first-child a {\\n border-top-left-radius: 4px;\\n border-bottom-left-radius: 4px; }\\n .tabs.is-toggle li:last-child a {\\n border-top-right-radius: 4px;\\n border-bottom-right-radius: 4px; }\\n .tabs.is-toggle li.is-active a {\\n background-color: #4876ff;\\n border-color: #4876ff;\\n color: #fff;\\n z-index: 1; }\\n .tabs.is-toggle ul {\\n border-bottom: none; }\\n .tabs.is-toggle.is-toggle-rounded li:first-child a {\\n border-bottom-left-radius: 9999px;\\n border-top-left-radius: 9999px;\\n padding-left: 1.25em; }\\n .tabs.is-toggle.is-toggle-rounded li:last-child a {\\n border-bottom-right-radius: 9999px;\\n border-top-right-radius: 9999px;\\n padding-right: 1.25em; }\\n .tabs.is-small {\\n font-size: 0.75rem; }\\n .tabs.is-medium {\\n font-size: 1.25rem; }\\n .tabs.is-large {\\n font-size: 1.5rem; }\\n\\n/* Bulma Grid */\\n.column {\\n display: block;\\n flex-basis: 0;\\n flex-grow: 1;\\n flex-shrink: 1;\\n padding: 0.75rem; }\\n .columns.is-mobile > .column.is-narrow {\\n flex: none;\\n width: unset; }\\n .columns.is-mobile > .column.is-full {\\n flex: none;\\n width: 100%; }\\n .columns.is-mobile > .column.is-three-quarters {\\n flex: none;\\n width: 75%; }\\n .columns.is-mobile > .column.is-two-thirds {\\n flex: none;\\n width: 66.6666%; }\\n .columns.is-mobile > .column.is-half {\\n flex: none;\\n width: 50%; }\\n .columns.is-mobile > .column.is-one-third {\\n flex: none;\\n width: 33.3333%; }\\n .columns.is-mobile > .column.is-one-quarter {\\n flex: none;\\n width: 25%; }\\n .columns.is-mobile > .column.is-one-fifth {\\n flex: none;\\n width: 20%; }\\n .columns.is-mobile > .column.is-two-fifths {\\n flex: none;\\n width: 40%; }\\n .columns.is-mobile > .column.is-three-fifths {\\n flex: none;\\n width: 60%; }\\n .columns.is-mobile > .column.is-four-fifths {\\n flex: none;\\n width: 80%; }\\n .columns.is-mobile > .column.is-offset-three-quarters {\\n margin-left: 75%; }\\n .columns.is-mobile > .column.is-offset-two-thirds {\\n margin-left: 66.6666%; }\\n .columns.is-mobile > .column.is-offset-half {\\n margin-left: 50%; }\\n .columns.is-mobile > .column.is-offset-one-third {\\n margin-left: 33.3333%; }\\n .columns.is-mobile > .column.is-offset-one-quarter {\\n margin-left: 25%; }\\n .columns.is-mobile > .column.is-offset-one-fifth {\\n margin-left: 20%; }\\n .columns.is-mobile > .column.is-offset-two-fifths {\\n margin-left: 40%; }\\n .columns.is-mobile > .column.is-offset-three-fifths {\\n margin-left: 60%; }\\n .columns.is-mobile > .column.is-offset-four-fifths {\\n margin-left: 80%; }\\n .columns.is-mobile > .column.is-0 {\\n flex: none;\\n width: 0%; }\\n .columns.is-mobile > .column.is-offset-0 {\\n margin-left: 0%; }\\n .columns.is-mobile > .column.is-1 {\\n flex: none;\\n width: 8.33333%; }\\n .columns.is-mobile > .column.is-offset-1 {\\n margin-left: 8.33333%; }\\n .columns.is-mobile > .column.is-2 {\\n flex: none;\\n width: 16.66667%; }\\n .columns.is-mobile > .column.is-offset-2 {\\n margin-left: 16.66667%; }\\n .columns.is-mobile > .column.is-3 {\\n flex: none;\\n width: 25%; }\\n .columns.is-mobile > .column.is-offset-3 {\\n margin-left: 25%; }\\n .columns.is-mobile > .column.is-4 {\\n flex: none;\\n width: 33.33333%; }\\n .columns.is-mobile > .column.is-offset-4 {\\n margin-left: 33.33333%; }\\n .columns.is-mobile > .column.is-5 {\\n flex: none;\\n width: 41.66667%; }\\n .columns.is-mobile > .column.is-offset-5 {\\n margin-left: 41.66667%; }\\n .columns.is-mobile > .column.is-6 {\\n flex: none;\\n width: 50%; }\\n .columns.is-mobile > .column.is-offset-6 {\\n margin-left: 50%; }\\n .columns.is-mobile > .column.is-7 {\\n flex: none;\\n width: 58.33333%; }\\n .columns.is-mobile > .column.is-offset-7 {\\n margin-left: 58.33333%; }\\n .columns.is-mobile > .column.is-8 {\\n flex: none;\\n width: 66.66667%; }\\n .columns.is-mobile > .column.is-offset-8 {\\n margin-left: 66.66667%; }\\n .columns.is-mobile > .column.is-9 {\\n flex: none;\\n width: 75%; }\\n .columns.is-mobile > .column.is-offset-9 {\\n margin-left: 75%; }\\n .columns.is-mobile > .column.is-10 {\\n flex: none;\\n width: 83.33333%; }\\n .columns.is-mobile > .column.is-offset-10 {\\n margin-left: 83.33333%; }\\n .columns.is-mobile > .column.is-11 {\\n flex: none;\\n width: 91.66667%; }\\n .columns.is-mobile > .column.is-offset-11 {\\n margin-left: 91.66667%; }\\n .columns.is-mobile > .column.is-12 {\\n flex: none;\\n width: 100%; }\\n .columns.is-mobile > .column.is-offset-12 {\\n margin-left: 100%; }\\n @media screen and (max-width: 768px) {\\n .column.is-narrow-mobile {\\n flex: none;\\n width: unset; }\\n .column.is-full-mobile {\\n flex: none;\\n width: 100%; }\\n .column.is-three-quarters-mobile {\\n flex: none;\\n width: 75%; }\\n .column.is-two-thirds-mobile {\\n flex: none;\\n width: 66.6666%; }\\n .column.is-half-mobile {\\n flex: none;\\n width: 50%; }\\n .column.is-one-third-mobile {\\n flex: none;\\n width: 33.3333%; }\\n .column.is-one-quarter-mobile {\\n flex: none;\\n width: 25%; }\\n .column.is-one-fifth-mobile {\\n flex: none;\\n width: 20%; }\\n .column.is-two-fifths-mobile {\\n flex: none;\\n width: 40%; }\\n .column.is-three-fifths-mobile {\\n flex: none;\\n width: 60%; }\\n .column.is-four-fifths-mobile {\\n flex: none;\\n width: 80%; }\\n .column.is-offset-three-quarters-mobile {\\n margin-left: 75%; }\\n .column.is-offset-two-thirds-mobile {\\n margin-left: 66.6666%; }\\n .column.is-offset-half-mobile {\\n margin-left: 50%; }\\n .column.is-offset-one-third-mobile {\\n margin-left: 33.3333%; }\\n .column.is-offset-one-quarter-mobile {\\n margin-left: 25%; }\\n .column.is-offset-one-fifth-mobile {\\n margin-left: 20%; }\\n .column.is-offset-two-fifths-mobile {\\n margin-left: 40%; }\\n .column.is-offset-three-fifths-mobile {\\n margin-left: 60%; }\\n .column.is-offset-four-fifths-mobile {\\n margin-left: 80%; }\\n .column.is-0-mobile {\\n flex: none;\\n width: 0%; }\\n .column.is-offset-0-mobile {\\n margin-left: 0%; }\\n .column.is-1-mobile {\\n flex: none;\\n width: 8.33333%; }\\n .column.is-offset-1-mobile {\\n margin-left: 8.33333%; }\\n .column.is-2-mobile {\\n flex: none;\\n width: 16.66667%; }\\n .column.is-offset-2-mobile {\\n margin-left: 16.66667%; }\\n .column.is-3-mobile {\\n flex: none;\\n width: 25%; }\\n .column.is-offset-3-mobile {\\n margin-left: 25%; }\\n .column.is-4-mobile {\\n flex: none;\\n width: 33.33333%; }\\n .column.is-offset-4-mobile {\\n margin-left: 33.33333%; }\\n .column.is-5-mobile {\\n flex: none;\\n width: 41.66667%; }\\n .column.is-offset-5-mobile {\\n margin-left: 41.66667%; }\\n .column.is-6-mobile {\\n flex: none;\\n width: 50%; }\\n .column.is-offset-6-mobile {\\n margin-left: 50%; }\\n .column.is-7-mobile {\\n flex: none;\\n width: 58.33333%; }\\n .column.is-offset-7-mobile {\\n margin-left: 58.33333%; }\\n .column.is-8-mobile {\\n flex: none;\\n width: 66.66667%; }\\n .column.is-offset-8-mobile {\\n margin-left: 66.66667%; }\\n .column.is-9-mobile {\\n flex: none;\\n width: 75%; }\\n .column.is-offset-9-mobile {\\n margin-left: 75%; }\\n .column.is-10-mobile {\\n flex: none;\\n width: 83.33333%; }\\n .column.is-offset-10-mobile {\\n margin-left: 83.33333%; }\\n .column.is-11-mobile {\\n flex: none;\\n width: 91.66667%; }\\n .column.is-offset-11-mobile {\\n margin-left: 91.66667%; }\\n .column.is-12-mobile {\\n flex: none;\\n width: 100%; }\\n .column.is-offset-12-mobile {\\n margin-left: 100%; } }\\n @media screen and (min-width: 769px), print {\\n .column.is-narrow, .column.is-narrow-tablet {\\n flex: none;\\n width: unset; }\\n .column.is-full, .column.is-full-tablet {\\n flex: none;\\n width: 100%; }\\n .column.is-three-quarters, .column.is-three-quarters-tablet {\\n flex: none;\\n width: 75%; }\\n .column.is-two-thirds, .column.is-two-thirds-tablet {\\n flex: none;\\n width: 66.6666%; }\\n .column.is-half, .column.is-half-tablet {\\n flex: none;\\n width: 50%; }\\n .column.is-one-third, .column.is-one-third-tablet {\\n flex: none;\\n width: 33.3333%; }\\n .column.is-one-quarter, .column.is-one-quarter-tablet {\\n flex: none;\\n width: 25%; }\\n .column.is-one-fifth, .column.is-one-fifth-tablet {\\n flex: none;\\n width: 20%; }\\n .column.is-two-fifths, .column.is-two-fifths-tablet {\\n flex: none;\\n width: 40%; }\\n .column.is-three-fifths, .column.is-three-fifths-tablet {\\n flex: none;\\n width: 60%; }\\n .column.is-four-fifths, .column.is-four-fifths-tablet {\\n flex: none;\\n width: 80%; }\\n .column.is-offset-three-quarters, .column.is-offset-three-quarters-tablet {\\n margin-left: 75%; }\\n .column.is-offset-two-thirds, .column.is-offset-two-thirds-tablet {\\n margin-left: 66.6666%; }\\n .column.is-offset-half, .column.is-offset-half-tablet {\\n margin-left: 50%; }\\n .column.is-offset-one-third, .column.is-offset-one-third-tablet {\\n margin-left: 33.3333%; }\\n .column.is-offset-one-quarter, .column.is-offset-one-quarter-tablet {\\n margin-left: 25%; }\\n .column.is-offset-one-fifth, .column.is-offset-one-fifth-tablet {\\n margin-left: 20%; }\\n .column.is-offset-two-fifths, .column.is-offset-two-fifths-tablet {\\n margin-left: 40%; }\\n .column.is-offset-three-fifths, .column.is-offset-three-fifths-tablet {\\n margin-left: 60%; }\\n .column.is-offset-four-fifths, .column.is-offset-four-fifths-tablet {\\n margin-left: 80%; }\\n .column.is-0, .column.is-0-tablet {\\n flex: none;\\n width: 0%; }\\n .column.is-offset-0, .column.is-offset-0-tablet {\\n margin-left: 0%; }\\n .column.is-1, .column.is-1-tablet {\\n flex: none;\\n width: 8.33333%; }\\n .column.is-offset-1, .column.is-offset-1-tablet {\\n margin-left: 8.33333%; }\\n .column.is-2, .column.is-2-tablet {\\n flex: none;\\n width: 16.66667%; }\\n .column.is-offset-2, .column.is-offset-2-tablet {\\n margin-left: 16.66667%; }\\n .column.is-3, .column.is-3-tablet {\\n flex: none;\\n width: 25%; }\\n .column.is-offset-3, .column.is-offset-3-tablet {\\n margin-left: 25%; }\\n .column.is-4, .column.is-4-tablet {\\n flex: none;\\n width: 33.33333%; }\\n .column.is-offset-4, .column.is-offset-4-tablet {\\n margin-left: 33.33333%; }\\n .column.is-5, .column.is-5-tablet {\\n flex: none;\\n width: 41.66667%; }\\n .column.is-offset-5, .column.is-offset-5-tablet {\\n margin-left: 41.66667%; }\\n .column.is-6, .column.is-6-tablet {\\n flex: none;\\n width: 50%; }\\n .column.is-offset-6, .column.is-offset-6-tablet {\\n margin-left: 50%; }\\n .column.is-7, .column.is-7-tablet {\\n flex: none;\\n width: 58.33333%; }\\n .column.is-offset-7, .column.is-offset-7-tablet {\\n margin-left: 58.33333%; }\\n .column.is-8, .column.is-8-tablet {\\n flex: none;\\n width: 66.66667%; }\\n .column.is-offset-8, .column.is-offset-8-tablet {\\n margin-left: 66.66667%; }\\n .column.is-9, .column.is-9-tablet {\\n flex: none;\\n width: 75%; }\\n .column.is-offset-9, .column.is-offset-9-tablet {\\n margin-left: 75%; }\\n .column.is-10, .column.is-10-tablet {\\n flex: none;\\n width: 83.33333%; }\\n .column.is-offset-10, .column.is-offset-10-tablet {\\n margin-left: 83.33333%; }\\n .column.is-11, .column.is-11-tablet {\\n flex: none;\\n width: 91.66667%; }\\n .column.is-offset-11, .column.is-offset-11-tablet {\\n margin-left: 91.66667%; }\\n .column.is-12, .column.is-12-tablet {\\n flex: none;\\n width: 100%; }\\n .column.is-offset-12, .column.is-offset-12-tablet {\\n margin-left: 100%; } }\\n @media screen and (max-width: 1023px) {\\n .column.is-narrow-touch {\\n flex: none;\\n width: unset; }\\n .column.is-full-touch {\\n flex: none;\\n width: 100%; }\\n .column.is-three-quarters-touch {\\n flex: none;\\n width: 75%; }\\n .column.is-two-thirds-touch {\\n flex: none;\\n width: 66.6666%; }\\n .column.is-half-touch {\\n flex: none;\\n width: 50%; }\\n .column.is-one-third-touch {\\n flex: none;\\n width: 33.3333%; }\\n .column.is-one-quarter-touch {\\n flex: none;\\n width: 25%; }\\n .column.is-one-fifth-touch {\\n flex: none;\\n width: 20%; }\\n .column.is-two-fifths-touch {\\n flex: none;\\n width: 40%; }\\n .column.is-three-fifths-touch {\\n flex: none;\\n width: 60%; }\\n .column.is-four-fifths-touch {\\n flex: none;\\n width: 80%; }\\n .column.is-offset-three-quarters-touch {\\n margin-left: 75%; }\\n .column.is-offset-two-thirds-touch {\\n margin-left: 66.6666%; }\\n .column.is-offset-half-touch {\\n margin-left: 50%; }\\n .column.is-offset-one-third-touch {\\n margin-left: 33.3333%; }\\n .column.is-offset-one-quarter-touch {\\n margin-left: 25%; }\\n .column.is-offset-one-fifth-touch {\\n margin-left: 20%; }\\n .column.is-offset-two-fifths-touch {\\n margin-left: 40%; }\\n .column.is-offset-three-fifths-touch {\\n margin-left: 60%; }\\n .column.is-offset-four-fifths-touch {\\n margin-left: 80%; }\\n .column.is-0-touch {\\n flex: none;\\n width: 0%; }\\n .column.is-offset-0-touch {\\n margin-left: 0%; }\\n .column.is-1-touch {\\n flex: none;\\n width: 8.33333%; }\\n .column.is-offset-1-touch {\\n margin-left: 8.33333%; }\\n .column.is-2-touch {\\n flex: none;\\n width: 16.66667%; }\\n .column.is-offset-2-touch {\\n margin-left: 16.66667%; }\\n .column.is-3-touch {\\n flex: none;\\n width: 25%; }\\n .column.is-offset-3-touch {\\n margin-left: 25%; }\\n .column.is-4-touch {\\n flex: none;\\n width: 33.33333%; }\\n .column.is-offset-4-touch {\\n margin-left: 33.33333%; }\\n .column.is-5-touch {\\n flex: none;\\n width: 41.66667%; }\\n .column.is-offset-5-touch {\\n margin-left: 41.66667%; }\\n .column.is-6-touch {\\n flex: none;\\n width: 50%; }\\n .column.is-offset-6-touch {\\n margin-left: 50%; }\\n .column.is-7-touch {\\n flex: none;\\n width: 58.33333%; }\\n .column.is-offset-7-touch {\\n margin-left: 58.33333%; }\\n .column.is-8-touch {\\n flex: none;\\n width: 66.66667%; }\\n .column.is-offset-8-touch {\\n margin-left: 66.66667%; }\\n .column.is-9-touch {\\n flex: none;\\n width: 75%; }\\n .column.is-offset-9-touch {\\n margin-left: 75%; }\\n .column.is-10-touch {\\n flex: none;\\n width: 83.33333%; }\\n .column.is-offset-10-touch {\\n margin-left: 83.33333%; }\\n .column.is-11-touch {\\n flex: none;\\n width: 91.66667%; }\\n .column.is-offset-11-touch {\\n margin-left: 91.66667%; }\\n .column.is-12-touch {\\n flex: none;\\n width: 100%; }\\n .column.is-offset-12-touch {\\n margin-left: 100%; } }\\n @media screen and (min-width: 1024px) {\\n .column.is-narrow-desktop {\\n flex: none;\\n width: unset; }\\n .column.is-full-desktop {\\n flex: none;\\n width: 100%; }\\n .column.is-three-quarters-desktop {\\n flex: none;\\n width: 75%; }\\n .column.is-two-thirds-desktop {\\n flex: none;\\n width: 66.6666%; }\\n .column.is-half-desktop {\\n flex: none;\\n width: 50%; }\\n .column.is-one-third-desktop {\\n flex: none;\\n width: 33.3333%; }\\n .column.is-one-quarter-desktop {\\n flex: none;\\n width: 25%; }\\n .column.is-one-fifth-desktop {\\n flex: none;\\n width: 20%; }\\n .column.is-two-fifths-desktop {\\n flex: none;\\n width: 40%; }\\n .column.is-three-fifths-desktop {\\n flex: none;\\n width: 60%; }\\n .column.is-four-fifths-desktop {\\n flex: none;\\n width: 80%; }\\n .column.is-offset-three-quarters-desktop {\\n margin-left: 75%; }\\n .column.is-offset-two-thirds-desktop {\\n margin-left: 66.6666%; }\\n .column.is-offset-half-desktop {\\n margin-left: 50%; }\\n .column.is-offset-one-third-desktop {\\n margin-left: 33.3333%; }\\n .column.is-offset-one-quarter-desktop {\\n margin-left: 25%; }\\n .column.is-offset-one-fifth-desktop {\\n margin-left: 20%; }\\n .column.is-offset-two-fifths-desktop {\\n margin-left: 40%; }\\n .column.is-offset-three-fifths-desktop {\\n margin-left: 60%; }\\n .column.is-offset-four-fifths-desktop {\\n margin-left: 80%; }\\n .column.is-0-desktop {\\n flex: none;\\n width: 0%; }\\n .column.is-offset-0-desktop {\\n margin-left: 0%; }\\n .column.is-1-desktop {\\n flex: none;\\n width: 8.33333%; }\\n .column.is-offset-1-desktop {\\n margin-left: 8.33333%; }\\n .column.is-2-desktop {\\n flex: none;\\n width: 16.66667%; }\\n .column.is-offset-2-desktop {\\n margin-left: 16.66667%; }\\n .column.is-3-desktop {\\n flex: none;\\n width: 25%; }\\n .column.is-offset-3-desktop {\\n margin-left: 25%; }\\n .column.is-4-desktop {\\n flex: none;\\n width: 33.33333%; }\\n .column.is-offset-4-desktop {\\n margin-left: 33.33333%; }\\n .column.is-5-desktop {\\n flex: none;\\n width: 41.66667%; }\\n .column.is-offset-5-desktop {\\n margin-left: 41.66667%; }\\n .column.is-6-desktop {\\n flex: none;\\n width: 50%; }\\n .column.is-offset-6-desktop {\\n margin-left: 50%; }\\n .column.is-7-desktop {\\n flex: none;\\n width: 58.33333%; }\\n .column.is-offset-7-desktop {\\n margin-left: 58.33333%; }\\n .column.is-8-desktop {\\n flex: none;\\n width: 66.66667%; }\\n .column.is-offset-8-desktop {\\n margin-left: 66.66667%; }\\n .column.is-9-desktop {\\n flex: none;\\n width: 75%; }\\n .column.is-offset-9-desktop {\\n margin-left: 75%; }\\n .column.is-10-desktop {\\n flex: none;\\n width: 83.33333%; }\\n .column.is-offset-10-desktop {\\n margin-left: 83.33333%; }\\n .column.is-11-desktop {\\n flex: none;\\n width: 91.66667%; }\\n .column.is-offset-11-desktop {\\n margin-left: 91.66667%; }\\n .column.is-12-desktop {\\n flex: none;\\n width: 100%; }\\n .column.is-offset-12-desktop {\\n margin-left: 100%; } }\\n @media screen and (min-width: 1216px) {\\n .column.is-narrow-widescreen {\\n flex: none;\\n width: unset; }\\n .column.is-full-widescreen {\\n flex: none;\\n width: 100%; }\\n .column.is-three-quarters-widescreen {\\n flex: none;\\n width: 75%; }\\n .column.is-two-thirds-widescreen {\\n flex: none;\\n width: 66.6666%; }\\n .column.is-half-widescreen {\\n flex: none;\\n width: 50%; }\\n .column.is-one-third-widescreen {\\n flex: none;\\n width: 33.3333%; }\\n .column.is-one-quarter-widescreen {\\n flex: none;\\n width: 25%; }\\n .column.is-one-fifth-widescreen {\\n flex: none;\\n width: 20%; }\\n .column.is-two-fifths-widescreen {\\n flex: none;\\n width: 40%; }\\n .column.is-three-fifths-widescreen {\\n flex: none;\\n width: 60%; }\\n .column.is-four-fifths-widescreen {\\n flex: none;\\n width: 80%; }\\n .column.is-offset-three-quarters-widescreen {\\n margin-left: 75%; }\\n .column.is-offset-two-thirds-widescreen {\\n margin-left: 66.6666%; }\\n .column.is-offset-half-widescreen {\\n margin-left: 50%; }\\n .column.is-offset-one-third-widescreen {\\n margin-left: 33.3333%; }\\n .column.is-offset-one-quarter-widescreen {\\n margin-left: 25%; }\\n .column.is-offset-one-fifth-widescreen {\\n margin-left: 20%; }\\n .column.is-offset-two-fifths-widescreen {\\n margin-left: 40%; }\\n .column.is-offset-three-fifths-widescreen {\\n margin-left: 60%; }\\n .column.is-offset-four-fifths-widescreen {\\n margin-left: 80%; }\\n .column.is-0-widescreen {\\n flex: none;\\n width: 0%; }\\n .column.is-offset-0-widescreen {\\n margin-left: 0%; }\\n .column.is-1-widescreen {\\n flex: none;\\n width: 8.33333%; }\\n .column.is-offset-1-widescreen {\\n margin-left: 8.33333%; }\\n .column.is-2-widescreen {\\n flex: none;\\n width: 16.66667%; }\\n .column.is-offset-2-widescreen {\\n margin-left: 16.66667%; }\\n .column.is-3-widescreen {\\n flex: none;\\n width: 25%; }\\n .column.is-offset-3-widescreen {\\n margin-left: 25%; }\\n .column.is-4-widescreen {\\n flex: none;\\n width: 33.33333%; }\\n .column.is-offset-4-widescreen {\\n margin-left: 33.33333%; }\\n .column.is-5-widescreen {\\n flex: none;\\n width: 41.66667%; }\\n .column.is-offset-5-widescreen {\\n margin-left: 41.66667%; }\\n .column.is-6-widescreen {\\n flex: none;\\n width: 50%; }\\n .column.is-offset-6-widescreen {\\n margin-left: 50%; }\\n .column.is-7-widescreen {\\n flex: none;\\n width: 58.33333%; }\\n .column.is-offset-7-widescreen {\\n margin-left: 58.33333%; }\\n .column.is-8-widescreen {\\n flex: none;\\n width: 66.66667%; }\\n .column.is-offset-8-widescreen {\\n margin-left: 66.66667%; }\\n .column.is-9-widescreen {\\n flex: none;\\n width: 75%; }\\n .column.is-offset-9-widescreen {\\n margin-left: 75%; }\\n .column.is-10-widescreen {\\n flex: none;\\n width: 83.33333%; }\\n .column.is-offset-10-widescreen {\\n margin-left: 83.33333%; }\\n .column.is-11-widescreen {\\n flex: none;\\n width: 91.66667%; }\\n .column.is-offset-11-widescreen {\\n margin-left: 91.66667%; }\\n .column.is-12-widescreen {\\n flex: none;\\n width: 100%; }\\n .column.is-offset-12-widescreen {\\n margin-left: 100%; } }\\n @media screen and (min-width: 1408px) {\\n .column.is-narrow-fullhd {\\n flex: none;\\n width: unset; }\\n .column.is-full-fullhd {\\n flex: none;\\n width: 100%; }\\n .column.is-three-quarters-fullhd {\\n flex: none;\\n width: 75%; }\\n .column.is-two-thirds-fullhd {\\n flex: none;\\n width: 66.6666%; }\\n .column.is-half-fullhd {\\n flex: none;\\n width: 50%; }\\n .column.is-one-third-fullhd {\\n flex: none;\\n width: 33.3333%; }\\n .column.is-one-quarter-fullhd {\\n flex: none;\\n width: 25%; }\\n .column.is-one-fifth-fullhd {\\n flex: none;\\n width: 20%; }\\n .column.is-two-fifths-fullhd {\\n flex: none;\\n width: 40%; }\\n .column.is-three-fifths-fullhd {\\n flex: none;\\n width: 60%; }\\n .column.is-four-fifths-fullhd {\\n flex: none;\\n width: 80%; }\\n .column.is-offset-three-quarters-fullhd {\\n margin-left: 75%; }\\n .column.is-offset-two-thirds-fullhd {\\n margin-left: 66.6666%; }\\n .column.is-offset-half-fullhd {\\n margin-left: 50%; }\\n .column.is-offset-one-third-fullhd {\\n margin-left: 33.3333%; }\\n .column.is-offset-one-quarter-fullhd {\\n margin-left: 25%; }\\n .column.is-offset-one-fifth-fullhd {\\n margin-left: 20%; }\\n .column.is-offset-two-fifths-fullhd {\\n margin-left: 40%; }\\n .column.is-offset-three-fifths-fullhd {\\n margin-left: 60%; }\\n .column.is-offset-four-fifths-fullhd {\\n margin-left: 80%; }\\n .column.is-0-fullhd {\\n flex: none;\\n width: 0%; }\\n .column.is-offset-0-fullhd {\\n margin-left: 0%; }\\n .column.is-1-fullhd {\\n flex: none;\\n width: 8.33333%; }\\n .column.is-offset-1-fullhd {\\n margin-left: 8.33333%; }\\n .column.is-2-fullhd {\\n flex: none;\\n width: 16.66667%; }\\n .column.is-offset-2-fullhd {\\n margin-left: 16.66667%; }\\n .column.is-3-fullhd {\\n flex: none;\\n width: 25%; }\\n .column.is-offset-3-fullhd {\\n margin-left: 25%; }\\n .column.is-4-fullhd {\\n flex: none;\\n width: 33.33333%; }\\n .column.is-offset-4-fullhd {\\n margin-left: 33.33333%; }\\n .column.is-5-fullhd {\\n flex: none;\\n width: 41.66667%; }\\n .column.is-offset-5-fullhd {\\n margin-left: 41.66667%; }\\n .column.is-6-fullhd {\\n flex: none;\\n width: 50%; }\\n .column.is-offset-6-fullhd {\\n margin-left: 50%; }\\n .column.is-7-fullhd {\\n flex: none;\\n width: 58.33333%; }\\n .column.is-offset-7-fullhd {\\n margin-left: 58.33333%; }\\n .column.is-8-fullhd {\\n flex: none;\\n width: 66.66667%; }\\n .column.is-offset-8-fullhd {\\n margin-left: 66.66667%; }\\n .column.is-9-fullhd {\\n flex: none;\\n width: 75%; }\\n .column.is-offset-9-fullhd {\\n margin-left: 75%; }\\n .column.is-10-fullhd {\\n flex: none;\\n width: 83.33333%; }\\n .column.is-offset-10-fullhd {\\n margin-left: 83.33333%; }\\n .column.is-11-fullhd {\\n flex: none;\\n width: 91.66667%; }\\n .column.is-offset-11-fullhd {\\n margin-left: 91.66667%; }\\n .column.is-12-fullhd {\\n flex: none;\\n width: 100%; }\\n .column.is-offset-12-fullhd {\\n margin-left: 100%; } }\\n\\n.columns {\\n margin-left: -0.75rem;\\n margin-right: -0.75rem;\\n margin-top: -0.75rem; }\\n .columns:last-child {\\n margin-bottom: -0.75rem; }\\n .columns:not(:last-child) {\\n margin-bottom: calc(1.5rem - 0.75rem); }\\n .columns.is-centered {\\n justify-content: center; }\\n .columns.is-gapless {\\n margin-left: 0;\\n margin-right: 0;\\n margin-top: 0; }\\n .columns.is-gapless > .column {\\n margin: 0;\\n padding: 0 !important; }\\n .columns.is-gapless:not(:last-child) {\\n margin-bottom: 1.5rem; }\\n .columns.is-gapless:last-child {\\n margin-bottom: 0; }\\n .columns.is-mobile {\\n display: flex; }\\n .columns.is-multiline {\\n flex-wrap: wrap; }\\n .columns.is-vcentered {\\n align-items: center; }\\n @media screen and (min-width: 769px), print {\\n .columns:not(.is-desktop) {\\n display: flex; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-desktop {\\n display: flex; } }\\n\\n.columns.is-variable {\\n --columnGap: 0.75rem;\\n margin-left: calc(-1 * var(--columnGap));\\n margin-right: calc(-1 * var(--columnGap)); }\\n .columns.is-variable > .column {\\n padding-left: var(--columnGap);\\n padding-right: var(--columnGap); }\\n .columns.is-variable.is-0 {\\n --columnGap: 0rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-0-mobile {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-0-tablet {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-0-tablet-only {\\n --columnGap: 0rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-0-touch {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-0-desktop {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-0-desktop-only {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-0-widescreen {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-0-widescreen-only {\\n --columnGap: 0rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-0-fullhd {\\n --columnGap: 0rem; } }\\n .columns.is-variable.is-1 {\\n --columnGap: 0.25rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-1-mobile {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-1-tablet {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-1-tablet-only {\\n --columnGap: 0.25rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-1-touch {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-1-desktop {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-1-desktop-only {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-1-widescreen {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-1-widescreen-only {\\n --columnGap: 0.25rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-1-fullhd {\\n --columnGap: 0.25rem; } }\\n .columns.is-variable.is-2 {\\n --columnGap: 0.5rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-2-mobile {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-2-tablet {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-2-tablet-only {\\n --columnGap: 0.5rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-2-touch {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-2-desktop {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-2-desktop-only {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-2-widescreen {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-2-widescreen-only {\\n --columnGap: 0.5rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-2-fullhd {\\n --columnGap: 0.5rem; } }\\n .columns.is-variable.is-3 {\\n --columnGap: 0.75rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-3-mobile {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-3-tablet {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-3-tablet-only {\\n --columnGap: 0.75rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-3-touch {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-3-desktop {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-3-desktop-only {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-3-widescreen {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-3-widescreen-only {\\n --columnGap: 0.75rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-3-fullhd {\\n --columnGap: 0.75rem; } }\\n .columns.is-variable.is-4 {\\n --columnGap: 1rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-4-mobile {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-4-tablet {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-4-tablet-only {\\n --columnGap: 1rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-4-touch {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-4-desktop {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-4-desktop-only {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-4-widescreen {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-4-widescreen-only {\\n --columnGap: 1rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-4-fullhd {\\n --columnGap: 1rem; } }\\n .columns.is-variable.is-5 {\\n --columnGap: 1.25rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-5-mobile {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-5-tablet {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-5-tablet-only {\\n --columnGap: 1.25rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-5-touch {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-5-desktop {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-5-desktop-only {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-5-widescreen {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-5-widescreen-only {\\n --columnGap: 1.25rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-5-fullhd {\\n --columnGap: 1.25rem; } }\\n .columns.is-variable.is-6 {\\n --columnGap: 1.5rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-6-mobile {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-6-tablet {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-6-tablet-only {\\n --columnGap: 1.5rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-6-touch {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-6-desktop {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-6-desktop-only {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-6-widescreen {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-6-widescreen-only {\\n --columnGap: 1.5rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-6-fullhd {\\n --columnGap: 1.5rem; } }\\n .columns.is-variable.is-7 {\\n --columnGap: 1.75rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-7-mobile {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-7-tablet {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-7-tablet-only {\\n --columnGap: 1.75rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-7-touch {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-7-desktop {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-7-desktop-only {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-7-widescreen {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-7-widescreen-only {\\n --columnGap: 1.75rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-7-fullhd {\\n --columnGap: 1.75rem; } }\\n .columns.is-variable.is-8 {\\n --columnGap: 2rem; }\\n @media screen and (max-width: 768px) {\\n .columns.is-variable.is-8-mobile {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 769px), print {\\n .columns.is-variable.is-8-tablet {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 769px) and (max-width: 1023px) {\\n .columns.is-variable.is-8-tablet-only {\\n --columnGap: 2rem; } }\\n @media screen and (max-width: 1023px) {\\n .columns.is-variable.is-8-touch {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 1024px) {\\n .columns.is-variable.is-8-desktop {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .columns.is-variable.is-8-desktop-only {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 1216px) {\\n .columns.is-variable.is-8-widescreen {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .columns.is-variable.is-8-widescreen-only {\\n --columnGap: 2rem; } }\\n @media screen and (min-width: 1408px) {\\n .columns.is-variable.is-8-fullhd {\\n --columnGap: 2rem; } }\\n\\n.tile {\\n align-items: stretch;\\n display: block;\\n flex-basis: 0;\\n flex-grow: 1;\\n flex-shrink: 1;\\n min-height: min-content; }\\n .tile.is-ancestor {\\n margin-left: -0.75rem;\\n margin-right: -0.75rem;\\n margin-top: -0.75rem; }\\n .tile.is-ancestor:last-child {\\n margin-bottom: -0.75rem; }\\n .tile.is-ancestor:not(:last-child) {\\n margin-bottom: 0.75rem; }\\n .tile.is-child {\\n margin: 0 !important; }\\n .tile.is-parent {\\n padding: 0.75rem; }\\n .tile.is-vertical {\\n flex-direction: column; }\\n .tile.is-vertical > .tile.is-child:not(:last-child) {\\n margin-bottom: 1.5rem !important; }\\n @media screen and (min-width: 769px), print {\\n .tile:not(.is-child) {\\n display: flex; }\\n .tile.is-1 {\\n flex: none;\\n width: 8.33333%; }\\n .tile.is-2 {\\n flex: none;\\n width: 16.66667%; }\\n .tile.is-3 {\\n flex: none;\\n width: 25%; }\\n .tile.is-4 {\\n flex: none;\\n width: 33.33333%; }\\n .tile.is-5 {\\n flex: none;\\n width: 41.66667%; }\\n .tile.is-6 {\\n flex: none;\\n width: 50%; }\\n .tile.is-7 {\\n flex: none;\\n width: 58.33333%; }\\n .tile.is-8 {\\n flex: none;\\n width: 66.66667%; }\\n .tile.is-9 {\\n flex: none;\\n width: 75%; }\\n .tile.is-10 {\\n flex: none;\\n width: 83.33333%; }\\n .tile.is-11 {\\n flex: none;\\n width: 91.66667%; }\\n .tile.is-12 {\\n flex: none;\\n width: 100%; } }\\n\\n/* Bulma Helpers */\\n.has-text-white {\\n color: white !important; }\\n\\na.has-text-white:hover, a.has-text-white:focus {\\n color: #e6e6e6 !important; }\\n\\n.has-background-white {\\n background-color: white !important; }\\n\\n.has-text-black {\\n color: #0a0a0a !important; }\\n\\na.has-text-black:hover, a.has-text-black:focus {\\n color: black !important; }\\n\\n.has-background-black {\\n background-color: #0a0a0a !important; }\\n\\n.has-text-light {\\n color: #d2f9d6 !important; }\\n\\na.has-text-light:hover, a.has-text-light:focus {\\n color: #a5f3ad !important; }\\n\\n.has-background-light {\\n background-color: #d2f9d6 !important; }\\n\\n.has-text-dark {\\n color: #459558 !important; }\\n\\na.has-text-dark:hover, a.has-text-dark:focus {\\n color: #357243 !important; }\\n\\n.has-background-dark {\\n background-color: #459558 !important; }\\n\\n.has-text-primary {\\n color: #55be6f !important; }\\n\\na.has-text-primary:hover, a.has-text-primary:focus {\\n color: #3ea257 !important; }\\n\\n.has-background-primary {\\n background-color: #55be6f !important; }\\n\\n.has-text-primary-light {\\n color: #f0f9f2 !important; }\\n\\na.has-text-primary-light:hover, a.has-text-primary-light:focus {\\n color: #cbebd3 !important; }\\n\\n.has-background-primary-light {\\n background-color: #f0f9f2 !important; }\\n\\n.has-text-primary-dark {\\n color: #2f7a41 !important; }\\n\\na.has-text-primary-dark:hover, a.has-text-primary-dark:focus {\\n color: #3d9f55 !important; }\\n\\n.has-background-primary-dark {\\n background-color: #2f7a41 !important; }\\n\\n.has-text-link {\\n color: #4876ff !important; }\\n\\na.has-text-link:hover, a.has-text-link:focus {\\n color: #1550ff !important; }\\n\\n.has-background-link {\\n background-color: #4876ff !important; }\\n\\n.has-text-link-light {\\n color: #ebf0ff !important; }\\n\\na.has-text-link-light:hover, a.has-text-link-light:focus {\\n color: #b8caff !important; }\\n\\n.has-background-link-light {\\n background-color: #ebf0ff !important; }\\n\\n.has-text-link-dark {\\n color: #0037db !important; }\\n\\na.has-text-link-dark:hover, a.has-text-link-dark:focus {\\n color: #0f4cff !important; }\\n\\n.has-background-link-dark {\\n background-color: #0037db !important; }\\n\\n.has-text-info {\\n color: #f0f8ff !important; }\\n\\na.has-text-info:hover, a.has-text-info:focus {\\n color: #bde0ff !important; }\\n\\n.has-background-info {\\n background-color: #f0f8ff !important; }\\n\\n.has-text-info-light {\\n color: aliceblue !important; }\\n\\na.has-text-info-light:hover, a.has-text-info-light:focus {\\n color: #bde0ff !important; }\\n\\n.has-background-info-light {\\n background-color: aliceblue !important; }\\n\\n.has-text-info-dark {\\n color: #004f94 !important; }\\n\\na.has-text-info-dark:hover, a.has-text-info-dark:focus {\\n color: #006ac7 !important; }\\n\\n.has-background-info-dark {\\n background-color: #004f94 !important; }\\n\\n.has-text-success {\\n color: #48c78e !important; }\\n\\na.has-text-success:hover, a.has-text-success:focus {\\n color: #34a873 !important; }\\n\\n.has-background-success {\\n background-color: #48c78e !important; }\\n\\n.has-text-success-light {\\n color: #effaf5 !important; }\\n\\na.has-text-success-light:hover, a.has-text-success-light:focus {\\n color: #c8eedd !important; }\\n\\n.has-background-success-light {\\n background-color: #effaf5 !important; }\\n\\n.has-text-success-dark {\\n color: #257953 !important; }\\n\\na.has-text-success-dark:hover, a.has-text-success-dark:focus {\\n color: #31a06e !important; }\\n\\n.has-background-success-dark {\\n background-color: #257953 !important; }\\n\\n.has-text-warning {\\n color: #ffd975 !important; }\\n\\na.has-text-warning:hover, a.has-text-warning:focus {\\n color: #ffcb42 !important; }\\n\\n.has-background-warning {\\n background-color: #ffd975 !important; }\\n\\n.has-text-warning-light {\\n color: #fff9eb !important; }\\n\\na.has-text-warning-light:hover, a.has-text-warning-light:focus {\\n color: #ffebb8 !important; }\\n\\n.has-background-warning-light {\\n background-color: #fff9eb !important; }\\n\\n.has-text-warning-dark {\\n color: #946b00 !important; }\\n\\na.has-text-warning-dark:hover, a.has-text-warning-dark:focus {\\n color: #c79000 !important; }\\n\\n.has-background-warning-dark {\\n background-color: #946b00 !important; }\\n\\n.has-text-danger {\\n color: #f14668 !important; }\\n\\na.has-text-danger:hover, a.has-text-danger:focus {\\n color: #ee1742 !important; }\\n\\n.has-background-danger {\\n background-color: #f14668 !important; }\\n\\n.has-text-danger-light {\\n color: #feecf0 !important; }\\n\\na.has-text-danger-light:hover, a.has-text-danger-light:focus {\\n color: #fabdc9 !important; }\\n\\n.has-background-danger-light {\\n background-color: #feecf0 !important; }\\n\\n.has-text-danger-dark {\\n color: #cc0f35 !important; }\\n\\na.has-text-danger-dark:hover, a.has-text-danger-dark:focus {\\n color: #ee2049 !important; }\\n\\n.has-background-danger-dark {\\n background-color: #cc0f35 !important; }\\n\\n.has-text-black-bis {\\n color: #121212 !important; }\\n\\n.has-background-black-bis {\\n background-color: #121212 !important; }\\n\\n.has-text-black-ter {\\n color: #242424 !important; }\\n\\n.has-background-black-ter {\\n background-color: #242424 !important; }\\n\\n.has-text-grey-darker {\\n color: #363636 !important; }\\n\\n.has-background-grey-darker {\\n background-color: #363636 !important; }\\n\\n.has-text-grey-dark {\\n color: #4a4a4a !important; }\\n\\n.has-background-grey-dark {\\n background-color: #4a4a4a !important; }\\n\\n.has-text-grey {\\n color: #7a7a7a !important; }\\n\\n.has-background-grey {\\n background-color: #7a7a7a !important; }\\n\\n.has-text-grey-light {\\n color: #b5b5b5 !important; }\\n\\n.has-background-grey-light {\\n background-color: #b5b5b5 !important; }\\n\\n.has-text-grey-lighter {\\n color: #dbdbdb !important; }\\n\\n.has-background-grey-lighter {\\n background-color: #dbdbdb !important; }\\n\\n.has-text-white-ter {\\n color: whitesmoke !important; }\\n\\n.has-background-white-ter {\\n background-color: whitesmoke !important; }\\n\\n.has-text-white-bis {\\n color: #fafafa !important; }\\n\\n.has-background-white-bis {\\n background-color: #fafafa !important; }\\n\\n.is-flex-direction-row {\\n flex-direction: row !important; }\\n\\n.is-flex-direction-row-reverse {\\n flex-direction: row-reverse !important; }\\n\\n.is-flex-direction-column {\\n flex-direction: column !important; }\\n\\n.is-flex-direction-column-reverse {\\n flex-direction: column-reverse !important; }\\n\\n.is-flex-wrap-nowrap {\\n flex-wrap: nowrap !important; }\\n\\n.is-flex-wrap-wrap {\\n flex-wrap: wrap !important; }\\n\\n.is-flex-wrap-wrap-reverse {\\n flex-wrap: wrap-reverse !important; }\\n\\n.is-justify-content-flex-start {\\n justify-content: flex-start !important; }\\n\\n.is-justify-content-flex-end {\\n justify-content: flex-end !important; }\\n\\n.is-justify-content-center {\\n justify-content: center !important; }\\n\\n.is-justify-content-space-between {\\n justify-content: space-between !important; }\\n\\n.is-justify-content-space-around {\\n justify-content: space-around !important; }\\n\\n.is-justify-content-space-evenly {\\n justify-content: space-evenly !important; }\\n\\n.is-justify-content-start {\\n justify-content: start !important; }\\n\\n.is-justify-content-end {\\n justify-content: end !important; }\\n\\n.is-justify-content-left {\\n justify-content: left !important; }\\n\\n.is-justify-content-right {\\n justify-content: right !important; }\\n\\n.is-align-content-flex-start {\\n align-content: flex-start !important; }\\n\\n.is-align-content-flex-end {\\n align-content: flex-end !important; }\\n\\n.is-align-content-center {\\n align-content: center !important; }\\n\\n.is-align-content-space-between {\\n align-content: space-between !important; }\\n\\n.is-align-content-space-around {\\n align-content: space-around !important; }\\n\\n.is-align-content-space-evenly {\\n align-content: space-evenly !important; }\\n\\n.is-align-content-stretch {\\n align-content: stretch !important; }\\n\\n.is-align-content-start {\\n align-content: start !important; }\\n\\n.is-align-content-end {\\n align-content: end !important; }\\n\\n.is-align-content-baseline {\\n align-content: baseline !important; }\\n\\n.is-align-items-stretch {\\n align-items: stretch !important; }\\n\\n.is-align-items-flex-start {\\n align-items: flex-start !important; }\\n\\n.is-align-items-flex-end {\\n align-items: flex-end !important; }\\n\\n.is-align-items-center {\\n align-items: center !important; }\\n\\n.is-align-items-baseline {\\n align-items: baseline !important; }\\n\\n.is-align-items-start {\\n align-items: start !important; }\\n\\n.is-align-items-end {\\n align-items: end !important; }\\n\\n.is-align-items-self-start {\\n align-items: self-start !important; }\\n\\n.is-align-items-self-end {\\n align-items: self-end !important; }\\n\\n.is-align-self-auto {\\n align-self: auto !important; }\\n\\n.is-align-self-flex-start {\\n align-self: flex-start !important; }\\n\\n.is-align-self-flex-end {\\n align-self: flex-end !important; }\\n\\n.is-align-self-center {\\n align-self: center !important; }\\n\\n.is-align-self-baseline {\\n align-self: baseline !important; }\\n\\n.is-align-self-stretch {\\n align-self: stretch !important; }\\n\\n.is-flex-grow-0 {\\n flex-grow: 0 !important; }\\n\\n.is-flex-grow-1 {\\n flex-grow: 1 !important; }\\n\\n.is-flex-grow-2 {\\n flex-grow: 2 !important; }\\n\\n.is-flex-grow-3 {\\n flex-grow: 3 !important; }\\n\\n.is-flex-grow-4 {\\n flex-grow: 4 !important; }\\n\\n.is-flex-grow-5 {\\n flex-grow: 5 !important; }\\n\\n.is-flex-shrink-0 {\\n flex-shrink: 0 !important; }\\n\\n.is-flex-shrink-1 {\\n flex-shrink: 1 !important; }\\n\\n.is-flex-shrink-2 {\\n flex-shrink: 2 !important; }\\n\\n.is-flex-shrink-3 {\\n flex-shrink: 3 !important; }\\n\\n.is-flex-shrink-4 {\\n flex-shrink: 4 !important; }\\n\\n.is-flex-shrink-5 {\\n flex-shrink: 5 !important; }\\n\\n.is-clearfix::after {\\n clear: both;\\n content: \\" \\";\\n display: table; }\\n\\n.is-pulled-left {\\n float: left !important; }\\n\\n.is-pulled-right {\\n float: right !important; }\\n\\n.is-radiusless {\\n border-radius: 0 !important; }\\n\\n.is-shadowless {\\n box-shadow: none !important; }\\n\\n.is-clickable {\\n cursor: pointer !important;\\n pointer-events: all !important; }\\n\\n.is-clipped {\\n overflow: hidden !important; }\\n\\n.is-relative {\\n position: relative !important; }\\n\\n.is-marginless {\\n margin: 0 !important; }\\n\\n.is-paddingless {\\n padding: 0 !important; }\\n\\n.m-0 {\\n margin: 0 !important; }\\n\\n.mt-0 {\\n margin-top: 0 !important; }\\n\\n.mr-0 {\\n margin-right: 0 !important; }\\n\\n.mb-0 {\\n margin-bottom: 0 !important; }\\n\\n.ml-0 {\\n margin-left: 0 !important; }\\n\\n.mx-0 {\\n margin-left: 0 !important;\\n margin-right: 0 !important; }\\n\\n.my-0 {\\n margin-top: 0 !important;\\n margin-bottom: 0 !important; }\\n\\n.m-1 {\\n margin: 0.25rem !important; }\\n\\n.mt-1 {\\n margin-top: 0.25rem !important; }\\n\\n.mr-1 {\\n margin-right: 0.25rem !important; }\\n\\n.mb-1 {\\n margin-bottom: 0.25rem !important; }\\n\\n.ml-1 {\\n margin-left: 0.25rem !important; }\\n\\n.mx-1 {\\n margin-left: 0.25rem !important;\\n margin-right: 0.25rem !important; }\\n\\n.my-1 {\\n margin-top: 0.25rem !important;\\n margin-bottom: 0.25rem !important; }\\n\\n.m-2 {\\n margin: 0.5rem !important; }\\n\\n.mt-2 {\\n margin-top: 0.5rem !important; }\\n\\n.mr-2 {\\n margin-right: 0.5rem !important; }\\n\\n.mb-2 {\\n margin-bottom: 0.5rem !important; }\\n\\n.ml-2 {\\n margin-left: 0.5rem !important; }\\n\\n.mx-2 {\\n margin-left: 0.5rem !important;\\n margin-right: 0.5rem !important; }\\n\\n.my-2 {\\n margin-top: 0.5rem !important;\\n margin-bottom: 0.5rem !important; }\\n\\n.m-3 {\\n margin: 0.75rem !important; }\\n\\n.mt-3 {\\n margin-top: 0.75rem !important; }\\n\\n.mr-3 {\\n margin-right: 0.75rem !important; }\\n\\n.mb-3 {\\n margin-bottom: 0.75rem !important; }\\n\\n.ml-3 {\\n margin-left: 0.75rem !important; }\\n\\n.mx-3 {\\n margin-left: 0.75rem !important;\\n margin-right: 0.75rem !important; }\\n\\n.my-3 {\\n margin-top: 0.75rem !important;\\n margin-bottom: 0.75rem !important; }\\n\\n.m-4 {\\n margin: 1rem !important; }\\n\\n.mt-4 {\\n margin-top: 1rem !important; }\\n\\n.mr-4 {\\n margin-right: 1rem !important; }\\n\\n.mb-4 {\\n margin-bottom: 1rem !important; }\\n\\n.ml-4 {\\n margin-left: 1rem !important; }\\n\\n.mx-4 {\\n margin-left: 1rem !important;\\n margin-right: 1rem !important; }\\n\\n.my-4 {\\n margin-top: 1rem !important;\\n margin-bottom: 1rem !important; }\\n\\n.m-5 {\\n margin: 1.5rem !important; }\\n\\n.mt-5 {\\n margin-top: 1.5rem !important; }\\n\\n.mr-5 {\\n margin-right: 1.5rem !important; }\\n\\n.mb-5 {\\n margin-bottom: 1.5rem !important; }\\n\\n.ml-5 {\\n margin-left: 1.5rem !important; }\\n\\n.mx-5 {\\n margin-left: 1.5rem !important;\\n margin-right: 1.5rem !important; }\\n\\n.my-5 {\\n margin-top: 1.5rem !important;\\n margin-bottom: 1.5rem !important; }\\n\\n.m-6 {\\n margin: 3rem !important; }\\n\\n.mt-6 {\\n margin-top: 3rem !important; }\\n\\n.mr-6 {\\n margin-right: 3rem !important; }\\n\\n.mb-6 {\\n margin-bottom: 3rem !important; }\\n\\n.ml-6 {\\n margin-left: 3rem !important; }\\n\\n.mx-6 {\\n margin-left: 3rem !important;\\n margin-right: 3rem !important; }\\n\\n.my-6 {\\n margin-top: 3rem !important;\\n margin-bottom: 3rem !important; }\\n\\n.m-auto {\\n margin: auto !important; }\\n\\n.mt-auto {\\n margin-top: auto !important; }\\n\\n.mr-auto {\\n margin-right: auto !important; }\\n\\n.mb-auto {\\n margin-bottom: auto !important; }\\n\\n.ml-auto {\\n margin-left: auto !important; }\\n\\n.mx-auto {\\n margin-left: auto !important;\\n margin-right: auto !important; }\\n\\n.my-auto {\\n margin-top: auto !important;\\n margin-bottom: auto !important; }\\n\\n.p-0 {\\n padding: 0 !important; }\\n\\n.pt-0 {\\n padding-top: 0 !important; }\\n\\n.pr-0 {\\n padding-right: 0 !important; }\\n\\n.pb-0 {\\n padding-bottom: 0 !important; }\\n\\n.pl-0 {\\n padding-left: 0 !important; }\\n\\n.px-0 {\\n padding-left: 0 !important;\\n padding-right: 0 !important; }\\n\\n.py-0 {\\n padding-top: 0 !important;\\n padding-bottom: 0 !important; }\\n\\n.p-1 {\\n padding: 0.25rem !important; }\\n\\n.pt-1 {\\n padding-top: 0.25rem !important; }\\n\\n.pr-1 {\\n padding-right: 0.25rem !important; }\\n\\n.pb-1 {\\n padding-bottom: 0.25rem !important; }\\n\\n.pl-1 {\\n padding-left: 0.25rem !important; }\\n\\n.px-1 {\\n padding-left: 0.25rem !important;\\n padding-right: 0.25rem !important; }\\n\\n.py-1 {\\n padding-top: 0.25rem !important;\\n padding-bottom: 0.25rem !important; }\\n\\n.p-2 {\\n padding: 0.5rem !important; }\\n\\n.pt-2 {\\n padding-top: 0.5rem !important; }\\n\\n.pr-2 {\\n padding-right: 0.5rem !important; }\\n\\n.pb-2 {\\n padding-bottom: 0.5rem !important; }\\n\\n.pl-2 {\\n padding-left: 0.5rem !important; }\\n\\n.px-2 {\\n padding-left: 0.5rem !important;\\n padding-right: 0.5rem !important; }\\n\\n.py-2 {\\n padding-top: 0.5rem !important;\\n padding-bottom: 0.5rem !important; }\\n\\n.p-3 {\\n padding: 0.75rem !important; }\\n\\n.pt-3 {\\n padding-top: 0.75rem !important; }\\n\\n.pr-3 {\\n padding-right: 0.75rem !important; }\\n\\n.pb-3 {\\n padding-bottom: 0.75rem !important; }\\n\\n.pl-3 {\\n padding-left: 0.75rem !important; }\\n\\n.px-3 {\\n padding-left: 0.75rem !important;\\n padding-right: 0.75rem !important; }\\n\\n.py-3 {\\n padding-top: 0.75rem !important;\\n padding-bottom: 0.75rem !important; }\\n\\n.p-4 {\\n padding: 1rem !important; }\\n\\n.pt-4 {\\n padding-top: 1rem !important; }\\n\\n.pr-4 {\\n padding-right: 1rem !important; }\\n\\n.pb-4 {\\n padding-bottom: 1rem !important; }\\n\\n.pl-4 {\\n padding-left: 1rem !important; }\\n\\n.px-4 {\\n padding-left: 1rem !important;\\n padding-right: 1rem !important; }\\n\\n.py-4 {\\n padding-top: 1rem !important;\\n padding-bottom: 1rem !important; }\\n\\n.p-5 {\\n padding: 1.5rem !important; }\\n\\n.pt-5 {\\n padding-top: 1.5rem !important; }\\n\\n.pr-5 {\\n padding-right: 1.5rem !important; }\\n\\n.pb-5 {\\n padding-bottom: 1.5rem !important; }\\n\\n.pl-5 {\\n padding-left: 1.5rem !important; }\\n\\n.px-5 {\\n padding-left: 1.5rem !important;\\n padding-right: 1.5rem !important; }\\n\\n.py-5 {\\n padding-top: 1.5rem !important;\\n padding-bottom: 1.5rem !important; }\\n\\n.p-6 {\\n padding: 3rem !important; }\\n\\n.pt-6 {\\n padding-top: 3rem !important; }\\n\\n.pr-6 {\\n padding-right: 3rem !important; }\\n\\n.pb-6 {\\n padding-bottom: 3rem !important; }\\n\\n.pl-6 {\\n padding-left: 3rem !important; }\\n\\n.px-6 {\\n padding-left: 3rem !important;\\n padding-right: 3rem !important; }\\n\\n.py-6 {\\n padding-top: 3rem !important;\\n padding-bottom: 3rem !important; }\\n\\n.p-auto {\\n padding: auto !important; }\\n\\n.pt-auto {\\n padding-top: auto !important; }\\n\\n.pr-auto {\\n padding-right: auto !important; }\\n\\n.pb-auto {\\n padding-bottom: auto !important; }\\n\\n.pl-auto {\\n padding-left: auto !important; }\\n\\n.px-auto {\\n padding-left: auto !important;\\n padding-right: auto !important; }\\n\\n.py-auto {\\n padding-top: auto !important;\\n padding-bottom: auto !important; }\\n\\n.is-size-1 {\\n font-size: 3rem !important; }\\n\\n.is-size-2 {\\n font-size: 2.5rem !important; }\\n\\n.is-size-3 {\\n font-size: 2rem !important; }\\n\\n.is-size-4 {\\n font-size: 1.5rem !important; }\\n\\n.is-size-5 {\\n font-size: 1.25rem !important; }\\n\\n.is-size-6 {\\n font-size: 1rem !important; }\\n\\n.is-size-7 {\\n font-size: 0.75rem !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-size-1-mobile {\\n font-size: 3rem !important; }\\n .is-size-2-mobile {\\n font-size: 2.5rem !important; }\\n .is-size-3-mobile {\\n font-size: 2rem !important; }\\n .is-size-4-mobile {\\n font-size: 1.5rem !important; }\\n .is-size-5-mobile {\\n font-size: 1.25rem !important; }\\n .is-size-6-mobile {\\n font-size: 1rem !important; }\\n .is-size-7-mobile {\\n font-size: 0.75rem !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-size-1-tablet {\\n font-size: 3rem !important; }\\n .is-size-2-tablet {\\n font-size: 2.5rem !important; }\\n .is-size-3-tablet {\\n font-size: 2rem !important; }\\n .is-size-4-tablet {\\n font-size: 1.5rem !important; }\\n .is-size-5-tablet {\\n font-size: 1.25rem !important; }\\n .is-size-6-tablet {\\n font-size: 1rem !important; }\\n .is-size-7-tablet {\\n font-size: 0.75rem !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-size-1-touch {\\n font-size: 3rem !important; }\\n .is-size-2-touch {\\n font-size: 2.5rem !important; }\\n .is-size-3-touch {\\n font-size: 2rem !important; }\\n .is-size-4-touch {\\n font-size: 1.5rem !important; }\\n .is-size-5-touch {\\n font-size: 1.25rem !important; }\\n .is-size-6-touch {\\n font-size: 1rem !important; }\\n .is-size-7-touch {\\n font-size: 0.75rem !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-size-1-desktop {\\n font-size: 3rem !important; }\\n .is-size-2-desktop {\\n font-size: 2.5rem !important; }\\n .is-size-3-desktop {\\n font-size: 2rem !important; }\\n .is-size-4-desktop {\\n font-size: 1.5rem !important; }\\n .is-size-5-desktop {\\n font-size: 1.25rem !important; }\\n .is-size-6-desktop {\\n font-size: 1rem !important; }\\n .is-size-7-desktop {\\n font-size: 0.75rem !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-size-1-widescreen {\\n font-size: 3rem !important; }\\n .is-size-2-widescreen {\\n font-size: 2.5rem !important; }\\n .is-size-3-widescreen {\\n font-size: 2rem !important; }\\n .is-size-4-widescreen {\\n font-size: 1.5rem !important; }\\n .is-size-5-widescreen {\\n font-size: 1.25rem !important; }\\n .is-size-6-widescreen {\\n font-size: 1rem !important; }\\n .is-size-7-widescreen {\\n font-size: 0.75rem !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-size-1-fullhd {\\n font-size: 3rem !important; }\\n .is-size-2-fullhd {\\n font-size: 2.5rem !important; }\\n .is-size-3-fullhd {\\n font-size: 2rem !important; }\\n .is-size-4-fullhd {\\n font-size: 1.5rem !important; }\\n .is-size-5-fullhd {\\n font-size: 1.25rem !important; }\\n .is-size-6-fullhd {\\n font-size: 1rem !important; }\\n .is-size-7-fullhd {\\n font-size: 0.75rem !important; } }\\n\\n.has-text-centered {\\n text-align: center !important; }\\n\\n.has-text-justified {\\n text-align: justify !important; }\\n\\n.has-text-left {\\n text-align: left !important; }\\n\\n.has-text-right {\\n text-align: right !important; }\\n\\n@media screen and (max-width: 768px) {\\n .has-text-centered-mobile {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .has-text-centered-tablet {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .has-text-centered-tablet-only {\\n text-align: center !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .has-text-centered-touch {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .has-text-centered-desktop {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .has-text-centered-desktop-only {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .has-text-centered-widescreen {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .has-text-centered-widescreen-only {\\n text-align: center !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .has-text-centered-fullhd {\\n text-align: center !important; } }\\n\\n@media screen and (max-width: 768px) {\\n .has-text-justified-mobile {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .has-text-justified-tablet {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .has-text-justified-tablet-only {\\n text-align: justify !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .has-text-justified-touch {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .has-text-justified-desktop {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .has-text-justified-desktop-only {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .has-text-justified-widescreen {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .has-text-justified-widescreen-only {\\n text-align: justify !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .has-text-justified-fullhd {\\n text-align: justify !important; } }\\n\\n@media screen and (max-width: 768px) {\\n .has-text-left-mobile {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .has-text-left-tablet {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .has-text-left-tablet-only {\\n text-align: left !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .has-text-left-touch {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .has-text-left-desktop {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .has-text-left-desktop-only {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .has-text-left-widescreen {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .has-text-left-widescreen-only {\\n text-align: left !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .has-text-left-fullhd {\\n text-align: left !important; } }\\n\\n@media screen and (max-width: 768px) {\\n .has-text-right-mobile {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .has-text-right-tablet {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .has-text-right-tablet-only {\\n text-align: right !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .has-text-right-touch {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .has-text-right-desktop {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .has-text-right-desktop-only {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .has-text-right-widescreen {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .has-text-right-widescreen-only {\\n text-align: right !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .has-text-right-fullhd {\\n text-align: right !important; } }\\n\\n.is-capitalized {\\n text-transform: capitalize !important; }\\n\\n.is-lowercase {\\n text-transform: lowercase !important; }\\n\\n.is-uppercase {\\n text-transform: uppercase !important; }\\n\\n.is-italic {\\n font-style: italic !important; }\\n\\n.is-underlined {\\n text-decoration: underline !important; }\\n\\n.has-text-weight-light {\\n font-weight: 300 !important; }\\n\\n.has-text-weight-normal {\\n font-weight: 400 !important; }\\n\\n.has-text-weight-medium {\\n font-weight: 500 !important; }\\n\\n.has-text-weight-semibold {\\n font-weight: 600 !important; }\\n\\n.has-text-weight-bold {\\n font-weight: 700 !important; }\\n\\n.is-family-primary {\\n font-family: BlinkMacSystemFont, -apple-system, \\"Segoe UI\\", \\"Roboto\\", \\"Oxygen\\", \\"Ubuntu\\", \\"Cantarell\\", \\"Fira Sans\\", \\"Droid Sans\\", \\"Helvetica Neue\\", \\"Helvetica\\", \\"Arial\\", sans-serif !important; }\\n\\n.is-family-secondary {\\n font-family: BlinkMacSystemFont, -apple-system, \\"Segoe UI\\", \\"Roboto\\", \\"Oxygen\\", \\"Ubuntu\\", \\"Cantarell\\", \\"Fira Sans\\", \\"Droid Sans\\", \\"Helvetica Neue\\", \\"Helvetica\\", \\"Arial\\", sans-serif !important; }\\n\\n.is-family-sans-serif {\\n font-family: BlinkMacSystemFont, -apple-system, \\"Segoe UI\\", \\"Roboto\\", \\"Oxygen\\", \\"Ubuntu\\", \\"Cantarell\\", \\"Fira Sans\\", \\"Droid Sans\\", \\"Helvetica Neue\\", \\"Helvetica\\", \\"Arial\\", sans-serif !important; }\\n\\n.is-family-monospace {\\n font-family: monospace !important; }\\n\\n.is-family-code {\\n font-family: monospace !important; }\\n\\n.is-block {\\n display: block !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-block-mobile {\\n display: block !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-block-tablet {\\n display: block !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-block-tablet-only {\\n display: block !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-block-touch {\\n display: block !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-block-desktop {\\n display: block !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-block-desktop-only {\\n display: block !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-block-widescreen {\\n display: block !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-block-widescreen-only {\\n display: block !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-block-fullhd {\\n display: block !important; } }\\n\\n.is-flex {\\n display: flex !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-flex-mobile {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-flex-tablet {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-flex-tablet-only {\\n display: flex !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-flex-touch {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-flex-desktop {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-flex-desktop-only {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-flex-widescreen {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-flex-widescreen-only {\\n display: flex !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-flex-fullhd {\\n display: flex !important; } }\\n\\n.is-inline {\\n display: inline !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-inline-mobile {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-inline-tablet {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-inline-tablet-only {\\n display: inline !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-inline-touch {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-inline-desktop {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-inline-desktop-only {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-inline-widescreen {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-inline-widescreen-only {\\n display: inline !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-inline-fullhd {\\n display: inline !important; } }\\n\\n.is-inline-block {\\n display: inline-block !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-inline-block-mobile {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-inline-block-tablet {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-inline-block-tablet-only {\\n display: inline-block !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-inline-block-touch {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-inline-block-desktop {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-inline-block-desktop-only {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-inline-block-widescreen {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-inline-block-widescreen-only {\\n display: inline-block !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-inline-block-fullhd {\\n display: inline-block !important; } }\\n\\n.is-inline-flex {\\n display: inline-flex !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-inline-flex-mobile {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-inline-flex-tablet {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-inline-flex-tablet-only {\\n display: inline-flex !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-inline-flex-touch {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-inline-flex-desktop {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-inline-flex-desktop-only {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-inline-flex-widescreen {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-inline-flex-widescreen-only {\\n display: inline-flex !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-inline-flex-fullhd {\\n display: inline-flex !important; } }\\n\\n.is-hidden {\\n display: none !important; }\\n\\n.is-sr-only {\\n border: none !important;\\n clip: rect(0, 0, 0, 0) !important;\\n height: 0.01em !important;\\n overflow: hidden !important;\\n padding: 0 !important;\\n position: absolute !important;\\n white-space: nowrap !important;\\n width: 0.01em !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-hidden-mobile {\\n display: none !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-hidden-tablet {\\n display: none !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-hidden-tablet-only {\\n display: none !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-hidden-touch {\\n display: none !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-hidden-desktop {\\n display: none !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-hidden-desktop-only {\\n display: none !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-hidden-widescreen {\\n display: none !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-hidden-widescreen-only {\\n display: none !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-hidden-fullhd {\\n display: none !important; } }\\n\\n.is-invisible {\\n visibility: hidden !important; }\\n\\n@media screen and (max-width: 768px) {\\n .is-invisible-mobile {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 769px), print {\\n .is-invisible-tablet {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 769px) and (max-width: 1023px) {\\n .is-invisible-tablet-only {\\n visibility: hidden !important; } }\\n\\n@media screen and (max-width: 1023px) {\\n .is-invisible-touch {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 1024px) {\\n .is-invisible-desktop {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 1024px) and (max-width: 1215px) {\\n .is-invisible-desktop-only {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 1216px) {\\n .is-invisible-widescreen {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 1216px) and (max-width: 1407px) {\\n .is-invisible-widescreen-only {\\n visibility: hidden !important; } }\\n\\n@media screen and (min-width: 1408px) {\\n .is-invisible-fullhd {\\n visibility: hidden !important; } }\\n\\n/* Bulma Layout */\\n.hero {\\n align-items: stretch;\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between; }\\n .hero .navbar {\\n background: none; }\\n .hero .tabs ul {\\n border-bottom: none; }\\n .hero.is-white {\\n background-color: white;\\n color: #0a0a0a; }\\n .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-white strong {\\n color: inherit; }\\n .hero.is-white .title {\\n color: #0a0a0a; }\\n .hero.is-white .subtitle {\\n color: rgba(10, 10, 10, 0.9); }\\n .hero.is-white .subtitle a:not(.button),\\n .hero.is-white .subtitle strong {\\n color: #0a0a0a; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-white .navbar-menu {\\n background-color: white; } }\\n .hero.is-white .navbar-item,\\n .hero.is-white .navbar-link {\\n color: rgba(10, 10, 10, 0.7); }\\n .hero.is-white a.navbar-item:hover, .hero.is-white a.navbar-item.is-active,\\n .hero.is-white .navbar-link:hover,\\n .hero.is-white .navbar-link.is-active {\\n background-color: #f2f2f2;\\n color: #0a0a0a; }\\n .hero.is-white .tabs a {\\n color: #0a0a0a;\\n opacity: 0.9; }\\n .hero.is-white .tabs a:hover {\\n opacity: 1; }\\n .hero.is-white .tabs li.is-active a {\\n color: white !important;\\n opacity: 1; }\\n .hero.is-white .tabs.is-boxed a, .hero.is-white .tabs.is-toggle a {\\n color: #0a0a0a; }\\n .hero.is-white .tabs.is-boxed a:hover, .hero.is-white .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-white .tabs.is-boxed li.is-active a, .hero.is-white .tabs.is-boxed li.is-active a:hover, .hero.is-white .tabs.is-toggle li.is-active a, .hero.is-white .tabs.is-toggle li.is-active a:hover {\\n background-color: #0a0a0a;\\n border-color: #0a0a0a;\\n color: white; }\\n .hero.is-white.is-bold {\\n background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-white.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } }\\n .hero.is-black {\\n background-color: #0a0a0a;\\n color: white; }\\n .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-black strong {\\n color: inherit; }\\n .hero.is-black .title {\\n color: white; }\\n .hero.is-black .subtitle {\\n color: rgba(255, 255, 255, 0.9); }\\n .hero.is-black .subtitle a:not(.button),\\n .hero.is-black .subtitle strong {\\n color: white; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-black .navbar-menu {\\n background-color: #0a0a0a; } }\\n .hero.is-black .navbar-item,\\n .hero.is-black .navbar-link {\\n color: rgba(255, 255, 255, 0.7); }\\n .hero.is-black a.navbar-item:hover, .hero.is-black a.navbar-item.is-active,\\n .hero.is-black .navbar-link:hover,\\n .hero.is-black .navbar-link.is-active {\\n background-color: black;\\n color: white; }\\n .hero.is-black .tabs a {\\n color: white;\\n opacity: 0.9; }\\n .hero.is-black .tabs a:hover {\\n opacity: 1; }\\n .hero.is-black .tabs li.is-active a {\\n color: #0a0a0a !important;\\n opacity: 1; }\\n .hero.is-black .tabs.is-boxed a, .hero.is-black .tabs.is-toggle a {\\n color: white; }\\n .hero.is-black .tabs.is-boxed a:hover, .hero.is-black .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-black .tabs.is-boxed li.is-active a, .hero.is-black .tabs.is-boxed li.is-active a:hover, .hero.is-black .tabs.is-toggle li.is-active a, .hero.is-black .tabs.is-toggle li.is-active a:hover {\\n background-color: white;\\n border-color: white;\\n color: #0a0a0a; }\\n .hero.is-black.is-bold {\\n background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-black.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } }\\n .hero.is-light {\\n background-color: #d2f9d6;\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-light strong {\\n color: inherit; }\\n .hero.is-light .title {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-light .subtitle {\\n color: rgba(0, 0, 0, 0.9); }\\n .hero.is-light .subtitle a:not(.button),\\n .hero.is-light .subtitle strong {\\n color: rgba(0, 0, 0, 0.7); }\\n @media screen and (max-width: 1023px) {\\n .hero.is-light .navbar-menu {\\n background-color: #d2f9d6; } }\\n .hero.is-light .navbar-item,\\n .hero.is-light .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-light a.navbar-item:hover, .hero.is-light a.navbar-item.is-active,\\n .hero.is-light .navbar-link:hover,\\n .hero.is-light .navbar-link.is-active {\\n background-color: #bcf6c2;\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-light .tabs a {\\n color: rgba(0, 0, 0, 0.7);\\n opacity: 0.9; }\\n .hero.is-light .tabs a:hover {\\n opacity: 1; }\\n .hero.is-light .tabs li.is-active a {\\n color: #d2f9d6 !important;\\n opacity: 1; }\\n .hero.is-light .tabs.is-boxed a, .hero.is-light .tabs.is-toggle a {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-light .tabs.is-boxed a:hover, .hero.is-light .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-light .tabs.is-boxed li.is-active a, .hero.is-light .tabs.is-boxed li.is-active a:hover, .hero.is-light .tabs.is-toggle li.is-active a, .hero.is-light .tabs.is-toggle li.is-active a:hover {\\n background-color: rgba(0, 0, 0, 0.7);\\n border-color: rgba(0, 0, 0, 0.7);\\n color: #d2f9d6; }\\n .hero.is-light.is-bold {\\n background-image: linear-gradient(141deg, #a6f8a0 0%, #d2f9d6 71%, #e8fded 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-light.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #a6f8a0 0%, #d2f9d6 71%, #e8fded 100%); } }\\n .hero.is-dark {\\n background-color: #459558;\\n color: #fff; }\\n .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-dark strong {\\n color: inherit; }\\n .hero.is-dark .title {\\n color: #fff; }\\n .hero.is-dark .subtitle {\\n color: rgba(255, 255, 255, 0.9); }\\n .hero.is-dark .subtitle a:not(.button),\\n .hero.is-dark .subtitle strong {\\n color: #fff; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-dark .navbar-menu {\\n background-color: #459558; } }\\n .hero.is-dark .navbar-item,\\n .hero.is-dark .navbar-link {\\n color: rgba(255, 255, 255, 0.7); }\\n .hero.is-dark a.navbar-item:hover, .hero.is-dark a.navbar-item.is-active,\\n .hero.is-dark .navbar-link:hover,\\n .hero.is-dark .navbar-link.is-active {\\n background-color: #3d844e;\\n color: #fff; }\\n .hero.is-dark .tabs a {\\n color: #fff;\\n opacity: 0.9; }\\n .hero.is-dark .tabs a:hover {\\n opacity: 1; }\\n .hero.is-dark .tabs li.is-active a {\\n color: #459558 !important;\\n opacity: 1; }\\n .hero.is-dark .tabs.is-boxed a, .hero.is-dark .tabs.is-toggle a {\\n color: #fff; }\\n .hero.is-dark .tabs.is-boxed a:hover, .hero.is-dark .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-dark .tabs.is-boxed li.is-active a, .hero.is-dark .tabs.is-boxed li.is-active a:hover, .hero.is-dark .tabs.is-toggle li.is-active a, .hero.is-dark .tabs.is-toggle li.is-active a:hover {\\n background-color: #fff;\\n border-color: #fff;\\n color: #459558; }\\n .hero.is-dark.is-bold {\\n background-image: linear-gradient(141deg, #2d7a32 0%, #459558 71%, #47ad70 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-dark.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #2d7a32 0%, #459558 71%, #47ad70 100%); } }\\n .hero.is-primary {\\n background-color: #55be6f;\\n color: #fff; }\\n .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-primary strong {\\n color: inherit; }\\n .hero.is-primary .title {\\n color: #fff; }\\n .hero.is-primary .subtitle {\\n color: rgba(255, 255, 255, 0.9); }\\n .hero.is-primary .subtitle a:not(.button),\\n .hero.is-primary .subtitle strong {\\n color: #fff; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-primary .navbar-menu {\\n background-color: #55be6f; } }\\n .hero.is-primary .navbar-item,\\n .hero.is-primary .navbar-link {\\n color: rgba(255, 255, 255, 0.7); }\\n .hero.is-primary a.navbar-item:hover, .hero.is-primary a.navbar-item.is-active,\\n .hero.is-primary .navbar-link:hover,\\n .hero.is-primary .navbar-link.is-active {\\n background-color: #45b461;\\n color: #fff; }\\n .hero.is-primary .tabs a {\\n color: #fff;\\n opacity: 0.9; }\\n .hero.is-primary .tabs a:hover {\\n opacity: 1; }\\n .hero.is-primary .tabs li.is-active a {\\n color: #55be6f !important;\\n opacity: 1; }\\n .hero.is-primary .tabs.is-boxed a, .hero.is-primary .tabs.is-toggle a {\\n color: #fff; }\\n .hero.is-primary .tabs.is-boxed a:hover, .hero.is-primary .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-primary .tabs.is-boxed li.is-active a, .hero.is-primary .tabs.is-boxed li.is-active a:hover, .hero.is-primary .tabs.is-toggle li.is-active a, .hero.is-primary .tabs.is-toggle li.is-active a:hover {\\n background-color: #fff;\\n border-color: #fff;\\n color: #55be6f; }\\n .hero.is-primary.is-bold {\\n background-image: linear-gradient(141deg, #33ad3d 0%, #55be6f 71%, #62ca8d 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-primary.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #33ad3d 0%, #55be6f 71%, #62ca8d 100%); } }\\n .hero.is-link {\\n background-color: #4876ff;\\n color: #fff; }\\n .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-link strong {\\n color: inherit; }\\n .hero.is-link .title {\\n color: #fff; }\\n .hero.is-link .subtitle {\\n color: rgba(255, 255, 255, 0.9); }\\n .hero.is-link .subtitle a:not(.button),\\n .hero.is-link .subtitle strong {\\n color: #fff; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-link .navbar-menu {\\n background-color: #4876ff; } }\\n .hero.is-link .navbar-item,\\n .hero.is-link .navbar-link {\\n color: rgba(255, 255, 255, 0.7); }\\n .hero.is-link a.navbar-item:hover, .hero.is-link a.navbar-item.is-active,\\n .hero.is-link .navbar-link:hover,\\n .hero.is-link .navbar-link.is-active {\\n background-color: #2f63ff;\\n color: #fff; }\\n .hero.is-link .tabs a {\\n color: #fff;\\n opacity: 0.9; }\\n .hero.is-link .tabs a:hover {\\n opacity: 1; }\\n .hero.is-link .tabs li.is-active a {\\n color: #4876ff !important;\\n opacity: 1; }\\n .hero.is-link .tabs.is-boxed a, .hero.is-link .tabs.is-toggle a {\\n color: #fff; }\\n .hero.is-link .tabs.is-boxed a:hover, .hero.is-link .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-link .tabs.is-boxed li.is-active a, .hero.is-link .tabs.is-boxed li.is-active a:hover, .hero.is-link .tabs.is-toggle li.is-active a, .hero.is-link .tabs.is-toggle li.is-active a:hover {\\n background-color: #fff;\\n border-color: #fff;\\n color: #4876ff; }\\n .hero.is-link.is-bold {\\n background-image: linear-gradient(141deg, #1577ff 0%, #4876ff 71%, #626fff 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-link.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #1577ff 0%, #4876ff 71%, #626fff 100%); } }\\n .hero.is-info {\\n background-color: #f0f8ff;\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-info strong {\\n color: inherit; }\\n .hero.is-info .title {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-info .subtitle {\\n color: rgba(0, 0, 0, 0.9); }\\n .hero.is-info .subtitle a:not(.button),\\n .hero.is-info .subtitle strong {\\n color: rgba(0, 0, 0, 0.7); }\\n @media screen and (max-width: 1023px) {\\n .hero.is-info .navbar-menu {\\n background-color: #f0f8ff; } }\\n .hero.is-info .navbar-item,\\n .hero.is-info .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-info a.navbar-item:hover, .hero.is-info a.navbar-item.is-active,\\n .hero.is-info .navbar-link:hover,\\n .hero.is-info .navbar-link.is-active {\\n background-color: #d7ecff;\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-info .tabs a {\\n color: rgba(0, 0, 0, 0.7);\\n opacity: 0.9; }\\n .hero.is-info .tabs a:hover {\\n opacity: 1; }\\n .hero.is-info .tabs li.is-active a {\\n color: #f0f8ff !important;\\n opacity: 1; }\\n .hero.is-info .tabs.is-boxed a, .hero.is-info .tabs.is-toggle a {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-info .tabs.is-boxed a:hover, .hero.is-info .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-info .tabs.is-boxed li.is-active a, .hero.is-info .tabs.is-boxed li.is-active a:hover, .hero.is-info .tabs.is-toggle li.is-active a, .hero.is-info .tabs.is-toggle li.is-active a:hover {\\n background-color: rgba(0, 0, 0, 0.7);\\n border-color: rgba(0, 0, 0, 0.7);\\n color: #f0f8ff; }\\n .hero.is-info.is-bold {\\n background-image: linear-gradient(141deg, #bdebff 0%, #f0f8ff 71%, white 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-info.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #bdebff 0%, #f0f8ff 71%, white 100%); } }\\n .hero.is-success {\\n background-color: #48c78e;\\n color: #fff; }\\n .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-success strong {\\n color: inherit; }\\n .hero.is-success .title {\\n color: #fff; }\\n .hero.is-success .subtitle {\\n color: rgba(255, 255, 255, 0.9); }\\n .hero.is-success .subtitle a:not(.button),\\n .hero.is-success .subtitle strong {\\n color: #fff; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-success .navbar-menu {\\n background-color: #48c78e; } }\\n .hero.is-success .navbar-item,\\n .hero.is-success .navbar-link {\\n color: rgba(255, 255, 255, 0.7); }\\n .hero.is-success a.navbar-item:hover, .hero.is-success a.navbar-item.is-active,\\n .hero.is-success .navbar-link:hover,\\n .hero.is-success .navbar-link.is-active {\\n background-color: #3abb81;\\n color: #fff; }\\n .hero.is-success .tabs a {\\n color: #fff;\\n opacity: 0.9; }\\n .hero.is-success .tabs a:hover {\\n opacity: 1; }\\n .hero.is-success .tabs li.is-active a {\\n color: #48c78e !important;\\n opacity: 1; }\\n .hero.is-success .tabs.is-boxed a, .hero.is-success .tabs.is-toggle a {\\n color: #fff; }\\n .hero.is-success .tabs.is-boxed a:hover, .hero.is-success .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-success .tabs.is-boxed li.is-active a, .hero.is-success .tabs.is-boxed li.is-active a:hover, .hero.is-success .tabs.is-toggle li.is-active a, .hero.is-success .tabs.is-toggle li.is-active a:hover {\\n background-color: #fff;\\n border-color: #fff;\\n color: #48c78e; }\\n .hero.is-success.is-bold {\\n background-image: linear-gradient(141deg, #29b35e 0%, #48c78e 71%, #56d2af 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-success.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #29b35e 0%, #48c78e 71%, #56d2af 100%); } }\\n .hero.is-warning {\\n background-color: #ffd975;\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-warning strong {\\n color: inherit; }\\n .hero.is-warning .title {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-warning .subtitle {\\n color: rgba(0, 0, 0, 0.9); }\\n .hero.is-warning .subtitle a:not(.button),\\n .hero.is-warning .subtitle strong {\\n color: rgba(0, 0, 0, 0.7); }\\n @media screen and (max-width: 1023px) {\\n .hero.is-warning .navbar-menu {\\n background-color: #ffd975; } }\\n .hero.is-warning .navbar-item,\\n .hero.is-warning .navbar-link {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-warning a.navbar-item:hover, .hero.is-warning a.navbar-item.is-active,\\n .hero.is-warning .navbar-link:hover,\\n .hero.is-warning .navbar-link.is-active {\\n background-color: #ffd25c;\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-warning .tabs a {\\n color: rgba(0, 0, 0, 0.7);\\n opacity: 0.9; }\\n .hero.is-warning .tabs a:hover {\\n opacity: 1; }\\n .hero.is-warning .tabs li.is-active a {\\n color: #ffd975 !important;\\n opacity: 1; }\\n .hero.is-warning .tabs.is-boxed a, .hero.is-warning .tabs.is-toggle a {\\n color: rgba(0, 0, 0, 0.7); }\\n .hero.is-warning .tabs.is-boxed a:hover, .hero.is-warning .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-warning .tabs.is-boxed li.is-active a, .hero.is-warning .tabs.is-boxed li.is-active a:hover, .hero.is-warning .tabs.is-toggle li.is-active a, .hero.is-warning .tabs.is-toggle li.is-active a:hover {\\n background-color: rgba(0, 0, 0, 0.7);\\n border-color: rgba(0, 0, 0, 0.7);\\n color: #ffd975; }\\n .hero.is-warning.is-bold {\\n background-image: linear-gradient(141deg, #ffab42 0%, #ffd975 71%, #fff38f 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-warning.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #ffab42 0%, #ffd975 71%, #fff38f 100%); } }\\n .hero.is-danger {\\n background-color: #f14668;\\n color: #fff; }\\n .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),\\n .hero.is-danger strong {\\n color: inherit; }\\n .hero.is-danger .title {\\n color: #fff; }\\n .hero.is-danger .subtitle {\\n color: rgba(255, 255, 255, 0.9); }\\n .hero.is-danger .subtitle a:not(.button),\\n .hero.is-danger .subtitle strong {\\n color: #fff; }\\n @media screen and (max-width: 1023px) {\\n .hero.is-danger .navbar-menu {\\n background-color: #f14668; } }\\n .hero.is-danger .navbar-item,\\n .hero.is-danger .navbar-link {\\n color: rgba(255, 255, 255, 0.7); }\\n .hero.is-danger a.navbar-item:hover, .hero.is-danger a.navbar-item.is-active,\\n .hero.is-danger .navbar-link:hover,\\n .hero.is-danger .navbar-link.is-active {\\n background-color: #ef2e55;\\n color: #fff; }\\n .hero.is-danger .tabs a {\\n color: #fff;\\n opacity: 0.9; }\\n .hero.is-danger .tabs a:hover {\\n opacity: 1; }\\n .hero.is-danger .tabs li.is-active a {\\n color: #f14668 !important;\\n opacity: 1; }\\n .hero.is-danger .tabs.is-boxed a, .hero.is-danger .tabs.is-toggle a {\\n color: #fff; }\\n .hero.is-danger .tabs.is-boxed a:hover, .hero.is-danger .tabs.is-toggle a:hover {\\n background-color: rgba(10, 10, 10, 0.1); }\\n .hero.is-danger .tabs.is-boxed li.is-active a, .hero.is-danger .tabs.is-boxed li.is-active a:hover, .hero.is-danger .tabs.is-toggle li.is-active a, .hero.is-danger .tabs.is-toggle li.is-active a:hover {\\n background-color: #fff;\\n border-color: #fff;\\n color: #f14668; }\\n .hero.is-danger.is-bold {\\n background-image: linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%); }\\n @media screen and (max-width: 768px) {\\n .hero.is-danger.is-bold .navbar-menu {\\n background-image: linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%); } }\\n .hero.is-small .hero-body {\\n padding: 1.5rem; }\\n @media screen and (min-width: 769px), print {\\n .hero.is-medium .hero-body {\\n padding: 9rem 4.5rem; } }\\n @media screen and (min-width: 769px), print {\\n .hero.is-large .hero-body {\\n padding: 18rem 6rem; } }\\n .hero.is-halfheight .hero-body, .hero.is-fullheight .hero-body, .hero.is-fullheight-with-navbar .hero-body {\\n align-items: center;\\n display: flex; }\\n .hero.is-halfheight .hero-body > .container, .hero.is-fullheight .hero-body > .container, .hero.is-fullheight-with-navbar .hero-body > .container {\\n flex-grow: 1;\\n flex-shrink: 1; }\\n .hero.is-halfheight {\\n min-height: 50vh; }\\n .hero.is-fullheight {\\n min-height: 100vh; }\\n\\n.hero-video {\\n overflow: hidden; }\\n .hero-video video {\\n left: 50%;\\n min-height: 100%;\\n min-width: 100%;\\n position: absolute;\\n top: 50%;\\n transform: translate3d(-50%, -50%, 0); }\\n .hero-video.is-transparent {\\n opacity: 0.3; }\\n @media screen and (max-width: 768px) {\\n .hero-video {\\n display: none; } }\\n\\n.hero-buttons {\\n margin-top: 1.5rem; }\\n @media screen and (max-width: 768px) {\\n .hero-buttons .button {\\n display: flex; }\\n .hero-buttons .button:not(:last-child) {\\n margin-bottom: 0.75rem; } }\\n @media screen and (min-width: 769px), print {\\n .hero-buttons {\\n display: flex;\\n justify-content: center; }\\n .hero-buttons .button:not(:last-child) {\\n margin-right: 1.5rem; } }\\n\\n.hero-head,\\n.hero-foot {\\n flex-grow: 0;\\n flex-shrink: 0; }\\n\\n.hero-body {\\n flex-grow: 1;\\n flex-shrink: 0;\\n padding: 3rem 1.5rem; }\\n @media screen and (min-width: 769px), print {\\n .hero-body {\\n padding: 3rem 3rem; } }\\n\\n.section {\\n padding: 3rem 1.5rem; }\\n @media screen and (min-width: 1024px) {\\n .section {\\n padding: 3rem 3rem; }\\n .section.is-medium {\\n padding: 9rem 4.5rem; }\\n .section.is-large {\\n padding: 18rem 6rem; } }\\n\\n.footer {\\n background-color: #fafafa;\\n padding: 3rem 1.5rem 6rem; }\\n\\n:host {\\n font-size: 16px;\\n -moz-osx-font-smoothing: grayscale;\\n -webkit-font-smoothing: antialiased;\\n min-width: 300px;\\n overflow-x: hidden;\\n overflow-y: scroll;\\n text-rendering: optimizeLegibility;\\n text-size-adjust: 100%;\\n font-family: BlinkMacSystemFont, -apple-system, \\"Segoe UI\\", \\"Roboto\\", \\"Oxygen\\", \\"Ubuntu\\", \\"Cantarell\\", \\"Fira Sans\\", \\"Droid Sans\\", \\"Helvetica Neue\\", \\"Helvetica\\", \\"Arial\\", sans-serif;\\n color: #4a4a4a;\\n font-size: 1em;\\n font-weight: 400;\\n line-height: 1.5;\\n box-sizing: border-box;\\n overflow: hidden; }\\n", ""]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://replaywebpage/./assets/main.scss?')},"./node_modules/css-loader/dist/runtime/api.js":
/*!*****************************************************!*\
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
\*****************************************************/module=>{"use strict";eval('\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return "@media ".concat(item[2], " {").concat(content, "}");\n }\n\n return content;\n }).join("");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === "string") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, ""]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = "".concat(mediaQuery, " and ").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\n//# sourceURL=webpack://replaywebpage/./node_modules/css-loader/dist/runtime/api.js?')},"./node_modules/fetch-ndjson/dist/index.js":
/*!*************************************************!*\
!*** ./node_modules/fetch-ndjson/dist/index.js ***!
\*************************************************/function(__unused_webpack_module,exports){"use strict";eval('\n// const debug = console.log;\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume("next", value); }\n function reject(value) { resume("throw", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n// reader comes from:\n// fetch(\'/api\').then(response => response.body.getReader())\nfunction gen(reader) {\n return __asyncGenerator(this, arguments, function* gen_1() {\n const matcher = /\\r?\\n/;\n const decoder = new TextDecoder();\n let buf = \'\';\n let next = reader.read();\n while (true) {\n const { done, value } = yield __await(next);\n if (done) {\n if (buf.length > 0) {\n yield yield __await(JSON.parse(buf));\n }\n return yield __await(void 0);\n }\n const chunk = decoder.decode(value, { stream: true });\n // debug(`chunk=${chunk}`);\n buf += chunk;\n const parts = buf.split(matcher);\n buf = parts.pop();\n for (const i of parts) {\n yield yield __await(JSON.parse(i));\n }\n next = reader.read();\n }\n });\n}\nexports["default"] = gen;\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://replaywebpage/./node_modules/fetch-ndjson/dist/index.js?')},"./node_modules/flexsearch/dist/flexsearch.bundle.js":
/*!***********************************************************!*\
!*** ./node_modules/flexsearch/dist/flexsearch.bundle.js ***!
\***********************************************************/function(module,__unused_webpack_exports,__webpack_require__){eval('/* module decorator */ module = __webpack_require__.nmd(module);\n/**!\r\n * FlexSearch.js v0.7.21 (Bundle)\r\n * Copyright 2018-2021 Nextapps GmbH\r\n * Author: Thomas Wilkerling\r\n * Licence: Apache-2.0\r\n * https://github.com/nextapps-de/flexsearch\r\n */\n(function _f(self){\'use strict\';try{if(module)self=module}catch(e){}self._factory=_f;var t;function u(a){return"undefined"!==typeof a?a:!0}function aa(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=v();return b}function v(){return Object.create(null)}function ba(a,b){return b.length-a.length}function x(a){return"string"===typeof a}function C(a){return"object"===typeof a}function D(a){return"function"===typeof a};function ca(a,b){var c=da;if(a&&(b&&(a=E(a,b)),this.H&&(a=E(a,this.H)),this.J&&1<a.length&&(a=E(a,this.J)),c||""===c)){a=a.split(c);if(this.filter){b=this.filter;c=a.length;const d=[];for(let e=0,f=0;e<c;e++){const g=a[e];g&&!b[g]&&(d[f++]=g)}a=d}return a}return a}const da=/[\\p{Z}\\p{S}\\p{P}\\p{C}]+/u,ea=/[\\u0300-\\u036f]/g;\nfunction fa(a,b){const c=Object.keys(a),d=c.length,e=[];let f="",g=0;for(let h=0,k,m;h<d;h++)k=c[h],(m=a[k])?(e[g++]=F(b?"(?!\\\\b)"+k+"(\\\\b|_)":k),e[g++]=m):f+=(f?"|":"")+k;f&&(e[g++]=F(b?"(?!\\\\b)("+f+")(\\\\b|_)":"("+f+")"),e[g]="");return e}function E(a,b){for(let c=0,d=b.length;c<d&&(a=a.replace(b[c],b[c+1]),a);c+=2);return a}function F(a){return new RegExp(a,"g")}function ha(a){let b="",c="";for(let d=0,e=a.length,f;d<e;d++)(f=a[d])!==c&&(b+=c=f);return b};var ja={encode:ia,F:!1,G:""};function ia(a){return ca.call(this,(""+a).toLowerCase(),!1)};const ka={},G={};function la(a){I(a,"add");I(a,"append");I(a,"search");I(a,"update");I(a,"remove")}function I(a,b){a[b+"Async"]=function(){const c=this,d=arguments;var e=d[d.length-1];let f;D(e)&&(f=e,delete d[d.length-1]);e=new Promise(function(g){setTimeout(function(){c.async=!0;const h=c[b].apply(c,d);c.async=!1;g(h)})});return f?(e.then(f),this):e}};function ma(a,b,c,d){const e=a.length;let f=[],g,h,k=0;d&&(d=[]);for(let m=e-1;0<=m;m--){const n=a[m],w=n.length,q=v();let r=!g;for(let l=0;l<w;l++){const p=n[l],z=p.length;if(z)for(let B=0,A,y;B<z;B++)if(y=p[B],g){if(g[y]){if(!m)if(c)c--;else if(f[k++]=y,k===b)return f;if(m||d)q[y]=1;r=!0}if(d&&(h[y]=(A=h[y])?++A:A=1,A<e)){const H=d[A-2]||(d[A-2]=[]);H[H.length]=y}}else q[y]=1}if(d)g||(h=q);else if(!r)return[];g=q}if(d)for(let m=d.length-1,n,w;0<=m;m--){n=d[m];w=n.length;for(let q=0,r;q<w;q++)if(r=\nn[q],!g[r]){if(c)c--;else if(f[k++]=r,k===b)return f;g[r]=1}}return f}function na(a,b){const c=v(),d=v(),e=[];for(let f=0;f<a.length;f++)c[a[f]]=1;for(let f=0,g;f<b.length;f++){g=b[f];for(let h=0,k;h<g.length;h++)k=g[h],c[k]&&!d[k]&&(d[k]=1,e[e.length]=k)}return e};function J(a){this.l=!0!==a&&a;this.cache=v();this.h=[]}function oa(a,b,c){C(a)&&(a=a.query);let d=this.cache.get(a);d||(d=this.search(a,b,c),this.cache.set(a,d));return d}J.prototype.set=function(a,b){if(!this.cache[a]){var c=this.h.length;c===this.l?delete this.cache[this.h[c-1]]:c++;for(--c;0<c;c--)this.h[c]=this.h[c-1];this.h[0]=a}this.cache[a]=b};J.prototype.get=function(a){const b=this.cache[a];if(this.l&&b&&(a=this.h.indexOf(a))){const c=this.h[a-1];this.h[a-1]=this.h[a];this.h[a]=c}return b};const qa={memory:{charset:"latin:extra",D:3,B:4,m:!1},performance:{D:3,B:3,s:!1,context:{depth:2,D:1}},match:{charset:"latin:extra",G:"reverse"},score:{charset:"latin:advanced",D:20,B:3,context:{depth:3,D:9}},"default":{}};function ra(a,b,c,d,e,f){setTimeout(function(){const g=a(c,JSON.stringify(f));g&&g.then?g.then(function(){b.export(a,b,c,d,e+1)}):b.export(a,b,c,d,e+1)})};function K(a,b){if(!(this instanceof K))return new K(a);var c;if(a){x(a)?a=qa[a]:(c=a.preset)&&(a=Object.assign({},c[c],a));c=a.charset;var d=a.lang;x(c)&&(-1===c.indexOf(":")&&(c+=":default"),c=G[c]);x(d)&&(d=ka[d])}else a={};let e,f,g=a.context||{};this.encode=a.encode||c&&c.encode||ia;this.register=b||v();this.D=e=a.resolution||9;this.G=b=c&&c.G||a.tokenize||"strict";this.depth="strict"===b&&g.depth;this.l=u(g.bidirectional);this.s=f=u(a.optimize);this.m=u(a.fastupdate);this.B=a.minlength||1;this.C=\na.boost;this.map=f?aa(e):v();this.A=e=g.resolution||1;this.h=f?aa(e):v();this.F=c&&c.F||a.rtl;this.H=(b=a.matcher||d&&d.H)&&fa(b,!1);this.J=(b=a.stemmer||d&&d.J)&&fa(b,!0);if(c=b=a.filter||d&&d.filter){c=b;d=v();for(let h=0,k=c.length;h<k;h++)d[c[h]]=1;c=d}this.filter=c;this.cache=(b=a.cache)&&new J(b)}t=K.prototype;t.append=function(a,b){return this.add(a,b,!0)};\nt.add=function(a,b,c,d){if(b&&(a||0===a)){if(!d&&!c&&this.register[a])return this.update(a,b);b=this.encode(b);if(d=b.length){const m=v(),n=v(),w=this.depth,q=this.D;for(let r=0;r<d;r++){let l=b[this.F?d-1-r:r];var e=l.length;if(l&&e>=this.B&&(w||!n[l])){var f=L(q,d,r),g="";switch(this.G){case "full":if(3<e){for(f=0;f<e;f++)for(var h=e;h>f;h--)if(h-f>=this.B){var k=L(q,d,r,e,f);g=l.substring(f,h);M(this,n,g,k,a,c)}break}case "reverse":if(2<e){for(h=e-1;0<h;h--)g=l[h]+g,g.length>=this.B&&M(this,n,\ng,L(q,d,r,e,h),a,c);g=""}case "forward":if(1<e){for(h=0;h<e;h++)g+=l[h],g.length>=this.B&&M(this,n,g,f,a,c);break}default:if(this.C&&(f=Math.min(f/this.C(b,l,r)|0,q-1)),M(this,n,l,f,a,c),w&&1<d&&r<d-1)for(e=v(),g=this.A,f=l,h=Math.min(w+1,d-r),e[f]=1,k=1;k<h;k++)if((l=b[this.F?d-1-r-k:r+k])&&l.length>=this.B&&!e[l]){e[l]=1;const p=this.l&&l>f;M(this,m,p?f:l,L(g+(d/2>g?0:1),d,r,h-1,k-1),a,c,p?l:f)}}}}this.m||(this.register[a]=1)}}return this};\nfunction L(a,b,c,d,e){return c&&1<a?b+(d||0)<=a?c+(e||0):(a-1)/(b+(d||0))*(c+(e||0))+1|0:0}function M(a,b,c,d,e,f,g){let h=g?a.h:a.map;if(!b[c]||g&&!b[c][g])a.s&&(h=h[d]),g?(b=b[c]||(b[c]=v()),b[g]=1,h=h[g]||(h[g]=v())):b[c]=1,h=h[c]||(h[c]=[]),a.s||(h=h[d]||(h[d]=[])),f&&-1!==h.indexOf(e)||(h[h.length]=e,a.m&&(a=a.register[e]||(a.register[e]=[]),a[a.length]=h))}\nt.search=function(a,b,c){c||(!b&&C(a)?(c=a,a=c.query):C(b)&&(c=b));let d=[],e;let f,g=0;if(c){b=c.limit;g=c.offset||0;var h=c.context;f=c.suggest}if(a&&(a=this.encode(a),e=a.length,1<e)){c=v();var k=[];for(let n=0,w=0,q;n<e;n++)if((q=a[n])&&q.length>=this.B&&!c[q])if(this.s||f||this.map[q])k[w++]=q,c[q]=1;else return d;a=k;e=a.length}if(!e)return d;b||(b=100);h=this.depth&&1<e&&!1!==h;c=0;let m;h?(m=a[0],c=1):1<e&&a.sort(ba);for(let n,w;c<e;c++){w=a[c];h?(n=sa(this,d,f,b,g,2===e,w,m),f&&!1===n&&d.length||\n(m=w)):n=sa(this,d,f,b,g,1===e,w);if(n)return n;if(f&&c===e-1){k=d.length;if(!k){if(h){h=0;c=-1;continue}return d}if(1===k)return ta(d[0],b,g)}}return ma(d,b,g,f)};\nfunction sa(a,b,c,d,e,f,g,h){let k=[],m=h?a.h:a.map;a.s||(m=ua(m,g,h,a.l));if(m){let n=0;const w=Math.min(m.length,h?a.A:a.D);for(let q=0,r=0,l,p;q<w;q++)if(l=m[q])if(a.s&&(l=ua(l,g,h,a.l)),e&&l&&f&&(p=l.length,p<=e?(e-=p,l=null):(l=l.slice(e),e=0)),l&&(k[n++]=l,f&&(r+=l.length,r>=d)))break;if(n){if(f)return ta(k,d,0);b[b.length]=k;return}}return!c&&k}function ta(a,b,c){a=1===a.length?a[0]:[].concat.apply([],a);return c||a.length>b?a.slice(c,c+b):a}\nfunction ua(a,b,c,d){c?(d=d&&b>c,a=(a=a[d?b:c])&&a[d?c:b]):a=a[b];return a}t.contain=function(a){return!!this.register[a]};t.update=function(a,b){return this.remove(a).add(a,b)};\nt.remove=function(a,b){const c=this.register[a];if(c){if(this.m)for(let d=0,e;d<c.length;d++)e=c[d],e.splice(e.indexOf(a),1);else N(this.map,a,this.D,this.s),this.depth&&N(this.h,a,this.A,this.s);b||delete this.register[a];if(this.cache){b=this.cache;for(let d=0,e,f;d<b.h.length;d++)f=b.h[d],e=b.cache[f],-1!==e.indexOf(a)&&(b.h.splice(d--,1),delete b.cache[f])}}return this};\nfunction N(a,b,c,d,e){let f=0;if(a.constructor===Array)if(e)b=a.indexOf(b),-1!==b?1<a.length&&(a.splice(b,1),f++):f++;else{e=Math.min(a.length,c);for(let g=0,h;g<e;g++)if(h=a[g])f=N(h,b,c,d,e),d||f||delete a[g]}else for(let g in a)(f=N(a[g],b,c,d,e))||delete a[g];return f}t.searchCache=oa;\nt.export=function(a,b,c,d,e){let f,g;switch(e||(e=0)){case 0:f="reg";if(this.m){g=v();for(let h in this.register)g[h]=1}else g=this.register;break;case 1:f="cfg";g={doc:0,opt:this.s?1:0};break;case 2:f="map";g=this.map;break;case 3:f="ctx";g=this.h;break;default:return}ra(a,b||this,c?c+"."+f:f,d,e,g);return!0};t.import=function(a,b){if(b)switch(x(b)&&(b=JSON.parse(b)),a){case "cfg":this.s=!!b.opt;break;case "reg":this.m=!1;this.register=b;break;case "map":this.map=b;break;case "ctx":this.h=b}};la(K.prototype);function va(a){a=a.data;var b=self._index;const c=a.args;var d=a.task;switch(d){case "init":d=a.options||{};a=a.factory;b=d.encode;d.cache=!1;b&&0===b.indexOf("function")&&(d.encode=Function("return "+b)());a?(Function("return "+a)()(self),self._index=new self.FlexSearch.Index(d),delete self.FlexSearch):self._index=new K(d);break;default:a=a.id,b=b[d].apply(b,c),postMessage("search"===d?{id:a,msg:b}:{id:a})}};let wa=0;function O(a){if(!(this instanceof O))return new O(a);var b;a?D(b=a.encode)&&(a.encode=b.toString()):a={};(b=(self||window)._factory)&&(b=b.toString());const c=self.exports,d=this;this.o=xa(b,c,a.worker);this.h=v();if(this.o){if(c)this.o.on("message",function(e){d.h[e.id](e.msg);delete d.h[e.id]});else this.o.onmessage=function(e){e=e.data;d.h[e.id](e.msg);delete d.h[e.id]};this.o.postMessage({task:"init",factory:b,options:a})}}P("add");P("append");P("search");P("update");P("remove");\nfunction P(a){O.prototype[a]=O.prototype[a+"Async"]=function(){const b=this,c=[].slice.call(arguments);var d=c[c.length-1];let e;D(d)&&(e=d,c.splice(c.length-1,1));d=new Promise(function(f){setTimeout(function(){b.h[++wa]=f;b.o.postMessage({task:a,id:wa,args:c})})});return e?(d.then(e),this):d}}\nfunction xa(a,b,c){let d;try{d=b?eval(\'new (require("worker_threads")["Worker"])("../dist/node/node.js")\'):a?new Worker(URL.createObjectURL(new Blob(["onmessage="+va.toString()],{type:"text/javascript"}))):new Worker(x(c)?c:"worker/worker.js",{type:"module"})}catch(e){}return d};function Q(a){if(!(this instanceof Q))return new Q(a);var b=a.document||a.doc||a,c;this.K=[];this.h=[];this.A=[];this.register=v();this.key=(c=b.key||b.id)&&S(c,this.A)||"id";this.m=u(a.fastupdate);this.C=(c=b.store)&&!0!==c&&[];this.store=c&&v();this.I=(c=b.tag)&&S(c,this.A);this.l=c&&v();this.cache=(c=a.cache)&&new J(c);a.cache=!1;this.o=a.worker;this.async=!1;c=v();let d=b.index||b.field||b;x(d)&&(d=[d]);for(let e=0,f,g;e<d.length;e++)f=d[e],x(f)||(g=f,f=f.field),g=C(g)?Object.assign({},a,g):a,\nthis.o&&(c[f]=new O(g),c[f].o||(this.o=!1)),this.o||(c[f]=new K(g,this.register)),this.K[e]=S(f,this.A),this.h[e]=f;if(this.C)for(a=b.store,x(a)&&(a=[a]),b=0;b<a.length;b++)this.C[b]=S(a[b],this.A);this.index=c}function S(a,b){const c=a.split(":");let d=0;for(let e=0;e<c.length;e++)a=c[e],0<=a.indexOf("[]")&&(a=a.substring(0,a.length-2))&&(b[d]=!0),a&&(c[d++]=a);d<c.length&&(c.length=d);return 1<d?c:c[0]}function T(a,b){if(x(b))a=a[b];else for(let c=0;a&&c<b.length;c++)a=a[b[c]];return a}\nfunction U(a,b,c,d,e){a=a[e];if(d===c.length-1)b[e]=a;else if(a)if(a.constructor===Array)for(b=b[e]=Array(a.length),e=0;e<a.length;e++)U(a,b,c,d,e);else b=b[e]||(b[e]=v()),e=c[++d],U(a,b,c,d,e)}function V(a,b,c,d,e,f,g,h){if(a=a[g])if(d===b.length-1){if(a.constructor===Array){if(c[d]){for(b=0;b<a.length;b++)e.add(f,a[b],!0,!0);return}a=a.join(" ")}e.add(f,a,h,!0)}else if(a.constructor===Array)for(g=0;g<a.length;g++)V(a,b,c,d,e,f,g,h);else g=b[++d],V(a,b,c,d,e,f,g,h)}t=Q.prototype;\nt.add=function(a,b,c){C(a)&&(b=a,a=T(b,this.key));if(b&&(a||0===a)){if(!c&&this.register[a])return this.update(a,b);for(let d=0,e,f;d<this.h.length;d++)f=this.h[d],e=this.K[d],x(e)&&(e=[e]),V(b,e,this.A,0,this.index[f],a,e[0],c);if(this.I){let d=T(b,this.I),e=v();x(d)&&(d=[d]);for(let f=0,g,h;f<d.length;f++)if(g=d[f],!e[g]&&(e[g]=1,h=this.l[g]||(this.l[g]=[]),!c||-1===h.indexOf(a)))if(h[h.length]=a,this.m){const k=this.register[a]||(this.register[a]=[]);k[k.length]=h}}if(this.store&&(!c||!this.store[a])){let d;\nif(this.C){d=v();for(let e=0,f;e<this.C.length;e++)f=this.C[e],x(f)?d[f]=b[f]:U(b,d,f,0,f[0])}this.store[a]=d||b}}return this};t.append=function(a,b){return this.add(a,b,!0)};t.update=function(a,b){return this.remove(a).add(a,b)};\nt.remove=function(a){C(a)&&(a=T(a,this.key));if(this.register[a]){for(var b=0;b<this.h.length&&(this.index[this.h[b]].remove(a,!this.o),!this.m);b++);if(this.I&&!this.m)for(let c in this.l){b=this.l[c];const d=b.indexOf(a);-1!==d&&(1<b.length?b.splice(d,1):delete this.l[c])}this.store&&delete this.store[a];delete this.register[a]}return this};\nt.search=function(a,b,c,d){c||(!b&&C(a)?(c=a,a=c.query):C(b)&&(c=b,b=0));let e=[],f=[],g,h,k,m,n,w,q=0;if(c)if(c.constructor===Array)k=c,c=null;else{k=(g=c.pluck)||c.index||c.field;m=c.tag;h=this.store&&c.enrich;n="and"===c.bool;b=c.limit||100;w=c.offset||0;if(m&&(x(m)&&(m=[m]),!a)){for(let l=0,p;l<m.length;l++)if(p=ya.call(this,m[l],b,w,h))e[e.length]=p,q++;return q?e:[]}x(k)&&(k=[k])}k||(k=this.h);n=n&&(1<k.length||m&&1<m.length);const r=!d&&(this.o||this.async)&&[];for(let l=0,p,z,B;l<k.length;l++){let A;\nz=k[l];x(z)||(A=z,z=z.field);if(r)r[l]=this.index[z].searchAsync(a,b,A||c);else{d?p=d[l]:p=this.index[z].search(a,b,A||c);B=p&&p.length;if(m&&B){const y=[];let H=0;n&&(y[0]=[p]);for(let X=0,pa,R;X<m.length;X++)if(pa=m[X],B=(R=this.l[pa])&&R.length)H++,y[y.length]=n?[R]:R;H&&(p=n?ma(y,b||100,w||0):na(p,y),B=p.length)}if(B)f[q]=z,e[q++]=p;else if(n)return[]}}if(r){const l=this;return new Promise(function(p){Promise.all(r).then(function(z){p(l.search(a,b,c,z))})})}if(!q)return[];if(g&&(!h||!this.store))return e[0];\nfor(let l=0,p;l<f.length;l++){p=e[l];p.length&&h&&(p=za.call(this,p));if(g)return p;e[l]={field:f[l],result:p}}return e};function ya(a,b,c,d){let e=this.l[a],f=e&&e.length-c;if(f&&0<f){if(f>b||c)e=e.slice(c,c+b);d&&(e=za.call(this,e));return{tag:a,result:e}}}function za(a){const b=Array(a.length);for(let c=0,d;c<a.length;c++)d=a[c],b[c]={id:d,doc:this.store[d]};return b}t.contain=function(a){return!!this.register[a]};t.get=function(a){return this.store[a]};t.set=function(a,b){this.store[a]=b;return this};\nt.searchCache=oa;t.export=function(a,b,c,d,e){e||(e=0);d||(d=0);if(d<this.h.length){const f=this.h[d],g=this.index[f];b=this;setTimeout(function(){g.export(a,b,e?f.replace(":","-"):"",d,e++)||(d++,e=1,b.export(a,b,f,d,e))})}else{let f;switch(e){case 1:c="tag";f=this.l;break;case 2:c="store";f=this.store;break;default:return}ra(a,this,c,d,e,f)}};\nt.import=function(a,b){if(b)switch(x(b)&&(b=JSON.parse(b)),a){case "tag":this.l=b;break;case "reg":this.m=!1;this.register=b;for(let d=0,e;d<this.h.length;d++)e=this.index[this.h[d]],e.register=b,e.m=!1;break;case "store":this.store=b;break;default:a=a.split(".");const c=a[0];a=a[1];c&&a&&this.index[c].import(a,b)}};la(Q.prototype);var Ba={encode:Aa,F:!1,G:""};const Ca=[F("[\\u00e0\\u00e1\\u00e2\\u00e3\\u00e4\\u00e5]"),"a",F("[\\u00e8\\u00e9\\u00ea\\u00eb]"),"e",F("[\\u00ec\\u00ed\\u00ee\\u00ef]"),"i",F("[\\u00f2\\u00f3\\u00f4\\u00f5\\u00f6\\u0151]"),"o",F("[\\u00f9\\u00fa\\u00fb\\u00fc\\u0171]"),"u",F("[\\u00fd\\u0177\\u00ff]"),"y",F("\\u00f1"),"n",F("[\\u00e7c]"),"k",F("\\u00df"),"s",F(" & ")," and "];function Aa(a){var b=a;b.normalize&&(b=b.normalize("NFD").replace(ea,""));return ca.call(this,b.toLowerCase(),!a.normalize&&Ca)};var Ea={encode:Da,F:!1,G:"strict"};const Fa=/[^a-z0-9]+/,Ga={b:"p",v:"f",w:"f",z:"s",x:"s","\\u00df":"s",d:"t",n:"m",c:"k",g:"k",j:"k",q:"k",i:"e",y:"e",u:"o"};function Da(a){a=Aa.call(this,a).join(" ");const b=[];if(a){const c=a.split(Fa),d=c.length;for(let e=0,f,g=0;e<d;e++)if((a=c[e])&&(!this.filter||!this.filter[a])){f=a[0];let h=Ga[f]||f,k=h;for(let m=1;m<a.length;m++){f=a[m];const n=Ga[f]||f;n&&n!==k&&(h+=n,k=n)}b[g++]=h}}return b};var Ia={encode:Ha,F:!1,G:""};const Ja=[F("ae"),"a",F("oe"),"o",F("sh"),"s",F("th"),"t",F("ph"),"f",F("pf"),"f",F("(?![aeo])h(?![aeo])"),"",F("(?!^[aeo])h(?!^[aeo])"),""];function Ha(a,b){a&&(a=Da.call(this,a).join(" "),2<a.length&&(a=E(a,Ja)),b||(1<a.length&&(a=ha(a)),a&&(a=a.split(" "))));return a};var La={encode:Ka,F:!1,G:""};const Ma=F("(?!\\\\b)[aeo]");function Ka(a){a&&(a=Ha.call(this,a,!0),1<a.length&&(a=a.replace(Ma,"")),1<a.length&&(a=ha(a)),a&&(a=a.split(" ")));return a};G["latin:default"]=ja;G["latin:simple"]=Ba;G["latin:balance"]=Ea;G["latin:advanced"]=Ia;G["latin:extra"]=La;const W=self;let Y;const Z={Index:K,Document:Q,Worker:O,registerCharset:function(a,b){G[a]=b},registerLanguage:function(a,b){ka[a]=b}};(Y=W.define)&&Y.amd?Y([],function(){return Z}):W.exports?W.exports=Z:W.FlexSearch=Z;}(this));\n\n\n//# sourceURL=webpack://replaywebpage/./node_modules/flexsearch/dist/flexsearch.bundle.js?')},"./node_modules/keyword-mark-element/lib/keyword-mark.js":
/*!***************************************************************!*\
!*** ./node_modules/keyword-mark-element/lib/keyword-mark.js ***!
\***************************************************************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KeywordMarkElement\": () => (/* binding */ KeywordMarkElement)\n/* harmony export */ });\nconst escapeRegexChars = [\n '-',\n '[',\n ']',\n '/',\n '{',\n '}',\n '(',\n ')',\n '*',\n '+',\n '?',\n '.',\n '\\\\',\n '^',\n '$',\n '|',\n];\nconst escapeRegexPattern = new RegExp(`[${escapeRegexChars.join('\\\\')}]`, 'g');\nconst escapeRegex = (str) => str.replace(escapeRegexPattern, '\\\\$&');\n/**\n * Renders a string with keywords highlighted\n */\nclass KeywordMarkElement extends HTMLElement {\n /** constructor */\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n /** @inheritdoc */\n static get observedAttributes() {\n return ['keywords', 'delimiter'];\n }\n /**\n * Keywords to highlight\n */\n get keywords() {\n var _a;\n return (_a = this.getAttribute('keywords')) !== null && _a !== void 0 ? _a : '';\n }\n /**\n * Sets the keywords to highlight\n * @param {string} val keywords to set\n */\n set keywords(val) {\n this.setAttribute('keywords', val);\n }\n /**\n * Delimiter for keywords\n */\n get delimiter() {\n var _a;\n return (_a = this.getAttribute('delimiter')) !== null && _a !== void 0 ? _a : '';\n }\n /**\n * Sets delimiter for keywords\n * @param {string} val delimiter to set\n */\n set delimiter(val) {\n this.setAttribute('delimiter', val);\n }\n /** @inheritdoc */\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'keywords' || name === 'delimiter') {\n if (newValue !== oldValue) {\n this._render();\n }\n }\n }\n /** @inheritdoc */\n connectedCallback() {\n this._render();\n this.__observer = new MutationObserver(() => {\n this._render();\n });\n this.__observer.observe(this, {\n childList: true,\n characterData: true,\n subtree: true,\n });\n }\n /** @inheritdoc */\n disconnectedCallback() {\n if (this.__observer) {\n this.__observer.disconnect();\n this.__observer = undefined;\n }\n }\n /**\n * Renders the current string with keywords highlighted\n */\n _render() {\n if (!this.shadowRoot) {\n return;\n }\n const text = this.textContent || '';\n const keywords = this.getAttribute('keywords');\n const delimiter = this.getAttribute('delimiter') || /\\s+/;\n if (!keywords) {\n this.shadowRoot.textContent = text;\n return;\n }\n const lowerText = text.toLowerCase();\n const terms = keywords\n .toLowerCase()\n .split(delimiter)\n .sort((a, b) => {\n return b.length - a.length;\n });\n const splitPattern = new RegExp(`${terms.map(escapeRegex).join('|')}`, 'gi');\n const parts = text.split(splitPattern);\n const result = document.createElement('div');\n let cursor = 0;\n for (const part of parts) {\n result.appendChild(document.createTextNode(part));\n cursor += part.length;\n if (cursor < lowerText.length) {\n const slice = lowerText.substring(cursor);\n const match = terms.find((t) => slice.startsWith(t));\n if (match) {\n const mark = document.createElement('mark');\n mark.textContent = text.substr(cursor, match.length);\n result.appendChild(mark);\n cursor += match.length;\n }\n }\n }\n this.shadowRoot.innerHTML = `\n <style>\n mark {\n color: var(--keyword-mark-color);\n background: var(--keyword-mark-background, yellow);\n }\n </style>\n ${result.innerHTML}\n `;\n }\n}\ncustomElements.define('keyword-mark', KeywordMarkElement);\n//# sourceMappingURL=keyword-mark.js.map\n\n//# sourceURL=webpack://replaywebpage/./node_modules/keyword-mark-element/lib/keyword-mark.js?")},"./node_modules/pretty-bytes/index.js":
/*!********************************************!*\
!*** ./node_modules/pretty-bytes/index.js ***!
\********************************************/module=>{"use strict";eval("\n\nconst BYTE_UNITS = [\n\t'B',\n\t'kB',\n\t'MB',\n\t'GB',\n\t'TB',\n\t'PB',\n\t'EB',\n\t'ZB',\n\t'YB'\n];\n\nconst BIBYTE_UNITS = [\n\t'B',\n\t'kiB',\n\t'MiB',\n\t'GiB',\n\t'TiB',\n\t'PiB',\n\t'EiB',\n\t'ZiB',\n\t'YiB'\n];\n\nconst BIT_UNITS = [\n\t'b',\n\t'kbit',\n\t'Mbit',\n\t'Gbit',\n\t'Tbit',\n\t'Pbit',\n\t'Ebit',\n\t'Zbit',\n\t'Ybit'\n];\n\nconst BIBIT_UNITS = [\n\t'b',\n\t'kibit',\n\t'Mibit',\n\t'Gibit',\n\t'Tibit',\n\t'Pibit',\n\t'Eibit',\n\t'Zibit',\n\t'Yibit'\n];\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number, locale, options) => {\n\tlet result = number;\n\tif (typeof locale === 'string' || Array.isArray(locale)) {\n\t\tresult = number.toLocaleString(locale, options);\n\t} else if (locale === true || options !== undefined) {\n\t\tresult = number.toLocaleString(undefined, options);\n\t}\n\n\treturn result;\n};\n\nmodule.exports = (number, options) => {\n\tif (!Number.isFinite(number)) {\n\t\tthrow new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n\t}\n\n\toptions = Object.assign({bits: false, binary: false}, options);\n\n\tconst UNITS = options.bits ?\n\t\t(options.binary ? BIBIT_UNITS : BIT_UNITS) :\n\t\t(options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n\tif (options.signed && number === 0) {\n\t\treturn ` 0 ${UNITS[0]}`;\n\t}\n\n\tconst isNegative = number < 0;\n\tconst prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n\tif (isNegative) {\n\t\tnumber = -number;\n\t}\n\n\tlet localeOptions;\n\n\tif (options.minimumFractionDigits !== undefined) {\n\t\tlocaleOptions = {minimumFractionDigits: options.minimumFractionDigits};\n\t}\n\n\tif (options.maximumFractionDigits !== undefined) {\n\t\tlocaleOptions = Object.assign({maximumFractionDigits: options.maximumFractionDigits}, localeOptions);\n\t}\n\n\tif (number < 1) {\n\t\tconst numberString = toLocaleString(number, options.locale, localeOptions);\n\t\treturn prefix + numberString + ' ' + UNITS[0];\n\t}\n\n\tconst exponent = Math.min(Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3), UNITS.length - 1);\n\t// eslint-disable-next-line unicorn/prefer-exponentiation-operator\n\tnumber /= Math.pow(options.binary ? 1024 : 1000, exponent);\n\n\tif (!localeOptions) {\n\t\tnumber = number.toPrecision(3);\n\t}\n\n\tconst numberString = toLocaleString(Number(number), options.locale, localeOptions);\n\n\tconst unit = UNITS[exponent];\n\n\treturn prefix + numberString + ' ' + unit;\n};\n\n\n//# sourceURL=webpack://replaywebpage/./node_modules/pretty-bytes/index.js?")},"./node_modules/register-service-worker/index.js":
/*!*******************************************************!*\
!*** ./node_modules/register-service-worker/index.js ***!
\*******************************************************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"register\": () => (/* binding */ register),\n/* harmony export */ \"unregister\": () => (/* binding */ unregister)\n/* harmony export */ });\n// Register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\nvar isLocalhost = function () { return Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n); }\n\nvar waitWindowLoad\n// https://github.com/yyx990803/register-service-worker/pull/33#discussion_r394181861\nif (typeof window !== 'undefined') {\n // Typically, a browser that supports `serviceWorker` should also have supported\n // `Promise`. But as this package can be used in environments without service\n // worker support (in that case it would do nothing), there's a chance that\n // `Promise` does not exist. So we must check for its existence first.\n if (typeof Promise !== 'undefined') {\n waitWindowLoad = new Promise(function (resolve) { return window.addEventListener('load', resolve); })\n } else {\n waitWindowLoad = { then: function (cb) { return window.addEventListener('load', cb); } }\n }\n}\n\nfunction register (swUrl, hooks) {\n if ( hooks === void 0 ) hooks = {};\n\n var registrationOptions = hooks.registrationOptions; if ( registrationOptions === void 0 ) registrationOptions = {};\n delete hooks.registrationOptions\n\n var emit = function (hook) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n if (hooks && hooks[hook]) {\n hooks[hook].apply(hooks, args)\n }\n }\n\n if ('serviceWorker' in navigator) {\n waitWindowLoad.then(function () {\n if (isLocalhost()) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, emit, registrationOptions)\n navigator.serviceWorker.ready.then(function (registration) {\n emit('ready', registration)\n }).catch(function (error) { return handleError(emit, error); })\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl, emit, registrationOptions)\n navigator.serviceWorker.ready.then(function (registration) {\n emit('ready', registration)\n }).catch(function (error) { return handleError(emit, error); })\n }\n })\n }\n}\n\nfunction handleError (emit, error) {\n if (!navigator.onLine) {\n emit('offline')\n }\n emit('error', error)\n}\n\nfunction registerValidSW (swUrl, emit, registrationOptions) {\n navigator.serviceWorker\n .register(swUrl, registrationOptions)\n .then(function (registration) {\n emit('registered', registration)\n if (registration.waiting) {\n emit('updated', registration)\n return\n }\n registration.onupdatefound = function () {\n emit('updatefound', registration)\n var installingWorker = registration.installing\n installingWorker.onstatechange = function () {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n emit('updated', registration)\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n emit('cached', registration)\n }\n }\n }\n }\n })\n .catch(function (error) { return handleError(emit, error); })\n}\n\nfunction checkValidServiceWorker (swUrl, emit, registrationOptions) {\n // Check if the service worker can be found.\n fetch(swUrl)\n .then(function (response) {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (response.status === 404) {\n // No service worker found.\n emit('error', new Error((\"Service worker not found at \" + swUrl)))\n unregister()\n } else if (response.headers.get('content-type').indexOf('javascript') === -1) {\n emit('error', new Error(\n \"Expected \" + swUrl + \" to have javascript content-type, \" +\n \"but received \" + (response.headers.get('content-type'))))\n unregister()\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, emit, registrationOptions)\n }\n })\n .catch(function (error) { return handleError(emit, error); })\n}\n\nfunction unregister () {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(function (registration) {\n registration.unregister()\n }).catch(function (error) { return handleError(emit, error); })\n }\n}\n\n\n//# sourceURL=webpack://replaywebpage/./node_modules/register-service-worker/index.js?")},"./node_modules/split.js/dist/split.es.js":
/*!************************************************!*\
!*** ./node_modules/split.js/dist/split.es.js ***!
\************************************************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// The programming goals of Split.js are to deliver readable, understandable and\n// maintainable code, while at the same time manually optimizing for tiny minified file size,\n// browser compatibility without additional requirements\n// and very few assumptions about the user's page layout.\nvar global = typeof window !== 'undefined' ? window : null;\nvar ssr = global === null;\nvar document = !ssr ? global.document : undefined;\n\n// Save a couple long function names that are used frequently.\n// This optimization saves around 400 bytes.\nvar addEventListener = 'addEventListener';\nvar removeEventListener = 'removeEventListener';\nvar getBoundingClientRect = 'getBoundingClientRect';\nvar gutterStartDragging = '_a';\nvar aGutterSize = '_b';\nvar bGutterSize = '_c';\nvar HORIZONTAL = 'horizontal';\nvar NOOP = function () { return false; };\n\n// Helper function determines which prefixes of CSS calc we need.\n// We only need to do this once on startup, when this anonymous function is called.\n//\n// Tests -webkit, -moz and -o prefixes. Modified from StackOverflow:\n// http://stackoverflow.com/questions/16625140/js-feature-detection-to-detect-the-usage-of-webkit-calc-over-calc/16625167#16625167\nvar calc = ssr\n ? 'calc'\n : ((['', '-webkit-', '-moz-', '-o-']\n .filter(function (prefix) {\n var el = document.createElement('div');\n el.style.cssText = \"width:\" + prefix + \"calc(9px)\";\n\n return !!el.style.length\n })\n .shift()) + \"calc\");\n\n// Helper function checks if its argument is a string-like type\nvar isString = function (v) { return typeof v === 'string' || v instanceof String; };\n\n// Helper function allows elements and string selectors to be used\n// interchangeably. In either case an element is returned. This allows us to\n// do `Split([elem1, elem2])` as well as `Split(['#id1', '#id2'])`.\nvar elementOrSelector = function (el) {\n if (isString(el)) {\n var ele = document.querySelector(el);\n if (!ele) {\n throw new Error((\"Selector \" + el + \" did not match a DOM element\"))\n }\n return ele\n }\n\n return el\n};\n\n// Helper function gets a property from the properties object, with a default fallback\nvar getOption = function (options, propName, def) {\n var value = options[propName];\n if (value !== undefined) {\n return value\n }\n return def\n};\n\nvar getGutterSize = function (gutterSize, isFirst, isLast, gutterAlign) {\n if (isFirst) {\n if (gutterAlign === 'end') {\n return 0\n }\n if (gutterAlign === 'center') {\n return gutterSize / 2\n }\n } else if (isLast) {\n if (gutterAlign === 'start') {\n return 0\n }\n if (gutterAlign === 'center') {\n return gutterSize / 2\n }\n }\n\n return gutterSize\n};\n\n// Default options\nvar defaultGutterFn = function (i, gutterDirection) {\n var gut = document.createElement('div');\n gut.className = \"gutter gutter-\" + gutterDirection;\n return gut\n};\n\nvar defaultElementStyleFn = function (dim, size, gutSize) {\n var style = {};\n\n if (!isString(size)) {\n style[dim] = calc + \"(\" + size + \"% - \" + gutSize + \"px)\";\n } else {\n style[dim] = size;\n }\n\n return style\n};\n\nvar defaultGutterStyleFn = function (dim, gutSize) {\n var obj;\n\n return (( obj = {}, obj[dim] = (gutSize + \"px\"), obj ));\n};\n\n// The main function to initialize a split. Split.js thinks about each pair\n// of elements as an independant pair. Dragging the gutter between two elements\n// only changes the dimensions of elements in that pair. This is key to understanding\n// how the following functions operate, since each function is bound to a pair.\n//\n// A pair object is shaped like this:\n//\n// {\n// a: DOM element,\n// b: DOM element,\n// aMin: Number,\n// bMin: Number,\n// dragging: Boolean,\n// parent: DOM element,\n// direction: 'horizontal' | 'vertical'\n// }\n//\n// The basic sequence:\n//\n// 1. Set defaults to something sane. `options` doesn't have to be passed at all.\n// 2. Initialize a bunch of strings based on the direction we're splitting.\n// A lot of the behavior in the rest of the library is paramatized down to\n// rely on CSS strings and classes.\n// 3. Define the dragging helper functions, and a few helpers to go with them.\n// 4. Loop through the elements while pairing them off. Every pair gets an\n// `pair` object and a gutter.\n// 5. Actually size the pair elements, insert gutters and attach event listeners.\nvar Split = function (idsOption, options) {\n if ( options === void 0 ) options = {};\n\n if (ssr) { return {} }\n\n var ids = idsOption;\n var dimension;\n var clientAxis;\n var position;\n var positionEnd;\n var clientSize;\n var elements;\n\n // Allow HTMLCollection to be used as an argument when supported\n if (Array.from) {\n ids = Array.from(ids);\n }\n\n // All DOM elements in the split should have a common parent. We can grab\n // the first elements parent and hope users read the docs because the\n // behavior will be whacky otherwise.\n var firstElement = elementOrSelector(ids[0]);\n var parent = firstElement.parentNode;\n var parentStyle = getComputedStyle ? getComputedStyle(parent) : null;\n var parentFlexDirection = parentStyle ? parentStyle.flexDirection : null;\n\n // Set default options.sizes to equal percentages of the parent element.\n var sizes = getOption(options, 'sizes') || ids.map(function () { return 100 / ids.length; });\n\n // Standardize minSize and maxSize to an array if it isn't already.\n // This allows minSize and maxSize to be passed as a number.\n var minSize = getOption(options, 'minSize', 100);\n var minSizes = Array.isArray(minSize) ? minSize : ids.map(function () { return minSize; });\n var maxSize = getOption(options, 'maxSize', Infinity);\n var maxSizes = Array.isArray(maxSize) ? maxSize : ids.map(function () { return maxSize; });\n\n // Get other options\n var expandToMin = getOption(options, 'expandToMin', false);\n var gutterSize = getOption(options, 'gutterSize', 10);\n var gutterAlign = getOption(options, 'gutterAlign', 'center');\n var snapOffset = getOption(options, 'snapOffset', 30);\n var dragInterval = getOption(options, 'dragInterval', 1);\n var direction = getOption(options, 'direction', HORIZONTAL);\n var cursor = getOption(\n options,\n 'cursor',\n direction === HORIZONTAL ? 'col-resize' : 'row-resize'\n );\n var gutter = getOption(options, 'gutter', defaultGutterFn);\n var elementStyle = getOption(\n options,\n 'elementStyle',\n defaultElementStyleFn\n );\n var gutterStyle = getOption(options, 'gutterStyle', defaultGutterStyleFn);\n\n // 2. Initialize a bunch of strings based on the direction we're splitting.\n // A lot of the behavior in the rest of the library is paramatized down to\n // rely on CSS strings and classes.\n if (direction === HORIZONTAL) {\n dimension = 'width';\n clientAxis = 'clientX';\n position = 'left';\n positionEnd = 'right';\n clientSize = 'clientWidth';\n } else if (direction === 'vertical') {\n dimension = 'height';\n clientAxis = 'clientY';\n position = 'top';\n positionEnd = 'bottom';\n clientSize = 'clientHeight';\n }\n\n // 3. Define the dragging helper functions, and a few helpers to go with them.\n // Each helper is bound to a pair object that contains its metadata. This\n // also makes it easy to store references to listeners that that will be\n // added and removed.\n //\n // Even though there are no other functions contained in them, aliasing\n // this to self saves 50 bytes or so since it's used so frequently.\n //\n // The pair object saves metadata like dragging state, position and\n // event listener references.\n\n function setElementSize(el, size, gutSize, i) {\n // Split.js allows setting sizes via numbers (ideally), or if you must,\n // by string, like '300px'. This is less than ideal, because it breaks\n // the fluid layout that `calc(% - px)` provides. You're on your own if you do that,\n // make sure you calculate the gutter size by hand.\n var style = elementStyle(dimension, size, gutSize, i);\n\n Object.keys(style).forEach(function (prop) {\n // eslint-disable-next-line no-param-reassign\n el.style[prop] = style[prop];\n });\n }\n\n function setGutterSize(gutterElement, gutSize, i) {\n var style = gutterStyle(dimension, gutSize, i);\n\n Object.keys(style).forEach(function (prop) {\n // eslint-disable-next-line no-param-reassign\n gutterElement.style[prop] = style[prop];\n });\n }\n\n function getSizes() {\n return elements.map(function (element) { return element.size; })\n }\n\n // Supports touch events, but not multitouch, so only the first\n // finger `touches[0]` is counted.\n function getMousePosition(e) {\n if ('touches' in e) { return e.touches[0][clientAxis] }\n return e[clientAxis]\n }\n\n // Actually adjust the size of elements `a` and `b` to `offset` while dragging.\n // calc is used to allow calc(percentage + gutterpx) on the whole split instance,\n // which allows the viewport to be resized without additional logic.\n // Element a's size is the same as offset. b's size is total size - a size.\n // Both sizes are calculated from the initial parent percentage,\n // then the gutter size is subtracted.\n function adjust(offset) {\n var a = elements[this.a];\n var b = elements[this.b];\n var percentage = a.size + b.size;\n\n a.size = (offset / this.size) * percentage;\n b.size = percentage - (offset / this.size) * percentage;\n\n setElementSize(a.element, a.size, this[aGutterSize], a.i);\n setElementSize(b.element, b.size, this[bGutterSize], b.i);\n }\n\n // drag, where all the magic happens. The logic is really quite simple:\n //\n // 1. Ignore if the pair is not dragging.\n // 2. Get the offset of the event.\n // 3. Snap offset to min if within snappable range (within min + snapOffset).\n // 4. Actually adjust each element in the pair to offset.\n //\n // ---------------------------------------------------------------------\n // | | <- a.minSize || b.minSize -> | |\n // | | | <- this.snapOffset || this.snapOffset -> | | |\n // | | | || | | |\n // | | | || | | |\n // ---------------------------------------------------------------------\n // | <- this.start this.size -> |\n function drag(e) {\n var offset;\n var a = elements[this.a];\n var b = elements[this.b];\n\n if (!this.dragging) { return }\n\n // Get the offset of the event from the first side of the\n // pair `this.start`. Then offset by the initial position of the\n // mouse compared to the gutter size.\n offset =\n getMousePosition(e) -\n this.start +\n (this[aGutterSize] - this.dragOffset);\n\n if (dragInterval > 1) {\n offset = Math.round(offset / dragInterval) * dragInterval;\n }\n\n // If within snapOffset of min or max, set offset to min or max.\n // snapOffset buffers a.minSize and b.minSize, so logic is opposite for both.\n // Include the appropriate gutter sizes to prevent overflows.\n if (offset <= a.minSize + snapOffset + this[aGutterSize]) {\n offset = a.minSize + this[aGutterSize];\n } else if (\n offset >=\n this.size - (b.minSize + snapOffset + this[bGutterSize])\n ) {\n offset = this.size - (b.minSize + this[bGutterSize]);\n }\n\n if (offset >= a.maxSize - snapOffset + this[aGutterSize]) {\n offset = a.maxSize + this[aGutterSize];\n } else if (\n offset <=\n this.size - (b.maxSize - snapOffset + this[bGutterSize])\n ) {\n offset = this.size - (b.maxSize + this[bGutterSize]);\n }\n\n // Actually adjust the size.\n adjust.call(this, offset);\n\n // Call the drag callback continously. Don't do anything too intensive\n // in this callback.\n getOption(options, 'onDrag', NOOP)(getSizes());\n }\n\n // Cache some important sizes when drag starts, so we don't have to do that\n // continously:\n //\n // `size`: The total size of the pair. First + second + first gutter + second gutter.\n // `start`: The leading side of the first element.\n //\n // ------------------------------------------------\n // | aGutterSize -> ||| |\n // | ||| |\n // | ||| |\n // | ||| <- bGutterSize |\n // ------------------------------------------------\n // | <- start size -> |\n function calculateSizes() {\n // Figure out the parent size minus padding.\n var a = elements[this.a].element;\n var b = elements[this.b].element;\n\n var aBounds = a[getBoundingClientRect]();\n var bBounds = b[getBoundingClientRect]();\n\n this.size =\n aBounds[dimension] +\n bBounds[dimension] +\n this[aGutterSize] +\n this[bGutterSize];\n this.start = aBounds[position];\n this.end = aBounds[positionEnd];\n }\n\n function innerSize(element) {\n // Return nothing if getComputedStyle is not supported (< IE9)\n // Or if parent element has no layout yet\n if (!getComputedStyle) { return null }\n\n var computedStyle = getComputedStyle(element);\n\n if (!computedStyle) { return null }\n\n var size = element[clientSize];\n\n if (size === 0) { return null }\n\n if (direction === HORIZONTAL) {\n size -=\n parseFloat(computedStyle.paddingLeft) +\n parseFloat(computedStyle.paddingRight);\n } else {\n size -=\n parseFloat(computedStyle.paddingTop) +\n parseFloat(computedStyle.paddingBottom);\n }\n\n return size\n }\n\n // When specifying percentage sizes that are less than the computed\n // size of the element minus the gutter, the lesser percentages must be increased\n // (and decreased from the other elements) to make space for the pixels\n // subtracted by the gutters.\n function trimToMin(sizesToTrim) {\n // Try to get inner size of parent element.\n // If it's no supported, return original sizes.\n var parentSize = innerSize(parent);\n if (parentSize === null) {\n return sizesToTrim\n }\n\n if (minSizes.reduce(function (a, b) { return a + b; }, 0) > parentSize) {\n return sizesToTrim\n }\n\n // Keep track of the excess pixels, the amount of pixels over the desired percentage\n // Also keep track of the elements with pixels to spare, to decrease after if needed\n var excessPixels = 0;\n var toSpare = [];\n\n var pixelSizes = sizesToTrim.map(function (size, i) {\n // Convert requested percentages to pixel sizes\n var pixelSize = (parentSize * size) / 100;\n var elementGutterSize = getGutterSize(\n gutterSize,\n i === 0,\n i === sizesToTrim.length - 1,\n gutterAlign\n );\n var elementMinSize = minSizes[i] + elementGutterSize;\n\n // If element is too smal, increase excess pixels by the difference\n // and mark that it has no pixels to spare\n if (pixelSize < elementMinSize) {\n excessPixels += elementMinSize - pixelSize;\n toSpare.push(0);\n return elementMinSize\n }\n\n // Otherwise, mark the pixels it has to spare and return it's original size\n toSpare.push(pixelSize - elementMinSize);\n return pixelSize\n });\n\n // If nothing was adjusted, return the original sizes\n if (excessPixels === 0) {\n return sizesToTrim\n }\n\n return pixelSizes.map(function (pixelSize, i) {\n var newPixelSize = pixelSize;\n\n // While there's still pixels to take, and there's enough pixels to spare,\n // take as many as possible up to the total excess pixels\n if (excessPixels > 0 && toSpare[i] - excessPixels > 0) {\n var takenPixels = Math.min(\n excessPixels,\n toSpare[i] - excessPixels\n );\n\n // Subtract the amount taken for the next iteration\n excessPixels -= takenPixels;\n newPixelSize = pixelSize - takenPixels;\n }\n\n // Return the pixel size adjusted as a percentage\n return (newPixelSize / parentSize) * 100\n })\n }\n\n // stopDragging is very similar to startDragging in reverse.\n function stopDragging() {\n var self = this;\n var a = elements[self.a].element;\n var b = elements[self.b].element;\n\n if (self.dragging) {\n getOption(options, 'onDragEnd', NOOP)(getSizes());\n }\n\n self.dragging = false;\n\n // Remove the stored event listeners. This is why we store them.\n global[removeEventListener]('mouseup', self.stop);\n global[removeEventListener]('touchend', self.stop);\n global[removeEventListener]('touchcancel', self.stop);\n global[removeEventListener]('mousemove', self.move);\n global[removeEventListener]('touchmove', self.move);\n\n // Clear bound function references\n self.stop = null;\n self.move = null;\n\n a[removeEventListener]('selectstart', NOOP);\n a[removeEventListener]('dragstart', NOOP);\n b[removeEventListener]('selectstart', NOOP);\n b[removeEventListener]('dragstart', NOOP);\n\n a.style.userSelect = '';\n a.style.webkitUserSelect = '';\n a.style.MozUserSelect = '';\n a.style.pointerEvents = '';\n\n b.style.userSelect = '';\n b.style.webkitUserSelect = '';\n b.style.MozUserSelect = '';\n b.style.pointerEvents = '';\n\n self.gutter.style.cursor = '';\n self.parent.style.cursor = '';\n document.body.style.cursor = '';\n }\n\n // startDragging calls `calculateSizes` to store the inital size in the pair object.\n // It also adds event listeners for mouse/touch events,\n // and prevents selection while dragging so avoid the selecting text.\n function startDragging(e) {\n // Right-clicking can't start dragging.\n if ('button' in e && e.button !== 0) {\n return\n }\n\n // Alias frequently used variables to save space. 200 bytes.\n var self = this;\n var a = elements[self.a].element;\n var b = elements[self.b].element;\n\n // Call the onDragStart callback.\n if (!self.dragging) {\n getOption(options, 'onDragStart', NOOP)(getSizes());\n }\n\n // Don't actually drag the element. We emulate that in the drag function.\n e.preventDefault();\n\n // Set the dragging property of the pair object.\n self.dragging = true;\n\n // Create two event listeners bound to the same pair object and store\n // them in the pair object.\n self.move = drag.bind(self);\n self.stop = stopDragging.bind(self);\n\n // All the binding. `window` gets the stop events in case we drag out of the elements.\n global[addEventListener]('mouseup', self.stop);\n global[addEventListener]('touchend', self.stop);\n global[addEventListener]('touchcancel', self.stop);\n global[addEventListener]('mousemove', self.move);\n global[addEventListener]('touchmove', self.move);\n\n // Disable selection. Disable!\n a[addEventListener]('selectstart', NOOP);\n a[addEventListener]('dragstart', NOOP);\n b[addEventListener]('selectstart', NOOP);\n b[addEventListener]('dragstart', NOOP);\n\n a.style.userSelect = 'none';\n a.style.webkitUserSelect = 'none';\n a.style.MozUserSelect = 'none';\n a.style.pointerEvents = 'none';\n\n b.style.userSelect = 'none';\n b.style.webkitUserSelect = 'none';\n b.style.MozUserSelect = 'none';\n b.style.pointerEvents = 'none';\n\n // Set the cursor at multiple levels\n self.gutter.style.cursor = cursor;\n self.parent.style.cursor = cursor;\n document.body.style.cursor = cursor;\n\n // Cache the initial sizes of the pair.\n calculateSizes.call(self);\n\n // Determine the position of the mouse compared to the gutter\n self.dragOffset = getMousePosition(e) - self.end;\n }\n\n // adjust sizes to ensure percentage is within min size and gutter.\n sizes = trimToMin(sizes);\n\n // 5. Create pair and element objects. Each pair has an index reference to\n // elements `a` and `b` of the pair (first and second elements).\n // Loop through the elements while pairing them off. Every pair gets a\n // `pair` object and a gutter.\n //\n // Basic logic:\n //\n // - Starting with the second element `i > 0`, create `pair` objects with\n // `a = i - 1` and `b = i`\n // - Set gutter sizes based on the _pair_ being first/last. The first and last\n // pair have gutterSize / 2, since they only have one half gutter, and not two.\n // - Create gutter elements and add event listeners.\n // - Set the size of the elements, minus the gutter sizes.\n //\n // -----------------------------------------------------------------------\n // | i=0 | i=1 | i=2 | i=3 |\n // | | | | |\n // | pair 0 pair 1 pair 2 |\n // | | | | |\n // -----------------------------------------------------------------------\n var pairs = [];\n elements = ids.map(function (id, i) {\n // Create the element object.\n var element = {\n element: elementOrSelector(id),\n size: sizes[i],\n minSize: minSizes[i],\n maxSize: maxSizes[i],\n i: i,\n };\n\n var pair;\n\n if (i > 0) {\n // Create the pair object with its metadata.\n pair = {\n a: i - 1,\n b: i,\n dragging: false,\n direction: direction,\n parent: parent,\n };\n\n pair[aGutterSize] = getGutterSize(\n gutterSize,\n i - 1 === 0,\n false,\n gutterAlign\n );\n pair[bGutterSize] = getGutterSize(\n gutterSize,\n false,\n i === ids.length - 1,\n gutterAlign\n );\n\n // if the parent has a reverse flex-direction, switch the pair elements.\n if (\n parentFlexDirection === 'row-reverse' ||\n parentFlexDirection === 'column-reverse'\n ) {\n var temp = pair.a;\n pair.a = pair.b;\n pair.b = temp;\n }\n }\n\n // Determine the size of the current element. IE8 is supported by\n // staticly assigning sizes without draggable gutters. Assigns a string\n // to `size`.\n //\n // Create gutter elements for each pair.\n if (i > 0) {\n var gutterElement = gutter(i, direction, element.element);\n setGutterSize(gutterElement, gutterSize, i);\n\n // Save bound event listener for removal later\n pair[gutterStartDragging] = startDragging.bind(pair);\n\n // Attach bound event listener\n gutterElement[addEventListener](\n 'mousedown',\n pair[gutterStartDragging]\n );\n gutterElement[addEventListener](\n 'touchstart',\n pair[gutterStartDragging]\n );\n\n parent.insertBefore(gutterElement, element.element);\n\n pair.gutter = gutterElement;\n }\n\n setElementSize(\n element.element,\n element.size,\n getGutterSize(\n gutterSize,\n i === 0,\n i === ids.length - 1,\n gutterAlign\n ),\n i\n );\n\n // After the first iteration, and we have a pair object, append it to the\n // list of pairs.\n if (i > 0) {\n pairs.push(pair);\n }\n\n return element\n });\n\n function adjustToMin(element) {\n var isLast = element.i === pairs.length;\n var pair = isLast ? pairs[element.i - 1] : pairs[element.i];\n\n calculateSizes.call(pair);\n\n var size = isLast\n ? pair.size - element.minSize - pair[bGutterSize]\n : element.minSize + pair[aGutterSize];\n\n adjust.call(pair, size);\n }\n\n elements.forEach(function (element) {\n var computedSize = element.element[getBoundingClientRect]()[dimension];\n\n if (computedSize < element.minSize) {\n if (expandToMin) {\n adjustToMin(element);\n } else {\n // eslint-disable-next-line no-param-reassign\n element.minSize = computedSize;\n }\n }\n });\n\n function setSizes(newSizes) {\n var trimmed = trimToMin(newSizes);\n trimmed.forEach(function (newSize, i) {\n if (i > 0) {\n var pair = pairs[i - 1];\n\n var a = elements[pair.a];\n var b = elements[pair.b];\n\n a.size = trimmed[i - 1];\n b.size = newSize;\n\n setElementSize(a.element, a.size, pair[aGutterSize], a.i);\n setElementSize(b.element, b.size, pair[bGutterSize], b.i);\n }\n });\n }\n\n function destroy(preserveStyles, preserveGutter) {\n pairs.forEach(function (pair) {\n if (preserveGutter !== true) {\n pair.parent.removeChild(pair.gutter);\n } else {\n pair.gutter[removeEventListener](\n 'mousedown',\n pair[gutterStartDragging]\n );\n pair.gutter[removeEventListener](\n 'touchstart',\n pair[gutterStartDragging]\n );\n }\n\n if (preserveStyles !== true) {\n var style = elementStyle(\n dimension,\n pair.a.size,\n pair[aGutterSize]\n );\n\n Object.keys(style).forEach(function (prop) {\n elements[pair.a].element.style[prop] = '';\n elements[pair.b].element.style[prop] = '';\n });\n }\n });\n }\n\n return {\n setSizes: setSizes,\n getSizes: getSizes,\n collapse: function collapse(i) {\n adjustToMin(elements[i]);\n },\n destroy: destroy,\n parent: parent,\n pairs: pairs,\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Split);\n\n\n//# sourceURL=webpack://replaywebpage/./node_modules/split.js/dist/split.es.js?")},"./assets/chevron-double-down.svg":
/*!****************************************!*\
!*** ./assets/chevron-double-down.svg ***!
\****************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" fill=\\"currentColor\\" class=\\"bi bi-chevron-double-down\\" viewBox=\\"0 0 16 16\\"><path fill-rule=\\"evenodd\\" d=\\"M1.646 6.646a.5.5 0 0 1 .708 0L8 12.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\\"></path><path fill-rule=\\"evenodd\\" d=\\"M1.646 2.646a.5.5 0 0 1 .708 0L8 8.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./assets/chevron-double-down.svg?')},"./assets/chevron-double-up.svg":
/*!**************************************!*\
!*** ./assets/chevron-double-up.svg ***!
\**************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" fill=\\"currentColor\\" class=\\"bi bi-chevron-double-up\\" viewBox=\\"0 0 16 16\\"><path fill-rule=\\"evenodd\\" d=\\"M7.646 2.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 3.707 2.354 9.354a.5.5 0 1 1-.708-.708l6-6z\\"></path><path fill-rule=\\"evenodd\\" d=\\"M7.646 6.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 7.707l-5.646 5.647a.5.5 0 0 1-.708-.708l6-6z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./assets/chevron-double-up.svg?')},"./assets/globe.svg":
/*!**************************!*\
!*** ./assets/globe.svg ***!
\**************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" fill=\\"currentColor\\" class=\\"bi bi-globe\\" viewBox=\\"0 0 16 16\\"><path d=\\"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm7.5-6.923c-.67.204-1.335.82-1.887 1.855A7.97 7.97 0 0 0 5.145 4H7.5V1.077zM4.09 4a9.267 9.267 0 0 1 .64-1.539 6.7 6.7 0 0 1 .597-.933A7.025 7.025 0 0 0 2.255 4H4.09zm-.582 3.5c.03-.877.138-1.718.312-2.5H1.674a6.958 6.958 0 0 0-.656 2.5h2.49zM4.847 5a12.5 12.5 0 0 0-.338 2.5H7.5V5H4.847zM8.5 5v2.5h2.99a12.495 12.495 0 0 0-.337-2.5H8.5zM4.51 8.5a12.5 12.5 0 0 0 .337 2.5H7.5V8.5H4.51zm3.99 0V11h2.653c.187-.765.306-1.608.338-2.5H8.5zM5.145 12c.138.386.295.744.468 1.068.552 1.035 1.218 1.65 1.887 1.855V12H5.145zm.182 2.472a6.696 6.696 0 0 1-.597-.933A9.268 9.268 0 0 1 4.09 12H2.255a7.024 7.024 0 0 0 3.072 2.472zM3.82 11a13.652 13.652 0 0 1-.312-2.5h-2.49c.062.89.291 1.733.656 2.5H3.82zm6.853 3.472A7.024 7.024 0 0 0 13.745 12H11.91a9.27 9.27 0 0 1-.64 1.539 6.688 6.688 0 0 1-.597.933zM8.5 12v2.923c.67-.204 1.335-.82 1.887-1.855.173-.324.33-.682.468-1.068H8.5zm3.68-1h2.146c.365-.767.594-1.61.656-2.5h-2.49a13.65 13.65 0 0 1-.312 2.5zm2.802-3.5a6.959 6.959 0 0 0-.656-2.5H12.18c.174.782.282 1.623.312 2.5h2.49zM11.27 2.461c.247.464.462.98.64 1.539h1.835a7.024 7.024 0 0 0-3.072-2.472c.218.284.418.598.597.933zM10.855 4a7.966 7.966 0 0 0-.468-1.068C9.835 1.897 9.17 1.282 8.5 1.077V4h2.355z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./assets/globe.svg?')},"./assets/logo.svg":
/*!*************************!*\
!*** ./assets/logo.svg ***!
\*************************/module=>{eval('module.exports = "<svg xmlns:dc=\\"http://purl.org/dc/elements/1.1/\\" xmlns:cc=\\"http://creativecommons.org/ns#\\" xmlns:rdf=\\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\\" xmlns:svg=\\"http://www.w3.org/2000/svg\\" xmlns=\\"http://www.w3.org/2000/svg\\" xmlns:xlink=\\"http://www.w3.org/1999/xlink\\" viewBox=\\"0 0 66.712418 66.712418\\" version=\\"1.1\\" id=\\"wrlogo\\"><defs id=\\"defs1341\\"><linearGradient y2=\\"48.223869\\" x2=\\"97.913383\\" y1=\\"48.223869\\" x1=\\"2.9740067\\" gradientTransform=\\"matrix(0.70268446,0,0,0.70268446,72.622704,112.65806)\\" gradientUnits=\\"userSpaceOnUse\\" id=\\"linearGradient6615\\" xlink:href=\\"#linearGradient5691\\"></linearGradient><linearGradient id=\\"linearGradient5691\\"><stop style=\\"stop-color:#4876ff;stop-opacity:1\\" offset=\\"0\\" id=\\"stop5687\\"></stop><stop style=\\"stop-color:#04cdff;stop-opacity:1\\" offset=\\"1\\" id=\\"stop5689\\"></stop></linearGradient></defs><metadata id=\\"metadata1344\\"><rdf:RDF><cc:Work rdf:about><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\\"http://purl.org/dc/dcmitype/StillImage\\"></dc><dc:title></dc:title></cc:Work></rdf:RDF></metadata><g id=\\"layer1\\" transform=\\"translate(-72.477124,-114.81046)\\"><circle transform=\\"rotate(0.86915873)\\" r=\\"33.356209\\" cy=\\"146.54422\\" cx=\\"108.06871\\" id=\\"path6016-0-7-6-9-11-2-8-67-6-50-4-33\\" style=\\"fill:url(#linearGradient6615);fill-opacity:1;stroke:none;stroke-width:23.3824;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal\\"></circle><path style=\\"fill:#d2f9d6;fill-opacity:1;stroke-width:0.702683\\" d=\\"m 119.62552,156.54036 h 5.46953 c 3.81136,0 6.91161,-3.10024 6.91161,-6.9116 0,-3.81136 -3.10025,-6.9116 -6.91161,-6.9116 h -15.59889 c -3.81136,0 -6.9116,3.10024 -6.9116,6.9116 0,1.96682 0.82917,3.73828 2.15161,4.9982 -0.83057,0.55722 -1.82557,0.88678 -2.89857,0.88678 h -2.082056 c -1.042775,-1.72016 -1.654819,-3.73054 -1.654819,-5.88498 0,-6.2834 5.112035,-11.39543 11.395435,-11.39543 h 15.59889 c 6.28341,0 11.39474,5.11132 11.39474,11.39543 0,6.28411 -5.11222,11.50105 -11.39474,11.39543 l -5.45665,0.14787 v -2.17722 z\\" id=\\"path114-4-0-85-6-0-5-3-6-1-6\\"></path><path style=\\"fill:#64e986;fill-opacity:1;stroke-width:0.702683\\" d=\\"m 91.878825,142.66568 -4.893158,0.0515 c -3.811155,0.0401 -6.911605,3.10024 -6.911605,6.91231 0,3.81065 3.100238,6.91089 6.911605,6.91089 h 15.598893 c 3.81136,0 6.9116,-3.10024 6.9116,-6.91089 0,-1.96682 -0.82917,-3.73899 -2.15162,-4.9989 0.83057,-0.55723 1.82557,-0.88609 2.89857,-0.88609 h 2.08066 c 1.04348,1.71947 1.65552,3.72985 1.65552,5.88499 0,6.28269 -5.11132,11.39472 -11.39473,11.39472 H 86.985667 c -6.282704,0 -11.39544,-5.11132 -11.39544,-11.39472 0,-6.28411 5.112828,-11.49617 11.39544,-11.39614 l 4.893158,0.0779 v 2.17722 z\\" id=\\"path116-9-4-7-0-8-3-2-08-9-1\\"></path><path style=\\"fill:#64e986;fill-opacity:1;stroke:none;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal\\" id=\\"path3919-5-9-8-6-6-56-0-37-5-8\\" d=\\"m 73.728819,47.245763 -10.861072,-6.335289 -10.86107,-6.33529 10.917057,-6.238319 10.917057,-6.238318 -0.05599,12.573609 z\\" transform=\\"matrix(-0.38260367,0,0,0.3986412,118.95441,127.09397)\\"></path><path style=\\"fill:#d2f9d6;fill-opacity:1;stroke:none;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal\\" id=\\"path3919-3-3-7-5-9-7-2-6-8-7-7\\" d=\\"m 73.728819,47.245763 -10.861072,-6.335289 -10.86107,-6.33529 10.917057,-6.238319 10.917057,-6.238318 -0.05599,12.573609 z\\" transform=\\"matrix(0.4122212,0,0,-0.40812,91.057524,172.76152)\\"></path></g></svg>"\n\n//# sourceURL=webpack://replaywebpage/./assets/logo.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/brands/github.svg":
/*!***************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/brands/github.svg ***!
\***************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 496 512\\"><path d=\\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/brands/github.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/brands/google-drive.svg":
/*!*********************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/brands/google-drive.svg ***!
\*********************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 512 512\\"><path d=\\"M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/brands/google-drive.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/regular/copy.svg":
/*!**************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/regular/copy.svg ***!
\**************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 448 512\\"><path d=\\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/regular/copy.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/regular/file-image.svg":
/*!********************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/regular/file-image.svg ***!
\********************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 384 512\\"><path d=\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/regular/file-image.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/regular/list-alt.svg":
/*!******************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/regular/list-alt.svg ***!
\******************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 512 512\\"><path d=\\"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/regular/list-alt.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-down.svg":
/*!*************************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-down.svg ***!
\*************************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 320 512\\"><path d=\\"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-down.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-up.svg":
/*!***********************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-up.svg ***!
\***********************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 320 512\\"><path d=\\"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-up.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-down.svg":
/*!******************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-down.svg ***!
\******************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 320 512\\"><path d=\\"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-down.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-left.svg":
/*!******************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-left.svg ***!
\******************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 256 512\\"><path d=\\"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-left.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-right.svg":
/*!*******************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-right.svg ***!
\*******************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 256 512\\"><path d=\\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-right.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-left.svg":
/*!******************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-left.svg ***!
\******************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 448 512\\"><path d=\\"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-left.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg":
/*!*******************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg ***!
\*******************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 448 512\\"><path d=\\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/book.svg":
/*!************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/book.svg ***!
\************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 448 512\\"><path d=\\"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/book.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/compress-arrows-alt.svg":
/*!***************************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/compress-arrows-alt.svg ***!
\***************************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 512 512\\"><path d=\\"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/compress-arrows-alt.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/desktop.svg":
/*!***************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/desktop.svg ***!
\***************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 576 512\\"><path d=\\"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/desktop.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/download.svg":
/*!****************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/download.svg ***!
\****************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 512 512\\"><path d=\\"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/download.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/edit.svg":
/*!************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/edit.svg ***!
\************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 576 512\\"><path d=\\"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/edit.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/ellipsis-v.svg":
/*!******************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/ellipsis-v.svg ***!
\******************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 192 512\\"><path d=\\"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/ellipsis-v.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/info-circle.svg":
/*!*******************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/info-circle.svg ***!
\*******************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 512 512\\"><path d=\\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/info-circle.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/puzzle-piece.svg":
/*!********************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/puzzle-piece.svg ***!
\********************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 576 512\\"><path d=\\"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/puzzle-piece.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/question-circle.svg":
/*!***********************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/question-circle.svg ***!
\***********************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 512 512\\"><path d=\\"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/question-circle.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/redo-alt.svg":
/*!****************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/redo-alt.svg ***!
\****************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 512 512\\"><path d=\\"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/redo-alt.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/search.svg":
/*!**************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/search.svg ***!
\**************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 512 512\\"><path d=\\"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/search.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-down.svg":
/*!*****************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-down.svg ***!
\*****************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 320 512\\"><path d=\\"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-down.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-up.svg":
/*!***************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-up.svg ***!
\***************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 320 512\\"><path d=\\"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-up.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/sync-alt.svg":
/*!****************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/sync-alt.svg ***!
\****************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 512 512\\"><path d=\\"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/sync-alt.svg?')},"./node_modules/@fortawesome/fontawesome-free/svgs/solid/upload.svg":
/*!**************************************************************************!*\
!*** ./node_modules/@fortawesome/fontawesome-free/svgs/solid/upload.svg ***!
\**************************************************************************/module=>{eval('module.exports = "<svg xmlns=\\"http://www.w3.org/2000/svg\\" viewBox=\\"0 0 512 512\\"><path d=\\"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\\"></path></svg>"\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@fortawesome/fontawesome-free/svgs/solid/upload.svg?')},"./src/appmain.js":
/*!************************!*\
!*** ./src/appmain.js ***!
\************************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "ReplayWebApp": () => (/* binding */ ReplayWebApp)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_question_circle_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/question-circle.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/question-circle.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_question_circle_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_question_circle_svg__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/arrow-left.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-left.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/arrow-right.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _swmanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./swmanager */ "./src/swmanager.js");\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass ReplayWebApp extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n // eslint-disable-next-line no-undef\n constructor(swName = "sw.js") {\n super();\n this.sourceUrl = null;\n this.collTitle = null;\n this.showAbout = false;\n this.showFileDropOverlay = false;\n this.pageParams = new URLSearchParams();\n\n this.inited = false;\n this.navMenuShown = false;\n\n this.collPageUrl = "";\n this.pageTitle = "";\n this.pageReplay = false;\n\n this.loadInfo = null;\n\n this.swName = swName;\n this.swmanager = null;\n\n this.safariKeyframes();\n\n this.addEventListener("dragenter", (dragEvent) => {\n this.maybeStartFileDrop(dragEvent);\n });\n\n this.addEventListener("dragover", (dragEvent) => {\n this.maybeStartFileDrop(dragEvent);\n });\n\n this.addEventListener("dragleave", () => {\n this.showFileDropOverlay = false;\n });\n\n this.addEventListener("dragend", () => {\n this.showFileDropOverlay = false;\n });\n\n this.addEventListener("drop", (dragEvent) => {\n this.droppedFile = dragEvent.dataTransfer.files[0];\n this.showFileDropOverlay = false;\n dragEvent.preventDefault();\n });\n\n this.maybeStartFileDrop = (dragEvent) => {\n if (this.sourceUrl) {\n // A source is already loaded. Don\'t allow dropping a file.\n return;\n }\n this.showFileDropOverlay = true;\n dragEvent.preventDefault();\n };\n }\n\n get appName() {\n return "ReplayWeb.page";\n }\n\n get homeUrl() {\n return window.location.pathname;\n }\n\n static get properties() {\n return {\n inited: { type: Boolean },\n pageParams: { type: Object },\n sourceUrl: { type: String },\n navMenuShown: { type: Boolean },\n showAbout: { type: Boolean },\n showFileDropOverlay: { type: Boolean },\n collTitle: { type: String },\n loadInfo: { type: Object },\n embed: { type: String },\n collPageUrl: { type: String },\n pageTitle: { type: String },\n pageReplay: { type: Boolean },\n source: { type: String },\n\n swErrorMsg: { type: Object },\n };\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_1__.wrapCss)(ReplayWebApp.appStyles);\n }\n\n static get appStyles() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.css`\n #wrlogo {\n max-height: 1.0rem;\n }\n .navbar {\n height: 1.5rem;\n }\n .navbar-brand {\n height: 1.5rem;\n display: flex;\n align-items: center;\n }\n .wr-logo-item {\n padding: 0 8px 0 0;\n }\n .no-wrap {\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n }\n .has-allcaps {\n font-variant-caps: small-caps;\n }\n :host {\n position: fixed;\n left: 0px;\n top: 0px;\n bottom: 0px;\n right: 0px;\n display: flex;\n min-width: 0px;\n flex-direction: column;\n }\n wr-coll {\n height: 100%;\n }\n .navbar {\n padding: 0 0.5em;\n }\n\n div.navbar-menu fa-icon {\n vertical-align: sub;\n }\n .tagline {\n margin-top: 1.0rem;\n }\n\n .drop-file-overlay {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n inset: 0;\n z-index: 50;\n font-weight: bold;\n font-size: 1.5rem;\n background: rgba(255,255,255,.5);\n backdrop-filter: blur(2px);\n }\n\n .drop-file-overlay:after {\n pointer-events: none;\n content: " ";\n position: absolute;\n inset: 0;\n border: 5px dashed #aaa;\n margin: 15px;\n }\n\n @media screen and (min-width: 840px) {\n .menu-only {\n display: none;\n }\n\n a.arrow-button {\n padding-left: 4px;\n padding-right: 4px;\n }\n\n .info-menu {\n padding: 0 1.0em;\n }\n\n .logo-text {\n padding-left: 0px;\n margin-left: 6px;\n }\n\n a.navbar-item.logo-text:hover {\n background-color: initial;\n }\n }\n\n @media screen and (max-width: 840px) {\n .wide-only {\n display: none !important;\n }\n }\n\n `;\n }\n\n get mainLogo() {\n return _misc__WEBPACK_IMPORTED_MODULE_1__.rwpLogo;\n }\n\n renderNavBrand() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <span id="home" class="logo-text has-text-weight-bold is-size-6 has-allcaps wide-only">\n <span class="has-text-primary">replay</span>\n <span class="has-text-link">web.page</span>\n <span class="is-sr-only">Home</span>\n </span>`;\n }\n\n renderNavBar() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <a href="#skip-main-target" @click=${this.skipMenu} class="skip-link">Skip main navigation</a>\n <nav class="navbar has-background-info" aria-label="main">\n <div class="navbar-brand">\n ${!this.embed ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <a href="${this.homeUrl}" class="navbar-item wr-logo-item" aria-labelledby="home">\n <fa-icon id="wrlogo" size="1.0rem" .svg=${this.mainLogo} aria-hidden="true"></fa-icon>\n ${this.renderNavBrand()}\n </a>\n ${this.collTitle ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <a href="${this.collPageUrl}" class="no-wrap is-size-6 has-text-black">/&nbsp;&nbsp;<i>${this.collTitle}</i></a>\n <span class="no-wrap is-size-6">&nbsp;&nbsp;/&nbsp;\n ${this.pageReplay ? lit__WEBPACK_IMPORTED_MODULE_0__.html`<i>${this.pageTitle}</i>` : this.pageTitle}\n </span>\n ` : ""}\n `: lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <span class="navbar-item wr-logo-item">\n <fa-icon id="wrlogo" size="1.0rem" .svg=${this.mainLogo} aria-hidden="true"></fa-icon>\n </span>\n `}\n <a href="#" role="button" id="menu-button" @click="${this.onNavMenu}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}"\n class="navbar-burger burger ${this.navMenuShown ? "is-active" : ""}" aria-label="main menu" aria-haspopup="true" aria-expanded="${this.navMenuShown}">\n <span aria-hidden="true"></span>\n <span aria-hidden="true"></span>\n <span aria-hidden="true"></span>\n </a>\n </div>\n ${!this.sourceUrl ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="navbar-menu ${this.navMenuShown ? "is-active" : ""}">\n <div class="navbar-start">\n ${_misc__WEBPACK_IMPORTED_MODULE_1__.IS_APP ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <a role="button" href="#" class="navbar-item arrow-button" title="Go Back" @click="${() => window.history.back()}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}">\n <fa-icon size="1.0rem" .svg="${(_fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_3___default())}" aria-hidden="true"></fa-icon><span class="menu-only is-size-7">&nbsp;Go Back</span>\n </a>\n <a role="button" href="#" class="navbar-item arrow-button" title="Go Forward" @click="${() => window.history.forward()}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}">\n <fa-icon size="1.0rem" .svg="${(_fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_4___default())}" aria-hidden="true"></fa-icon><span class="menu-only is-size-7">&nbsp;Go Forward</span>\n </a>\n ` : ""}\n </div>\n ${!this.embed ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="navbar-end">\n ${this.renderNavEnd()}\n </div>` : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n </div>` : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n </nav>\n <p id="skip-main-target" tabindex="-1" class="is-sr-only">Skipped</p>`;\n }\n\n renderNavEnd() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <a href="/docs" target="_blank" class="navbar-item is-size-6">\n <fa-icon .svg="${(_fortawesome_fontawesome_free_svgs_solid_question_circle_svg__WEBPACK_IMPORTED_MODULE_2___default())}" aria-hidden="true"></fa-icon><span>&nbsp;User Docs</span>\n </a>\n \x3c!--\n -- NB: the About modal is currently inaccessible to people using keyboards or screen readers.\n -- Should all the JS and infrastructure for accessible modals be added, or should About be a normal page?\n --\x3e\n <a href="?terms" @click="${(e) => { e.preventDefault(); this.showAbout = true;} }"class="navbar-item is-size-6">About\n </a>`;\n }\n\n renderColl() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <wr-coll .loadInfo="${this.loadInfo}"\n sourceUrl="${this.sourceUrl}"\n embed="${this.embed}"\n appName="${this.appName}"\n swName="${this.swName}"\n .appLogo="${this.mainLogo}"\n @replay-favicons=${this.onFavIcons}\n @update-title=${this.onTitle}\n @coll-loaded=${this.onCollLoaded}\n @about-show=${() => this.showAbout = true}></wr-coll>`;\n }\n\n renderHomeIndex() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <wr-coll-index>\n ${!_misc__WEBPACK_IMPORTED_MODULE_1__.IS_APP ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <p slot="header" class="tagline is-size-5 has-text-centered">Explore and Replay Interactive Archived Webpages Directly in your Browser. <i><a target="_blank" href="./docs/examples">(See Examples)</a></i></p>\n ` : ""}\n <wr-chooser slot="header" .droppedFile=${this.droppedFile} @did-drop-file="${() => this.droppedFile = null}" @load-start=${this.onStartLoad}></wr-chooser>\n </wr-coll-index>`;\n }\n\n render() {\n if (!this.inited) {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html``;\n }\n\n if (this.embed && this.swErrorMsg) {\n return this.swErrorMsg;\n }\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n ${!this.embed || this.embed === "full" ? this.renderNavBar() : ""}\n\n ${this.sourceUrl ? this.renderColl() : this.renderHomeIndex()}\n\n ${this.showAbout ? this.renderAbout() : ""}\n\n ${this.showFileDropOverlay ? this.renderDropFileOverlay() : ""}\n `;\n }\n\n firstUpdated() {\n this.initRoute();\n\n this.swmanager = new _swmanager__WEBPACK_IMPORTED_MODULE_5__.SWManager({name: this.swName, appName: this.appName});\n this.swmanager.register().catch(() => this.swErrorMsg = this.swmanager.renderErrorReport(this.mainLogo));\n\n window.addEventListener("popstate", () => {\n this.initRoute();\n });\n }\n\n updated(changedProperties) {\n if (changedProperties.has("sourceUrl")) {\n this.collTitle = null;\n }\n }\n\n onFavIcons(event) {\n const head = document.querySelector("head");\n const oldLinks = document.querySelectorAll("link[rel*=\'icon\']");\n\n for (const link of oldLinks) {\n head.removeChild(link);\n }\n\n for (const icon of event.detail.icons) {\n const link = document.createElement("link");\n link.rel = icon.rel;\n link.href = icon.href;\n head.appendChild(link);\n }\n }\n\n skipMenu(event){\n // This is a workaround, since this app\'s routing doesn\'t permit normal\n // following of in-page anchors.\n event.preventDefault();\n this.renderRoot.querySelector("#skip-main-target").focus();\n }\n\n onNavMenu(event) {\n event.preventDefault();\n event.stopPropagation();\n this.navMenuShown = !this.navMenuShown;\n\n if (this.navMenuShown) {\n // Since this menu can be large and obscure significant page content,\n // dismiss like a modal, returning keyboard focus to the\n // menu button on dismissal.\n document.addEventListener("click", (event) => {\n event.preventDefault();\n this.navMenuShown = false;\n this.renderRoot.querySelector("#menu-button").focus();\n }, {once: true});\n document.addEventListener("keypress", (event) => {\n if (event.key == "Escape") {\n event.preventDefault();\n this.navMenuShown = false;\n this.renderRoot.querySelector("#menu-button").focus();\n }\n }, {once: true});\n }\n }\n\n initRoute() {\n this.inited = true;\n this.pageParams = new URLSearchParams(window.location.search);\n\n // Google Drive\n let state = this.pageParams.get("state");\n if (state) {\n try {\n state = JSON.parse(state);\n if ((state.ids instanceof Array) && state.userId && state.action === "open") {\n this.pageParams.set("source", "googledrive://" + state.ids[0]);\n this.pageParams.delete("state");\n window.location.search = this.pageParams.toString();\n return;\n }\n } catch (e) {\n console.log(e);\n }\n }\n\n if (this.source) {\n this.pageParams.set("source", this.source);\n const url = new URL(window.location.href);\n url.search = this.pageParams.toString();\n window.history.replaceState({}, document.title, url.href);\n }\n\n this.sourceUrl = this.pageParams.get("source") || "";\n this.embed = this.pageParams.get("embed") || "";\n\n if (this.pageParams.has("terms")) {\n this.showAbout = true;\n }\n\n if (this.pageParams.has("embed")) {\n if (!this.loadInfo) {\n this.loadInfo = {};\n }\n }\n\n if (this.pageParams.get("config")) {\n try {\n this.loadInfo.extraConfig = JSON.parse(this.pageParams.get("config"));\n } catch (e) {\n console.log("invalid config: " + e);\n }\n }\n\n if (this.pageParams.get("baseUrlSourcePrefix")) {\n this.loadInfo.extraConfig = this.loadInfo.extraConfig || {};\n this.loadInfo.extraConfig.baseUrlSourcePrefix = this.pageParams.get("baseUrlSourcePrefix");\n }\n\n if (this.pageParams.get("basePageUrl")) {\n this.loadInfo.extraConfig = this.loadInfo.extraConfig || {};\n this.loadInfo.extraConfig.baseUrl = this.pageParams.get("basePageUrl");\n }\n\n if (this.pageParams.get("customColl")) {\n this.loadInfo.customColl = this.pageParams.get("customColl");\n }\n\n if (this.pageParams.get("noWebWorker") === "1") {\n this.loadInfo.noWebWorker = true;\n }\n\n\n if (this.pageParams.get("noCache") === "1") {\n this.loadInfo.noCache = true;\n }\n\n if (this.pageParams.get("hideOffscreen") === "1") {\n this.loadInfo.hideOffscreen = true;\n }\n\n if (this.pageParams.get("loading") === "eager") {\n this.loadInfo.loadEager = true;\n }\n\n if (this.pageParams.get("swName")) {\n this.swName = this.pageParams.get("swName");\n }\n\n if (_misc__WEBPACK_IMPORTED_MODULE_1__.IS_APP && this.sourceUrl.startsWith("file://")) {\n this.loadInfo = {\n sourceUrl: this.sourceUrl,\n loadUrl: this.sourceUrl.replace("file://", "file2://")\n };\n }\n }\n\n onStartLoad(event) {\n // just redirect right away?\n this.pageParams.set("source", event.detail.sourceUrl);\n\n const url = new URL(window.location.href);\n url.search = this.pageParams.toString();\n this.collPageUrl = url.toString();\n\n if (!event.detail.isFile) {\n window.location.search = this.pageParams.toString();\n return;\n } else {\n\n window.history.pushState({}, "", this.collPageUrl);\n }\n\n this.sourceUrl = event.detail.sourceUrl;\n this.loadInfo = event.detail;\n }\n\n onCollLoaded(event) {\n this.loadInfo = null;\n if (event.detail.collInfo) {\n this.collTitle = event.detail.collInfo.title;\n }\n\n if (event.detail.alreadyLoaded) {\n //this.sourceLoaded = true;\n return;\n }\n\n //this.initRoute();\n\n if (event.detail.sourceUrl !== this.sourceUrl) {\n this.pageParams.set("source", event.detail.sourceUrl);\n window.location.search = this.pageParams.toString();\n }\n }\n\n onTitle(event) {\n if (event.detail.title) {\n this.pageTitle = event.detail.title;\n this.pageReplay = event.detail.replayTitle;\n\n document.title = (event.detail.replayTitle ? "Archive of " : "") + this.pageTitle + " | " + this.appName;\n }\n }\n\n safariKeyframes() {\n // Safari requires keyframes at the document level, add spinner keyframes here\n const css = `\n @keyframes spinAround {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n }\n `;\n\n const style = document.createElement("style");\n document.head.appendChild(style);\n style.appendChild(document.createTextNode(css));\n }\n\n renderAbout() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="modal is-active">\n <div class="modal-background" @click="${this.onAboutClose}"></div>\n <div class="modal-card">\n <header class="modal-card-head">\n <p class="modal-card-title">About ReplayWeb.page ${_misc__WEBPACK_IMPORTED_MODULE_1__.IS_APP ? "App" : ""}</p>\n <button class="delete" aria-label="close" @click="${this.onAboutClose}"></button>\n </header>\n <section class="modal-card-body">\n <div class="container">\n <div class="content">\n <div style="display: flex">\n <div class="has-text-centered" style="width: 220px">\n <wr-anim-logo class="logo" size="48px"></wr-anim-logo>\n <div style="font-size: smaller; margin-bottom: 1em">${_misc__WEBPACK_IMPORTED_MODULE_1__.IS_APP ? "App" : ""} v${_misc__WEBPACK_IMPORTED_MODULE_1__.VERSION}</div>\n </div>\n\n ${_misc__WEBPACK_IMPORTED_MODULE_1__.IS_APP ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <p>ReplayWeb.page App is a standalone app for Mac, Windows and Linux that loads web archive files provided by the user\n and renders them for replay.</p>\n\n ` : lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <p><a href="https://replayweb.page" target="_blank">ReplayWeb.page</a> is a browser-based viewer that loads web archive files provided by the user\n and renders them for replay in the browser.</p>`}\n </div>\n\n <p>Full source code is available at:\n <a href="https://github.com/webrecorder/replayweb.page" target="_blank">https://github.com/webrecorder/replayweb.page</a>\n </p>\n\n <p>See the <a target="_blank" href="./docs">User Docs</a> or the GitHub README for more info on how it works.</p>\n\n <p>ReplayWeb.page is part of the <a href="https://webrecorder.net/" target="_blank">Webrecorder Project</a>.</p>\n\n <h3>Privacy</h3>\n <p><b>No data is uploaded anywhere and no information is collected.</b></p>\n <p>All content rendered stays directly in your browser.<br/>When loading an archive from Google Drive,\n the site may ask for account authorization to download the specified file only.</p>\n\n <h4>Disclaimer of Warranties</h4>\n <p>The application is provided "as is" without any guarantees.</p>\n <details>\n <summary>Legalese:</summary>\n <p style="font-size: 0.8rem">DISCLAIMER OF SOFTWARE WARRANTY. WEBRECORDER SOFTWARE PROVIDES THIS SOFTWARE TO YOU "AS AVAILABLE"\n AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,\n INCLUDING WITHOUT LIMITATION ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n </details>\n <div class="has-text-centered">\n <a class="button is-warning" href="#" @click="${this.onAboutClose}">Close</a>\n </div>\n </div>\n </div>\n </section>\n </div>\n </div>\n </div>`;\n }\n\n onAboutClose() {\n this.showAbout = false;\n }\n\n renderDropFileOverlay() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="drop-file-overlay">Drop to load web archive</div>\n `;\n }\n}\n\ncustomElements.define("replay-app-main", ReplayWebApp);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/appmain.js?')},"./src/chooser.js":
/*!************************!*\
!*** ./src/chooser.js ***!
\************************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Chooser": () => (/* binding */ Chooser)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_upload_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/upload.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/upload.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_upload_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_upload_svg__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\n\n\n// ===========================================================================\nclass Chooser extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n\n this.fileDisplayName = "";\n this.file = null;\n this.droppedFile = null;\n\n this.hasNativeFS = !!window.showOpenFilePicker && !_misc__WEBPACK_IMPORTED_MODULE_1__.IS_APP;\n\n this.newFullImport = false;\n\n this.noHead = false;\n\n this.showOpenFilePickerOptions = {\n types: [\n {\n description: "WARC, WACZ, HAR and WBN Files",\n accept: {\n "application/warc": [".warc", ".gz"],\n "application/har": [".har"],\n "application/wacz": [".wacz"],\n "application/wbn": [".wbn"],\n "application/json": [".json"],\n }\n }\n ]\n };\n }\n\n static get properties() {\n return {\n fileDisplayName: { type: String },\n droppedFile: { type: File },\n newFullImport: { type: Boolean },\n noHead: { type: Boolean }\n };\n }\n\n updated(changedProperties) {\n if (changedProperties.has("droppedFile") && this.droppedFile) {\n this.onDropFile();\n }\n }\n\n onDropFile() {\n const allowedFileExtensions = this.showOpenFilePickerOptions.types.map(type => type.accept).map(Object.values).flat(2);\n\n const fileHasAllowedExtension = allowedFileExtensions.some(extension => this.droppedFile.name.endsWith(extension));\n\n if (fileHasAllowedExtension) {\n this.setFile(this.droppedFile);\n this.dispatchEvent(new CustomEvent("did-drop-file", { bubbles: true, composed: true }));\n this.onStartLoad(); // Automatically load the file\n }\n }\n\n onChooseFile(event) {\n if (event.currentTarget.files.length === 0) {\n return;\n }\n this.setFile(event.currentTarget.files[0]);\n }\n\n setFile(file) {\n this.file = file;\n // file.path only available in electron app\n this.fileDisplayName = "file://" + (this.file.path || this.file.name);\n }\n\n async onChooseNativeFile() {\n if (!this.hasNativeFS) {\n return;\n }\n\n const [fileHandle] = await window.showOpenFilePicker(this.showOpenFilePickerOptions);\n this.fileHandle = fileHandle;\n\n this.file = await fileHandle.getFile();\n this.fileDisplayName = "file://" + fileHandle.name;\n }\n\n randomId() {\n return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);\n }\n\n onStartLoad(event) {\n if (event) {\n event.preventDefault();\n }\n\n const loadInfo = {sourceUrl: this.fileDisplayName};\n\n if (this.file) {\n loadInfo.isFile = true;\n // file.path only available in electron app\n if (this.file.path) {\n // eslint-disable-next-line no-undef\n loadInfo.loadUrl = "file2://" + this.file.path;\n loadInfo.noCache = true;\n } else if (this.fileHandle) {\n loadInfo.loadUrl = this.fileDisplayName;\n loadInfo.extra = {fileHandle: this.fileHandle};\n loadInfo.noCache = false;\n } else {\n loadInfo.loadUrl = URL.createObjectURL(this.file);\n loadInfo.blob = this.file;\n loadInfo.noCache = false;\n }\n loadInfo.size = this.file.size;\n loadInfo.name = this.fileDisplayName;\n }\n\n loadInfo.newFullImport = this.newFullImport;\n\n this.dispatchEvent(new CustomEvent("load-start", {bubbles: true, composed: true, detail: loadInfo}));\n\n return false;\n }\n\n onInput(event) {\n this.fileDisplayName = event.currentTarget.value;\n\n if (this.file && this.fileDisplayName && this.fileDisplayName.startsWith("file://")) {\n this.file = null;\n this.fileDisplayName = "";\n }\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_1__.wrapCss)(lit__WEBPACK_IMPORTED_MODULE_0__.css`\n :host {\n min-width: 0;\n }\n .extra-padding {\n padding: 1.5em;\n }\n .less-padding {\n padding-top: 1.0em;\n padding-bottom: 1.0em;\n }\n div.field.has-addons {\n flex: auto;\n }\n .panel-heading {\n background-color: #cff3ff;\n }\n .message-header {\n background-color: #cff3ff;\n color: black;\n }\n .heading-size {\n font-size: 0.85rem;\n }\n form {\n flex-grow: 1;\n flex-shrink: 0;\n margin-bottom: 0;\n }\n p.control.is-expanded {\n width: min-content;\n }\n input.input.file-name:invalid {\n border: 1px dashed red;\n }\n input.input.file-name {\n border-width: 1px;\n margin-left: -1px;\n max-width: 100%;\n }\n @media screen and (max-width: 1023px) {\n .file-icon {\n margin-right: 0px;\n }\n }\n\n @media screen and (max-width: 768px) {\n #filename {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n }\n }\n `);\n }\n\n render() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <section class="section ${this.noHead ? "is-paddingless" : "less-padding"}">\n <div class="${this.noHead ? "" : "panel"}">\n <div class="${this.noHead ? "is-hidden" : "panel-heading"} heading-size">${this.newFullImport ? "Import Existing" : "Load"} Web Archive</div>\n <div class="${this.noHead ? "" : "panel-body extra-padding"} file has-name">\n <form class="is-flex" @submit="${this.onStartLoad}">\n <label class="file-label">\n ${!this.hasNativeFS ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <input class="file-input"\n @click="${(e) => e.currentTarget.value = null}"\n @change=${this.onChooseFile} type="file" id="fileupload" name="fileupload">` : ""}\n <span class="file-cta" @click="${this.onChooseNativeFile}">\n <span class="file-icon">\n <fa-icon size="0.9em" .svg=${(_fortawesome_fontawesome_free_svgs_solid_upload_svg__WEBPACK_IMPORTED_MODULE_2___default())} aria-hidden="true"></fa-icon>\n </span>\n <span class="file-label is-hidden-touch">\n Choose File...\n </span>\n </span>\n </label>\n\n <div class="field has-addons">\n <p class="control is-expanded">\n <input class="file-name input" type="text"\n name="filename" id="filename"\n pattern="((file|http|https|ipfs|s3):\\/\\/.*\\.(warc|warc.gz|zip|wacz|har|wbn|json)([?#].*)?)|(googledrive:\\/\\/.+)|(ssb:\\/\\/.+)"\n .value="${this.fileDisplayName}"\n @input="${this.onInput}"\n autocomplete="off"\n placeholder="${this.newFullImport ? "Click \'Choose File\' to select a local archive to import" : "Enter a URL or click \'Choose File\' to select a WARC, WACZ, HAR or WBN archive source"}">\n </p>\n <div class="control">\n <button type="submit" class="button is-hidden-mobile is-primary">${this.newFullImport ? "Import" : "Load"}</button>\n </div>\n </div>\n\n </form>\n </div>\n </div>\n </section>`;\n }\n}\n\ncustomElements.define("wr-chooser", Chooser);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/chooser.js?')},"./src/coll-index.js":
/*!***************************!*\
!*** ./src/coll-index.js ***!
\***************************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "CollIndex": () => (/* binding */ CollIndex),\n/* harmony export */ "CollInfo": () => (/* binding */ CollInfo)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! pretty-bytes */ "./node_modules/pretty-bytes/index.js");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(pretty_bytes__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_regular_copy_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/regular/copy.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/regular/copy.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_regular_copy_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_regular_copy_svg__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_double_up_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/angle-double-up.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-up.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_double_up_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_angle_double_up_svg__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_double_down_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/angle-double-down.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-double-down.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_double_down_svg__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_angle_double_down_svg__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/search.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/search.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass CollIndex extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n\n this.colls = [];\n this.filteredColls = [];\n this.sortedColls = null;\n\n this.query = "";\n\n this.hideHeader = localStorage.getItem("index:hideHeader") === "1";\n\n this._deleting = {};\n\n this.dateName = "Date Loaded";\n this.headerName = "Loaded Archives";\n\n this.typeFilter = "";\n this.indexParams = "";\n }\n\n get sortKeys() {\n return [\n {key: "title",\n name: "Title"},\n\n {key: "sourceUrl",\n name: "Source"},\n\n {key: "ctime",\n name: this.dateName},\n\n {key: "size",\n name: "Total Size"}\n ];\n }\n\n static get properties() {\n return {\n colls: { type: Array },\n\n query: { type: String },\n\n filteredColls: { type: Array },\n\n sortedColls: { type: Array },\n\n hideHeader: { type: Boolean },\n\n _deleting: { type: Object },\n\n dateName: { type: String },\n headerName: { type: String },\n };\n }\n\n firstUpdated() {\n this.loadColls();\n }\n\n updated(changedProperties) {\n if (changedProperties.has("hideHeader")) {\n localStorage.setItem("index:hideHeader", this.hideHeader ? "1" : "0");\n }\n if (changedProperties.has("colls") || changedProperties.has("query")) {\n this.filter();\n }\n }\n\n filter() {\n if (!this.query) {\n this.filteredColls = this.colls;\n return;\n }\n\n this.filteredColls = [];\n\n for (const coll of this.colls) {\n if (coll.sourceUrl.indexOf(this.query) >= 0 ||\n coll.filename.indexOf(this.query) >= 0 ||\n (coll.loadUrl && coll.loadUrl.indexOf(this.query) >= 0) ||\n (coll.title && coll.title.indexOf(this.query) >= 0)) {\n this.filteredColls.push(coll);\n }\n }\n }\n\n async loadColls() {\n const resp = await fetch(`${_misc__WEBPACK_IMPORTED_MODULE_1__.apiPrefix}/coll-index?${this.indexParams}`);\n try {\n if (resp.status !== 200) {\n throw new Error("Invalid API Response, Retry");\n }\n const json = await resp.json();\n this.colls = json.colls.map((coll) => {\n coll.title = coll.title || coll.filename;\n return coll;\n });\n\n this._deleting = {};\n this.sortedColls = [];\n\n } catch (e) {\n // likely no sw registered yet, or waiting for new sw to register, retry again\n setTimeout(() => this.loadColls(), 500);\n }\n }\n\n async onDeleteColl(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.sortedColls) {\n return;\n }\n\n const index = Number(event.currentTarget.getAttribute("data-coll-index"));\n\n const coll = this.sortedColls[index];\n\n if (!coll || this._deleting[coll.sourceUrl]) {\n return;\n }\n\n this._deleting[coll.sourceUrl] = true;\n this.requestUpdate();\n\n const resp = await fetch(`${_misc__WEBPACK_IMPORTED_MODULE_1__.apiPrefix}/c/${coll.id}`, {method: "DELETE"});\n if (resp.status === 200) {\n const json = await resp.json();\n this.colls = json.colls;\n }\n return false;\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_1__.wrapCss)(CollIndex.compStyles);\n }\n\n static get compStyles() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.css`\n :host {\n overflow-y: auto;\n min-width: 0;\n }\n .size {\n margin-right: 20px;\n }\n .extra-padding {\n padding: 2em;\n }\n .no-top-padding {\n padding-top: 1.0em;\n }\n .panel-heading {\n font-size: 0.85rem;\n }\n .is-loading {\n line-height: 1.5em;\n height: 1.5em;\n border: 0px;\n background-color: transparent !important;\n width: auto;\n }\n div.panel.is-light {\n margin-bottom: 2em;\n }\n\n fa-icon {\n vertical-align: middle;\n }\n\n .panel-color {\n background-color: rgb(210, 249, 214);\n }\n\n .copy {\n color: black;\n margin: 0px;\n margin: 0;\n line-height: 0.4em;\n padding: 6px;\n border-radius: 10px;\n display: none;\n position: absolute;\n }\n .copy:active {\n background-color: lightgray;\n }\n .sort-header {\n padding: 0.3rem 0.3rem 0.3rem 0;\n display: flex;\n flex-direction: row;\n flex-flow: row wrap;\n }\n .sort-header .control {\n flex: auto;\n\n padding-left: 0.3rem;\n width: initial;\n }\n wr-sorter {\n padding: 0.3rem;\n }\n a.button.is-small.collapse {\n border-radius: 6px;\n }\n .icon.is-left {\n margin-left: 0.5rem;\n }\n .coll-block {\n position: relative;\n }\n .delete-button {\n width: 32px;\n position: absolute;\n top: 10px;\n right: 10px;\n }\n #sort-select::after {\n display: none;\n }\n header {\n transform: translate(0px, 0px);\n transition: all 0.5s ease 0s;\n visibility: visible;\n display: flex;\n flex-direction: column;\n }\n header.closed {\n transform: translate(0, -100%);\n transition: all 0.5s ease 0s;\n visibility: visible;\n height: 269px;\n margin-top: -269px;\n }\n `;\n }\n\n renderHeader() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`<h2 class="panel-heading panel-color"><span>${this.headerName}</span></h2>`;\n }\n\n renderSearchHeader() {\n return "";\n }\n\n render() {\n const hasHeader = this.childElementCount > 0;\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <header class="${this.hideHeader ? "closed" : ""}">\n <slot name="header"></slot>\n </header>\n <section class="section no-top-padding">\n <div class="sort-header is-small">\n ${hasHeader ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <button @click=${() => this.hideHeader = !this.hideHeader} class="collapse button is-small">\n <span class="icon"><fa-icon .svg=${this.hideHeader ? (_fortawesome_fontawesome_free_svgs_solid_angle_double_down_svg__WEBPACK_IMPORTED_MODULE_5___default()) : (_fortawesome_fontawesome_free_svgs_solid_angle_double_up_svg__WEBPACK_IMPORTED_MODULE_4___default())}></span>\n <span>${this.hideHeader ? "Show " : "Hide"} <span class="is-sr-only">Header</span></span>\n </button>` : ""}\n </div>\n <div class="panel">\n ${this.renderHeader()}\n ${this.colls.length ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="panel-block sort-header is-small">\n ${this.renderSearchHeader()}\n <div class="control has-icons-left has-addons">\n <input type="text" class="input is-small" @input="${(e) => this.query = e.currentTarget.value}" .value="${this.query}" type="text"\n placeholder="Search by Archive Title or Source">\n <span class="icon is-left is-small"><fa-icon .svg="${(_fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_6___default())}"/></span>\n </div>\n <wr-sorter id="index"\n sortKey="ctime"\n ?sortDesc="${true}"\n .sortKeys="${this.sortKeys}"\n .data="${this.filteredColls}"\n @sort-changed="${(e) => this.sortedColls = e.detail.sortedData}">\n </wr-sorter>\n </div>\n\n <div class="coll-list">\n ${this.sortedColls && this.sortedColls.map((coll, i) => lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="coll-block panel-block">\n ${this.renderCollInfo(coll)}\n ${!this._deleting[coll.sourceUrl] ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <button class="delete delete-button" aria-label="Unload Collection" title="Unload Collection" data-coll-index="${i}" @click="${this.onDeleteColl}"></button>\n ` : lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <span class="button delete-button is-loading is-static">Deleting</span`}\n </div>\n `)}\n </div>\n\n ` : lit__WEBPACK_IMPORTED_MODULE_0__.html`\n\n <div class="panel-block extra-padding">\n ${this.sortedColls === null ? lit__WEBPACK_IMPORTED_MODULE_0__.html`<i>Loading Archives...</i>` : \n this.renderEmpty()}\n </div>\n `}\n </div>\n </section>\n `;\n }\n\n renderCollInfo(coll) {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`<wr-coll-info .coll=${coll}></wr-coll-info>`;\n }\n\n renderEmpty() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`<i>No Archives so far! Archives loaded in the section above will appear here.</i>`;\n }\n}\n\n\n// ===========================================================================\nclass CollInfo extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n this.detailed = false;\n this.canDelete = false;\n }\n\n static get properties() {\n return {\n coll: { type: Object },\n detailed: { type: Boolean },\n canDelete: { type: Boolean }\n };\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_1__.wrapCss)(CollInfo.compStyles);\n }\n\n static get compStyles() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.css`\n .columns {\n width: 100%;\n }\n .column {\n word-break: break-word;\n position: relative;\n }\n\n :host {\n width: 100%;\n height: 100%;\n min-width: 0px;\n }\n\n :host(.is-list) .columns {\n display: flex !important;\n flex-direction: column;\n }\n\n :host(.is-list) .column {\n width: 100% !important;\n }\n\n .col-title:hover {\n\n }\n .col-title a {\n display: block;\n height: 100%;\n }\n .column:hover > .copy, .source-text:hover + .copy, .copy:hover {\n display: inline;\n }\n .copy {\n color: black;\n margin: 0px;\n margin: 0;\n line-height: 0.4em;\n padding: 6px;\n border-radius: 10px;\n display: none;\n position: absolute;\n }\n .copy:active {\n background-color: lightgray;\n }\n .minihead {\n font-size: 10px;\n font-weight: bold;\n }\n `;\n }\n\n renderSource(coll) {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="column is-4">\n <span class="source-text"><p class="minihead">Source</p>\n ${coll.sourceUrl && (coll.sourceUrl.startsWith("http://") || coll.sourceUrl.startsWith("https://")) ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <a href="${coll.sourceUrl}">${coll.sourceUrl}&nbsp;</a>` : lit__WEBPACK_IMPORTED_MODULE_0__.html`\n ${coll.sourceUrl}&nbsp;`}\n </span>\n\n <a @click="${(e) => this.onCopy(e, coll.sourceUrl)}" class="copy"><fa-icon .svg="${(_fortawesome_fontawesome_free_svgs_regular_copy_svg__WEBPACK_IMPORTED_MODULE_3___default())}"/></a>\n ${coll.sourceUrl && coll.sourceUrl.startsWith("googledrive://") ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <p><i>(${coll.filename})</i></p>` : ""}\n </div>\n <div class="column is-2"><p class="minihead">Date Loaded</p>${coll.ctime ? new Date(coll.ctime).toLocaleString() : ""}</div>\n <div class="column is-2"><p class="minihead">Total Size</p>${pretty_bytes__WEBPACK_IMPORTED_MODULE_2___default()(Number(coll.size || 0))}</div>\n `;\n }\n\n renderSummaryView() {\n const coll = this.coll;\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="columns">\n <div class="column col-title is-4">\n <span class="subtitle has-text-weight-bold">\n <a href="?source=${encodeURIComponent(coll.sourceUrl)}">${coll.title || coll.filename}</a>\n </span>\n </div>\n ${this.renderSource(coll)}\n </div>`;\n }\n\n renderDetailed() {\n const coll = this.coll;\n\n let {numValid, numInvalid, domain, certFingerprint, datapackageHash, software} = this.coll.verify || {};\n numValid = numValid || 0;\n numInvalid = numInvalid || 0;\n\n const certFingerprintUrl = certFingerprint ? `https://crt.sh/?q=${certFingerprint}` : "";\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="columns">\n <div class="column col-title is-4">\n <span class="subtitle has-text-weight-bold">\n ${coll.title || coll.filename}\n </span>\n </div>\n ${coll.desc ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="column">\n <p class="minihead">Description</p>\n ${coll.desc}\n </div>` : lit__WEBPACK_IMPORTED_MODULE_0__.html`\n `}\n <div class="column"><p class="minihead">Filename</p>${coll.filename}</div>\n ${this.renderSource(coll)}\n\n ${domain ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="column">\n <p class="minihead">Observed By</p>\n <p>${domain}</p>\n ${certFingerprintUrl ? lit__WEBPACK_IMPORTED_MODULE_0__.html`<span><a target="_blank" href="${certFingerprintUrl}">View Certificate</a></span>` : ""}\n </div>\n ` : software ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="column">\n <p class="minihead">Created With</p>\n ${software || "Unknown"}\n </div>\n ` : ""}\n\n <div class="column">\n <p class="minihead">Validation</p>\n ${numValid > 0 || numInvalid > 0 ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <p>${numValid} hashes verified${numInvalid ? lit__WEBPACK_IMPORTED_MODULE_0__.html`, ${numInvalid} invalid` : ""}</p>` : lit__WEBPACK_IMPORTED_MODULE_0__.html`\n Not Available`}\n </div>\n\n <div class="column">\n <p class="minihead">Package Hash</p>\n ${datapackageHash || "Not Available"}\n </div>\n\n <div class="column">\n <p class="minihead">Loading Mode</p>\n ${coll.onDemand ? "Download On-Demand" : "Fully Local"}\n </div>\n <div class="column">\n <p class="minihead">Collection id</p>\n ${coll.coll}\n </div>\n </div>`;\n }\n\n render() {\n return this.detailed ? this.renderDetailed() : this.renderSummaryView();\n }\n\n onCopy(event, sourceUrl) {\n event.preventDefault();\n event.stopPropagation();\n navigator.clipboard.writeText(sourceUrl);\n return false;\n }\n\n onPurge(reload) {\n const detail = {reload};\n this.dispatchEvent(new CustomEvent("coll-purge", {detail}));\n }\n}\n\ncustomElements.define("wr-coll-info", CollInfo);\ncustomElements.define("wr-coll-index", CollIndex);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/coll-index.js?')},"./src/coll.js":
/*!*********************!*\
!*** ./src/coll.js ***!
\*********************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Coll": () => (/* binding */ Coll)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pageutils */ "./src/pageutils.js");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_book_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/book.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/book.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_book_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_book_svg__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_download_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/download.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/download.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_download_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_download_svg__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_regular_list_alt_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/regular/list-alt.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/regular/list-alt.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_regular_list_alt_svg__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_regular_list_alt_svg__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_puzzle_piece_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/puzzle-piece.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/puzzle-piece.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_puzzle_piece_svg__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_puzzle_piece_svg__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_regular_file_image_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/regular/file-image.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/regular/file-image.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_regular_file_image_svg__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_regular_file_image_svg__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_info_circle_svg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/info-circle.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/info-circle.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_info_circle_svg__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_info_circle_svg__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_sync_alt_svg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/sync-alt.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/sync-alt.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_sync_alt_svg__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_sync_alt_svg__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_redo_alt_svg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/redo-alt.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/redo-alt.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_redo_alt_svg__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_redo_alt_svg__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_desktop_svg__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/desktop.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/desktop.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_desktop_svg__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_desktop_svg__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_compress_arrows_alt_svg__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/compress-arrows-alt.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/compress-arrows-alt.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_compress_arrows_alt_svg__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_compress_arrows_alt_svg__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/arrow-left.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-left.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/arrow-right.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_ellipsis_v_svg__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/ellipsis-v.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/ellipsis-v.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_ellipsis_v_svg__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_ellipsis_v_svg__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_left_svg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/angle-left.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-left.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_left_svg__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_angle_left_svg__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_right_svg__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/angle-right.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-right.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_right_svg__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_angle_right_svg__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _embed_receipt_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./embed-receipt.js */ "./src/embed-receipt.js");\n/* harmony import */ var split_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! split.js */ "./node_modules/split.js/dist/split.es.js");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst RWP_SCHEME = "search://";\n\n\n// ===========================================================================\nclass Coll extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n this.sourceUrl = null;\n this.inited = false;\n this.isLoading = false;\n\n this.coll = "";\n\n this.collInfo = null;\n\n this._replaceLoc = false;\n this._locUpdateNeeded = false;\n\n this._locationHash = "";\n\n this.tabData = {};\n this.url = "";\n this.ts = "";\n\n this.tabNames = ["pages", "story", "resources", "info"];\n this.tabLabels = {\n "pages": "Pages",\n "story": "Story",\n "resources": "URLs",\n "info": "Archive Info",\n };\n\n this.menuActive = false;\n this.embedDropdownActive = false;\n\n this.hasStory = false;\n\n this.editable = false;\n this.browsable = true;\n this.clearable = true;\n\n this.showSidebar = localStorage.getItem("pages:showSidebar") === "1";\n this.splitter = null;\n\n this.isVisible = true;\n\n this.favIconUrl = "";\n\n this.autoUpdateInterval = 10;\n this._autoUpdater = null;\n\n this.appName = "ReplayWeb.page";\n this.appVersion = _misc__WEBPACK_IMPORTED_MODULE_1__.VERSION;\n this.appLogo = _misc__WEBPACK_IMPORTED_MODULE_1__.rwpLogo;\n }\n\n static get properties() {\n return {\n inited: { type: Boolean },\n\n sourceUrl: { type: String },\n loadInfo: { type: Object, attribute: false },\n\n showSidebar: { type: Boolean },\n\n collInfo: { type: Object, attribute: false },\n coll: { type: String },\n\n hasStory: { type: Boolean },\n isLoading: { type: Boolean },\n\n tabData: { type: Object, attribute: false },\n\n url: { type: String },\n ts: { type: String },\n\n isFullscreen: { type: Boolean },\n menuActive: { type: Boolean },\n\n embed: { type: String },\n embedDropdownActive: { type: Boolean },\n\n editable: { type: Boolean },\n browsable: { type: Boolean },\n clearable: { type: Boolean },\n\n isVisible: { type: Boolean },\n\n favIconUrl: {type: String },\n\n appName: { type: String },\n appVersion: { type: String },\n appLogo: { type: String },\n\n autoUpdateInterval: { type: Number },\n\n swName: { type: String }\n };\n }\n\n firstUpdated() {\n this.inited = true;\n window.addEventListener("hashchange", (event) => this.onHashChange(event));\n\n this.addEventListener("fullscreenchange", () => {\n this.isFullscreen = !!document.fullscreenElement;\n });\n\n if (this.embed && this.loadInfo && this.loadInfo.hideOffscreen) {\n this.observer = new IntersectionObserver((entries/*, observer*/) => {\n this.isVisible = entries[0].isIntersecting;\n });\n\n this.observer.observe(this);\n }\n }\n\n async runUpdateLoop() {\n try {\n // only autoupdate if interval is set, and number of pages < 100 to avoid messing up scrolling\n while (this.editable && this.autoUpdateInterval && (!this.collInfo || this.collInfo.pages.length < 100)) {\n await new Promise(resolve => setTimeout(resolve, this.autoUpdateInterval * 1000));\n await this.doUpdateInfo(true);\n }\n } finally {\n this._autoUpdater = null;\n }\n }\n\n updated(changedProperties) {\n // if (changedProperties.has("url") || changedProperties.has("ts")) {\n // if (this.url.startsWith("rwp?")) {\n // this.tabData = Object.fromEntries(new URLSearchParams(this.url.slice(4)).entries());\n // } else {\n // this.tabData = {view: "replay", url: this.url, ts: this.ts};\n // }\n // }\n\n if (changedProperties.has("sourceUrl")) {\n this.doUpdateInfo();\n }\n if (changedProperties.has("editable")) {\n if (this.editable && this.autoUpdateInterval && !this._autoUpdater) {\n this._autoUpdater = this.runUpdateLoop();\n }\n }\n if (changedProperties.has("tabData")) {\n if (!this.collInfo || !this.collInfo.coll) {\n return;\n }\n\n // don\'t add empty params to shorten query\n Object.keys(this.tabData).\n forEach(key => !this.tabData[key] && delete this.tabData[key]);\n\n const newHash = "#" + new URLSearchParams(this.tabData).toString();\n\n if (!this.tabData.url) {\n this.url = RWP_SCHEME + decodeURIComponent(this._paramsToString(this.tabData));\n }\n if (newHash !== this._locationHash) {\n this._locationHash = newHash;\n if (this._replaceLoc || Object.keys(changedProperties.get("tabData")).length === 0) {\n const newLoc = new URL(window.location.href);\n newLoc.hash = this._locationHash;\n window.history.replaceState({}, "", newLoc.href);\n this._replaceLoc = false;\n } else {\n window.location.hash = this._locationHash;\n if (!this.showSidebar) {\n const replay = this.renderRoot.querySelector("wr-coll-replay");\n if (replay) {\n replay.focus();\n }\n }\n }\n if (this.embed && window.parent !== window) {\n window.parent.postMessage(this.tabData, "*");\n }\n }\n this._locUpdateNeeded = false;\n }\n if (changedProperties.has("showSidebar")) {\n if (!this.embed) {\n localStorage.setItem("pages:showSidebar", this.showSidebar ? "1" : "0");\n }\n }\n\n if (changedProperties.has("tabData") || changedProperties.has("showSidebar")) {\n this.configureSplitter();\n }\n }\n\n configureSplitter() {\n if (this.tabData.url && this.showSidebar) {\n const contents = this.renderRoot.querySelector("#contents");\n const replay = this.renderRoot.querySelector("wr-coll-replay");\n\n if (contents && replay && !this.splitter) {\n const opts = {\n sizes: [30, 70],\n\n minSize: [300, 300],\n\n gutterSize: 4,\n\n onDragStart() {\n replay.setDisablePointer(true);\n },\n\n onDragEnd() {\n replay.setDisablePointer(false);\n }\n };\n\n this.splitter = (0,split_js__WEBPACK_IMPORTED_MODULE_19__["default"])([contents, replay], opts);\n }\n } else if (this.splitter) {\n try {\n this.splitter.destroy();\n } catch (e) {\n // ignore, remove splitter\n }\n this.splitter = null;\n }\n }\n\n async doUpdateInfo(autorefresh = false)\n {\n // if auto-refresh, and replay and no sidebar, than skip update\n if (autorefresh && this.tabData.url && !this.showSidebar) {\n return;\n }\n\n let coll = this.loadInfo && this.loadInfo.customColl;\n\n if (!coll) {\n const res = await (0,_pageutils__WEBPACK_IMPORTED_MODULE_2__.sourceToId)(this.sourceUrl);\n coll = res.coll;\n }\n\n this.coll = coll;\n\n const collApiPrefix = _misc__WEBPACK_IMPORTED_MODULE_1__.apiPrefix + "/c/" + coll;\n const collReplayPrefix = _misc__WEBPACK_IMPORTED_MODULE_1__.replayPrefix + "/" + coll;\n\n const resp = await fetch(collApiPrefix + "?all=1");\n\n if (resp.status != 200) {\n this.collInfo = {};\n return;\n }\n\n const json = await resp.json();\n\n this.collInfo = {\n apiPrefix: collApiPrefix,\n replayPrefix: collReplayPrefix,\n coll,\n ...json\n };\n\n if (this.loadInfo && this.loadInfo.extraConfig && this.loadInfo.extraConfig.headers) {\n const headers = this.loadInfo.extraConfig.headers;\n await fetch(`${collApiPrefix}/updateAuth`, {\n method: "POST",\n body: JSON.stringify({headers})\n });\n }\n\n if (!this.collInfo.title) {\n this.collInfo.title = this.collInfo.filename;\n }\n\n if (this.embed === "replayonly" || this.embed === "replay-with-info") {\n this.showSidebar = false;\n }\n\n this.hasStory = this.collInfo.desc || this.collInfo.lists.length;\n\n this.dispatchEvent(new CustomEvent("coll-loaded", {detail: {\n collInfo: this.collInfo,\n alreadyLoaded: true\n }}));\n\n this.onHashChange();\n }\n\n onCollLoaded(event) {\n this.doUpdateInfo();\n this.loadInfo = null;\n if (event.detail.sourceUrl) {\n this.sourceUrl = event.detail.sourceUrl;\n }\n this.dispatchEvent(new CustomEvent("coll-loaded", {detail: {\n sourceUrl: this.sourceUrl,\n collInfo: this.collInfo,\n }}));\n }\n\n onCollUpdate(event) {\n if (!this.editable) {\n return;\n }\n\n this.collInfo = {...this.collInfo, ...event.detail};\n }\n\n onHashChange() {\n const hash = window.location.hash;\n if (hash && hash !== this._locationHash) {\n this.tabData = Object.fromEntries(new URLSearchParams(hash.slice(1)).entries());\n this._locationHash = hash;\n }\n\n if (this.collInfo.coll && !this.tabNames.includes(this.tabData.view)) {\n const view = this.hasStory ? "story" : (this.editable || this.collInfo.pages.length ? "pages" : "resources");\n\n this.tabData = {\n ...this.tabData, view\n };\n }\n\n if (this.tabData.url && this.tabData.url.startsWith("page:")) {\n const pageIndex = Number(this.tabData.url.slice("page:".length));\n if (!isNaN(pageIndex) && pageIndex < this.collInfo.pages.length) {\n const page = this.collInfo.pages[pageIndex];\n this.tabData.url = page.url;\n this.tabData.ts = (0,_pageutils__WEBPACK_IMPORTED_MODULE_2__.getPageDateTS)(page).timestamp;\n }\n }\n\n if (!this.hasStory && this.tabData.view === "story") {\n this.tabData.view = "pages";\n }\n\n if (this.tabData.url && this.tabData.query) {\n this.showSidebar = true;\n }\n }\n\n onTabClick(event) {\n event.preventDefault();\n const hash = event.currentTarget.getAttribute("href");\n this.tabData = {...this.tabData, view: hash.slice(1)};\n //this.tabData = {view: hash.slice(1)};\n return false;\n }\n\n onCollTabNav(event) {\n if (event.detail.reload) {\n this.onRefresh(null, true);\n return;\n }\n\n if (event.target.id === this.tabData.view || event.target.id === "replay" && this.tabData.url) {\n this.updateTabData(event.detail.data, event.detail.replaceLoc, false);\n } else if (this.showSidebar && this.tabData.url) {\n this.updateTabData(event.detail.data, event.detail.replaceLoc, true);\n }\n }\n\n updateTabData(data, replaceLoc = false/*, merge = false*/) {\n this.tabData = {...this.tabData, ...data};\n if (this.tabData.url) {\n this.url = this.tabData.url || "";\n }\n if (this.tabData.ts) {\n this.ts = this.tabData.ts || "";\n }\n this._replaceLoc = !this._locUpdateNeeded && replaceLoc;\n this._locUpdateNeeded = true;\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_1__.wrapCss)(Coll.compStyles);\n }\n\n static get compStyles() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.css`\n :host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-width: 0px;\n }\n\n .icon {\n vertical-align: text-top;\n }\n\n .back fa-icon {\n width: 1.5em;\n vertical-align: bottom;\n line-height: 0.5em;\n }\n\n li.is-active {\n font-weight: bold;\n }\n\n .tab-label {\n display: inline;\n }\n\n @media screen and (max-width: ${!_misc__WEBPACK_IMPORTED_MODULE_1__.IS_APP ? lit__WEBPACK_IMPORTED_MODULE_0__.css`1053px` : lit__WEBPACK_IMPORTED_MODULE_0__.css`1163px`}) {\n .tab-label {\n display: none;\n }\n\n .main.tabs span.icon {\n margin: 0px;\n }\n }\n\n .main.tabs {\n display: flex;\n flex-direction: row;\n margin-bottom: 0px;\n }\n\n .main.tabs ul {\n position: relative;\n }\n\n .main.tabs li {\n line-height: 1.5;\n padding: 8px 0 6px 0;\n }\n\n @media screen and (max-width: 319px) {\n .main.tabs li a {\n padding-right: 4px;\n padding-left: 4px;\n }\n }\n\n .sidebar.main.tabs li a {\n padding-right: 6px;\n padding-left: 6px;\n }\n\n #contents {\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n min-height: 0px;\n flex: auto;\n background-color: white;\n }\n\n #tabContents {\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: row;\n min-height: 0px;\n flex: auto;\n }\n\n rwp-embed-receipt {\n flex-direction: column;\n display: flex;\n }\n\n ${_embed_receipt_js__WEBPACK_IMPORTED_MODULE_18__.RWPEmbedReceipt.embedStyles}\n\n ${Coll.replayBarStyles}`;\n }\n\n static get replayBarStyles() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.css`\n .breadbar {\n display: flex;\n align-items: center;\n height: 35px;\n width: 100%;\n background-color: aliceblue;\n padding: 0.5em;\n }\n\n .replay-bar {\n padding: 0.5em 0em 0.5em 0.5em;\n max-width: none;\n border-bottom: solid .1rem #97989A;\n width: 100%;\n background-color: white;\n }\n\n input#url {\n border-radius: 4px;\n }\n\n .favicon img {\n width: 20px;\n height: 20px;\n margin: 8px;\n /*filter: drop-shadow(1px 1px 2px grey);*/\n }\n\n #datetime {\n position: absolute;\n right: 1em;\n z-index: 10;\n background: linear-gradient(90deg, rgba(255, 255, 255, 0), #FFF 15%, #FFF);\n margin: -35px 0 0 0px;\n padding-left: 3em;\n line-height: 2;\n }\n\n .menu-head {\n font-size: 10px;\n font-weight: bold;\n display: block;\n }\n .menu-logo {\n vertical-align: middle;\n }\n .menu-version {\n font-size: 10px;\n }\n .dropdown-item.info {\n font-style: italic;\n }\n\n input:focus + #datetime {\n display: none;\n }\n\n .grey-disabled {\n --fa-icon-fill-color: lightgrey;\n color: lightgrey;\n }\n\n .replay-bar .button:focus {\n box-shadow: none;\n }\n\n .is-borderless {\n border: 0px;\n }\n\n .narrow {\n padding: calc(0.5em - 1px) 0.8em;\n }\n\n form {\n width: 100%;\n margin: 0 0 0 0.5em;\n }\n\n .gutter.gutter-horizontal {\n cursor: col-resize;\n float: left;\n background-color: rgb(151, 152, 154);\n }\n\n .gutter.gutter-horizontal:hover {\n cursor: col-resize;\n }\n\n main, wr-coll-replay {\n width: 100%;\n }\n\n .info-bg {\n background-color: whitesmoke;\n width: 100%;\n height: 100%;\n display: flex;\n }\n\n .is-list {\n margin: 1.0em;\n background-color: whitesmoke;\n }\n\n #contents.full-pages {\n width: 100% !important;\n }\n\n .sidebar-nav {\n position: absolute;\n vertical-align: middle;\n }\n\n .sidebar-nav a {\n display: inline-block;\n border-bottom: 0px;\n }\n\n .sidebar-nav span.nav-hover {\n font-size: smaller;\n display: none;\n }\n\n .sidebar-nav:hover span.nav-hover,\n .sidebar-nav:focus-within span.nav-hover {\n display: initial;\n color: rgb(72, 118, 255);\n }\n\n .sidebar-nav fa-icon {\n vertical-align: bottom;\n }\n\n .sidebar-nav:hover fa-icon {\n color: rgb(72, 118, 255);\n }\n\n .sidebar-nav.left {\n left: 8px;\n }\n\n .sidebar-nav.right {\n right: 8px;\n }\n\n /* Since the replay sometimes programmatically receives keyboard focus,\n and that is visually unexpected for mouse-users, and since this won\'t\n particularly trip up keyboard users, just remove the focus style. */\n wr-coll-replay:focus {\n outline: none;\n }\n /* Some keyboard-users may see this replacement style */\n wr-coll-replay:focus-visible {\n outline: 1px solid rgb(72, 118, 255);\n }\n `;\n }\n\n render() {\n if (!this.inited) return lit__WEBPACK_IMPORTED_MODULE_0__.html``;\n\n const isReplay = !!this.tabData.url;\n const isSidebar = isReplay && this.showSidebar;\n\n if (!isReplay && this.tabData && this.tabData.view){\n const detail = {title: this.tabLabels[this.tabData.view], replayTitle: false};\n this.dispatchEvent(new CustomEvent("update-title", {bubbles: true, composed: true, detail}));\n }\n\n if (this.collInfo && !this.collInfo.coll) {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <wr-loader .loadInfo="${this.loadInfo}" embed="${this.embed}" swName="${this.swName}"\n .coll="${this.coll}" .sourceUrl="${this.sourceUrl}" @coll-loaded=${this.onCollLoaded}></wr-loader>`;\n } else if (this.collInfo) {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n ${this.renderLocationBar()}\n ${this.renderVerifyInfo()}\n <div id="tabContents">\n <div id="contents" class="is-light ${isSidebar ? "sidebar" : (isReplay ? "is-hidden" : "full-pages")}"\n role="${isSidebar ? "complementary" : ""}" aria-label="${isSidebar ? "Browse Contents" : ""}">\n ${this.renderTabHeader(isSidebar)}\n ${isSidebar || !isReplay ? this.renderCollTabs(isSidebar) : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n </div>\n\n ${isReplay && this.isVisible ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <wr-coll-replay\n role="main"\n tabindex="-1"\n .collInfo="${this.collInfo}"\n sourceUrl="${this.sourceUrl}"\n url="${this.tabData.url || ""}"\n ts="${this.tabData.ts || ""}"\n @coll-tab-nav="${this.onCollTabNav}" id="replay"\n @replay-loading="${(e) => this.isLoading = e.detail.loading}"\n @replay-favicons="${this.onFavIcons}"\n >\n </wr-coll-replay>\n ` : ""}\n </div>\n `;\n } else {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html``;\n }\n }\n\n renderTabHeader(isSidebar) {\n // if (this.tabData.view === "replay") {\n // return "";\n // }\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <nav class="main tabs is-centered ${isSidebar ? "sidebar" : ""}" aria-label="tabs">\n <ul>\n ${isSidebar ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <li class="sidebar-nav left">\n <a role="button" href="#" @click="${this.onHideSidebar}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}" class="is-marginless is-size-6 is-paddingless">\n <fa-icon title="Hide" .svg="${(_fortawesome_fontawesome_free_svgs_solid_angle_left_svg__WEBPACK_IMPORTED_MODULE_16___default())}" aria-hidden="true"></fa-icon>\n <span class="nav-hover" aria-hidden="true">Hide</span>\n <span class="is-sr-only">Hide Sidebar</span>\n </a>\n </li>` : ""}\n\n ${this.hasStory ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <li class="${this.tabData.view === "story" ? "is-active" : ""}">\n <a @click="${this.onTabClick}" href="#story" class="is-size-6" aria-label="Story" aria-current="${this.tabData.view === "story" ? "location" : ""}">\n <span class="icon"><fa-icon .svg="${(_fortawesome_fontawesome_free_svgs_solid_book_svg__WEBPACK_IMPORTED_MODULE_3___default())}" aria-hidden="true" title="Story"></fa-icon></span>\n <span class="tab-label ${isSidebar ? "is-hidden" : ""}" title="Story">Story</span>\n </a>\n </li>` : ""}\n\n <li class="${this.tabData.view === "pages" ? "is-active" : ""}">\n <a @click="${this.onTabClick}" href="#pages" class="is-size-6" aria-label="Pages" aria-current="${this.tabData.view === "pages" ? "location" : ""}">\n <span class="icon"><fa-icon .svg="${(_fortawesome_fontawesome_free_svgs_regular_file_image_svg__WEBPACK_IMPORTED_MODULE_7___default())}" aria-hidden="true" title="Pages"></fa-icon></span>\n <span class="tab-label ${isSidebar ? "is-hidden" : ""}" title="Pages">Pages</span>\n </a>\n </li>\n\n <li class="${this.tabData.view === "resources" ? "is-active" : ""}">\n <a @click="${this.onTabClick}" href="#resources" class="is-size-6" aria-label="URLs" aria-current="${this.tabData.view === "resources" ? "location" : ""}">\n <span class="icon"><fa-icon .svg="${(_fortawesome_fontawesome_free_svgs_solid_puzzle_piece_svg__WEBPACK_IMPORTED_MODULE_6___default())}" aria-hidden="true" title="URLs"></fa-icon></span>\n <span class="tab-label ${isSidebar ? "is-hidden" : ""}" title="URLs">URLs</span>\n </a>\n </li>\n\n <li class="${this.tabData.view === "info" ? "is-active" : ""}">\n <a @click="${this.onTabClick}" href="#info" class="is-size-6" aria-label="Archive Info" aria-current="${this.tabData.view === "info" ? "location" : ""}">\n <span class="icon"><fa-icon .svg="${(_fortawesome_fontawesome_free_svgs_solid_info_circle_svg__WEBPACK_IMPORTED_MODULE_8___default())}" aria-hidden="true" title="Archive Info"></fa-icon></span>\n <span class="tab-label ${isSidebar ? "is-hidden" : ""}" title="Archive Info">Info</span>\n </a>\n </li>\n\n ${isSidebar ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <li class="sidebar-nav right">\n <a role="button" href="#" @click="${this.onFullPageView}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}" class="is-marginless is-size-6 is-paddingless">\n <span class="nav-hover" aria-hidden="true">Expand</span>\n <span class="is-sr-only">Expand Sidebar to Full View</span>\n <fa-icon title="Expand" .svg="${(_fortawesome_fontawesome_free_svgs_solid_angle_right_svg__WEBPACK_IMPORTED_MODULE_17___default())}" aria-hidden="true"></fa-icon>\n </a>\n </li>` : ""}\n </ul>\n </nav>`;\n }\n\n renderLocationBar() {\n if (this.embed === "replayonly" || this.embed == "replay-with-info") {\n return "";\n }\n\n const dateStr = (0,_pageutils__WEBPACK_IMPORTED_MODULE_2__.tsToDate)(this.ts).toLocaleString();\n\n const isReplay = !!this.tabData.url;\n\n const showFavIcon = isReplay && this.favIconUrl;\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <a class="skip-link" href="#skip-replay-target" @click="${this.skipMenu}">Skip replay navigation</a>\n <nav class="replay-bar" aria-label="replay">\n <div class="field has-addons">\n <a href="#" role="button" class="button narrow is-borderless is-hidden-touch" id="fullscreen" @click="${this.onFullscreenToggle}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}"\n title="${this.isFullscreen ? "Exit Full Screen" : "Full Screen"}" aria-label="${this.isFullscreen ? "Exit Fullscreen" : "Fullscreen"}">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${this.isFullscreen ? (_fortawesome_fontawesome_free_svgs_solid_compress_arrows_alt_svg__WEBPACK_IMPORTED_MODULE_12___default()) : (_fortawesome_fontawesome_free_svgs_solid_desktop_svg__WEBPACK_IMPORTED_MODULE_11___default())}"></fa-icon>\n </span>\n </a>\n <a href="#" role="button" class="button narrow is-borderless is-hidden-mobile" @click="${this.onGoBack}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}"\n title="Back" aria-label="Back">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${(_fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_13___default())}"></fa-icon>\n </span>\n </a>\n <a href="#" role="button" class="button narrow is-borderless is-hidden-mobile" @click="${this.onGoForward}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}"\n title="Forward" aria-label="Forward">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${(_fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_14___default())}"></fa-icon>\n </span>\n </a>\n <a href="#" role="button" class="button narrow is-borderless ${this.isLoading ? "is-loading" : "is-hidden-mobile"}" id="refresh" @click="${this.onRefresh}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}"\n title="Reload" aria-label="Reload">\n <span class="icon is-small">\n ${!this.isLoading ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${(_fortawesome_fontawesome_free_svgs_solid_redo_alt_svg__WEBPACK_IMPORTED_MODULE_10___default())}"></fa-icon>\n ` : ""}\n </span>\n </a>\n ${this.browsable ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <a href="#" role="button" class="button narrow is-borderless is-hidden-mobile ${!isReplay ? "grey-disabled" : ""}" @click="${this.onShowPages}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}"\n ?disabled="${!isReplay}" title="Browse Contents" aria-label="Browse Contents" aria-controls="contents">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${(_fortawesome_fontawesome_free_svgs_regular_list_alt_svg__WEBPACK_IMPORTED_MODULE_5___default())}"></fa-icon>\n </span>\n </a>` : ""}\n ${this.renderExtraToolbar(false)}\n <form @submit="${this.onSubmit}">\n <div class="control is-expanded ${showFavIcon ? "has-icons-left" : ""}">\n <input id="url" class="input" type="text" @keydown="${this.onKeyDown}" @blur="${this.onLostFocus}" .value="${this.url}" placeholder="Enter text to search or a URL to replay"/>\n ${isReplay ? lit__WEBPACK_IMPORTED_MODULE_0__.html`<p id="datetime" class="control is-hidden-mobile">${dateStr}</p>` : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n ${showFavIcon ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <span class="favicon icon is-small is-left">\n <img src="${this.favIconUrl}"/>\n </span>` : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n </div>\n </form>\n\n <div class="dropdown is-right ${this.menuActive ? "is-active" : ""}" @click="${() => this.menuActive = false}">\n <div class="dropdown-trigger">\n <button class="button is-borderless" aria-haspopup="true" aria-controls="menu-dropdown" aria-expanded="${this.menuActive}" @click="${this.onMenu}"\n aria-label="more replay controls">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${(_fortawesome_fontawesome_free_svgs_solid_ellipsis_v_svg__WEBPACK_IMPORTED_MODULE_15___default())}"></fa-icon>\n </span>\n </button>\n </div>\n <div class="dropdown-menu" id="menu-dropdown">\n <div class="dropdown-content">\n <a href="#" role="button" class="dropdown-item is-hidden-desktop" @click="${this.onFullscreenToggle}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${this.isFullscreen ? (_fortawesome_fontawesome_free_svgs_solid_compress_arrows_alt_svg__WEBPACK_IMPORTED_MODULE_12___default()) : (_fortawesome_fontawesome_free_svgs_solid_desktop_svg__WEBPACK_IMPORTED_MODULE_11___default())}"></fa-icon>\n </span>\n <span>Full Screen</span>\n </a>\n <a href="#" role="button" class="dropdown-item is-hidden-tablet" @click="${this.onGoBack}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${(_fortawesome_fontawesome_free_svgs_solid_arrow_left_svg__WEBPACK_IMPORTED_MODULE_13___default())}"></fa-icon>\n </span>\n <span>Back</span>\n </a>\n <a href="#" role="button" class="dropdown-item is-hidden-tablet" @click="${this.onGoForward}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${(_fortawesome_fontawesome_free_svgs_solid_arrow_right_svg__WEBPACK_IMPORTED_MODULE_14___default())}"></fa-icon>\n </span>\n <span>Forward</span>\n </a>\n <a href="#" role="button" class="dropdown-item is-hidden-tablet" @click="${this.onRefresh}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${(_fortawesome_fontawesome_free_svgs_solid_redo_alt_svg__WEBPACK_IMPORTED_MODULE_10___default())}"></fa-icon>\n </span>\n <span>Reload</span>\n </a>\n ${this.browsable ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <a href="#" role="button" class="dropdown-item is-hidden-tablet ${!isReplay ? "grey-disabled" : ""}" @click="${this.onShowPages}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${(_fortawesome_fontawesome_free_svgs_regular_list_alt_svg__WEBPACK_IMPORTED_MODULE_5___default())}"></fa-icon>\n </span>\n <span>Browse Contents</span>\n </a>` : ""}\n ${this.renderExtraToolbar(true)}\n ${this.clearable ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <hr class="dropdown-divider is-hidden-desktop">\n <a href="#" role="button" class="dropdown-item" @click="${this.onPurgeCache}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${(_fortawesome_fontawesome_free_svgs_solid_sync_alt_svg__WEBPACK_IMPORTED_MODULE_9___default())}"></fa-icon>\n </span>\n <span>Purge Cache + Full Reload</span>\n </a>` : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n ${!this.editable && this.sourceUrl.startsWith("http://") || this.sourceUrl.startsWith("https://") ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <hr class="dropdown-divider">\n <a href="${this.sourceUrl}" role="button" class="dropdown-item" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${(_fortawesome_fontawesome_free_svgs_solid_download_svg__WEBPACK_IMPORTED_MODULE_4___default())}"></fa-icon>\n </span>\n <span>Download Archive</span>\n </a>` : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n ${dateStr ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <hr class="dropdown-divider is-hidden-desktop">\n <div class="dropdown-item info is-hidden-desktop">\n <span class="menu-head">Capture Date</span>${dateStr}\n </div>` : ""}\n <hr class="dropdown-divider">\n <a href="#" role="button" class="dropdown-item" @click="${this.onAbout}">\n <fa-icon class="menu-logo" size="1.0rem" aria-hidden="true" .svg=${this.appLogo}></fa-icon>\n <span>&nbsp;About ${this.appName}</span>\n <span class="menu-version">(${this.appVersion})</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n </nav><p id="skip-replay-target" tabindex="-1" class="is-sr-only">Skipped</p>`;\n }\n\n renderVerifyInfo() {\n if (this.embed !== "replay-with-info") {\n return "";\n }\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`<rwp-embed-receipt\n .collInfo=${this.collInfo}\n url=${this.url}\n ts=${this.ts}\n .appLogo=${this.appLogo}\n >\n </rwp-embed-receipt>`;\n }\n\n dragStart() {\n const replay = this.renderRoot.querySelector("wr-coll-replay");\n if (replay) {\n replay.setDisablePointer(true);\n }\n }\n\n dragEnd() {\n const replay = this.renderRoot.querySelector("wr-coll-replay");\n if (replay) {\n replay.setDisablePointer(false);\n }\n }\n\n renderCollInfo() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="info-bg">\n <wr-coll-info\n class="is-list"\n .coll="${this.collInfo}"\n ?detailed="${true}"\n ?canDelete="${!this.embed}"\n @coll-purge="${this.onPurgeCache}"\n ></wr-coll-info>\n </div>`;\n }\n\n renderExtraToolbar(/*isDropdown = false*/) {\n return "";\n }\n\n renderCollTabs(isSidebar) {\n const isStory = this.hasStory && this.tabData.view === "story";\n const isPages = this.tabData.view === "pages";\n const isResources = this.tabData.view === "resources";\n const isInfo = this.tabData.view === "info";\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n\n ${isInfo ? this.renderCollInfo() : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n\n ${isStory ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <wr-coll-story .collInfo="${this.collInfo}"\n .active="${isStory}"\n currList="${this.tabData.currList || 0}"\n @coll-tab-nav="${this.onCollTabNav}" id="story"\n .isSidebar="${isSidebar}"\n class="${isStory ? "" : "is-hidden"} ${isSidebar ? "sidebar" : ""}"\n role="${isSidebar ? "" : "main"}"\n >\n </wr-coll-story>` : ""}\n\n ${isResources ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <wr-coll-resources .collInfo="${this.collInfo}"\n .active="${isResources}"\n query="${this.tabData.query || ""}"\n urlSearchType="${this.tabData.urlSearchType || ""}"\n .currMime="${this.tabData.currMime || ""}"\n @coll-tab-nav="${this.onCollTabNav}" id="resources"\n .isSidebar="${isSidebar}"\n class="is-paddingless ${isResources ? "" : "is-hidden"} ${isSidebar ? "sidebar" : ""}"\n role="${isSidebar ? "" : "main"}"\n >\n </wr-coll-resources>` : ""}\n\n ${isPages ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <wr-page-view\n .collInfo="${this.collInfo}"\n .active="${isPages}"\n .editable="${this.editable}"\n .isSidebar="${isSidebar}"\n currList="${this.tabData.currList || 0}"\n query="${this.tabData.query || ""}"\n .url="${this.tabData.url || ""}"\n .ts="${this.tabData.ts || ""}"\n @coll-tab-nav="${this.onCollTabNav}" id="pages"\n @coll-update="${this.onCollUpdate}"\n class="${isPages ? "" : "is-hidden"} ${isSidebar ? "sidebar" : ""}"\n role="${isSidebar ? "" : "main"}"\n >\n </wr-page-view>` : ""}\n `;\n }\n\n skipMenu(event){\n // This is a workaround, since this app\'s routing doesn\'t permit normal\n // following of in-page anchors.\n event.preventDefault();\n this.renderRoot.querySelector("#skip-replay-target").focus();\n }\n\n onKeyDown(event) {\n if (event.key === "Esc" || event.key === "Escape") {\n event.preventDefault();\n event.currentTarget.value = this.url;\n }\n }\n\n onMenu(event) {\n event.stopPropagation();\n this.menuActive = !this.menuActive;\n\n if (this.menuActive) {\n document.addEventListener("click", () => {\n this.menuActive = false;\n }, {once: true});\n }\n }\n\n onFullscreenToggle(event) {\n event.preventDefault();\n this.menuActive = false;\n if (!this.isFullscreen) {\n this.requestFullscreen();\n } else {\n document.exitFullscreen();\n }\n }\n\n onGoBack(event) {\n event.preventDefault();\n this.menuActive = false;\n window.history.back();\n }\n\n onGoForward(event) {\n event.preventDefault();\n this.menuActive = false;\n window.history.forward();\n }\n\n onShowPages(event) {\n event.preventDefault();\n // show sidebar for tablet or wider, or hide sidebar\n if (this.showSidebar || (document.documentElement.clientWidth >= 769)) {\n this.showSidebar = !this.showSidebar;\n } else {\n // otherwise, just go to full pages view\n this.showSidebar = false;\n this.updateTabData({url: "", ts: ""});\n }\n }\n\n onFullPageView(event) {\n event.preventDefault();\n this.updateTabData({url: "", ts: ""});\n }\n\n onHideSidebar(event) {\n event.preventDefault();\n this.showSidebar = false;\n }\n\n async onFavIcons(event) {\n for (const icon of event.detail.icons) {\n const resp = await fetch(icon.href);\n if (resp.status === 200) {\n const ct = resp.headers.get("Content-Type");\n if (ct && !ct.startsWith("text/")) {\n this.favIconUrl = icon.href;\n return;\n }\n }\n }\n\n // not found\n this.favIconUrl = "";\n }\n\n onPurgeCache(event) {\n event.preventDefault();\n\n const reload = event.detail && event.detail.reload !== undefined ? event.detail.reload : true;\n\n this.deleteFully(reload);\n }\n\n async deleteFully(reload = false) {\n const deleteURL = this.collInfo.apiPrefix + (reload ? "?reload=1" : "");\n\n const resp = await fetch(deleteURL, {\n method: "DELETE",\n });\n\n if (resp.status !== 200) {\n console.warn("purge failed: " + resp.status);\n }\n\n if (!reload && !this.embed) {\n window.location.search = "";\n return;\n }\n\n //window.location.hash = "";\n window.location.reload();\n }\n\n onSubmit(event) {\n event.preventDefault();\n const input = this.renderRoot.querySelector("input");\n if (input.value) {\n this.navigateTo(input.value);\n } else {\n input.value = this.url;\n }\n return false;\n }\n\n onLostFocus(event) {\n if (!event.currentTarget.value) {\n event.currentTarget.value = this.url;\n }\n }\n\n navigateTo(value) {\n let data;\n\n if (value.startsWith("http://") || value.startsWith("https://")) {\n data = {url: value};\n\n if (value === this.tabData.url) {\n const replay = this.renderRoot.querySelector("wr-coll-replay");\n if (replay) {\n replay.refresh();\n }\n return;\n }\n\n } else {\n if (!value.startsWith(RWP_SCHEME)) {\n data = {query: value, view: "pages"};\n } else {\n data = this._stringToParams(value);\n }\n }\n this.updateTabData(data);\n }\n\n _stringToParams(value) {\n const q = new URLSearchParams(value.slice(RWP_SCHEME.length));\n const data = {};\n data.url = "";\n data.ts = "";\n\n for (const param of ["query", "view", "currList", "currMime", "urlSearchType"]) {\n if (q.has(param)) {\n data[param] = q.get(param);\n }\n }\n\n return data;\n }\n\n _paramsToString(value) {\n const q = new URLSearchParams();\n\n for (const param of ["query", "view", "currList", "currMime", "urlSearchType"]) {\n if (param in value) {\n q.set(param, value[param]);\n }\n }\n\n return q.toString();\n }\n\n onRefresh(event, replayOnly = false) {\n if (event) {\n event.preventDefault();\n }\n\n this.menuActive = false;\n\n if (this.tabData.url) {\n const replay = this.renderRoot.querySelector("wr-coll-replay");\n if (replay) {\n replay.refresh();\n }\n } else if (!replayOnly) {\n window.location.reload();\n }\n }\n\n onAbout() {\n this.dispatchEvent(new CustomEvent("about-show"));\n }\n}\n\ncustomElements.define("wr-coll", Coll);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/coll.js?')},"./src/embed-receipt.js":
/*!******************************!*\
!*** ./src/embed-receipt.js ***!
\******************************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "RWPEmbedReceipt": () => (/* binding */ RWPEmbedReceipt)\n/* harmony export */ });\n/* harmony import */ var _assets_globe_svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../assets/globe.svg */ "./assets/globe.svg");\n/* harmony import */ var _assets_globe_svg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_assets_globe_svg__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _assets_chevron_double_down_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../assets/chevron-double-down.svg */ "./assets/chevron-double-down.svg");\n/* harmony import */ var _assets_chevron_double_down_svg__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_assets_chevron_double_down_svg__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _assets_chevron_double_up_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../assets/chevron-double-up.svg */ "./assets/chevron-double-up.svg");\n/* harmony import */ var _assets_chevron_double_up_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_assets_chevron_double_up_svg__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_brands_github_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/brands/github.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/brands/github.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_brands_github_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_brands_github_svg__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_download_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/download.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/download.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_download_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_download_svg__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./pageutils */ "./src/pageutils.js");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! pretty-bytes */ "./node_modules/pretty-bytes/index.js");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(pretty_bytes__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass RWPEmbedReceipt extends lit__WEBPACK_IMPORTED_MODULE_6__.LitElement\n{\n constructor() {\n super();\n this.collInfo = null;\n this.appLogo = null;\n this.ts = null;\n this.url = null;\n this.active = false;\n }\n\n get renderRoot() {\n return this;\n }\n\n static get properties() {\n return {\n collInfo: {type: Object},\n appLogo: {type: Object},\n url: {type: String},\n ts: {type: String},\n\n active: {type: Boolean }\n };\n }\n\n static get embedStyles() {\n return lit__WEBPACK_IMPORTED_MODULE_6__.css`\n rwp-embed-receipt {\n display: flex;\n flex-direction: column;\n }\n\n .icon {\n vertical-align: text-top;\n }\n\n #embed-dropdown {\n max-height: calc(100vh - 50px);\n padding-top: 0;\n margin-top: -0.5rem;\n display: block;\n z-index: 1;\n pointer-events: none;\n transition: all .3s linear;\n transform-origin: left top;\n transform: scaleY(0);\n transition: all 300ms cubic-bezier(0.15, 0, 0.1, 1);\n filter: drop-shadow(0px 8px 4px rgba(0, 0, 0, 0.15));\n }\n\n .dropdown.is-active #embed-dropdown {\n transform: scaleY(1);\n }\n\n .embed-info-container {\n width: 100%;\n display: flex !important;\n justify-content: center;\n }\n\n button.embed-info {\n padding: 0;\n background-color: white;\n justify-content: space-between;\n max-width: 40rem;\n width: calc(100% - 1rem);\n height: 42px;\n border-color: #D1D5DA;\n border-width: 1px;\n border-style: solid;\n border-radius: 999px;\n display: flex;\n align-items: center;\n text-overflow: ellipsis;\n filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.15));\n transition-duration: 50ms;\n transition-timing-function: ease-out;\n cursor: pointer;\n z-index: 2\n }\n\n button.embed-info:active {\n color: initial;\n }\n\n button.embed-info:hover {\n filter: drop-shadow(0px 2px 4px rgba(0, 0, 0, 0.2));\n transform: scale(1.01);\n }\n\n button.embed-info:hover:active {\n transform: translateY(0.25rem);\n }\n\n .embed-info-buttontext {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; \n flex-grow: 1;\n text-align: start;\n font-size: 13px;\n }\n\n .embed-info-drop {\n font-size: 14px;\n padding: 1rem;\n padding-top: 2rem;\n max-width: 38rem;\n max-height: 42rem;\n width: calc(100% - 2rem);\n border-top-right-radius: 0px;\n border-top-left-radius: 0px;\n pointer-events: auto;\n overflow-y: auto;\n }\n\n .embed-info-drop > p {\n font-size: 14px;\n color: black;\n }\n\n .embed-info-drop > h2 {\n margin-bottom: 0.25rem;\n font-size: 16px;\n font-weight: bold;\n text-transform: none;\n letter-spacing: 0;\n color: #24292E;\n }\n\n .embed-info-drop-statscontainer > h3 {\n font-size: 12px;\n color: #394146;\n }\n\n .embed-info-drop-statscontainer > p {\n font-size: 14px;\n color: black;\n }\n\n .embed-info-drop a {\n word-break: break-all;\n }\n\n .embed-info-drop .show-hash {\n word-break: break-all;\n font-family: monospace;\n }\n\n .embed-info-drop .show-key {\n text-overflow: ellipsis;\n overflow: hidden;\n whitespace: nowrap;\n font-family: monospace;\n }\n\n .embed-globe {\n margin: 0.25rem;\n padding: 7px;\n background-color: #0366D6;\n border-radius: 9999px;\n color: white;\n border-width: 1px;\n border-color: #D1D5DA;\n border-style: solid;\n line-height: 0.5em;\n }`;\n }\n\n render() {\n let {numValid, numInvalid, domain, certFingerprint, datapackageHash, publicKey, software} = this.collInfo.verify || {};\n numValid = numValid || 0;\n numInvalid = numInvalid || 0;\n\n const sourceUrl = this.collInfo.sourceUrl;\n\n const certFingerprintUrl = certFingerprint ? `https://crt.sh/?q=${certFingerprint}` : "";\n\n const dateStr = (0,_pageutils__WEBPACK_IMPORTED_MODULE_7__.tsToDate)(this.ts).toLocaleString();\n\n return lit__WEBPACK_IMPORTED_MODULE_6__.html`\n <div class="dropdown mb-4 ${this.active ? "is-active" : ""}">\n <div class="dropdown-trigger embed-info-container">\n <button class="embed-info is-small is-rounded mt-4" aria-haspopup="true" aria-controls="embed-dropdown" @click="${this.onEmbedDrop}">\n <fa-icon class="menu-logo mr-2 embed-globe" size="1rem" aria-hidden="true" .svg=${(_assets_globe_svg__WEBPACK_IMPORTED_MODULE_0___default())}></fa-icon>\n <span class="embed-info-buttontext">\n This embed is part of a web archive. Click here to learn more.\n </span>\n <span class="icon is-small mr-4 ml-2">\n <fa-icon title="Toggle" .svg="${this.active ? (_assets_chevron_double_up_svg__WEBPACK_IMPORTED_MODULE_2___default()) : (_assets_chevron_double_down_svg__WEBPACK_IMPORTED_MODULE_1___default())}" aria-hidden="true"></fa-icon>\n </span>\n </button>\n </div>\n <div class="dropdown-menu embed-info-container" id="embed-dropdown" role="menu">\n <div class="dropdown-content embed-info-drop">\n <p class="mb-4">\n Even if the original page goes offline or is changed, the content below will remain unchanged as it is loaded from a web archive.\n </p>\n <hr class="dropdown-divider">\n <h2 mt-4">Technical Information</h2>\n <div class="embed-info-drop-statscontainer mb-4">\n <h3>Original URL:</h3>\n <p><a target="_blank" href="${this.url}">${this.url}</a></p>\n <h3 class="mt-2">Archived On:</h3>\n <p>${dateStr}</p>\n ${domain ? lit__WEBPACK_IMPORTED_MODULE_6__.html`\n <h3 class="mt-2">Observed By:</h3>\n <p>${domain}</p>\n ${certFingerprintUrl ? lit__WEBPACK_IMPORTED_MODULE_6__.html`\n <p><a target="_blank" href="${certFingerprintUrl}">View Certificate</a></p>` : ""}\n ` : software ? lit__WEBPACK_IMPORTED_MODULE_6__.html`\n <h3 class="mt-2">Created With:</h3>\n <p>${software}</p>` : ""}\n ${!domain && publicKey ? lit__WEBPACK_IMPORTED_MODULE_6__.html`\n <h3 class="mt-2">Observer Public Key:</h3>\n <p class="show-key">${publicKey}</p>` : ""}\n <h3 class="mt-2">Validation:</h3>\n ${numValid > 0 || numInvalid > 0 ? lit__WEBPACK_IMPORTED_MODULE_6__.html`\n <p>${numValid} hashes verified${numInvalid ? lit__WEBPACK_IMPORTED_MODULE_6__.html`, ${numInvalid} invalid` : ""}</p>` : lit__WEBPACK_IMPORTED_MODULE_6__.html`\n <p>Not Available</p>\n `}\n <h3 class="mt-2">Package Hash:</h3>\n <p class="show-hash">${datapackageHash}</p>\n <h3 class="mt-2">Size</h3>\n <p>${pretty_bytes__WEBPACK_IMPORTED_MODULE_8___default()(Number(this.collInfo.size || 0))}</p>\n </div>\n ${sourceUrl ? lit__WEBPACK_IMPORTED_MODULE_6__.html`\n <hr class="dropdown-divider">\n <h2 mt-4">Get A Copy!</h2>\n <p class="mt-2">After downloading, this web archive can be loaded and viewed directly in your browser via <a style="white-space: nowrap;" target="_blank" href="https://replayweb.page">replayweb.page</a>.</p>\n <a href="${sourceUrl}" class="button mt-4" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_5__.clickOnSpacebarPress}">\n <span class="icon is-small">\n <fa-icon size="1.0em" class="has-text-grey" aria-hidden="true" .svg="${(_fortawesome_fontawesome_free_svgs_solid_download_svg__WEBPACK_IMPORTED_MODULE_4___default())}"></fa-icon>\n </span>\n <span>Download Archive</span>\n </a>\n ` : ""}\n <p class="is-size-7 is-flex is-justify-content-space-between" style="margin-top: 40px">\n <span>\n <a class="has-text-black" target="_blank" href="https://github.com/webrecorder/replayweb.page">\n <fa-icon class="menu-logo mr-1" size="1.0rem" aria-hidden="true" .svg=${this.appLogo}></fa-icon>\n Powered by ReplayWeb.page\n </a>\n </span>\n <span>\n <a class="has-text-black" target="_blank" href="https://github.com/webrecorder/replayweb.page">Source Code\n <fa-icon class="menu-logo ml-1" size="1.0rem" aria-hidden="true" .svg=${(_fortawesome_fontawesome_free_svgs_brands_github_svg__WEBPACK_IMPORTED_MODULE_3___default())}></fa-icon>\n </a>\n </span>\n </p>\n </div>\n </div>\n </div>\n `;\n }\n\n onEmbedDrop(event) {\n event.stopPropagation();\n this.active = !this.active;\n }\n}\n\ncustomElements.define("rwp-embed-receipt", RWPEmbedReceipt);\n\n\n//# sourceURL=webpack://replaywebpage/./src/embed-receipt.js?')},"./src/embed.js":
/*!**********************!*\
!*** ./src/embed.js ***!
\**********************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Embed": () => (/* binding */ Embed)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var lit_directives_if_defined_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lit/directives/if-defined.js */ "./node_modules/lit/directives/if-defined.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n/* harmony import */ var _swmanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./swmanager */ "./src/swmanager.js");\n\n\n\n\n\n\n\nvar scriptSrc = document.currentScript && document.currentScript.src;\n\nvar defaultReplayFile = "";\n\nconst DEFAULT_REPLAY_BASE = "https://replayweb.page/";\n\n\n// ===========================================================================\nclass Embed extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n this.replaybase = "./replay/";\n this.replayfile = defaultReplayFile;\n // eslint-disable-next-line no-undef\n this.swName = "sw.js";\n this.mainElementName = "replay-app-main";\n this.appName = "ReplayWeb.page";\n this.view = "replay";\n this.ts = "";\n this.url = "";\n this.query = "";\n this.config = "";\n this.customConfig = null;\n this.coll = "";\n this.paramString = null;\n this.deepLink = false;\n this.newWindowBase = "";\n this.inited = false;\n this.embed = null;\n this.reloadCount = 0;\n this.sandbox = false;\n this.noWebWorker = false;\n this.noCache = false;\n // deprecated;\n this.noSandbox = null;\n this.logo = _misc__WEBPACK_IMPORTED_MODULE_2__.rwpLogo;\n this.loading = "";\n }\n\n static setDefaultReplayFile(replayfile) {\n defaultReplayFile = replayfile;\n }\n\n static get properties() {\n return {\n url: { type: String },\n ts: { type: String },\n query: { type: String },\n\n source: { type: String },\n src: { type: String },\n\n view: { type: String },\n embed: { type: String },\n\n replaybase: { type: String },\n swName: { type: String },\n\n title: { type: String },\n\n coll: { type: String },\n config: { type: String },\n\n inited: { type: Boolean },\n\n paramString: { type: String },\n hashString: { type: String },\n\n deepLink: { type: Boolean },\n sandbox: { type: Boolean },\n noSandbox: { type: Boolean },\n noWebWorker: { type: Boolean },\n noCache: { type: Boolean },\n hideOffscreen: { type: Boolean },\n\n newWindowBase: { type: String },\n\n errorMessage: { type: String },\n\n requireSubdomainIframe: {type: Boolean},\n\n loading: { type: String },\n };\n }\n\n async doRegister() {\n const replaybaseURL = new URL(this.replaybase, window.location.href);\n\n this.isCrossOrigin = replaybaseURL.origin !== window.location.origin;\n\n if (this.isCrossOrigin) {\n this.inited = true;\n return;\n }\n\n const name = this.swName;\n const appName = this.appName;\n const scope = this.replaybase;\n const requireSubdomainIframe = this.requireSubdomainIframe;\n\n this.swmanager = new _swmanager__WEBPACK_IMPORTED_MODULE_3__.SWManager({name, scope, requireSubdomainIframe, appName});\n\n try {\n await this.swmanager.register();\n this.inited = true;\n } catch (e) {\n this.errorMessage = this.swmanager.renderErrorReport(this.logo);\n }\n }\n\n handleMessage(event) {\n const iframe = this.renderRoot.querySelector("iframe");\n\n if (iframe && event.source === iframe.contentWindow) {\n if (!event.data.view) {\n return;\n }\n\n if (event.data.title) {\n this.title = event.data.title;\n }\n\n if (!this.deepLink) {\n return;\n }\n\n const currHash = new URLSearchParams(event.data);\n const url = new URL(window.location.href);\n url.hash = "#" + currHash.toString();\n window.history.replaceState({}, "", url);\n }\n }\n\n firstUpdated() {\n if (this.noSandbox) {\n console.warn("The noSandbox flag is deprecated. ReplayWeb.page does not add a sandbox by default. To enable sandboxing, use \'sandbox\' flag instead. This may result in PDFs not loading and pages opening in new windows, but may be more secure in some situations");\n }\n this.doRegister();\n\n window.addEventListener("message", (event) => this.handleMessage(event));\n\n if (this.deepLink) {\n this.updateFromHash();\n window.addEventListener("hashchange", () => this.updateFromHash());\n }\n\n this.loadBrowserDefaults();\n }\n\n loadBrowserDefaults() {\n // set defaults for older browsers (eg. Safari < 16) based on recommendations from:\n // https://lil.law.harvard.edu/blog/2022/09/15/opportunities-and-challenges-of-client-side-playback/\n\n // likely safari < 16, don\'t use web workers due to issues with split storage state\n if (window.GestureEvent !== undefined && window.SharedWorker === undefined ){\n this.noWebWorker = true;\n }\n\n // if no storage manager or estimate, don\'t cache\n if (!navigator.storage || !navigator.storage.estimate) {\n this.noCache = true;\n }\n }\n\n updateFromHash() {\n const qs = new URLSearchParams(window.location.hash.slice(1));\n\n if (qs.has("url")) {\n this.url = qs.get("url");\n }\n if (qs.has("ts")) {\n this.ts = qs.get("ts");\n }\n if (qs.has("query")) {\n this.query = qs.get("query");\n }\n if (qs.has("view")) {\n this.view = qs.get("view");\n }\n }\n\n mergeConfigs() {\n if (!this.customConfig) {\n return this.config;\n }\n\n if (this.config) {\n const config = {...this.customConfig, ...JSON.parse(this.config)};\n return JSON.stringify(config);\n } else {\n return JSON.stringify(this.customConfig);\n }\n }\n\n updated(changedProperties) {\n if (changedProperties.has("url") ||\n changedProperties.has("ts") ||\n changedProperties.has("query") ||\n changedProperties.has("view") ||\n changedProperties.has("source") ||\n changedProperties.has("src")) {\n\n this.embed = this.embed || "default";\n\n if (this.src) {\n this.source = this.src;\n }\n\n const source = new URL(this.source, document.baseURI);\n\n const config = this.mergeConfigs();\n\n const params = {\n source,\n customColl: this.coll,\n config,\n basePageUrl: window.location.href.split("#")[0],\n baseUrlSourcePrefix: this.newWindowBase,\n embed: this.embed,\n };\n\n if (!this.deepLink && !params.baseUrlSourcePrefix) {\n params.baseUrlSourcePrefix = DEFAULT_REPLAY_BASE;\n }\n\n if (this.noWebWorker) {\n params.noWebWorker = "1";\n }\n\n if (this.noCache) {\n params.noCache = "1";\n }\n\n if (this.hideOffscreen) {\n params.hideOffscreen = "1";\n }\n\n if (this.loading === "eager") {\n params.loading = "eager";\n }\n\n if (this.swName !== "sw.js") {\n params.swName = this.swName;\n }\n\n this.paramString = new URLSearchParams(params).toString();\n\n this.hashString = new URLSearchParams({\n url: this.url,\n ts: this.ts,\n query: this.query,\n view: this.view\n }).toString();\n }\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_2__.wrapCss)(lit__WEBPACK_IMPORTED_MODULE_0__.css`\n .logo {\n margin: 1em;\n flex-grow: 1;\n }\n .error {\n white-space: pre-wrap;\n text-align: center;\n }\n .full-width {\n width: 100%;\n }\n iframe {\n width: 100%;\n height: 100%;\n border: 0px;\n padding: 0px;\n margin: 0px;\n }\n :host {\n width: 100%;\n height: 100%;\n display: block;\n }\n `);\n }\n\n render() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n ${this.paramString && this.hashString && this.inited ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <iframe sandbox="${(0,lit_directives_if_defined_js__WEBPACK_IMPORTED_MODULE_1__.ifDefined)(this.sandbox ?\n "allow-downloads allow-modals allow-orientation-lock allow-pointer-lock\\\n allow-popups allow-popups-to-escape-sandbox allow-presentation allow-scripts\\\n allow-same-origin allow-forms" : undefined)}"\n\n @load="${this.onLoad}" src="${this.replaybase}${this.replayfile}?${this.paramString}#${this.hashString}" allow="autoplay *; fullscreen"\n title="Replay of ${this.title ? `${this.title}:` :""} ${this.url}"></iframe>\n\n ` : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n\n ${this.errorMessage}\n `;\n }\n\n onLoad(event) {\n if (this.isCrossOrigin) {\n return;\n }\n\n const win = event.target.contentWindow;\n const doc = event.target.contentDocument;\n\n if (win.navigator.serviceWorker && !win.navigator.serviceWorker.controller && this.reloadCount <= 2) {\n this.reloadCount++;\n setTimeout(() => win.location.reload(), 100);\n return;\n }\n\n this.reloadCount = 0;\n\n if (win.customElements.get(this.mainElementName)) {\n return;\n }\n\n const script = doc.createElement("script");\n //const script = event.target.contentDocument.querySelector("script");\n script.src = scriptSrc;\n doc.head.appendChild(script);\n }\n}\n\n// ===========================================================================\nasync function main() {\n customElements.define("replay-web-page", Embed);\n}\n\nmain();\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/embed.js?')},"./src/gdrive.js":
/*!***********************!*\
!*** ./src/gdrive.js ***!
\***********************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "GDrive": () => (/* binding */ GDrive)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_brands_google_drive_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/brands/google-drive.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/brands/google-drive.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_brands_google_drive_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_brands_google_drive_svg__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\n\n\n// ===========================================================================\nclass GDrive extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n this.state = "trypublic";\n this.sourceUrl = "";\n this.scriptLoaded = false;\n this.error = false;\n }\n\n static get properties() {\n return {\n state: { type: String },\n sourceUrl: { type: String },\n error: { type: Boolean },\n reauth: { type: Boolean }\n };\n }\n\n updated(changedProperties) {\n if (changedProperties.has("sourceUrl")) {\n this.error = false;\n this.state = "trypublic";\n this.tryPublicAccess().then((result) => {\n if (!result) {\n this.state = "tryauto";\n this.requestUpdate();\n }\n });\n }\n }\n\n async tryPublicAccess() {\n try {\n const sourceUrl = this.sourceUrl;\n const fileId = sourceUrl.slice("googledrive://".length);\n // eslint-disable-next-line no-undef\n const publicCheckUrl = `${"https://helper-proxy.webrecorder.workers.dev"}/g/${fileId}`;\n\n let resp = null;\n try {\n resp = await fetch(publicCheckUrl);\n } catch (e) {\n return false;\n }\n const json = await resp.json();\n if (!json.url || !json.name || !json.size) {\n return false;\n }\n\n // only allow for small downloads that will not result in partial download\n if (json.size > 15000000) {\n return false;\n }\n\n const publicUrl = json.url;\n\n try {\n const abort = new AbortController();\n const signal = abort.signal;\n resp = await fetch(publicUrl, {signal});\n abort.abort();\n if (resp.status != 200) {\n return false;\n }\n } catch(e) {\n return false;\n }\n\n const name = json.name;\n const extra = {publicUrl};\n const size = Number(json.size);\n \n this.dispatchEvent(new CustomEvent("load-ready", {detail: {name, extra, size, sourceUrl}}));\n return true;\n\n } catch (e) {\n return false;\n }\n }\n\n onLoad() {\n this.scriptLoaded = true;\n this.gauth("none", (response) => {\n if (response.error) {\n if (this.state !== "implicitonly") {\n this.state = "trymanual";\n }\n } else {\n this.authed(response);\n }\n });\n }\n\n onClickAuth() {\n this.gauth("select_account", (response) => {\n if (!response.error) {\n this.authed(response);\n }\n });\n }\n\n async authed(response) {\n const sourceUrl = this.sourceUrl;\n const fileId = sourceUrl.slice("googledrive://".length);\n const metadataUrl = `https://www.googleapis.com/drive/v3/files/${fileId}`;\n const authToken = response.access_token;\n const headers = {"Authorization": `Bearer ${authToken}`};\n\n const resp = await fetch(metadataUrl + "?fields=name,size&supportsAllDrives=true", {headers});\n\n if ((resp.status === 404 || resp.status == 403)) {\n if (this.state !== "implicitonly") {\n this.state = "trymanual";\n }\n this.error = true;\n return;\n }\n\n this.error = false;\n\n const metadata = await resp.json();\n const name = metadata.name;\n const size = Number(metadata.size);\n\n this.dispatchEvent(new CustomEvent("load-ready", {detail: {sourceUrl, headers, size, name}}));\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_1__.wrapCss)(lit__WEBPACK_IMPORTED_MODULE_0__.css``);\n }\n\n render() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n ${this.script()}\n ${this.state !== "trymanual" ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <p>Connecting to Google Drive...</p>\n ` : lit__WEBPACK_IMPORTED_MODULE_0__.html`\n ${this.error ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="error has-text-danger">\n <p>${this.reauth ? "Some resources are loaded on demand from Google Drive, which requires reauthorization." :\n "Could not access this file with the current Google Drive account."}</p>\n <p>If you have multiple Google Drive accounts, be sure to select the correct one.</p>\n </div>\n <br/>\n ` : ""}\n <button class="button is-warning is-rounded" @click="${this.onClickAuth}">\n <span class="icon"><fa-icon .svg="${(_fortawesome_fontawesome_free_svgs_brands_google_drive_svg__WEBPACK_IMPORTED_MODULE_2___default())}"></fa-icon></span>\n <span>Authorize Google Drive</span>\n </button>\n `}`;\n }\n\n script() {\n if (this.state === "trypublic" || this.scriptLoaded) {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html``;\n }\n const script = document.createElement("script");\n script.onload = (() => this.onLoad());\n script.src = "https://apis.google.com/js/platform.js";\n return script;\n }\n\n gauth(prompt, callback) {\n self.gapi.load("auth2", () => {\n self.gapi.auth2.authorize({\n // eslint-disable-next-line no-undef\n client_id: "160798412227-tko4c82uopud11q105b2lvbogsj77hlg.apps.googleusercontent.com",\n scope: "https://www.googleapis.com/auth/drive.file",\n response_type: "token",\n prompt\n }, callback);\n });\n }\n}\n\ncustomElements.define("wr-gdrive", GDrive);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/gdrive.js?')},"./src/loader.js":
/*!***********************!*\
!*** ./src/loader.js ***!
\***********************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Loader": () => (/* binding */ Loader)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! pretty-bytes */ "./node_modules/pretty-bytes/index.js");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(pretty_bytes__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pageutils */ "./src/pageutils.js");\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass Loader extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n this.progress = 0;\n this.total = 0;\n this.percent = 0;\n this.coll = "";\n this.state = "waiting";\n this.loadInfo = null;\n\n this.currentSize = 0;\n this.totalSize = 0;\n\n this.tryFileHandle = !!window.showOpenFilePicker;\n\n this.fileHandle = null;\n\n this.errorAllowRetry = false;\n\n this.pingInterval = 0;\n\n this.noWebWorker = false;\n }\n\n static get properties() {\n return {\n sourceUrl: { type: String },\n loadInfo: { type: Object },\n state: { type: String },\n progress: { type: Number },\n percent: { type: Number },\n currentSize: { type: Number },\n totalSize: { type: Number },\n error: { type: String},\n total: { type: Number },\n status: { type: String },\n coll: { type: String },\n embed: { type: String },\n tryFileHandle: { type: Boolean },\n errorAllowRetry: { type: Boolean },\n extraMsg: { type: String },\n swName: { type: String },\n };\n }\n\n firstUpdated() {\n this.initMessages();\n //this.doLoad();\n }\n\n initMessages() {\n this.noWebWorker = this.loadInfo && this.loadInfo.noWebWorker;\n\n if (!this.noWebWorker) {\n // eslint-disable-next-line no-undef\n this.worker = new Worker(this.swName);\n } else {\n if (!navigator.serviceWorker) {\n return;\n }\n\n this.worker = navigator.serviceWorker;\n }\n\n this.worker.addEventListener("message", (event) => {\n switch (event.data.msg_type) {\n case "collProgress":\n if (event.data.name === this.coll) {\n this.percent = event.data.percent;\n if (event.data.error) {\n this.error = event.data.error;\n this.state = "errored";\n this.errorAllowRetry = true;\n this.fileHandle = event.data.fileHandle;\n if (this.error === "missing_local_file") {\n this.tryFileHandle = false;\n } else if (this.error === "permission_needed" && event.data.fileHandle) {\n this.state = "permission_needed";\n break;\n }\n }\n if (event.data.currentSize && event.data.totalSize) {\n this.currentSize = event.data.currentSize;\n this.totalSize = event.data.totalSize;\n }\n this.extraMsg = event.data.extraMsg;\n }\n break;\n\n case "collAdded":\n if (event.data.name === this.coll) {\n if (!this.total) {\n this.total = 100;\n }\n this.progress = this.total;\n this.percent = 100;\n this.dispatchEvent(new CustomEvent("coll-loaded", {detail: event.data}));\n\n if (!this.noWebWorker) {\n this.worker.terminate();\n } else {\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n }\n }\n this.worker = null;\n }\n break;\n }\n });\n }\n\n async doLoad() {\n let sourceUrl = this.sourceUrl;\n let source = null;\n\n this.percent = this.currentSize = this.totalSize = 0;\n\n // const noSWError = getSWErrorMsg();\n\n if (this.loadInfo && this.loadInfo.swError) {\n this.state = "errored";\n this.error = this.loadInfo.swError;\n this.errorAllowRetry = false;\n return;\n }\n\n // custom protocol handlers here...\n try {\n const {scheme, host, path} = (0,_pageutils__WEBPACK_IMPORTED_MODULE_3__.parseURLSchemeHostPath)(sourceUrl);\n\n switch (scheme) {\n case "googledrive":\n this.state = "googledrive";\n source = await this.googledriveInit();\n break;\n\n case "s3":\n source = {sourceUrl,\n loadUrl: `https://${host}.s3.amazonaws.com${path}`,\n name: this.sourceUrl};\n break;\n\n case "file":\n if (!this.loadInfo && !this.tryFileHandle) {\n this.state = "errored";\n this.error = `\\\nFile URLs can not be entered directly or shared.\nYou can select a file to upload from the main page by clicking the \'Choose File...\' button.`;\n this.errorAllowRetry = false;\n return;\n }\n\n source = this.loadInfo;\n break;\n\n case "proxy":\n sourceUrl = "proxy:" + sourceUrl.slice("proxy://".length);\n break;\n }\n } catch (e) {\n console.log(e);\n }\n\n if (!source) {\n source = {sourceUrl};\n }\n\n this.state = "started";\n\n let type = undefined;\n let extraConfig = undefined;\n\n if (this.loadInfo) {\n source.newFullImport = this.loadInfo.newFullImport;\n source.loadEager = this.loadInfo.loadEager;\n source.noCache = this.loadInfo.noCache;\n\n if (this.loadInfo.extraConfig) {\n extraConfig = this.loadInfo.extraConfig;\n }\n // todo: too special case?\n if (sourceUrl.startsWith("proxy:") && extraConfig && extraConfig.recording) {\n type = "recordingproxy";\n }\n }\n\n const msg = {\n msg_type: "addColl",\n name: this.coll,\n extraConfig,\n type,\n skipExisting: true,\n file: source\n };\n\n if (!navigator.serviceWorker.controller) {\n await new Promise((resolve) => {\n navigator.serviceWorker.addEventListener("controllerchange", () => resolve());\n });\n }\n\n if (this.worker) {\n if (!this.noWebWorker) {\n this.worker.postMessage(msg);\n } else {\n navigator.serviceWorker.controller.postMessage(msg);\n\n // ping service worker with messages to avoid shutdown while loading\n // (mostly for Firefox)\n this.pingInterval = setInterval(() => {\n navigator.serviceWorker.controller.postMessage({"msg_type": "ping"});\n }, 15000);\n }\n }\n }\n\n googledriveInit() {\n this._gdWait = new Promise((resolve) => this._gdResolve = resolve);\n return this._gdWait;\n }\n\n async onLoadReady(event) {\n if (this._gdResolve) {\n //const digest = await digestMessage(url, \'SHA-256\');\n //this.coll = "id-" + digest.slice(0, 12);\n\n this._gdResolve(event.detail);\n }\n }\n\n onCancel() {\n if (!this.worker) {\n return;\n }\n\n const msg = {"msg_type": "cancelLoad", "name": this.coll};\n\n if (!this.noWebWorker) {\n this.worker.postMessage(msg);\n return;\n }\n\n if (navigator.serviceWorker && navigator.serviceWorker.controller) {\n navigator.serviceWorker.controller.postMessage(msg);\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n }\n }\n }\n\n updated(changedProperties) {\n if (this.sourceUrl && changedProperties.has("sourceUrl") || changedProperties.has("tryFileHandle")) {\n this.doLoad();\n }\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_1__.wrapCss)(lit__WEBPACK_IMPORTED_MODULE_0__.css`\n :host {\n height: 100%;\n display: flex;\n }\n\n .logo {\n width: 96px;\n height: 96px;\n margin: 1em;\n flex-grow: 1;\n }\n\n .progress-div {\n position: relative;\n width: 400px !important;\n }\n\n .progress-label {\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n font-size: calc(1.5rem / 1.5);\n line-height: 1.5rem;\n }\n\n .loaded-prog {\n margin-bottom: 1em;\n }\n\n .error {\n white-space: pre-wrap;\n margin-bottom: 2em;\n }\n\n section.container {\n margin: auto;\n }\n\n .extra-msg {\n font-size: 0.8rem;\n }\n `);\n }\n\n render() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <section class="container">\n <div class="has-text-centered is-flex">\n <wr-anim-logo class="logo" size="96px"/>\n </div>\n ${!this.embed ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="level">\n <p class="level-item">Loading&nbsp;<b>${this.sourceUrl}</b>...</p>\n </div>` : ""}\n <div class="level">\n <div class="level-item has-text-centered">\n ${this.renderContent()}\n </div>\n </div>\n </section>\n `;\n }\n\n renderContent() {\n switch (this.state) {\n case "googledrive":\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`<wr-gdrive .sourceUrl=${this.sourceUrl} @load-ready=${this.onLoadReady}/>`;\n\n case "started":\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="progress-div">\n <progress id="progress" class="progress is-primary is-large" \n value="${this.percent}" max="100"></progress>\n <label class="progress-label" for="progress">${this.percent}%</label>\n ${this.currentSize && this.totalSize ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="loaded-prog">Loaded <b>${pretty_bytes__WEBPACK_IMPORTED_MODULE_2___default()(this.currentSize)}</b> of <b>${pretty_bytes__WEBPACK_IMPORTED_MODULE_2___default()(this.totalSize)}</b>\n ${this.extraMsg && lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <p class="extra-msg">(${this.extraMsg})</p>\n `}\n </div>` : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n\n ${!this.embed ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <button @click="${this.onCancel}" class="button is-danger">Cancel</button>` : ""}\n </div>`;\n\n case "errored":\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="has-text-left">\n <div class="error has-text-danger">${this.error}</div>\n <div>\n ${this.errorAllowRetry ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <a class="button is-warning" @click=${() => window.parent.location.reload()}>Try Again</a>` : ""}\n ${this.embed ? lit__WEBPACK_IMPORTED_MODULE_0__.html`` : lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <a href="/" class="button is-warning">Back</a>`}\n </div>`;\n\n case "permission_needed":\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="has-text-left">\n <div class="">Permission is needed to reload the archive file. (Click <i>Cancel</i> to cancel loading this archive.)</div>\n <button @click="${this.onAskPermission}" class="button is-primary">Show Permission</button>\n <a href="/" class="button is-danger">Cancel</a>\n </div>`;\n\n case "waiting":\n default:\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`<progress class="progress is-primary is-large" style="max-width: 400px"/>`;\n\n }\n }\n\n async onAskPermission() {\n const result = await this.fileHandle.requestPermission({mode: "read"});\n if (result === "granted") {\n this.doLoad();\n }\n }\n}\n\ncustomElements.define("wr-loader", Loader);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/loader.js?')},"./src/misc.js":
/*!*********************!*\
!*** ./src/misc.js ***!
\*********************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "AnimLogo": () => (/* binding */ AnimLogo),\n/* harmony export */ "FaIcon": () => (/* binding */ FaIcon),\n/* harmony export */ "IS_APP": () => (/* binding */ IS_APP),\n/* harmony export */ "LitElement": () => (/* reexport safe */ lit__WEBPACK_IMPORTED_MODULE_0__.LitElement),\n/* harmony export */ "VERSION": () => (/* binding */ VERSION),\n/* harmony export */ "WrModal": () => (/* binding */ WrModal),\n/* harmony export */ "apiPrefix": () => (/* binding */ apiPrefix),\n/* harmony export */ "clickOnSpacebarPress": () => (/* binding */ clickOnSpacebarPress),\n/* harmony export */ "css": () => (/* reexport safe */ lit__WEBPACK_IMPORTED_MODULE_0__.css),\n/* harmony export */ "html": () => (/* reexport safe */ lit__WEBPACK_IMPORTED_MODULE_0__.html),\n/* harmony export */ "replayPrefix": () => (/* binding */ replayPrefix),\n/* harmony export */ "rwpLogo": () => (/* reexport default from dynamic */ _assets_logo_svg__WEBPACK_IMPORTED_MODULE_4___default.a),\n/* harmony export */ "unsafeCSS": () => (/* reexport safe */ lit__WEBPACK_IMPORTED_MODULE_0__.unsafeCSS),\n/* harmony export */ "unsafeSVG": () => (/* reexport safe */ lit_directives_unsafe_svg_js__WEBPACK_IMPORTED_MODULE_1__.unsafeSVG),\n/* harmony export */ "wrapCss": () => (/* binding */ wrapCss)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var lit_directives_unsafe_svg_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lit/directives/unsafe-svg.js */ "./node_modules/lit/directives/unsafe-svg.js");\n/* harmony import */ var lit_directives_style_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lit/directives/style-map.js */ "./node_modules/lit/directives/style-map.js");\n/* harmony import */ var _assets_main_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../assets/main.scss */ "./assets/main.scss");\n/* harmony import */ var _assets_logo_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../assets/logo.svg */ "./assets/logo.svg");\n/* harmony import */ var _assets_logo_svg__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_assets_logo_svg__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n\n\n\n\nconst apiPrefix = "./w/api";\nconst replayPrefix = "./w";\n\n\n// ===========================================================================\nconst allCss = (0,lit__WEBPACK_IMPORTED_MODULE_0__.unsafeCSS)(_assets_main_scss__WEBPACK_IMPORTED_MODULE_3__["default"]);\nfunction wrapCss(custom) {\n return [allCss, custom];\n}\n\nconst IS_APP = window.IS_APP || window.electron && window.electron.IS_APP || window.matchMedia("(display-mode: standalone)").matches;\n\n// eslint-disable-next-line no-undef\nconst VERSION = "1.7.15";\n\n// ===========================================================================\n// Buttons are expected to respond to both enter/return and spacebar.\n// If using `<a>` with `role=\'button\'`, assign this handler to keyup.\nfunction clickOnSpacebarPress(event) {\n if (event.key == " ") {\n event.preventDefault();\n event.target.click();\n }\n}\n\n\n// ===========================================================================\nclass FaIcon extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n this.size = "1.1em";\n this.width = null;\n this.height = null;\n }\n\n static get properties() {\n return {\n svg: { type: String },\n size: { type: String },\n width: { type: String },\n height: { type: String }\n };\n }\n\n static get styles() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.css`\n :host {\n display: inline-block;\n padding: 0;\n margin: 0;\n line-height: 1.0em;\n }\n :host svg {\n fill: var(--fa-icon-fill-color, currentcolor);\n width: var(--fa-icon-width, 19px);\n height: var(--fa-icon-height, 19px);\n }\n `;\n }\n\n render() {\n if (!this.svg) {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html``;\n }\n\n const styles = {};\n\n if (this.size) {\n styles.width = this.size;\n styles.height = this.size;\n } else {\n if (this.width) {\n styles.width = this.width;\n }\n if (this.height) {\n styles.height = this.height;\n }\n }\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`<svg style="${(0,lit_directives_style_map_js__WEBPACK_IMPORTED_MODULE_2__.styleMap)(styles)}"><g>${(0,lit_directives_unsafe_svg_js__WEBPACK_IMPORTED_MODULE_1__.unsafeSVG)(this.svg)}</g></svg>`;\n }\n}\n\n\n// ===========================================================================\nclass AnimLogo extends FaIcon\n{\n constructor() {\n super();\n this.svg = (_assets_logo_svg__WEBPACK_IMPORTED_MODULE_4___default());\n }\n\n static get styles() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.css`\n #wrlogo #stop5687 {\n animation: animLeft 7s linear infinite;\n }\n\n #wrlogo #stop5689 {\n animation: animRight 7s linear infinite;\n }\n\n @keyframes animLeft {\n 0% {stop-color: #4876ff}\n 25% {stop-color: #1b0921}\n 50% {stop-color: #4876ff}\n 75% {stop-color: #04cdff}\n 100% {stop-color: #4876ff}\n }\n\n @keyframes animRight {\n 0% {stop-color: #04cdff}\n 25% {stop-color: #4876ff}\n 50% {stop-color: #1b0921}\n 75% {stop-color: #4876ff}\n 100% {stop-color: #04cdff}\n }\n `;\n }\n}\n\n\n// ===========================================================================\nclass WrModal extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n this.title = "";\n this.bgClass = "";\n this.noBgClose = false;\n }\n\n static get properties() {\n return {\n title: { type: String },\n bgClass: { type: String },\n noBgClose: { type: Boolean }\n };\n }\n\n static get styles() {\n return wrapCss(lit__WEBPACK_IMPORTED_MODULE_0__.css`\n .modal-background {\n background-color: rgba(10, 10, 10, 0.50);\n }\n\n .modal-card-head {\n background-color: var(--background, #97a1ff);\n }\n\n .modal-card {\n width: 100%;\n max-width: var(--modal-width, 640px)\n }\n `);\n }\n\n render() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="modal is-active">\n <div class="modal-background" @click="${() => !this.noBgClose && this.onClose()}"></div>\n <div class="modal-card">\n <header class="modal-card-head ${this.bgClass}">\n <p class="modal-card-title is-3">${this.title}</p>\n <button class="delete" aria-label="close" @click="${this.onClose}"></button>\n </header>\n <section class="modal-card-body">\n <slot></slot>\n </section>\n </div>\n </div>`;\n }\n\n onClose() {\n this.dispatchEvent(new CustomEvent("modal-closed"));\n }\n}\n\ncustomElements.define("fa-icon", FaIcon);\ncustomElements.define("wr-anim-logo", AnimLogo);\n\ncustomElements.define("wr-modal", WrModal);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/misc.js?')},"./src/pageentry.js":
/*!**************************!*\
!*** ./src/pageentry.js ***!
\**************************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "PageEntry": () => (/* binding */ PageEntry)\n/* harmony export */ });\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pretty-bytes */ "./node_modules/pretty-bytes/index.js");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(pretty_bytes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var keyword_mark_element_lib_keyword_mark_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! keyword-mark-element/lib/keyword-mark.js */ "./node_modules/keyword-mark-element/lib/keyword-mark.js");\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pageutils */ "./src/pageutils.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass PageEntry extends lit__WEBPACK_IMPORTED_MODULE_1__.LitElement\n{\n constructor() {\n super();\n this.query = "";\n this.textSnippet = "";\n this.page = null;\n this.replayPrefix = "";\n this.deleting = false;\n this.editable = false;\n this.iconValid = false;\n this.index = 0;\n this.isCurrent = false;\n this.isSidebar = false;\n }\n\n static get properties() {\n return {\n query: { type: String },\n textSnippet: { type: String },\n page: { type: Object },\n replayPrefix: { type: String },\n deleting: { type: Boolean },\n selected: { type: Boolean },\n editable: { type: Boolean },\n iconValid: { type: Boolean },\n index: { type: Number },\n isCurrent: { type: Boolean },\n isSidebar: { type: Boolean },\n };\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_4__.wrapCss)(lit__WEBPACK_IMPORTED_MODULE_1__.css`\n :host {\n min-height: min-content;\n width: 100%;\n word-break: break-all;\n position: relative;\n display: flex;\n flex-direction: row;\n background: transparent;\n }\n\n :host(.sidebar) .column {\n width: unset !important;\n }\n\n :host(.sidebar) {\n width: 100%;\n }\n\n .check-select {\n padding: 0 1.0em 0 0.5em;\n height: 100%;\n margin: auto 0 auto 0;\n }\n\n .columns {\n width: 100%;\n }\n\n /* Overrde Bulma to add the tiniest margin, so the focus indicator isn\'t obscured */\n .columns {\n margin-top: calc(-0.75rem + 2px);\n }\n .columns:last-child {\n margin-bottom: calc(-0.75rem + 2px);\n }\n\n\n .favicon {\n width: 24px !important;\n height: 24px !important;\n display: inline-block;\n vertical-align: text-bottom;\n }\n img.favicon {\n filter: drop-shadow(1px 1px 2px grey);\n }\n\n .media-left {\n align-self: center;\n }\n\n .delete-button {\n position: absolute;\n top: 8px;\n right: 8px;\n }\n\n .delete:hover {\n background-color: rgb(241, 70, 104);\n }\n\n .is-loading {\n line-height: 1.5em;\n height: 1.5em;\n border: 0px;\n background-color: transparent !important;\n width: auto;\n }\n\n @media screen and (max-width: 768px) {\n ${PageEntry.sidebarStyles()}\n }\n\n ${PageEntry.sidebarStyles(lit__WEBPACK_IMPORTED_MODULE_1__.unsafeCSS`:host(.sidebar)`)}\n\n .current a {\n background-color: rgb(207, 243, 255);\n font-style: italic;\n display: block;\n }\n\n .current .curr-page {\n font-style: italic;\n font-size: 9px;\n color: black;\n }\n\n .is-inline-date {\n display: none;\n }\n\n .media-content a {\n display: block;\n }\n `);\n }\n\n static sidebarStyles(prefix = lit__WEBPACK_IMPORTED_MODULE_1__.css``) {\n return lit__WEBPACK_IMPORTED_MODULE_1__.css`\n ${prefix} .col-date {\n margin-left: calc(24px + 1rem);\n display: none;\n }\n ${prefix} .col-date div {\n display: inline;\n }\n ${prefix} .col-index {\n position: absolute;\n top: 0px;\n left: 0px;\n margin-top: -0.75em;\n }\n ${prefix} .columns {\n display: flex;\n flex-direction: column-reverse;\n }\n ${prefix} .is-inline-date {\n display: initial !important;\n font-style: italic;\n }\n `;\n }\n\n updated(changedProperties) {\n if (changedProperties.has("page") || changedProperties.has("query")) {\n this.updateSnippet();\n this.iconValid = !!this.page.favIconUrl;\n //this.updateFavIcon();\n this.deleting = false;\n }\n }\n\n render() {\n const p = this.page;\n const date = this.page.date;\n\n const hasSize = typeof(p.size) === "number";\n\n const editable = this.editable && !this.isSidebar;\n\n return lit__WEBPACK_IMPORTED_MODULE_1__.html`\n ${editable ? lit__WEBPACK_IMPORTED_MODULE_1__.html`\n <div class="check-select">\n <label class="checkbox">\n <input @change=${this.onSendSelToggle} type="checkbox" .checked="${this.selected}">\n </label>\n </div>` : ""}\n\n <div class="columns">\n ${this.index ? lit__WEBPACK_IMPORTED_MODULE_1__.html`\n <div class="column col-index is-1 is-size-7">${this.index}.</div>\n ` : ""}\n <div class="column col-date is-2">\n <div>${date ? date.toLocaleDateString() : ""}</div>\n <div>${date ? date.toLocaleTimeString() : ""}</div>\n </div>\n <div class="column">\n <div class="media">\n <figure class="media-left">\n <p class="">\n ${this.iconValid ? lit__WEBPACK_IMPORTED_MODULE_1__.html`\n <img class="favicon" @error="${() => this.iconValid = false}" src="${this.replayPrefix}/${this.page.timestamp}id_/${p.favIconUrl}"/>` : lit__WEBPACK_IMPORTED_MODULE_1__.html`\n <span class="favicon"></span>`}\n </p>\n </figure>\n <div class="media-content ${this.isCurrent ? "current" : ""}">\n <div role="heading" aria-level="${this.isSidebar ? "4": "3"}">\n <a @dblclick="${this.onReload}" @click="${this.onReplay}" href="${(0,_pageutils__WEBPACK_IMPORTED_MODULE_3__.getReplayLink)("pages", this.page.url, this.page.timestamp)}">\n <p class="is-size-6 has-text-weight-bold has-text-link text">\n <keyword-mark keywords="${this.query}">${p.title || p.url}</keyword-mark>\n </p>\n <p class="has-text-dark text"><keyword-mark keywords="${this.query}">${p.url}</keyword-mark></p>\n <p class="has-text-grey-dark text is-inline-date">\n ${date ? date.toLocaleString(): ""}\n </p>\n </a>\n ${this.textSnippet ? lit__WEBPACK_IMPORTED_MODULE_1__.html`\n <div class="text"><keyword-mark keywords="${this.query}">${this.textSnippet}</keyword-mark></div>` : lit__WEBPACK_IMPORTED_MODULE_1__.html``}\n </div>\n ${hasSize ? lit__WEBPACK_IMPORTED_MODULE_1__.html`\n <div class="media-right" style="margin-right: 2em">\n ${pretty_bytes__WEBPACK_IMPORTED_MODULE_0___default()(p.size)}\n </div>` : ""}\n </div>\n </div>\n </div>\n\n ${editable ? lit__WEBPACK_IMPORTED_MODULE_1__.html`\n ${!this.deleting ? lit__WEBPACK_IMPORTED_MODULE_1__.html`\n <button @click="${this.onSendDeletePage}" class="delete delete-button"></button>` : lit__WEBPACK_IMPORTED_MODULE_1__.html`\n <button class="button is-loading delete-button is-static"></button>\n `}` : ""}\n `;\n }\n\n async updateFavIcon() {\n if (!this.page.favIconUrl) {\n this.favIconData = null;\n return;\n }\n\n const resp = await fetch(`${this.replayPrefix}/${this.page.timestamp}id_/${this.page.favIconUrl}`);\n\n if (resp.status != 200) {\n this.favIconData = null;\n return;\n }\n\n const payload = await resp.arrayBuffer();\n const mime = resp.headers.get("content-type");\n\n try {\n this.favIconData = `data:${mime};base64,${btoa(String.fromCharCode.apply(null, payload))}`;\n } catch (e) {\n console.log(e);\n this.favIconData = null;\n }\n }\n\n updateSnippet() {\n const oldVal = this.textSnippet;\n\n if (!this.query || !this.page.text) {\n this.textSnippet = null;\n this.requestUpdate("textSnippet", oldVal);\n return;\n }\n\n let textContent = this.page.text;\n let query = this.query;\n\n let inx = textContent.indexOf(this.query);\n\n if (inx < 0) {\n let textLower = textContent.toLowerCase();\n let queryLower = query.toLowerCase();\n\n inx = textLower.indexOf(queryLower);\n\n if (inx < 0) {\n this.textSnippet = null;\n this.requestUpdate("textSnippet", oldVal);\n return;\n }\n\n textContent = textLower;\n query = queryLower;\n }\n\n //let lastInx = textContent.lastIndexOf(query);\n let lastInx = inx;\n\n inx = Math.max(inx - 100, 0);\n lastInx = Math.min(lastInx + 200, textContent.length);\n\n if (inx === 0 && lastInx === textContent.length) {\n this.textSnippet = textContent;\n } else {\n this.textSnippet = "..." + textContent.slice(inx, lastInx) + "...";\n }\n\n this.requestUpdate("textSnippet", oldVal);\n }\n\n onReplay(event, reload = false) {\n event.preventDefault();\n\n const data = {\n url: this.page.url,\n ts: this.page.timestamp,\n };\n this.sendChangeEvent(data, reload);\n return false;\n }\n\n onReload(event) {\n return this.onReplay(event, true);\n }\n\n sendChangeEvent(data, reload) {\n this.dispatchEvent(new CustomEvent("coll-tab-nav", {bubbles: true, composed: true, detail: {data, reload}}));\n }\n\n onSendDeletePage() {\n const page = this.page;\n this.dispatchEvent(new CustomEvent("delete-page", {detail: {page}}));\n }\n\n onSendSelToggle(event) {\n const page = this.page.id;\n const selected = event.currentTarget.checked;\n this.dispatchEvent(new CustomEvent("sel-page", {detail: {page, selected}}));\n }\n}\n\ncustomElements.define("wr-page-entry", PageEntry);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/pageentry.js?')},"./src/pages.js":
/*!**********************!*\
!*** ./src/pages.js ***!
\**********************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Pages": () => (/* binding */ Pages)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n/* harmony import */ var fetch_ndjson__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! fetch-ndjson */ "./node_modules/fetch-ndjson/dist/index.js");\n/* harmony import */ var fetch_ndjson__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(fetch_ndjson__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var flexsearch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flexsearch */ "./node_modules/flexsearch/dist/flexsearch.bundle.js");\n/* harmony import */ var flexsearch__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flexsearch__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! pretty-bytes */ "./node_modules/pretty-bytes/index.js");\n/* harmony import */ var pretty_bytes__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(pretty_bytes__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pageutils */ "./src/pageutils.js");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/search.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/search.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_down_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/angle-down.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/angle-down.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_angle_down_svg__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_angle_down_svg__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_edit_svg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/edit.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/edit.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_edit_svg__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_edit_svg__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass Pages extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n this.filteredPages = [];\n this.sortedPages = [];\n this.query = "";\n this.flex = null;\n this.textPages = null;\n this.newQuery = null;\n this.loading = false;\n this.updatingSearch = false;\n\n this.currList = 0;\n\n this.active = false;\n this.editable = false;\n this.changeNeeded = false;\n\n this.selectedPages = new Set();\n\n this.menuActive = false;\n\n this.sortKey = "date";\n this.sortDesc = true;\n\n this.isSidebar = false;\n this.url = "";\n this.ts = "";\n\n this.editing = false;\n\n this.toDeletePages = null;\n this.toDeletePage = null;\n }\n\n static get sortKeys() {\n return [\n {\n "key": "",\n "name": "Best Match",\n },\n {\n "key": "title",\n "name": "Title"\n },\n {\n "key": "date",\n "name": "Date"\n }\n ];\n }\n\n static get properties() {\n return {\n active: { type: Boolean },\n collInfo: { type: Object },\n currList: { type: Number },\n filteredPages: { type: Array },\n sortedPages: { type: Array },\n\n query: { type: String },\n defaultKey: { type: String },\n\n loading: { type: Boolean },\n updatingSearch: { type: Boolean },\n editable: { type: Boolean },\n\n selectedPages: { type: Set },\n allSelected: { type: Boolean },\n\n menuActive: {type: Boolean },\n\n sortKey: { type: String },\n sortDesc: { type: Boolean },\n\n isSidebar: { type: Boolean },\n url: { type: String },\n ts: { type: String },\n\n editing: { type: Boolean },\n\n toDeletePages: { type: Object },\n toDeletePage: { type: Object }\n };\n }\n\n _timedUpdate() {\n if (this.newQuery !== null) {\n this.query = this.newQuery;\n this.newQuery = null;\n this.filter();\n }\n }\n\n async updated(changedProperties) {\n if (changedProperties.has("collInfo")) {\n this.updateTextSearch();\n\n } else if (changedProperties.has("query")) {\n this.filter();\n\n } else if (changedProperties.has("currList")) {\n this.filter();\n }\n if (changedProperties.has("active") && this.active) {\n if (this.changeNeeded) {\n this.filter();\n }\n }\n\n if (changedProperties.has("query")) {\n if (this.query) {\n this.sortKey = "";\n this.sortDesc = false;\n } else {\n this.sortKey = "date";\n this.sortDesc = true;\n }\n const sorter = this.renderRoot.querySelector("wr-sorter");\n if (sorter) {\n sorter.sortKey = this.sortKey;\n sorter.sortDesc = this.sortDesc;\n }\n }\n\n if (changedProperties.has("sortedPages") && this.isSidebar) {\n //if (await this.updateComplete) {\n const selected = this.renderRoot.querySelector(".current");\n if (selected) {\n const opts = {behavior: "smooth", block: "nearest", inline: "nearest"};\n setTimeout(() => selected.scrollIntoView(opts), 100);\n }\n //}\n }\n }\n\n onChangeQuery(event) {\n this.newQuery = event.currentTarget.value;\n //this.loading = true;\n if (this._ival) {\n window.clearTimeout(this._ival);\n }\n this._ival = window.setTimeout(() => this._timedUpdate(), 250);\n }\n\n async filter() {\n if (this.loading) {\n return;\n }\n if (!this.active) {\n this.changeNeeded = true;\n }\n this.loading = true;\n if (this.flex && this.query && this.textPages) {\n const results = await this.flex.searchAsync(this.query, 25);\n this.filteredPages = results.map(inx => this.textPages[inx]);\n } else {\n this.filteredPages = [...this.collInfo.pages];\n }\n\n if (this.currList !== 0) {\n await this.filterCurated();\n }\n\n // normalize the date\n for (const page of this.filteredPages) {\n const {timestamp, date} = (0,_pageutils__WEBPACK_IMPORTED_MODULE_5__.getPageDateTS)(page);\n page.timestamp = timestamp;\n page.date = date;\n }\n\n this.loading = false;\n this.changeNeeded = false;\n const data = {query: this.query, currList: this.currList};\n this.sendChangeEvent(data);\n }\n\n async filterCurated() {\n const resp = await fetch(`${this.collInfo.apiPrefix}/curated/${this.currList}`);\n const json = await resp.json();\n\n const curated = json.curated;\n\n this.filteredPages = curated;\n }\n\n sendChangeEvent(data) {\n this.dispatchEvent(new CustomEvent("coll-tab-nav", {detail: {data}}));\n }\n\n addPages(pages) {\n const flex = new flexsearch__WEBPACK_IMPORTED_MODULE_3__.Index();\n\n this.flex = flex;\n this.textPages = pages;\n\n return Promise.all(pages.map((page, index) => {\n let text = page.url;\n if (page.title) {\n text += " " + page.title;\n }\n if (page.text) {\n text += " " + page.text;\n }\n return flex.addAsync(index, text);\n }));\n }\n\n async updateTextSearch() {\n if (this.updatingSearch) {\n return;\n }\n\n this.updatingSearch = true;\n let count = 0;\n\n try {\n const cache = await caches.open("cache:" + this.collInfo.coll);\n\n const indexUrl = `${this.collInfo.apiPrefix}/textIndex`;\n\n let resp = await cache.match(indexUrl);\n\n if (!resp || !Number(resp.headers.get("Content-Length"))) {\n resp = await fetch(`${this.collInfo.apiPrefix}/textIndex`);\n if (resp.status === 200 && Number(resp.headers.get("Content-Length"))) {\n cache.put(indexUrl, resp.clone());\n }\n }\n\n const lines = [];\n\n for await (const line of fetch_ndjson__WEBPACK_IMPORTED_MODULE_2___default()(resp.body.getReader())) {\n if (!line.text) {\n continue;\n }\n\n line.id = ++count;\n lines.push(line);\n }\n\n await this.addPages(lines);\n\n } catch (e) {\n console.warn(e);\n\n } finally {\n if (count === 0) {\n await this.addPages(this.collInfo.pages);\n }\n\n this.updatingSearch = false;\n }\n\n await this.filter();\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_1__.wrapCss)(lit__WEBPACK_IMPORTED_MODULE_0__.css`\n :host {\n width: 100%;\n height: 100%;\n display: flex;\n min-width: 0px;\n flex-direction: column;\n box-sizing: border-box !important;\n }\n\n div[role="main"], #contents div[role="complementary"] {\n height: 100%;\n }\n\n .main.columns {\n width: 100%;\n justify-self: stretch;\n min-height: 0px;\n margin: 0px;\n }\n\n .header.columns {\n width: 100%;\n margin-bottom: 0px;\n }\n .header a {\n color: black;\n }\n\n .header .column.pagetitle {\n margin-left: 2.5em;\n }\n\n .column.main-content {\n min-height: 0px;\n display: flex;\n flex-direction: column;\n padding: 0px;\n margin-top: 0.5em;\n margin-left: 0.75em;\n }\n\n .index-bar {\n display: flex;\n flex-direction: column;\n border-right: 3px solid rgb(237, 237, 237);\n background-color: whitesmoke;\n padding-right: 0px;\n position: relative;\n }\n\n .index-bar-title {\n font-size: 1.25rem;\n text-transform: uppercase;\n margin-bottom: 1.0rem;\n word-break: break-word;\n }\n\n .index-bar-title:hover + .editIcon {\n display: block;\n }\n\n .editIcon {\n display: none;\n position: absolute;\n right: 8px;\n top: 8px;\n }\n\n .index-bar-status {\n display: flex;\n flex-direction: row;\n margin-bottom: 0.5rem;\n padding-right: 0.75em;\n }\n\n .index-bar-menu {\n margin-top: 1.0rem;\n }\n\n #filter-label {\n margin-bottom: 0px;\n }\n\n .num-results {\n font-style: italic;\n font-weight: normal;\n line-height: 2.5;\n }\n\n .asc:after {\n content: "▼";\n font-size: 0.75em;\n }\n .desc:after {\n content: "▲";\n font-size: 0.75em;\n }\n\n @media screen and (min-width: 769px) {\n .main.columns {\n max-height: 100%;\n height: 100%;\n }\n .index-bar-menu {\n max-height: 100%;\n overflow-y: auto;\n }\n }\n\n @media screen and (max-width: 768px) {\n ${Pages.sidebarStyles()}\n }\n\n ${Pages.sidebarStyles(lit__WEBPACK_IMPORTED_MODULE_0__.unsafeCSS`:host(.sidebar)`)}\n\n .mobile-lists {\n display: block !important;\n }\n\n :host(.sidebar) .columns.is-hidden-mobile, :host(.sidebar) .is-hidden-mobile {\n display: none !important;\n }\n\n :host(.sidebar) .mobile-header {\n display: flex !important;\n }\n\n :host(.sidebar) .columns {\n display: flex !important;\n }\n\n .scroller {\n overflow-y: auto;\n overflow-x: hidden;\n display: flex;\n flex-direction: column;\n flex: auto;\n\n padding-bottom: 1.0em;\n min-height: 0px;\n }\n\n .page-entry {\n padding-bottom: 1.5rem;\n }\n\n .selected {\n background-color: rgb(207, 243, 255);\n }\n\n .is-disabled {\n pointer-events: none;\n opacity: .65;\n }\n\n .page-header {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n width: 100%;\n min-height: fit-content;\n\n margin-bottom: 1.0em;\n border-bottom: 3px solid rgb(237, 237, 237);\n }\n\n .check-select {\n padding: 0 1.0em 0 0.5em;\n }\n\n .search-bar {\n width: auto;\n display: flex;\n flex-direction: column;\n }\n .flex-auto {\n flex: auto;\n }\n `);\n }\n\n static sidebarStyles(prefix = lit__WEBPACK_IMPORTED_MODULE_0__.css``) {\n return lit__WEBPACK_IMPORTED_MODULE_0__.css`\n ${prefix} .main.columns {\n position: relative;\n max-height: 100%;\n height: 100%;\n }\n\n ${prefix} .index-bar-menu {\n max-height: 75px;\n overflow-y: auto;\n margin-top: 0.75em;\n }\n\n ${prefix} .column.main-content {\n position: relative;\n overflow-y: auto;\n\n width: 100%;\n min-height: 0px;\n height: 100%;\n padding: 0px;\n margin: 0px;\n }\n\n ${prefix} .mobile-header {\n margin: 0.5rem;\n margin-left: 1.0rem;\n align-items: center;\n display: flex;\n justify-content: space-between;\n flex-flow: row wrap;\n min-height: 24px;\n width: 100%;\n }\n\n ${prefix} .menu {\n font-size: 0.80rem;\n }`;\n }\n\n onSelectList(event) {\n event.preventDefault();\n this.currList = Number(event.currentTarget.getAttribute("data-list"));\n }\n\n onSelectListDrop(event) {\n event.preventDefault();\n this.currList = Number(event.currentTarget.value);\n }\n\n render() {\n const currList = this.currList;\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="is-sr-only" role="heading" aria-level="${this.isSidebar ? "2": "1"}">\n Pages in ${this.collInfo.title}\n </div>\n <div class="search-bar notification is-marginless">\n ${this.isSidebar ? lit__WEBPACK_IMPORTED_MODULE_0__.html `<h3 class="is-sr-only">Search and Filter Pages</h3>` : ""}\n <div class="field flex-auto">\n <div class="control has-icons-left ${this.loading ? "is-loading" : ""}">\n <input type="search" class="input" @input="${this.onChangeQuery}" .value="${this.query}" type="text"\n placeholder="Search by Page URL, Title or Text">\n <span class="icon is-left"><fa-icon .svg="${(_fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_6___default())}" aria-hidden="true"></fa-icon></span>\n </div>\n </div>\n </div>\n <div class="main columns">\n <div class="column index-bar is-one-fifth is-hidden-mobile">\n\n ${this.editable && this.editing ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <form @submit="${this.onUpdateTitle}"><input id="titleEdit" class="input" value="${this.collInfo.title}" @blur="${this.onUpdateTitle}"></form>\n ` : lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="index-bar-title" @dblclick="${() => this.editing = true}">${this.collInfo.title}</div>`}\n\n ${this.editable ? lit__WEBPACK_IMPORTED_MODULE_0__.html`<fa-icon class="editIcon" .svg="${(_fortawesome_fontawesome_free_svgs_solid_edit_svg__WEBPACK_IMPORTED_MODULE_8___default())}"></fa-icon>` : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n\n <span class="num-results" aria-live="polite" aria-atomic="true">${this.formatResults()}</span>\n\n ${this.editable ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="index-bar-actions">\n ${this.renderDownloadMenu()}\n </div>` : ""}\n\n ${this.collInfo.lists.length ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <p id="filter-label" class="menu-label">Filter By List:</p>\n <div class="index-bar-menu menu">\n <ul class="menu-list">\n <li>\n <a href="#list-0" data-list="0" class="${currList === 0 ? "is-active" : ""}"\n @click=${this.onSelectList}><i>All Pages</i></a>\n </li>\n ${this.collInfo.lists.map(list => lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <li>\n <a @click=${this.onSelectList} href="#list-${list.id}"\n data-list="${list.id}"\n class="${currList === list.id ? "is-active" : ""}">${list.title}</a>\n </li>`)}\n </ul>\n </div>\n ` : ""}\n </div>\n <div class="column main-content">\n <div class="is-sr-only" role="heading" aria-level="${this.isSidebar ? "3": "2"}">Page List</div>\n ${this.renderPages()}\n </div>\n </div>\n ${this.renderDeleteModal()}\n `;\n }\n\n renderDownloadMenu() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="dropdown ${this.menuActive ? "is-active" : ""}">\n <div class="dropdown-trigger">\n <button @click="${this.onMenu}" class="button is-small" aria-haspopup="true" aria-expanded="${this.menuActive}" aria-controls="dropdown-menu">\n <span>Download</span>\n <span class="icon is-small">\n <fa-icon .svg="${(_fortawesome_fontawesome_free_svgs_solid_angle_down_svg__WEBPACK_IMPORTED_MODULE_7___default())} aria-hidden="true"></fa-icon>\n </span>\n </button>\n </div>\n <div class="dropdown-menu" id="dropdown-menu">\n <div class="dropdown-content">\n <a role="button" href="#"\n @click="${(e) => this.onDownload(e, "wacz")}"\n @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}"\n class="dropdown-item">\n Download ${this.selectedPages.size === 0 ? "All" : "Selected"} as WACZ (Web Archive Collection Zip)\n </a>\n <a role="button" href="#"\n @click="${(e) => this.onDownload(e, "warc")}"\n @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}"\n class="dropdown-item">\n Download ${this.selectedPages.size === 0 ? "All" : "Selected"} as WARC 1.1 Only\n </a>\n <a role="button" href="#"\n @click="${(e) => this.onDownload(e, "warc1.0")}"\n @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}"\n class="dropdown-item">\n Download ${this.selectedPages.size === 0 ? "All" : "Selected"} as WARC 1.0 Only\n </a>\n </div>\n </div>\n </div>`;\n }\n\n renderPageHeader() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n ${!this.isSidebar && this.editable && this.filteredPages.length ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="check-select">\n <label class="checkbox">\n <input @change=${this.onSelectAll} type="checkbox" .checked="${this.allSelected}">\n </label>\n </div>` : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n\n <div class="header columns is-hidden-mobile">\n ${this.query ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <a role="button" href="#" @click="${this.onSort}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}" data-key="" class="column is-1 ${this.sortKey === "" ? (this.sortDesc ? "desc" : "asc") : ""}">Match</a>` : ""}\n\n <a role="button" href="#" @click="${this.onSort}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}" data-key="date" class="column is-2 ${this.sortKey === "date" ? (this.sortDesc ? "desc" : "asc") : ""}">Date</a>\n <a role="button" href="#" @click="${this.onSort}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}" data-key="title" class="column is-6 pagetitle ${this.sortKey === "title" ? (this.sortDesc ? "desc" : "asc") : ""}">Page Title</a>\n </div>\n\n <div class="is-hidden-tablet mobile-header">\n <div class="num-results" aria-live="polite" aria-atomic="true">${this.formatResults()}</div>\n <wr-sorter id="pages"\n .sortKey="${this.sortKey}"\n .sortDesc="${this.sortDesc}"\n .sortKeys="${Pages.sortKeys}"\n .data="${this.filteredPages}"\n pageResults="100"\n @sort-changed="${this.onSortChanged}"\n class="${this.filteredPages.length ? "" : "is-hidden"}">\n </wr-sorter>\n </div>\n `;\n }\n\n renderDeleteModal() {\n if (!this.toDeletePages) {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html``;\n }\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <wr-modal bgClass="has-background-grey-lighter" @modal-closed="${() => this.toDeletePages = this.toDeletePage = null}" title="Confirm Delete">\n ${this.toDeletePage ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <p>Are you sure you want to delete the page <b>${this.toDeletePage.title}</b>?\n (Size: <b>${pretty_bytes__WEBPACK_IMPORTED_MODULE_4___default()(this.toDeletePage.size)}</b>)</p>` : lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <p>Are you sure you want to delete the <b>${this.toDeletePages.size}</b> selected pages?\n `}\n <p>This operation can not be undone.</p>\n\n <button @click="${this.onDeletePages}"class="button is-danger">Delete</button>\n <button @click="${() => this.toDeletePages = this.toDeletePage = null}" class="button">Cancel</button>\n </wr-modal>`;\n }\n\n isCurrPage(page) {\n if (this.isSidebar) {\n if (page.url === this.url) {\n let ts = page.timestamp;\n if (!ts && page.date) {\n ts = (0,_pageutils__WEBPACK_IMPORTED_MODULE_5__.getTS)(page.date);\n } else if (typeof(page.ts) === "string") {\n ts = (0,_pageutils__WEBPACK_IMPORTED_MODULE_5__.getTS)(page.ts);\n }\n return ts === this.ts;\n }\n }\n\n return false;\n }\n\n renderPages() {\n //const name = this.currList === 0 ? "All Pages" : this.collInfo.lists[this.currList - 1].title;\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="page-header has-text-weight-bold">\n ${this.renderPageHeader()}\n </div>\n <ul class="scroller" @scroll="${this.onScroll}">\n ${this.sortedPages.length ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n ${this.sortedPages.map((p, i) => {\n const selected = this.selectedPages.has(p.id);\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <li class="page-entry ${selected ? "selected" : ""}">\n <wr-page-entry\n .index="${this.query || this.isSidebar ? i + 1 : 0}"\n .editable="${this.editable}"\n .selected="${selected}"\n .isCurrent="${this.isCurrPage(p)}"\n .isSidebar="${this.isSidebar}"\n .page="${p}"\n pid="${p.id}"\n @sel-page="${this.onSelectToggle}"\n @delete-page="${this.onDeleteConfirm}"\n replayPrefix="${this.collInfo.replayPrefix}"\n query="${this.query}"\n class="${this.isSidebar ? "sidebar" : ""}"\n >\n </wr-page-entry>\n </li>`; })}` : lit__WEBPACK_IMPORTED_MODULE_0__.html`<p class="mobile-header">${this.getNoResultsMessage()}</p>`}\n </ul>\n `;\n }\n\n onUpdateTitle(event) {\n event.preventDefault();\n\n this.editing = false;\n\n if (!this.editable) {\n return;\n }\n const input = this.renderRoot.querySelector("#titleEdit");\n if (!input || !input.value.trim()) {\n return;\n }\n\n const title = input.value;\n\n const body = JSON.stringify({title});\n\n fetch(`${this.collInfo.apiPrefix}/metadata`, {method: "POST", body}).then((res) => {\n if (res.status === 200) {\n this.dispatchEvent(new CustomEvent("coll-update", {detail: {title}}));\n }\n });\n }\n\n onMenu(event) {\n event.stopPropagation();\n this.menuActive = !this.menuActive;\n\n if (this.menuActive) {\n document.addEventListener("click", () => {\n this.menuActive = false;\n }, {once: true});\n }\n }\n\n onSort(event) {\n event.preventDefault();\n\n const key = event.currentTarget.getAttribute("data-key") || "";\n if (key === this.sortKey) {\n this.sortDesc = !this.sortDesc;\n } else {\n this.sortDesc = false;\n this.sortKey = key;\n }\n }\n\n onSortChanged(event) {\n this.sortedPages = event.detail.sortedData;\n this.sortKey = event.detail.sortKey;\n this.sortDesc = event.detail.sortDesc;\n }\n\n onSelectToggle(event) {\n const {page, selected} = event.detail;\n if (selected) {\n this.selectedPages.add(page);\n } else {\n this.selectedPages.delete(page);\n }\n this.allSelected = (this.selectedPages.size === this.sortedPages.length);\n this.requestUpdate();\n }\n\n onSelectAll(event) {\n this.allSelected = event.currentTarget.checked;\n if (!this.allSelected) {\n this.selectedPages.clear();\n } else {\n //this.selectedPages = new Set();\n this.sortedPages.forEach(p => {\n this.selectedPages.add(p.id);\n });\n }\n //this.allSelected = (this.selectedPages.size === this.sortedPages.length);\n this.requestUpdate();\n }\n\n async onDownload(event, format) {\n event.preventDefault();\n\n const selected = this.selectedPages.size > 0;\n\n const params = new URLSearchParams();\n params.set("pages", selected ? Array.from(this.selectedPages.keys()).join(",") : "all");\n params.set("format", format);\n if (this.collInfo.filename) {\n params.set("filename", this.collInfo.filename);\n }\n\n window.location.href = `${this.collInfo.apiPrefix}/dl?` + params.toString();\n }\n\n onDeleteConfirm(event) {\n const page = event.currentTarget.page;\n // if page is one of the selected, delete entire selection\n if (this.selectedPages.has(page.id)) {\n this.toDeletePages = this.selectedPages;\n this.toDeletePage = null;\n } else {\n // else, delete just the page\n this.toDeletePages = [page.id];\n this.toDeletePage = page;\n }\n }\n\n async onDeletePages() {\n const pageMap = {};\n\n for (const id of this.toDeletePages) {\n const p = this.renderRoot.querySelector(`wr-page-entry[pid="${id}"]`);\n if (p) {\n p.deleting = true;\n pageMap[id] = p;\n }\n }\n\n for (const id of this.toDeletePages) {\n const resp = await fetch(`${this.collInfo.apiPrefix}/page/${id}`, {method: "DELETE"});\n const json = await resp.json();\n\n if (json.error) {\n console.warn(json.error);\n continue;\n }\n\n const page = pageMap[id];\n\n if (!page) {\n continue;\n }\n\n const inx = this.collInfo.pages.indexOf(page);\n if (inx < 0) {\n continue;\n }\n \n this.collInfo.pages.splice(inx, 1);\n }\n\n this.toDeletePages = null;\n this.toDeletePage = null;\n\n this.updateTextSearch();\n this.requestUpdate();\n }\n\n formatResults() {\n // Default behavior: Count all available pages\n if (!this.query) {\n const length = this.collInfo.pages.length;\n if (length === this.sortedPages.length) {\n return `${length} Page${length ? "s" : ""} Found`;\n } else {\n return `${this.sortedPages.length} of ${length} Pages Found`;\n }\n }\n\n // ... unless they were filtered\n if (this.sortedPages.length === 1) {\n return "1 Page Found";\n } else {\n return `${this.sortedPages.length} Pages Found`;\n }\n }\n\n getNoResultsMessage() {\n if (!this.collInfo || !this.collInfo.pages.length) {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`<span class="fix-text-wrapping">No Pages are defined in this archive. The archive may be empty. <a href="#view=resources">Try browsing by URL</a>.</span>`;\n }\n\n if (this.updatingSearch) {\n return "Initializing Search...";\n }\n\n if (this.loading) {\n return "Searching...";\n }\n\n if (this.query) {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html `<span class="fix-text-wrapping">No matching pages found. Try changing the search query, or <a href="#view=resources">browse by URL</a>.</span>`;\n }\n\n return "No Pages Found";\n }\n\n onScroll(event) {\n const element = event.currentTarget;\n const diff = (element.scrollHeight - element.scrollTop) - element.clientHeight;\n if (diff < 40) {\n const sorter = this.renderRoot.querySelector("wr-sorter");\n if (sorter) {\n sorter.getMore();\n }\n }\n }\n}\n\n\ncustomElements.define("wr-page-view", Pages);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/pages.js?')},"./src/pageutils.js":
/*!**************************!*\
!*** ./src/pageutils.js ***!
\**************************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "digestMessage": () => (/* binding */ digestMessage),\n/* harmony export */ "getPageDateTS": () => (/* binding */ getPageDateTS),\n/* harmony export */ "getReplayLink": () => (/* binding */ getReplayLink),\n/* harmony export */ "getTS": () => (/* binding */ getTS),\n/* harmony export */ "parseURLSchemeHostPath": () => (/* binding */ parseURLSchemeHostPath),\n/* harmony export */ "sourceToId": () => (/* binding */ sourceToId),\n/* harmony export */ "tsToDate": () => (/* binding */ tsToDate)\n/* harmony export */ });\n// ===========================================================================\nasync function digestMessage(message, hashtype) {\n const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array\n const hashBuffer = await crypto.subtle.digest(hashtype, msgUint8); // hash the message\n const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, "0")).join(""); // convert bytes to hex string\n return hashHex;\n}\n\n\n// ===========================================================================\nfunction tsToDate(ts) {\n if (!ts) {\n return "";\n }\n\n if (ts.length < 14) {\n ts += "00000101000000".substr(ts.length);\n }\n\n const datestr = (ts.substring(0, 4) + "-" +\n ts.substring(4, 6) + "-" +\n ts.substring(6, 8) + "T" +\n ts.substring(8, 10) + ":" +\n ts.substring(10, 12) + ":" +\n ts.substring(12, 14) + "-00:00");\n\n return new Date(datestr);\n}\n\n// ===========================================================================\nfunction getPageDateTS(page) {\n let date = null;\n try {\n date = new Date(page.ts || page.date);\n } catch (e) { \n // leave date unchanged in case of error\n }\n\n const timestamp = (date && !isNaN(date)) ? getTS(date.toISOString()) : "";\n return {date, timestamp};\n}\n\n\n// ===========================================================================\nfunction getTS(iso) {\n return iso.replace(/[-:T]/g, "").slice(0, 14);\n}\n\n\n// ===========================================================================\nfunction getReplayLink(view, url, ts) {\n const params = new URLSearchParams();\n params.set("view", view);\n params.set("url", url);\n params.set("ts", ts);\n return "#" + params.toString();\n}\n\n\n// ===========================================================================\nasync function sourceToId(url) {\n const digest = await digestMessage(url, "SHA-256");\n const coll = "id-" + digest.slice(0, 12);\n return {url, coll};\n}\n\n\n// ===========================================================================\n// simple parse of scheme, host, rest of path\n// not using URL due to different browser behavior\nfunction parseURLSchemeHostPath(url) {\n let inx = url.indexOf("://");\n let hostInx = 0;\n let scheme = "";\n let host = "";\n let path = "";\n\n if (inx >= 0) {\n scheme = url.slice(0, inx);\n inx += 3;\n } else {\n inx++;\n if (url.startsWith("//")) {\n inx += 2;\n }\n }\n\n hostInx = url.indexOf("/", inx);\n if (hostInx > 0) {\n host = url.slice(inx, hostInx);\n path = url.slice(hostInx);\n } else {\n host = url.slice(inx);\n path = "";\n }\n\n return {scheme, host, path};\n}\n\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/pageutils.js?')},"./src/replay.js":
/*!***********************!*\
!*** ./src/replay.js ***!
\***********************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Replay": () => (/* binding */ Replay)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n\n\n\n\n\n// ===========================================================================\nclass Replay extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n this.replayUrl = "";\n this.replayTS = "";\n this.actualTS = "";\n this.url = "";\n this.ts = "";\n this.title = "";\n this.collInfo = null;\n\n this.showAuth = false;\n this.reauthWait = null;\n this.authFileHandle = null;\n }\n\n static get properties() {\n return {\n collInfo: {type: Object },\n sourceUrl: { type: String },\n\n // external url set from parent\n url: { type: String },\n ts: { type: String },\n\n // actual replay url\n replayUrl: { type: String },\n replayTS: { type: String },\n actualTS: { type: String },\n title: { type: String },\n\n iframeUrl: { type: String },\n\n showAuth: { type: Boolean },\n authFileHandle: { type: Object }\n };\n }\n\n firstUpdated() {\n window.addEventListener("message", (event) => this.onReplayMessage(event));\n navigator.serviceWorker.addEventListener("message", (event) => this.handleAuthMessage(event));\n }\n\n async handleAuthMessage(event) {\n if (event.data.type === "authneeded" && this.collInfo && event.data.coll === this.collInfo.coll) {\n if (event.data.fileHandle) {\n this.authFileHandle = event.data.fileHandle;\n try {\n if (await this.authFileHandle.requestPermission({mode: "read"}) === "granted") {\n this.showAuth = false;\n this.reauthWait = null;\n this.refresh();\n return;\n }\n } catch (e) {\n console.warn(e);\n } \n } else {\n this.authFileHandle = null;\n }\n\n if (this.reauthWait) {\n await this.reauthWait;\n } else {\n this.showAuth = true;\n }\n }\n }\n\n doSetIframeUrl() {\n this.iframeUrl = this.url ? `${this.collInfo.replayPrefix}/${this.ts || ""}mp_/${this.url}` : "";\n }\n\n updated(changedProperties) {\n if (changedProperties.has("sourceUrl") || changedProperties.has("collInfo")) {\n this.reauthWait = null;\n }\n\n if (this.url &&\n ((this.replayUrl != this.url) || (this.replayTS != this.ts)) &&\n (changedProperties.has("url") || changedProperties.has("ts"))) {\n\n this.replayUrl = this.url;\n this.replayTS = this.ts;\n this.showAuth = false;\n this.reauthWait = null;\n this.doSetIframeUrl();\n }\n\n if (this.iframeUrl && changedProperties.has("iframeUrl")) {\n this.waitForLoad();\n\n const detail = {title: "Archived Page", replayTitle: false};\n this.dispatchEvent(new CustomEvent("update-title", {bubbles: true, composed: true, detail}));\n }\n\n if ((this.replayUrl && changedProperties.has("replayUrl")) || \n (this.replayTS && changedProperties.has("replayTS"))) {\n const data = {\n url: this.replayUrl,\n ts: this.replayTS,\n };\n\n this.dispatchEvent(new CustomEvent("coll-tab-nav", {detail: {replaceLoc: true, data}}));\n }\n\n if (this.title && (changedProperties.has("title") || changedProperties.has("actualTS"))) {\n const detail = {\n title: this.title,\n url: this.replayUrl,\n // send actual ts even if live\n ts: this.actualTS,\n\n replayTitle: true\n };\n this.dispatchEvent(new CustomEvent("update-title", {bubbles: true, composed: true, detail}));\n }\n }\n\n setDisablePointer(disable) {\n const iframe = this.renderRoot.querySelector("iframe");\n\n if (iframe) {\n iframe.style.pointerEvents = disable ? "none" : "all";\n }\n }\n\n onReplayMessage(event) {\n const iframe = this.renderRoot.querySelector("iframe");\n\n if (iframe && event.source === iframe.contentWindow) {\n if (event.data.wb_type === "load" || event.data.wb_type === "replace-url") {\n this.replayTS = event.data.is_live ? "" : event.data.ts;\n this.actualTS = event.data.ts;\n this.replayUrl = event.data.url;\n this.title = event.data.title || this.title;\n this.clearLoading(iframe.contentWindow);\n\n if (event.data.icons) {\n const icons = event.data.icons;\n this.dispatchEvent(new CustomEvent("replay-favicons", {bubbles: true, composed: true, detail: {icons}}));\n }\n } else if (event.data.wb_type === "title") {\n this.title = event.data.title;\n }\n }\n }\n\n onReAuthed(event) {\n this.reauthWait = (async () => {\n\n if (!this.authFileHandle) {\n // google drive reauth\n const headers = event.detail.headers;\n\n await fetch(`${this.collInfo.apiPrefix}/updateAuth`, {\n method: "POST",\n body: JSON.stringify({headers})\n });\n } else {\n if (await this.authFileHandle.requestPermission({mode: "read"}) !== "granted") {\n this.reauthWait = null;\n return;\n }\n this.authFileHandle = null;\n }\n\n if (this.showAuth) {\n this.showAuth = false;\n this.reauthWait = null;\n }\n this.refresh();\n })();\n }\n\n waitForLoad() {\n this.setLoading();\n this._loadPoll = window.setInterval(() => {\n const iframe = this.renderRoot.querySelector("iframe");\n if (!iframe || !iframe.contentDocument || !iframe.contentWindow ||\n (iframe.contentDocument.readyState === "complete" && !iframe.contentWindow._WBWombat)) {\n this.clearLoading(iframe && iframe.contentWindow);\n }\n }, 5000);\n }\n\n clearLoading(iframeWin) {\n this.dispatchEvent(new CustomEvent("replay-loading", {detail: {loading: false}}));\n\n if (this._loadPoll) {\n window.clearInterval(this._loadPoll);\n this._loadPoll = null;\n }\n\n if (iframeWin) {\n iframeWin.addEventListener("beforeunload", () => {\n this.setLoading();\n });\n }\n }\n\n setLoading() {\n this.dispatchEvent(new CustomEvent("replay-loading", {detail: {loading: true}}));\n }\n\n refresh() {\n const iframe = this.renderRoot.querySelector("iframe");\n\n if (!iframe) {\n return;\n }\n\n const oldIframeUrl = this.iframeUrl;\n // set iframe url to expected, refresh if same url\n this.doSetIframeUrl();\n if (oldIframeUrl === this.iframeUrl || this.url === this.replayUrl) {\n this.waitForLoad();\n iframe.contentWindow.location.reload();\n }\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_1__.wrapCss)(lit__WEBPACK_IMPORTED_MODULE_0__.css`\n :host {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .iframe-container {\n position: relative;\n width: 100%;\n height: 100%;\n border: 0px;\n }\n\n .iframe-main {\n position: absolute;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n width: 100%;\n height: 100%;\n }\n\n .intro-panel .panel-heading {\n font-size: 1.0em;\n display: inline-block;\n }\n\n .iframe-main.modal-bg {\n z-index: 200;\n background-color: rgba(10, 10, 10, 0.70)\n }\n\n #wrlogo {\n vertical-align: middle;\n }\n\n .intro-panel .panel-block {\n padding: 1.0em;\n flex-direction: column;\n line-height: 2.5em;\n }\n\n div.intro-panel.panel {\n min-width: 40%;\n display: flex;\n flex-direction: column;\n margin: 3em;\n background-color: white;\n }\n `);\n }\n\n render() {\n const title = `Replay of ${this.title ? `${this.title}:` :""} ${this.url}`;\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n\n <h1 id="replay-heading" class="is-sr-only">${title}</h1>\n\n ${!this.iframeUrl ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="panel intro-panel">\n <p class="panel-heading">Replay Web Page</p>\n <div class="panel-block">\n <p>Enter a URL above to replay it from the web archive!</p>\n <p>(Or, check out <a href="#view=pages">Pages</a> or <a href="#view=resources">URLs</a> to explore the contents of this archive.)</p>\n </div>\n </div>` : lit__WEBPACK_IMPORTED_MODULE_0__.html`\n\n <div class="iframe-container">\n <iframe class="iframe-main" name="___wb_replay_top_frame" @message="${this.onReplayMessage}" allow="autoplay \'self\'; fullscreen" allowfullscreen\n src="${this.iframeUrl}" title="${title}"></iframe>\n\n ${this.showAuth ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="iframe-main modal-bg">\n <div class="panel intro-panel">\n <p class="panel-heading">\n <fa-icon id="wrlogo" size="1.5rem" .svg=${_misc__WEBPACK_IMPORTED_MODULE_1__.rwpLogo} aria-hidden="true"></fa-icon>\n Authorization Needed\n </p>\n <div class="panel-block">\n ${this.authFileHandle ? lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <p>This archive is loaded from a local file: <b>${this.authFileHandle.name}</b></p>\n <p>The browser needs to confirm your permission to continue loading from this file.</p>\n <button class="button is-warning is-rounded" @click="${this.onReAuthed}">Show Confirmation</button>\n ` : lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <wr-gdrive\n .sourceUrl="${this.sourceUrl}"\n .state="trymanual"\n .reauth="${true}"\n @load-ready="${this.onReAuthed}"/>`}\n </div>\n </div>\n </div>\n `: ""}\n </div>\n `}`;\n }\n}\n\ncustomElements.define("wr-coll-replay", Replay);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/replay.js?')},"./src/sorter.js":
/*!***********************!*\
!*** ./src/sorter.js ***!
\***********************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Sorter": () => (/* binding */ Sorter)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_sort_down_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/sort-down.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-down.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_sort_down_svg__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_sort_down_svg__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_sort_up_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/sort-up.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/sort-up.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_sort_up_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_sort_up_svg__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\n\n\n// ===========================================================================\nclass Sorter extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n this.sortedData = [];\n this.data = [];\n\n this.pageResults = 0;\n this.numResults = 0;\n\n this.sortKey = null;\n this.sortDesc = null;\n }\n\n static get properties() {\n return {\n id: { type: String },\n\n pageResults: {type: Number},\n\n data: { type: Array },\n sortedData: { type: Array },\n\n sortKey: { type: String },\n sortDesc: { type: Boolean },\n };\n }\n\n firstUpdated() {\n if (this.id) {\n const sortKey = localStorage.getItem(`${this.id}:sortKey`);\n if (sortKey !== null) {\n this.sortKey = sortKey;\n }\n const sortDesc = localStorage.getItem(`${this.id}:sortDesc`);\n if (sortDesc !== null) {\n this.sortDesc = sortDesc === "1";\n }\n }\n }\n\n updated(changedProperties) {\n const keyChanged = changedProperties.has("sortKey");\n const descChanged = changedProperties.has("sortDesc");\n const dataChanged = changedProperties.has("data");\n\n if (keyChanged && this.sortKey !== null) {\n localStorage.setItem(`${this.id}:sortKey`, this.sortKey);\n }\n\n if (descChanged && this.sortDesc !== null) {\n localStorage.setItem(`${this.id}:sortDesc`, this.sortDesc ? "1" : "0");\n }\n\n if (keyChanged || descChanged || dataChanged) {\n this.sortData();\n }\n }\n\n sortData() {\n this.sortedData = [...this.data];\n this.numResults = this.pageResults;\n\n if (this.sortKey === "") {\n if (this.sortDesc) {\n this.sortedData.reverse();\n }\n } else {\n this.sortedData.sort((first, second) => {\n if (first[this.sortKey] === second[this.sortKey]) {\n return 0;\n }\n\n return (this.sortDesc == (first[this.sortKey] < second[this.sortKey])) ? 1 : -1;\n });\n }\n\n this.sendSortChanged();\n }\n\n sendSortChanged() {\n const detail = {\n sortKey: this.sortKey,\n sortDesc: this.sortDesc,\n sortedData: this.numResults ? this.sortedData.slice(0, this.numResults) : this.sortedData\n };\n this.dispatchEvent(new CustomEvent("sort-changed", {detail}));\n }\n\n getMore(more = 100) {\n if (this.pageResults && this.numResults >= this.sortedData.length) {\n return;\n }\n\n this.numResults += more;\n this.sendSortChanged();\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_1__.wrapCss)(lit__WEBPACK_IMPORTED_MODULE_0__.css`\n :host {\n min-width: 100px;\n box-sizing: border-box !important;\n }\n button.button.is-small {\n border-radius: 4px;\n }\n `);\n }\n\n render() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="select is-small">\n <select id="sort-select" @change=${(e) => this.sortKey = e.currentTarget.value}>\n ${this.sortKeys.map((sort) => lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <option value="${sort.key}" ?selected="${sort.key === this.sortKey}">Sort By: ${sort.name}\n </option>\n `)}\n </select>\n </div>\n <button @click=${() => this.sortDesc = !this.sortDesc} class="button is-small">\n <span>Order:</span>\n <span class="is-sr-only">${this.sortDesc ? "Ascending" : "Descending"}</span>\n <span class="icon"><fa-icon aria-hidden="true" .svg=${this.sortDesc ? (_fortawesome_fontawesome_free_svgs_solid_sort_up_svg__WEBPACK_IMPORTED_MODULE_3___default()) : (_fortawesome_fontawesome_free_svgs_solid_sort_down_svg__WEBPACK_IMPORTED_MODULE_2___default())}></span>\n </button>`;\n }\n}\n\ncustomElements.define("wr-sorter", Sorter);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/sorter.js?')},"./src/story.js":
/*!**********************!*\
!*** ./src/story.js ***!
\**********************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Story": () => (/* binding */ Story)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n/* harmony import */ var lit_directives_unsafe_html_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lit/directives/unsafe-html.js */ "./node_modules/lit/directives/unsafe-html.js");\n/* harmony import */ var marked__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! marked */ "./node_modules/marked/lib/marked.esm.js");\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pageutils */ "./src/pageutils.js");\n/* harmony import */ var split_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! split.js */ "./node_modules/split.js/dist/split.es.js");\n\n\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass Story extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n constructor() {\n super();\n\n this.collInfo = null;\n\n this.curatedPageMap = {};\n\n this.currList = 0;\n\n this.active = false;\n\n this.lastST = 0;\n this.clickTime = 0;\n\n this.isSidebar = false;\n this.splitDirection = false;\n }\n\n static get properties() {\n return {\n collInfo: { type: Object },\n\n active: { type: Boolean },\n\n curatedPageMap: { type: Object },\n\n currList: { type: Number },\n\n isSidebar: { type: Boolean },\n splitDirection: { type: Boolean }\n };\n }\n\n recalcSplitter(width) {\n this.splitDirection = this.isSidebar || width < 769 ? "vertical" : "horizontal";\n }\n\n firstUpdated() {\n this.recalcSplitter(document.documentElement.clientWidth);\n\n this.obs = new ResizeObserver((entries/*, observer*/) => {\n this.recalcSplitter(entries[0].contentRect.width);\n });\n\n this.obs.observe(this);\n }\n\n updated(changedProperties) {\n if (changedProperties.has("collInfo")) {\n this.doLoadCurated();\n }\n\n if (changedProperties.has("collInfo") || changedProperties.has("isSidebar")) {\n this.recalcSplitter(document.documentElement.clientWidth);\n }\n\n if (changedProperties.has("splitDirection")) {\n this.configureSplitter();\n }\n\n if (changedProperties.has("currList") && this.active) {\n this.sendChangeEvent({\n currList: this.currList,\n });\n }\n }\n\n configureSplitter() {\n const sidebar = this.renderRoot.querySelector(".sidebar");\n const content = this.renderRoot.querySelector(".main-content");\n\n if (this.splitter) {\n try {\n this.splitter.destroy();\n } catch (e) {\n // ignore splitter destory err\n }\n this.splitter = null;\n }\n\n if (sidebar && content && !this.splitter) {\n const opts = {\n sizes: [20, 80],\n\n gutterSize: 4,\n\n direction: this.splitDirection\n };\n\n this.splitter = (0,split_js__WEBPACK_IMPORTED_MODULE_5__["default"])([sidebar, content], opts);\n } \n }\n\n async doLoadCurated() {\n this.curatedPageMap = {};\n\n const pageMap = {};\n\n for (const page of this.collInfo.pages) {\n pageMap[page.id] = page;\n }\n\n for (const curated of this.collInfo.curatedPages) {\n if (!this.curatedPageMap[curated.list]) {\n this.curatedPageMap[curated.list] = [];\n }\n const page = curated;\n\n // if (curated.page) {\n // page = pageMap[curated.page];\n // if (!page) {\n // console.log("No Page with id: " + page);\n // continue;\n // }\n // }\n\n const url = page.url;\n const ts = page.ts;\n const title = page.title || page.url;\n const desc = curated.desc;\n\n this.curatedPageMap[curated.list].push({url, ts, title, desc});\n }\n\n this.scrollToList();\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_1__.wrapCss)(lit__WEBPACK_IMPORTED_MODULE_0__.css`\n :host {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n min-width: 0px;\n\n justify-content: flex-start;\n align-items: center;\n }\n\n :host(.sidebar) .columns {\n display: flex !important;\n flex-direction: column;\n }\n\n :host(.sidebar) .column.sidebar.is-one-fifth {\n width: 100% !important;\n }\n\n ${Story.sidebarStyles((0,lit__WEBPACK_IMPORTED_MODULE_0__.unsafeCSS)(":host(.sidebar)"))}\n\n .desc p {\n margin-bottom: 1.0em;\n }\n\n .columns {\n width: 100%;\n height: 100%;\n justify-self: stretch;\n margin: 1.0em 0 0 0 !important;\n min-height: 0;\n }\n\n .column.main-content {\n min-height: 0;\n display: flex;\n flex-direction: column;\n padding: 0px;\n margin-left: 0.75em;\n }\n\n .column.main-content.main-scroll {\n padding-right: 0.75em;\n word-break: break-all;\n }\n\n ul.menu-list a.is-active {\n background-color: #55be6f;\n }\n ol {\n margin-left: 30px;\n }\n\n @media screen and (min-width: 769px) {\n .columns {\n margin-top: 0.75em;\n }\n\n .column.sidebar {\n max-height: 100%;\n overflow-y: auto;\n }\n }\n\n @media screen and (max-width: 768px) {\n ${Story.sidebarStyles()}\n }\n\n .gutter.gutter-vertical:hover {\n cursor: row-resize;\n }\n\n .gutter.gutter-horizontal:hover {\n cursor: col-resize;\n }\n\n `);\n }\n\n static sidebarStyles(prefix = lit__WEBPACK_IMPORTED_MODULE_0__.css``) {\n return lit__WEBPACK_IMPORTED_MODULE_0__.css`\n ${prefix} .columns {\n position: relative;\n }\n\n ${prefix} .column.sidebar {\n overflow-y: auto;\n margin-top: 0.75em;\n }\n\n ${prefix} .column.main-content {\n position: relative;\n overflow-y: auto;\n\n border-top: 1px solid black;\n\n height: 100%;\n }\n\n ${prefix} .menu {\n font-size: 0.80rem;\n }`;\n }\n\n render() {\n const currListNum = this.currList;\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div class="is-sr-only" role="heading" aria-level="${this.isSidebar ? "2": "1"}">\n Story for ${this.collInfo.title}\n </div>\n <div class="columns">\n <div class="column sidebar is-one-fifth">\n <aside class="menu">\n <ul class="menu-list">\n <li>\n <a href="#list-0" data-list="0" class="${currListNum === 0 ? "is-active" : ""} menu-label is-size-4"\n @click=${this.onClickScroll}>${this.collInfo.title}</a>\n <ul class="menu-list">${this.collInfo.lists.map(list => lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <li>\n <a @click=${this.onClickScroll} href="#list-${list.id}"\n data-list="${list.id}" \n class="${currListNum === list.id ? "is-active" : ""}">${list.title}</a>\n </li>`)}\n </ul>\n </li>\n </ul>\n </aside>\n </div>\n <div @scroll=${this.onScroll} class="column main-content main-scroll">\n <section id="list-0" class="desc">\n <h2 class="has-text-centered title is-3">${this.collInfo.title}</h2>\n ${this.collInfo.desc ? (0,lit_directives_unsafe_html_js__WEBPACK_IMPORTED_MODULE_2__.unsafeHTML)((0,marked__WEBPACK_IMPORTED_MODULE_3__.marked)(this.collInfo.desc)) : ""}\n </section>\n ${this.renderLists()}\n </div>\n </div>\n `;\n }\n\n renderLists() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n ${this.collInfo.lists.map((list) => lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <article id="list-${list.id}">\n <div class="content">\n <hr/>\n <h3>${list.title}</h3>\n <p>${list.desc}</p>\n <ol>\n ${this.curatedPageMap[list.id] ? this.curatedPageMap[list.id].map((p) => this.renderCPage(p)) : lit__WEBPACK_IMPORTED_MODULE_0__.html``}\n </ol>\n </div>\n </article>\n `)}`;\n }\n\n renderCPage(p) {\n const date = new Date(p.ts);\n\n const ts = (0,_pageutils__WEBPACK_IMPORTED_MODULE_4__.getTS)(date.toISOString());\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <li>\n <div class="content">\n <a @click="${this.onReplay}" data-url="${p.url}" data-ts="${ts}"\n href="${(0,_pageutils__WEBPACK_IMPORTED_MODULE_4__.getReplayLink)("story", p.url, ts)}">\n <p class="is-size-6 has-text-weight-bold has-text-link">${p.title}</p>\n <p class="has-text-dark">${p.url}</p>\n </a>\n <p>${date.toLocaleString()}</p>\n <p>${p.desc}</p>\n </div>\n <hr/>\n </li>`;\n }\n\n onReplay(event) {\n event.preventDefault();\n const data = {\n url: event.currentTarget.getAttribute("data-url"),\n ts: event.currentTarget.getAttribute("data-ts"),\n };\n this.sendChangeEvent(data);\n return false;\n }\n\n sendChangeEvent(data) {\n this.dispatchEvent(new CustomEvent("coll-tab-nav", {detail: {data}}));\n }\n\n onClickScroll(event) {\n event.preventDefault();\n //this.pageView = false;\n this.currList = Number(event.currentTarget.getAttribute("data-list"));\n this.scrollToList();\n return false;\n }\n\n scrollToList() {\n // lists are 1 based, 0 is header, 1 is first list\n if (this.currList > this.collInfo.lists.length) {\n this.currList = 0;\n }\n\n const opts = {behavior: "smooth", block: "nearest", inline: "nearest"};\n this.clickTime = new Date().getTime();\n const curr = this.renderRoot.getElementById("list-" + this.currList);\n if (curr) {\n curr.scrollIntoView(opts);\n }\n }\n\n onScroll(event) {\n const scrollable = event.currentTarget;\n const curr = this.renderRoot.getElementById("list-" + this.currList);\n\n if (!curr) {\n return;\n }\n\n let next = curr;\n const target = scrollable.offsetTop;\n const currST = scrollable.scrollTop;\n\n if (currST > this.lastST) {\n while (next.nextElementSibling && next.nextElementSibling.getBoundingClientRect().top < target) {\n next = next.nextElementSibling;\n }\n } else {\n while (next.previousElementSibling && next.previousElementSibling.getBoundingClientRect().bottom >= target) {\n next = next.previousElementSibling;\n }\n }\n this.lastST = currST;\n if (next && next != curr) {\n if (next.id.startsWith("list-")) {\n this.currList = Number(next.id.slice(5));\n }\n }\n\n if ((new Date().getTime() - this.clickTime) < 1000) {\n return;\n }\n\n const sel = this.renderRoot.querySelector(`a[data-list="${this.currList}"]`);\n if (sel) {\n const opts = {behavior: "smooth", block: "nearest", inline: "nearest"};\n sel.scrollIntoView(opts);\n }\n }\n}\n\ncustomElements.define("wr-coll-story", Story);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/story.js?')},"./src/swmanager.js":
/*!**************************!*\
!*** ./src/swmanager.js ***!
\**************************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "SWManager": () => (/* binding */ SWManager)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var register_service_worker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! register-service-worker */ "./node_modules/register-service-worker/index.js");\n\n\n\n\n// ===========================================================================\nclass SWManager\n{\n constructor({name = "sw.js", scope = "./", appName = "ReplayWeb.page", requireSubdomainIframe = false} = {}) {\n this.name = name;\n this.scope = scope;\n this.appName = appName;\n this.requireSubdomainIframe = requireSubdomainIframe;\n\n this.errorMsg = null;\n }\n\n setAppName(newAppName) {\n this.appName = newAppName;\n }\n\n register() {\n let resolve, reject;\n \n const p = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n this.errorMsg = this.getSWErrorMsg();\n\n if (this.errorMsg) {\n console.error(this.errorMsg);\n reject(this.errorMsg);\n }\n\n const handleError = (error) => {\n console.error("Error during service worker registration:", error);\n this.errorMsg = this.getCrossOriginIframeMsg();\n if (!this.errorMsg) {\n this.errorMsg = `${this.appName} could not be loaded due to the following error:\\n${error.toString()}`;\n }\n \n reject(this.errorMsg);\n };\n \n (0,register_service_worker__WEBPACK_IMPORTED_MODULE_1__.register)(this.scope + this.name, {\n registrationOptions: { scope: this.scope },\n registered () {\n console.log("Service worker is registered");\n resolve();\n },\n\n error(errMsg) { handleError(errMsg); }\n });\n\n return p;\n }\n\n getCrossOriginIframeMsg() {\n if (this.isCrossOriginIframe()) {\n return `\\\n Sorry, Service Workers can not be used in cross-origin iframes.\n This web archive embed is loaded from ${window.location.origin} but the top page is on a different origin.\n The embed must be loaded from the same origin or a subdomain.`;\n }\n\n return null;\n }\n\n isCrossOriginIframe() {\n if (window.parent === window) {\n return false;\n }\n\n try {\n return window.top.location.href === "";\n } catch (e) {\n return true;\n }\n }\n\n getSWErrorMsg() {\n if (navigator.serviceWorker) {\n\n // must be loaded from a cross-origin (eg. subdomain)\n if (this.requireSubdomainIframe && !this.isCrossOriginIframe()) {\n return `Sorry, due to security settings, this ${this.appName} embed only be viewed within a subdomain iframe.`;\n }\n\n return null;\n }\n\n // loaded from a cross-origin iframe that\'s *not* a subdomain\n const msg = this.getCrossOriginIframeMsg();\n if (msg) {\n return msg;\n }\n\n if (!window.isSecureContext) {\n return `\n Sorry, the ${this.appName} system must be loaded from an HTTPS URL (or localhost), but was loaded from: ${window.location.host}.\n Please try loading this page from an HTTPS URL`;\n }\n\n // Detect firefox private mode\n if ("MozAppearance" in document.documentElement.style) {\n return "Sorry, Service Workers are disabled in Firefox in Private Mode. Please try loading this page in regular mode instead.";\n }\n\n return `Sorry, ${this.appName} won\'t work in this browser as Service Workers are not supported in this window.\n Please try a different browser.`;\n\n }\n\n renderErrorReport(logo, override) {\n const msg = this.errorMsg || override;\n\n if (!msg) {\n return "";\n }\n\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <section class="is-fullwidth">\n <div class="has-text-centered">\n <fa-icon style="margin: 1em;flex-grow: 1;" id="wrlogo" size="2.5rem" .svg=${logo} aria-hidden="true"></fa-icon>\n </div>\n <div style="white-space: pre-wrap; text-align: center" >${msg}</div>\n </section>\n `;\n }\n}\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/swmanager.js?')},"./src/ui.js":
/*!*******************!*\
!*** ./src/ui.js ***!
\*******************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Chooser": () => (/* reexport safe */ _chooser__WEBPACK_IMPORTED_MODULE_1__.Chooser),\n/* harmony export */ "Coll": () => (/* reexport safe */ _coll__WEBPACK_IMPORTED_MODULE_3__.Coll),\n/* harmony export */ "CollIndex": () => (/* reexport safe */ _coll_index__WEBPACK_IMPORTED_MODULE_2__.CollIndex),\n/* harmony export */ "CollInfo": () => (/* reexport safe */ _coll_index__WEBPACK_IMPORTED_MODULE_2__.CollInfo),\n/* harmony export */ "Embed": () => (/* reexport safe */ _embed__WEBPACK_IMPORTED_MODULE_12__.Embed),\n/* harmony export */ "GDrive": () => (/* reexport safe */ _gdrive__WEBPACK_IMPORTED_MODULE_5__.GDrive),\n/* harmony export */ "Loader": () => (/* reexport safe */ _loader__WEBPACK_IMPORTED_MODULE_6__.Loader),\n/* harmony export */ "PageEntry": () => (/* reexport safe */ _pageentry__WEBPACK_IMPORTED_MODULE_8__.PageEntry),\n/* harmony export */ "Pages": () => (/* reexport safe */ _pages__WEBPACK_IMPORTED_MODULE_7__.Pages),\n/* harmony export */ "Replay": () => (/* reexport safe */ _replay__WEBPACK_IMPORTED_MODULE_9__.Replay),\n/* harmony export */ "ReplayWebApp": () => (/* reexport safe */ _appmain__WEBPACK_IMPORTED_MODULE_0__.ReplayWebApp),\n/* harmony export */ "Sorter": () => (/* reexport safe */ _sorter__WEBPACK_IMPORTED_MODULE_10__.Sorter),\n/* harmony export */ "Story": () => (/* reexport safe */ _story__WEBPACK_IMPORTED_MODULE_4__.Story),\n/* harmony export */ "URLResources": () => (/* reexport safe */ _url_resources__WEBPACK_IMPORTED_MODULE_11__.URLResources)\n/* harmony export */ });\n/* harmony import */ var _appmain__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appmain */ "./src/appmain.js");\n/* harmony import */ var _chooser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chooser */ "./src/chooser.js");\n/* harmony import */ var _coll_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./coll-index */ "./src/coll-index.js");\n/* harmony import */ var _coll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./coll */ "./src/coll.js");\n/* harmony import */ var _story__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./story */ "./src/story.js");\n/* harmony import */ var _gdrive__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./gdrive */ "./src/gdrive.js");\n/* harmony import */ var _loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./loader */ "./src/loader.js");\n/* harmony import */ var _pages__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./pages */ "./src/pages.js");\n/* harmony import */ var _pageentry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pageentry */ "./src/pageentry.js");\n/* harmony import */ var _replay__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./replay */ "./src/replay.js");\n/* harmony import */ var _sorter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./sorter */ "./src/sorter.js");\n/* harmony import */ var _url_resources__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./url-resources */ "./src/url-resources.js");\n/* harmony import */ var _embed__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./embed */ "./src/embed.js");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/ui.js?')},"./src/url-resources.js":
/*!******************************!*\
!*** ./src/url-resources.js ***!
\******************************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "URLResources": () => (/* binding */ URLResources)\n/* harmony export */ });\n/* harmony import */ var lit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit */ "./node_modules/lit/index.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ "./src/misc.js");\n/* harmony import */ var _pageutils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pageutils */ "./src/pageutils.js");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fortawesome/fontawesome-free/svgs/solid/search.svg */ "./node_modules/@fortawesome/fontawesome-free/svgs/solid/search.svg");\n/* harmony import */ var _fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var keyword_mark_element_lib_keyword_mark_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! keyword-mark-element/lib/keyword-mark.js */ "./node_modules/keyword-mark-element/lib/keyword-mark.js");\n\n\n\n\n\n\n\n\n\n\n// ===========================================================================\nclass URLResources extends lit__WEBPACK_IMPORTED_MODULE_0__.LitElement\n{\n static get filters() {\n return [\n {name: "HTML", filter: "text/html,text/xhtml"},\n {name: "Images", filter: "image/"},\n {name: "Audio/Video", filter: "audio/,video/"},\n {name: "PDF", filter: "application/pdf"},\n {name: "Javascript", filter: "application/javascript,application/x-javascript"},\n {name: "CSS", filter: "text/css"},\n {name: "Fonts", filter: "font/,application/font-woff"},\n {name: "Plain Text", filter: "text/plain"},\n {name: "JSON", filter: "application/json"},\n {name: "DASH/HLS", filter: "application/dash+xml,application/x-mpegURL,application/vnd.apple.mpegurl"},\n {name: "All URLs", filter: ""}\n ];\n }\n\n static get sortKeys() {\n return [\n {\n "key": "url",\n "name": "URL"\n },\n {\n "key": "ts",\n "name": "Date"\n },\n {\n "key": "mime",\n "name": "Mime Type",\n },\n {\n "key": "status",\n "name": "Status"\n }\n ];\n }\n\n constructor() {\n super();\n this.collInfo = null;\n this.isSidebar = false;\n\n this.currMime = "";\n this.query = "";\n this.urlSearchType = "";\n\n this.filteredResults = [];\n this.sortedResults = [];\n\n this.results = [];\n\n this.newQuery = null;\n\n this.tryMore = false;\n this.loading = false;\n\n this.sortKey = "url";\n this.sortDesc = false;\n }\n\n static get properties() {\n return {\n collInfo: { type: Object },\n isSidebar: { type: Boolean },\n currMime: { type: String },\n query: { type: String },\n urlSearchType: { type: String },\n filteredResults: { type: Array },\n sortedResults: { type: Array },\n loading: { type: Boolean },\n sortKey: { type: String },\n sortDesc: { type: Boolean }\n };\n }\n\n firstUpdated() {\n //this.doLoadResources();\n if (this.urlSearchType === "") {\n this.urlSearchType = "prefix";\n }\n }\n\n _timedUpdate() {\n if (this.newQuery !== null) {\n this.query = this.newQuery;\n this.newQuery = null;\n }\n }\n\n updated(changedProperties) {\n if (changedProperties.has("query") ||\n changedProperties.has("urlSearchType") ||\n changedProperties.has("currMime")) {\n\n this.doLoadResources();\n const data = {\n query: this.query,\n urlSearchType: this.urlSearchType,\n currMime: this.currMime\n };\n const replaceLoc = !changedProperties.has("currMime") && !changedProperties.has("urlSearchType");\n this.dispatchEvent(new CustomEvent("coll-tab-nav", {detail: {replaceLoc, data}}));\n }\n\n if (changedProperties.has("sortKey") || changedProperties.has("sortDesc")) {\n this.filter();\n }\n }\n\n async doLoadResources(isMore = false) {\n const count = 100;\n\n if (isMore && (!this.tryMore || !this.results.length)) {\n return;\n }\n\n if (this.loading) {\n return;\n }\n\n this.loading = true;\n let url = (this.urlSearchType !== "contains" ? this.query : "");\n const prefix = url && this.urlSearchType === "prefix" ? 1 : 0;\n\n // optimization: if not starting with http, likely won\'t have a match here, so just add https://\n if (url && !url.startsWith("http")) {\n url = "https://" + url;\n }\n\n const mime = this.currMime;\n\n const params = new URLSearchParams({\n mime,\n url,\n prefix,\n count\n });\n\n if (isMore) {\n const last = this.results[this.results.length - 1];\n params.set("fromMime", last.mime);\n params.set("fromUrl", last.url);\n params.set("fromStatus", last.status);\n params.set("fromTs", new Date(last.date).getTime());\n }\n\n let resp = await fetch(`${this.collInfo.apiPrefix}/urls?${params.toString()}`);\n resp = await resp.json();\n this.results = isMore ? this.results.concat(resp.urls) : resp.urls;\n // can be more than count if multiple mimes\n this.tryMore = (resp.urls.length >= count);\n this.filter();\n\n this.loading = false;\n }\n\n onChangeTypeSearch(event) {\n this.currMime = event.currentTarget.value;\n }\n\n onChangeQuery(event) {\n this.newQuery = event.currentTarget.value;\n if (this._ival) {\n window.clearTimeout(this._ival);\n }\n this._ival = window.setTimeout(() => this._timedUpdate(), 250);\n }\n\n onClickUrlType(event) {\n this.urlSearchType = event.currentTarget.value;\n }\n\n filter() {\n const filteredResults = [];\n const filterText = (this.urlSearchType === "contains" ? this.query : "");\n for (const result of this.results) {\n if (!filterText || result.url.indexOf(filterText) >= 0) {\n filteredResults.push(result);\n }\n }\n\n this.filteredResults = filteredResults;\n }\n\n onScroll(event) {\n const element = event.currentTarget;\n const diff = (element.scrollHeight - element.scrollTop) - element.clientHeight;\n if (this.tryMore && diff < 40) {\n this.doLoadResources(true);\n }\n }\n\n static get styles() {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_1__.wrapCss)(lit__WEBPACK_IMPORTED_MODULE_0__.css`\n :host {\n width: 100%;\n height: 100%;\n display: flex;\n min-width: 0px;\n flex-direction: column;\n }\n :host(.sidebar) .is-hidden-tablet {\n display: flex !important;\n }\n\n :host(.sidebar) .is-hidden-mobile {\n display: none !important;\n }\n\n :host(.sidebar) .level, :host(.sidebar) .level-left, :host(.sidebar) .level-right {\n display: block !important;\n }\n\n :host(.sidebar) .columns {\n display: flex !important;\n flex-direction: column;\n }\n\n :host(.sidebar) .column {\n width: 100% !important;\n }\n\n .notification {\n width: 100%;\n }\n .all-results {\n margin: 0 0 0 0.5em;\n display: flex;\n flex-direction: column;\n min-height: 0;\n }\n .main-scroll {\n flex-grow: 1;\n }\n .minihead {\n font-size: 10px;\n font-weight: bold;\n }\n .columns {\n margin: 0px;\n }\n thead {\n margin-bottom: 24px;\n }\n table th:not([align]) {\n text-align: left;\n }\n .result {\n border-bottom: 1px #dbdbdb solid;\n min-height: fit-content;\n }\n .results-head {\n border-bottom: 2px #dbdbdb solid;\n margin-right: 16px;\n min-height: fit-content;\n display: block;\n width: 100%;\n }\n .results-head a {\n color: black;\n }\n .all-results .column {\n word-break: break-word;\n }\n div.sort-header {\n padding: 10px;\n margin-bottom: 0px !important;\n min-height: fit-content;\n }\n .flex-auto {\n flex: auto;\n }\n .asc:after {\n content: "▼";\n font-size: 0.75em;\n }\n .desc:after {\n content: "▲";\n font-size: 0.75em;\n }\n .num-results {\n margin-left: 1em;\n font-style: italic;\n }\n `);\n }\n\n render() {\n return lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <div role="heading" aria-level="${this.isSidebar ? "2": "1"}" class="is-sr-only">URLs in ${this.collInfo.title}</div>\n\n <div role="heading" aria-level="${this.isSidebar ? "3": "2"}" class="is-sr-only">Search and Filter</div>\n <div class="notification level is-marginless">\n <div class="level-left flex-auto">\n <div class="level-item flex-auto">\n <span class="is-hidden-mobile">Search:&nbsp;&nbsp;</span>\n <div class="select">\n <select @change="${this.onChangeTypeSearch}">\n ${URLResources.filters.map((filter) => lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <option value="${filter.filter}"\n ?selected="${filter.filter === this.currMime}">\n ${filter.name}\n </option>\n `)}\n </select>\n </div>\n <div class="field flex-auto">\n <div class="control has-icons-left ${this.loading ? "is-loading" : ""}">\n <input type="text" class="input" @input="${this.onChangeQuery}" .value="${this.query}" type="text" placeholder="Enter URL to Search">\n <span class="icon is-left"><fa-icon .svg="${(_fortawesome_fontawesome_free_svgs_solid_search_svg__WEBPACK_IMPORTED_MODULE_3___default())}"/></span>\n </div>\n </div>\n </div>\n </div>\n <div class="control level-right">\n <div style="margin-left: 1em" class="control">\n <label class="radio has-text-left"><input type="radio" name="urltype" value="contains" ?checked="${this.urlSearchType === "contains"}" @click="${this.onClickUrlType}">&nbsp;Contains</label>\n <label class="radio has-text-left"><input type="radio" name="urltype" value="prefix" ?checked="${this.urlSearchType === "prefix"}" @click="${this.onClickUrlType}">&nbsp;Prefix</label>\n <label class="radio has-text-left"><input type="radio" name="urltype" value="exact" ?checked="${this.urlSearchType === "exact"}" @click="${this.onClickUrlType}">&nbsp;Exact</label>\n <span id="num-results" class="num-results" is-pulled-right" aria-live="polite" aria-atomic="true">${this.filteredResults.length} Result(s)</span>\n </div>\n </div>\n </div>\n\n <div class="sort-header is-hidden-tablet">\n <wr-sorter id="urls"\n .sortKey="${this.sortKey}"\n .sortDesc="${this.sortDesc}"\n .sortKeys="${URLResources.sortKeys}"\n .data="${this.filteredResults}"\n @sort-changed="${this.onSortChanged}">\n </wr-sorter>\n </div>\n\n <div role="heading" aria-level="${this.isSidebar ? "3": "2"}" id="results-heading" class="is-sr-only">Results</div>\n\n <table class="all-results" aria-labelledby="results-heading num-results">\n <thead>\n <tr class="columns results-head has-text-weight-bold">\n <th scope="col" class="column col-url is-6 is-hidden-mobile"><a role="button" href="#" @click="${this.onSort}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}" data-key="url" class="${this.sortKey === "url" ? (this.sortDesc ? "desc" : "asc") : ""}">URL</a></th>\n <th scope="col" class="column col-ts is-2 is-hidden-mobile"><a role="button" href="#" @click="${this.onSort}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}" data-key="ts" class="${this.sortKey === "ts" ? (this.sortDesc ? "desc" : "asc") : ""}">Date</a></th>\n <th scope="col" class="column col-mime is-3 is-hidden-mobile"><a role="button" href="#" @click="${this.onSort}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}" data-key="mime" class="${this.sortKey === "mime" ? (this.sortDesc ? "desc" : "asc") : ""}">Mime Type</a></th>\n <th scope="col" class="column col-status is-1 is-hidden-mobile"><a role="button" href="#" @click="${this.onSort}" @keyup="${_misc__WEBPACK_IMPORTED_MODULE_1__.clickOnSpacebarPress}" data-key="status" class="${this.sortKey === "status" ? (this.sortDesc ? "desc" : "asc") : ""}">Status</a></th>\n </tr>\n </thead>\n\n <tbody class="main-scroll" @scroll="${this.onScroll}">\n ${this.sortedResults.length ?\n this.sortedResults.map((result) => lit__WEBPACK_IMPORTED_MODULE_0__.html`\n <tr class="columns result">\n <td class="column col-url is-6"><p class="minihead is-hidden-tablet">URL</p><a @click="${this.onReplay}" data-url="${result.url}" data-ts="${result.ts}" href="${(0,_pageutils__WEBPACK_IMPORTED_MODULE_2__.getReplayLink)("resources", result.url, result.ts)}">\n <keyword-mark keywords="${this.query}">${result.url}</keyword-mark>\n </a></td>\n <td class="column col-ts is-2"><p class="minihead is-hidden-tablet">Date</p>${new Date(result.date).toLocaleString()}</td>\n <td class="column col-mime is-3"><p class="minihead is-hidden-tablet">Mime Type</p>${result.mime}</td>\n <td class="column col-status is-1"><p class="minihead is-hidden-tablet">Status</p>${result.status}</td>\n </tr>\n `) : lit__WEBPACK_IMPORTED_MODULE_0__.html`<tr class="section"><td colspan="4"><i>No Results Found.</i></td></tr>`}\n </tbody>\n </table>\n `;\n }\n\n onSort(event) {\n event.preventDefault();\n\n const key = event.currentTarget.getAttribute("data-key");\n if (key === this.sortKey) {\n this.sortDesc = !this.sortDesc;\n } else {\n this.sortDesc = false;\n this.sortKey = key;\n }\n }\n\n onSortChanged(event) {\n this.sortedResults = event.detail.sortedData;\n this.sortKey = event.detail.sortKey;\n this.sortDesc = event.detail.sortDesc;\n }\n\n onReplay(event) {\n event.preventDefault();\n const data = {\n url: event.currentTarget.getAttribute("data-url"),\n ts: event.currentTarget.getAttribute("data-ts"),\n };\n\n this.dispatchEvent(new CustomEvent("coll-tab-nav", {detail: {data}}));\n return false;\n }\n}\n\ncustomElements.define("wr-coll-resources", URLResources);\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./src/url-resources.js?')},"./node_modules/@lit/reactive-element/development/css-tag.js":
/*!*******************************************************************!*\
!*** ./node_modules/@lit/reactive-element/development/css-tag.js ***!
\*******************************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CSSResult\": () => (/* binding */ CSSResult),\n/* harmony export */ \"adoptStyles\": () => (/* binding */ adoptStyles),\n/* harmony export */ \"css\": () => (/* binding */ css),\n/* harmony export */ \"getCompatibleStyle\": () => (/* binding */ getCompatibleStyle),\n/* harmony export */ \"supportsAdoptingStyleSheets\": () => (/* binding */ supportsAdoptingStyleSheets),\n/* harmony export */ \"unsafeCSS\": () => (/* binding */ unsafeCSS)\n/* harmony export */ });\n/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Whether the current browser supports `adoptedStyleSheets`.\n */\nconst supportsAdoptingStyleSheets = window.ShadowRoot &&\n (window.ShadyCSS === undefined || window.ShadyCSS.nativeShadow) &&\n 'adoptedStyleSheets' in Document.prototype &&\n 'replace' in CSSStyleSheet.prototype;\nconst constructionToken = Symbol();\nconst styleSheetCache = new Map();\n/**\n * A container for a string of CSS text, that may be used to create a CSSStyleSheet.\n *\n * CSSResult is the return value of `css`-tagged template literals and\n * `unsafeCSS()`. In order to ensure that CSSResults are only created via the\n * `css` tag and `unsafeCSS()`, CSSResult cannot be constructed directly.\n */\nclass CSSResult {\n constructor(cssText, safeToken) {\n // This property needs to remain unminified.\n this['_$cssResult$'] = true;\n if (safeToken !== constructionToken) {\n throw new Error('CSSResult is not constructable. Use `unsafeCSS` or `css` instead.');\n }\n this.cssText = cssText;\n }\n // Note, this is a getter so that it's lazy. In practice, this means\n // stylesheets are not created until the first element instance is made.\n get styleSheet() {\n // Note, if `supportsAdoptingStyleSheets` is true then we assume\n // CSSStyleSheet is constructable.\n let styleSheet = styleSheetCache.get(this.cssText);\n if (supportsAdoptingStyleSheets && styleSheet === undefined) {\n styleSheetCache.set(this.cssText, (styleSheet = new CSSStyleSheet()));\n styleSheet.replaceSync(this.cssText);\n }\n return styleSheet;\n }\n toString() {\n return this.cssText;\n }\n}\nconst textFromCSSResult = (value) => {\n // This property needs to remain unminified.\n if (value['_$cssResult$'] === true) {\n return value.cssText;\n }\n else if (typeof value === 'number') {\n return value;\n }\n else {\n throw new Error(`Value passed to 'css' function must be a 'css' function result: ` +\n `${value}. Use 'unsafeCSS' to pass non-literal values, but take care ` +\n `to ensure page security.`);\n }\n};\n/**\n * Wrap a value for interpolation in a [[`css`]] tagged template literal.\n *\n * This is unsafe because untrusted CSS text can be used to phone home\n * or exfiltrate data to an attacker controlled site. Take care to only use\n * this with trusted input.\n */\nconst unsafeCSS = (value) => new CSSResult(typeof value === 'string' ? value : String(value), constructionToken);\n/**\n * A template literal tag which can be used with LitElement's\n * [[LitElement.styles | `styles`]] property to set element styles.\n *\n * For security reasons, only literal string values and number may be used in\n * embedded expressions. To incorporate non-literal values [[`unsafeCSS`]] may\n * be used inside an expression.\n */\nconst css = (strings, ...values) => {\n const cssText = strings.length === 1\n ? strings[0]\n : values.reduce((acc, v, idx) => acc + textFromCSSResult(v) + strings[idx + 1], strings[0]);\n return new CSSResult(cssText, constructionToken);\n};\n/**\n * Applies the given styles to a `shadowRoot`. When Shadow DOM is\n * available but `adoptedStyleSheets` is not, styles are appended to the\n * `shadowRoot` to [mimic spec behavior](https://wicg.github.io/construct-stylesheets/#using-constructed-stylesheets).\n * Note, when shimming is used, any styles that are subsequently placed into\n * the shadowRoot should be placed *before* any shimmed adopted styles. This\n * will match spec behavior that gives adopted sheets precedence over styles in\n * shadowRoot.\n */\nconst adoptStyles = (renderRoot, styles) => {\n if (supportsAdoptingStyleSheets) {\n renderRoot.adoptedStyleSheets = styles.map((s) => s instanceof CSSStyleSheet ? s : s.styleSheet);\n }\n else {\n styles.forEach((s) => {\n const style = document.createElement('style');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nonce = window['litNonce'];\n if (nonce !== undefined) {\n style.setAttribute('nonce', nonce);\n }\n style.textContent = s.cssText;\n renderRoot.appendChild(style);\n });\n }\n};\nconst cssResultFromStyleSheet = (sheet) => {\n let cssText = '';\n for (const rule of sheet.cssRules) {\n cssText += rule.cssText;\n }\n return unsafeCSS(cssText);\n};\nconst getCompatibleStyle = supportsAdoptingStyleSheets\n ? (s) => s\n : (s) => s instanceof CSSStyleSheet ? cssResultFromStyleSheet(s) : s;\n//# sourceMappingURL=css-tag.js.map\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@lit/reactive-element/development/css-tag.js?")},"./node_modules/@lit/reactive-element/development/reactive-element.js":
/*!****************************************************************************!*\
!*** ./node_modules/@lit/reactive-element/development/reactive-element.js ***!
\****************************************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CSSResult\": () => (/* reexport safe */ _css_tag_js__WEBPACK_IMPORTED_MODULE_0__.CSSResult),\n/* harmony export */ \"ReactiveElement\": () => (/* binding */ ReactiveElement),\n/* harmony export */ \"adoptStyles\": () => (/* reexport safe */ _css_tag_js__WEBPACK_IMPORTED_MODULE_0__.adoptStyles),\n/* harmony export */ \"css\": () => (/* reexport safe */ _css_tag_js__WEBPACK_IMPORTED_MODULE_0__.css),\n/* harmony export */ \"defaultConverter\": () => (/* binding */ defaultConverter),\n/* harmony export */ \"getCompatibleStyle\": () => (/* reexport safe */ _css_tag_js__WEBPACK_IMPORTED_MODULE_0__.getCompatibleStyle),\n/* harmony export */ \"notEqual\": () => (/* binding */ notEqual),\n/* harmony export */ \"supportsAdoptingStyleSheets\": () => (/* reexport safe */ _css_tag_js__WEBPACK_IMPORTED_MODULE_0__.supportsAdoptingStyleSheets),\n/* harmony export */ \"unsafeCSS\": () => (/* reexport safe */ _css_tag_js__WEBPACK_IMPORTED_MODULE_0__.unsafeCSS)\n/* harmony export */ });\n/* harmony import */ var _css_tag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./css-tag.js */ \"./node_modules/@lit/reactive-element/development/css-tag.js\");\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar _a, _b, _c;\nvar _d;\n/**\n * Use this module if you want to create your own base class extending\n * [[ReactiveElement]].\n * @packageDocumentation\n */\n\n\nconst DEV_MODE = true;\nlet requestUpdateThenable;\nlet issueWarning;\nconst trustedTypes = window\n .trustedTypes;\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n ? trustedTypes.emptyScript\n : '';\nconst polyfillSupport = DEV_MODE\n ? window.reactiveElementPolyfillSupportDevMode\n : window.reactiveElementPolyfillSupport;\nif (DEV_MODE) {\n // Ensure warnings are issued only 1x, even if multiple versions of Lit\n // are loaded.\n const issuedWarnings = ((_a = globalThis.litIssuedWarnings) !== null && _a !== void 0 ? _a : (globalThis.litIssuedWarnings = new Set()));\n // Issue a warning, if we haven't already.\n issueWarning = (code, warning) => {\n warning += ` See https://lit.dev/msg/${code} for more information.`;\n if (!issuedWarnings.has(warning)) {\n console.warn(warning);\n issuedWarnings.add(warning);\n }\n };\n issueWarning('dev-mode', `Lit is in dev mode. Not recommended for production!`);\n // Issue polyfill support warning.\n if (((_b = window.ShadyDOM) === null || _b === void 0 ? void 0 : _b.inUse) && polyfillSupport === undefined) {\n issueWarning('polyfill-support-missing', `Shadow DOM is being polyfilled via \\`ShadyDOM\\` but ` +\n `the \\`polyfill-support\\` module has not been loaded.`);\n }\n requestUpdateThenable = (name) => ({\n then: (onfulfilled, _onrejected) => {\n issueWarning('request-update-promise', `The \\`requestUpdate\\` method should no longer return a Promise but ` +\n `does so on \\`${name}\\`. Use \\`updateComplete\\` instead.`);\n if (onfulfilled !== undefined) {\n onfulfilled(false);\n }\n },\n });\n}\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = (prop, _obj) => prop;\nconst defaultConverter = {\n toAttribute(value, type) {\n switch (type) {\n case Boolean:\n value = value ? emptyStringForBooleanAttribute : null;\n break;\n case Object:\n case Array:\n // if the value is `null` or `undefined` pass this through\n // to allow removing/no change behavior.\n value = value == null ? value : JSON.stringify(value);\n break;\n }\n return value;\n },\n fromAttribute(value, type) {\n let fromValue = value;\n switch (type) {\n case Boolean:\n fromValue = value !== null;\n break;\n case Number:\n fromValue = value === null ? null : Number(value);\n break;\n case Object:\n case Array:\n // Do *not* generate exception when invalid JSON is set as elements\n // don't normally complain on being mis-configured.\n // TODO(sorvell): Do generate exception in *dev mode*.\n try {\n // Assert to adhere to Bazel's \"must type assert JSON parse\" rule.\n fromValue = JSON.parse(value);\n }\n catch (e) {\n fromValue = null;\n }\n break;\n }\n return fromValue;\n },\n};\n/**\n * Change function that returns true if `value` is different from `oldValue`.\n * This method is used as the default for a property's `hasChanged` function.\n */\nconst notEqual = (value, old) => {\n // This ensures (old==NaN, value==NaN) always returns false\n return old !== value && (old === old || value === value);\n};\nconst defaultPropertyDeclaration = {\n attribute: true,\n type: String,\n converter: defaultConverter,\n reflect: false,\n hasChanged: notEqual,\n};\n/**\n * The Closure JS Compiler doesn't currently have good support for static\n * property semantics where \"this\" is dynamic (e.g.\n * https://github.com/google/closure-compiler/issues/3177 and others) so we use\n * this hack to bypass any rewriting by the compiler.\n */\nconst finalized = 'finalized';\n/**\n * Base element class which manages element properties and attributes. When\n * properties change, the `update` method is asynchronously called. This method\n * should be supplied by subclassers to render updates as desired.\n * @noInheritDoc\n */\nclass ReactiveElement extends HTMLElement {\n constructor() {\n super();\n this.__instanceProperties = new Map();\n /**\n * True if there is a pending update as a result of calling `requestUpdate()`.\n * Should only be read.\n * @category updates\n */\n this.isUpdatePending = false;\n /**\n * Is set to `true` after the first update. The element code cannot assume\n * that `renderRoot` exists before the element `hasUpdated`.\n * @category updates\n */\n this.hasUpdated = false;\n /**\n * Name of currently reflecting property\n */\n this.__reflectingProperty = null;\n this._initialize();\n }\n /**\n * Adds an initializer function to the class that is called during instance\n * construction.\n *\n * This is useful for code that runs against a `ReactiveElement`\n * subclass, such as a decorator, that needs to do work for each\n * instance, such as setting up a `ReactiveController`.\n *\n * ```ts\n * const myDecorator = (target: typeof ReactiveElement, key: string) => {\n * target.addInitializer((instance: ReactiveElement) => {\n * // This is run during construction of the element\n * new MyController(instance);\n * });\n * }\n * ```\n *\n * Decorating a field will then cause each instance to run an initializer\n * that adds a controller:\n *\n * ```ts\n * class MyElement extends LitElement {\n * @myDecorator foo;\n * }\n * ```\n *\n * Initializers are stored per-constructor. Adding an initializer to a\n * subclass does not add it to a superclass. Since initializers are run in\n * constructors, initializers will run in order of the class hierarchy,\n * starting with superclasses and progressing to the instance's class.\n *\n * @nocollapse\n */\n static addInitializer(initializer) {\n var _a;\n (_a = this._initializers) !== null && _a !== void 0 ? _a : (this._initializers = []);\n this._initializers.push(initializer);\n }\n /**\n * Returns a list of attributes corresponding to the registered properties.\n * @nocollapse\n * @category attributes\n */\n static get observedAttributes() {\n // note: piggy backing on this to ensure we're finalized.\n this.finalize();\n const attributes = [];\n // Use forEach so this works even if for/of loops are compiled to for loops\n // expecting arrays\n this.elementProperties.forEach((v, p) => {\n const attr = this.__attributeNameForProperty(p, v);\n if (attr !== undefined) {\n this.__attributeToPropertyMap.set(attr, p);\n attributes.push(attr);\n }\n });\n return attributes;\n }\n /**\n * Creates a property accessor on the element prototype if one does not exist\n * and stores a `PropertyDeclaration` for the property with the given options.\n * The property setter calls the property's `hasChanged` property option\n * or uses a strict identity check to determine whether or not to request\n * an update.\n *\n * This method may be overridden to customize properties; however,\n * when doing so, it's important to call `super.createProperty` to ensure\n * the property is setup correctly. This method calls\n * `getPropertyDescriptor` internally to get a descriptor to install.\n * To customize what properties do when they are get or set, override\n * `getPropertyDescriptor`. To customize the options for a property,\n * implement `createProperty` like this:\n *\n * ```ts\n * static createProperty(name, options) {\n * options = Object.assign(options, {myOption: true});\n * super.createProperty(name, options);\n * }\n * ```\n *\n * @nocollapse\n * @category properties\n */\n static createProperty(name, options = defaultPropertyDeclaration) {\n var _a;\n // if this is a state property, force the attribute to false.\n if (options.state) {\n // Cast as any since this is readonly.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options.attribute = false;\n }\n // Note, since this can be called by the `@property` decorator which\n // is called before `finalize`, we ensure finalization has been kicked off.\n this.finalize();\n this.elementProperties.set(name, options);\n // Do not generate an accessor if the prototype already has one, since\n // it would be lost otherwise and that would never be the user's intention;\n // Instead, we expect users to call `requestUpdate` themselves from\n // user-defined accessors. Note that if the super has an accessor we will\n // still overwrite it\n if (!options.noAccessor && !this.prototype.hasOwnProperty(name)) {\n const key = typeof name === 'symbol' ? Symbol() : `__${name}`;\n const descriptor = this.getPropertyDescriptor(name, key, options);\n if (descriptor !== undefined) {\n Object.defineProperty(this.prototype, name, descriptor);\n if (DEV_MODE) {\n // If this class doesn't have its own set, create one and initialize\n // with the values in the set from the nearest ancestor class, if any.\n if (!this.hasOwnProperty('__reactivePropertyKeys')) {\n this.__reactivePropertyKeys = new Set((_a = this.__reactivePropertyKeys) !== null && _a !== void 0 ? _a : []);\n }\n this.__reactivePropertyKeys.add(name);\n }\n }\n }\n }\n /**\n * Returns a property descriptor to be defined on the given named property.\n * If no descriptor is returned, the property will not become an accessor.\n * For example,\n *\n * ```ts\n * class MyElement extends LitElement {\n * static getPropertyDescriptor(name, key, options) {\n * const defaultDescriptor =\n * super.getPropertyDescriptor(name, key, options);\n * const setter = defaultDescriptor.set;\n * return {\n * get: defaultDescriptor.get,\n * set(value) {\n * setter.call(this, value);\n * // custom action.\n * },\n * configurable: true,\n * enumerable: true\n * }\n * }\n * }\n * ```\n *\n * @nocollapse\n * @category properties\n */\n static getPropertyDescriptor(name, key, options) {\n return {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get() {\n return this[key];\n },\n set(value) {\n const oldValue = this[name];\n this[key] = value;\n this.requestUpdate(name, oldValue, options);\n },\n configurable: true,\n enumerable: true,\n };\n }\n /**\n * Returns the property options associated with the given property.\n * These options are defined with a `PropertyDeclaration` via the `properties`\n * object or the `@property` decorator and are registered in\n * `createProperty(...)`.\n *\n * Note, this method should be considered \"final\" and not overridden. To\n * customize the options for a given property, override [[`createProperty`]].\n *\n * @nocollapse\n * @final\n * @category properties\n */\n static getPropertyOptions(name) {\n return this.elementProperties.get(name) || defaultPropertyDeclaration;\n }\n /**\n * Creates property accessors for registered properties, sets up element\n * styling, and ensures any superclasses are also finalized. Returns true if\n * the element was finalized.\n * @nocollapse\n */\n static finalize() {\n if (this.hasOwnProperty(finalized)) {\n return false;\n }\n this[finalized] = true;\n // finalize any superclasses\n const superCtor = Object.getPrototypeOf(this);\n superCtor.finalize();\n this.elementProperties = new Map(superCtor.elementProperties);\n // initialize Map populated in observedAttributes\n this.__attributeToPropertyMap = new Map();\n // make any properties\n // Note, only process \"own\" properties since this element will inherit\n // any properties defined on the superClass, and finalization ensures\n // the entire prototype chain is finalized.\n if (this.hasOwnProperty(JSCompiler_renameProperty('properties', this))) {\n const props = this.properties;\n // support symbols in properties (IE11 does not support this)\n const propKeys = [\n ...Object.getOwnPropertyNames(props),\n ...Object.getOwnPropertySymbols(props),\n ];\n // This for/of is ok because propKeys is an array\n for (const p of propKeys) {\n // note, use of `any` is due to TypeScript lack of support for symbol in\n // index types\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.createProperty(p, props[p]);\n }\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n // DEV mode warnings\n if (DEV_MODE) {\n const warnRemovedOrRenamed = (name, renamed = false) => {\n if (this.prototype.hasOwnProperty(name)) {\n issueWarning(renamed ? 'renamed-api' : 'removed-api', `\\`${name}\\` is implemented on class ${this.name}. It ` +\n `has been ${renamed ? 'renamed' : 'removed'} ` +\n `in this version of LitElement.`);\n }\n };\n warnRemovedOrRenamed('initialize');\n warnRemovedOrRenamed('requestUpdateInternal');\n warnRemovedOrRenamed('_getUpdateComplete', true);\n }\n return true;\n }\n /**\n * Takes the styles the user supplied via the `static styles` property and\n * returns the array of styles to apply to the element.\n * Override this method to integrate into a style management system.\n *\n * Styles are deduplicated preserving the _last_ instance in the list. This\n * is a performance optimization to avoid duplicated styles that can occur\n * especially when composing via subclassing. The last item is kept to try\n * to preserve the cascade order with the assumption that it's most important\n * that last added styles override previous styles.\n *\n * @nocollapse\n * @category styles\n */\n static finalizeStyles(styles) {\n const elementStyles = [];\n if (Array.isArray(styles)) {\n // Dedupe the flattened array in reverse order to preserve the last items.\n // Casting to Array<unknown> works around TS error that\n // appears to come from trying to flatten a type CSSResultArray.\n const set = new Set(styles.flat(Infinity).reverse());\n // Then preserve original order by adding the set items in reverse order.\n for (const s of set) {\n elementStyles.unshift((0,_css_tag_js__WEBPACK_IMPORTED_MODULE_0__.getCompatibleStyle)(s));\n }\n }\n else if (styles !== undefined) {\n elementStyles.push((0,_css_tag_js__WEBPACK_IMPORTED_MODULE_0__.getCompatibleStyle)(styles));\n }\n return elementStyles;\n }\n /**\n * Returns the property name for the given attribute `name`.\n * @nocollapse\n */\n static __attributeNameForProperty(name, options) {\n const attribute = options.attribute;\n return attribute === false\n ? undefined\n : typeof attribute === 'string'\n ? attribute\n : typeof name === 'string'\n ? name.toLowerCase()\n : undefined;\n }\n /**\n * Internal only override point for customizing work done when elements\n * are constructed.\n *\n * @internal\n */\n _initialize() {\n var _a;\n this.__updatePromise = new Promise((res) => (this.enableUpdating = res));\n this._$changedProperties = new Map();\n this.__saveInstanceProperties();\n // ensures first update will be caught by an early access of\n // `updateComplete`\n this.requestUpdate();\n (_a = this.constructor._initializers) === null || _a === void 0 ? void 0 : _a.forEach((i) => i(this));\n }\n /**\n * Registers a `ReactiveController` to participate in the element's reactive\n * update cycle. The element automatically calls into any registered\n * controllers during its lifecycle callbacks.\n *\n * If the element is connected when `addController()` is called, the\n * controller's `hostConnected()` callback will be immediately called.\n * @category controllers\n */\n addController(controller) {\n var _a, _b;\n ((_a = this.__controllers) !== null && _a !== void 0 ? _a : (this.__controllers = [])).push(controller);\n // If a controller is added after the element has been connected,\n // call hostConnected. Note, re-using existence of `renderRoot` here\n // (which is set in connectedCallback) to avoid the need to track a\n // first connected state.\n if (this.renderRoot !== undefined && this.isConnected) {\n (_b = controller.hostConnected) === null || _b === void 0 ? void 0 : _b.call(controller);\n }\n }\n /**\n * Removes a `ReactiveController` from the element.\n * @category controllers\n */\n removeController(controller) {\n var _a;\n // Note, if the indexOf is -1, the >>> will flip the sign which makes the\n // splice do nothing.\n (_a = this.__controllers) === null || _a === void 0 ? void 0 : _a.splice(this.__controllers.indexOf(controller) >>> 0, 1);\n }\n /**\n * Fixes any properties set on the instance before upgrade time.\n * Otherwise these would shadow the accessor and break these properties.\n * The properties are stored in a Map which is played back after the\n * constructor runs. Note, on very old versions of Safari (<=9) or Chrome\n * (<=41), properties created for native platform properties like (`id` or\n * `name`) may not have default values set in the element constructor. On\n * these browsers native properties appear on instances and therefore their\n * default value will overwrite any element default (e.g. if the element sets\n * this.id = 'id' in the constructor, the 'id' will become '' since this is\n * the native platform default).\n */\n __saveInstanceProperties() {\n // Use forEach so this works even if for/of loops are compiled to for loops\n // expecting arrays\n this.constructor.elementProperties.forEach((_v, p) => {\n if (this.hasOwnProperty(p)) {\n this.__instanceProperties.set(p, this[p]);\n delete this[p];\n }\n });\n }\n /**\n * Returns the node into which the element should render and by default\n * creates and returns an open shadowRoot. Implement to customize where the\n * element's DOM is rendered. For example, to render into the element's\n * childNodes, return `this`.\n *\n * @return Returns a node into which to render.\n * @category rendering\n */\n createRenderRoot() {\n var _a;\n const renderRoot = (_a = this.shadowRoot) !== null && _a !== void 0 ? _a : this.attachShadow(this.constructor.shadowRootOptions);\n (0,_css_tag_js__WEBPACK_IMPORTED_MODULE_0__.adoptStyles)(renderRoot, this.constructor.elementStyles);\n return renderRoot;\n }\n /**\n * On first connection, creates the element's renderRoot, sets up\n * element styling, and enables updating.\n * @category lifecycle\n */\n connectedCallback() {\n var _a;\n // create renderRoot before first update.\n if (this.renderRoot === undefined) {\n this.renderRoot = this.createRenderRoot();\n }\n this.enableUpdating(true);\n (_a = this.__controllers) === null || _a === void 0 ? void 0 : _a.forEach((c) => { var _a; return (_a = c.hostConnected) === null || _a === void 0 ? void 0 : _a.call(c); });\n }\n /**\n * Note, this method should be considered final and not overridden. It is\n * overridden on the element instance with a function that triggers the first\n * update.\n * @category updates\n */\n enableUpdating(_requestedUpdate) { }\n /**\n * Allows for `super.disconnectedCallback()` in extensions while\n * reserving the possibility of making non-breaking feature additions\n * when disconnecting at some point in the future.\n * @category lifecycle\n */\n disconnectedCallback() {\n var _a;\n (_a = this.__controllers) === null || _a === void 0 ? void 0 : _a.forEach((c) => { var _a; return (_a = c.hostDisconnected) === null || _a === void 0 ? void 0 : _a.call(c); });\n }\n /**\n * Synchronizes property values when attributes change.\n * @category attributes\n */\n attributeChangedCallback(name, _old, value) {\n this._$attributeToProperty(name, value);\n }\n __propertyToAttribute(name, value, options = defaultPropertyDeclaration) {\n var _a, _b;\n const attr = this.constructor.__attributeNameForProperty(name, options);\n if (attr !== undefined && options.reflect === true) {\n const toAttribute = (_b = (_a = options.converter) === null || _a === void 0 ? void 0 : _a.toAttribute) !== null && _b !== void 0 ? _b : defaultConverter.toAttribute;\n const attrValue = toAttribute(value, options.type);\n if (DEV_MODE &&\n this.constructor.enabledWarnings.indexOf('migration') >= 0 &&\n attrValue === undefined) {\n issueWarning('undefined-attribute-value', `The attribute value for the ${name} property is ` +\n `undefined on element ${this.localName}. The attribute will be ` +\n `removed, but in the previous version of \\`ReactiveElement\\`, ` +\n `the attribute would not have changed.`);\n }\n // Track if the property is being reflected to avoid\n // setting the property again via `attributeChangedCallback`. Note:\n // 1. this takes advantage of the fact that the callback is synchronous.\n // 2. will behave incorrectly if multiple attributes are in the reaction\n // stack at time of calling. However, since we process attributes\n // in `update` this should not be possible (or an extreme corner case\n // that we'd like to discover).\n // mark state reflecting\n this.__reflectingProperty = name;\n if (attrValue == null) {\n this.removeAttribute(attr);\n }\n else {\n this.setAttribute(attr, attrValue);\n }\n // mark state not reflecting\n this.__reflectingProperty = null;\n }\n }\n /** @internal */\n _$attributeToProperty(name, value) {\n var _a, _b, _c;\n const ctor = this.constructor;\n // Note, hint this as an `AttributeMap` so closure clearly understands\n // the type; it has issues with tracking types through statics\n const propName = ctor.__attributeToPropertyMap.get(name);\n // Use tracking info to avoid reflecting a property value to an attribute\n // if it was just set because the attribute changed.\n if (propName !== undefined && this.__reflectingProperty !== propName) {\n const options = ctor.getPropertyOptions(propName);\n const converter = options.converter;\n const fromAttribute = (_c = (_b = (_a = converter) === null || _a === void 0 ? void 0 : _a.fromAttribute) !== null && _b !== void 0 ? _b : (typeof converter === 'function'\n ? converter\n : null)) !== null && _c !== void 0 ? _c : defaultConverter.fromAttribute;\n // mark state reflecting\n this.__reflectingProperty = propName;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this[propName] = fromAttribute(value, options.type);\n // mark state not reflecting\n this.__reflectingProperty = null;\n }\n }\n /**\n * Requests an update which is processed asynchronously. This should be called\n * when an element should update based on some state not triggered by setting\n * a reactive property. In this case, pass no arguments. It should also be\n * called when manually implementing a property setter. In this case, pass the\n * property `name` and `oldValue` to ensure that any configured property\n * options are honored.\n *\n * @param name name of requesting property\n * @param oldValue old value of requesting property\n * @param options property options to use instead of the previously\n * configured options\n * @category updates\n */\n requestUpdate(name, oldValue, options) {\n let shouldRequestUpdate = true;\n // If we have a property key, perform property update steps.\n if (name !== undefined) {\n options =\n options ||\n this.constructor.getPropertyOptions(name);\n const hasChanged = options.hasChanged || notEqual;\n if (hasChanged(this[name], oldValue)) {\n if (!this._$changedProperties.has(name)) {\n this._$changedProperties.set(name, oldValue);\n }\n // Add to reflecting properties set.\n // Note, it's important that every change has a chance to add the\n // property to `_reflectingProperties`. This ensures setting\n // attribute + property reflects correctly.\n if (options.reflect === true && this.__reflectingProperty !== name) {\n if (this.__reflectingProperties === undefined) {\n this.__reflectingProperties = new Map();\n }\n this.__reflectingProperties.set(name, options);\n }\n }\n else {\n // Abort the request if the property should not be considered changed.\n shouldRequestUpdate = false;\n }\n }\n if (!this.isUpdatePending && shouldRequestUpdate) {\n this.__updatePromise = this.__enqueueUpdate();\n }\n // Note, since this no longer returns a promise, in dev mode we return a\n // thenable which warns if it's called.\n return DEV_MODE\n ? requestUpdateThenable(this.localName)\n : undefined;\n }\n /**\n * Sets up the element to asynchronously update.\n */\n async __enqueueUpdate() {\n this.isUpdatePending = true;\n try {\n // Ensure any previous update has resolved before updating.\n // This `await` also ensures that property changes are batched.\n await this.__updatePromise;\n }\n catch (e) {\n // Refire any previous errors async so they do not disrupt the update\n // cycle. Errors are refired so developers have a chance to observe\n // them, and this can be done by implementing\n // `window.onunhandledrejection`.\n Promise.reject(e);\n }\n const result = this.scheduleUpdate();\n // If `scheduleUpdate` returns a Promise, we await it. This is done to\n // enable coordinating updates with a scheduler. Note, the result is\n // checked to avoid delaying an additional microtask unless we need to.\n if (result != null) {\n await result;\n }\n return !this.isUpdatePending;\n }\n /**\n * Schedules an element update. You can override this method to change the\n * timing of updates by returning a Promise. The update will await the\n * returned Promise, and you should resolve the Promise to allow the update\n * to proceed. If this method is overridden, `super.scheduleUpdate()`\n * must be called.\n *\n * For instance, to schedule updates to occur just before the next frame:\n *\n * ```ts\n * override protected async scheduleUpdate(): Promise<unknown> {\n * await new Promise((resolve) => requestAnimationFrame(() => resolve()));\n * super.scheduleUpdate();\n * }\n * ```\n * @category updates\n */\n scheduleUpdate() {\n return this.performUpdate();\n }\n /**\n * Performs an element update. Note, if an exception is thrown during the\n * update, `firstUpdated` and `updated` will not be called.\n *\n * Call `performUpdate()` to immediately process a pending update. This should\n * generally not be needed, but it can be done in rare cases when you need to\n * update synchronously.\n *\n * Note: To ensure `performUpdate()` synchronously completes a pending update,\n * it should not be overridden. In LitElement 2.x it was suggested to override\n * `performUpdate()` to also customizing update scheduling. Instead, you should now\n * override `scheduleUpdate()`. For backwards compatibility with LitElement 2.x,\n * scheduling updates via `performUpdate()` continues to work, but will make\n * also calling `performUpdate()` to synchronously process updates difficult.\n *\n * @category updates\n */\n performUpdate() {\n var _a, _b;\n // Abort any update if one is not pending when this is called.\n // This can happen if `performUpdate` is called early to \"flush\"\n // the update.\n if (!this.isUpdatePending) {\n return;\n }\n // create renderRoot before first update.\n if (!this.hasUpdated) {\n // Produce warning if any class properties are shadowed by class fields\n if (DEV_MODE) {\n const shadowedProperties = [];\n (_a = this.constructor.__reactivePropertyKeys) === null || _a === void 0 ? void 0 : _a.forEach((p) => {\n var _a;\n if (this.hasOwnProperty(p) && !((_a = this.__instanceProperties) === null || _a === void 0 ? void 0 : _a.has(p))) {\n shadowedProperties.push(p);\n }\n });\n if (shadowedProperties.length) {\n throw new Error(`The following properties on element ${this.localName} will not ` +\n `trigger updates as expected because they are set using class ` +\n `fields: ${shadowedProperties.join(', ')}. ` +\n `Native class fields and some compiled output will overwrite ` +\n `accessors used for detecting changes. See ` +\n `https://lit.dev/msg/class-field-shadowing ` +\n `for more information.`);\n }\n }\n }\n // Mixin instance properties once, if they exist.\n if (this.__instanceProperties) {\n // Use forEach so this works even if for/of loops are compiled to for loops\n // expecting arrays\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.__instanceProperties.forEach((v, p) => (this[p] = v));\n this.__instanceProperties = undefined;\n }\n let shouldUpdate = false;\n const changedProperties = this._$changedProperties;\n try {\n shouldUpdate = this.shouldUpdate(changedProperties);\n if (shouldUpdate) {\n this.willUpdate(changedProperties);\n (_b = this.__controllers) === null || _b === void 0 ? void 0 : _b.forEach((c) => { var _a; return (_a = c.hostUpdate) === null || _a === void 0 ? void 0 : _a.call(c); });\n this.update(changedProperties);\n }\n else {\n this.__markUpdated();\n }\n }\n catch (e) {\n // Prevent `firstUpdated` and `updated` from running when there's an\n // update exception.\n shouldUpdate = false;\n // Ensure element can accept additional updates after an exception.\n this.__markUpdated();\n throw e;\n }\n // The update is no longer considered pending and further updates are now allowed.\n if (shouldUpdate) {\n this._$didUpdate(changedProperties);\n }\n }\n /**\n * @category updates\n */\n willUpdate(_changedProperties) { }\n // Note, this is an override point for polyfill-support.\n // @internal\n _$didUpdate(changedProperties) {\n var _a;\n (_a = this.__controllers) === null || _a === void 0 ? void 0 : _a.forEach((c) => { var _a; return (_a = c.hostUpdated) === null || _a === void 0 ? void 0 : _a.call(c); });\n if (!this.hasUpdated) {\n this.hasUpdated = true;\n this.firstUpdated(changedProperties);\n }\n this.updated(changedProperties);\n if (DEV_MODE &&\n this.isUpdatePending &&\n this.constructor.enabledWarnings.indexOf('change-in-update') >= 0) {\n issueWarning('change-in-update', `Element ${this.localName} scheduled an update ` +\n `(generally because a property was set) ` +\n `after an update completed, causing a new update to be scheduled. ` +\n `This is inefficient and should be avoided unless the next update ` +\n `can only be scheduled as a side effect of the previous update.`);\n }\n }\n __markUpdated() {\n this._$changedProperties = new Map();\n this.isUpdatePending = false;\n }\n /**\n * Returns a Promise that resolves when the element has completed updating.\n * The Promise value is a boolean that is `true` if the element completed the\n * update without triggering another update. The Promise result is `false` if\n * a property was set inside `updated()`. If the Promise is rejected, an\n * exception was thrown during the update.\n *\n * To await additional asynchronous work, override the `getUpdateComplete`\n * method. For example, it is sometimes useful to await a rendered element\n * before fulfilling this Promise. To do this, first await\n * `super.getUpdateComplete()`, then any subsequent state.\n *\n * @return A promise of a boolean that resolves to true if the update completed\n * without triggering another update.\n * @category updates\n */\n get updateComplete() {\n return this.getUpdateComplete();\n }\n /**\n * Override point for the `updateComplete` promise.\n *\n * It is not safe to override the `updateComplete` getter directly due to a\n * limitation in TypeScript which means it is not possible to call a\n * superclass getter (e.g. `super.updateComplete.then(...)`) when the target\n * language is ES5 (https://github.com/microsoft/TypeScript/issues/338).\n * This method should be overridden instead. For example:\n *\n * ```ts\n * class MyElement extends LitElement {\n * override async getUpdateComplete() {\n * const result = await super.getUpdateComplete();\n * await this._myChild.updateComplete;\n * return result;\n * }\n * }\n * ```\n *\n * @return A promise of a boolean that resolves to true if the update completed\n * without triggering another update.\n * @category updates\n */\n getUpdateComplete() {\n return this.__updatePromise;\n }\n /**\n * Controls whether or not `update()` should be called when the element requests\n * an update. By default, this method always returns `true`, but this can be\n * customized to control when to update.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n shouldUpdate(_changedProperties) {\n return true;\n }\n /**\n * Updates the element. This method reflects property values to attributes.\n * It can be overridden to render and keep updated element DOM.\n * Setting properties inside this method will *not* trigger\n * another update.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n update(_changedProperties) {\n if (this.__reflectingProperties !== undefined) {\n // Use forEach so this works even if for/of loops are compiled to for\n // loops expecting arrays\n this.__reflectingProperties.forEach((v, k) => this.__propertyToAttribute(k, this[k], v));\n this.__reflectingProperties = undefined;\n }\n this.__markUpdated();\n }\n /**\n * Invoked whenever the element is updated. Implement to perform\n * post-updating tasks via DOM APIs, for example, focusing an element.\n *\n * Setting properties inside this method will trigger the element to update\n * again after this update cycle completes.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n updated(_changedProperties) { }\n /**\n * Invoked when the element is first updated. Implement to perform one time\n * work on the element after update.\n *\n * Setting properties inside this method will trigger the element to update\n * again after this update cycle completes.\n *\n * @param _changedProperties Map of changed properties with old values\n * @category updates\n */\n firstUpdated(_changedProperties) { }\n}\n_d = finalized;\n/**\n * Marks class as having finished creating properties.\n */\nReactiveElement[_d] = true;\n/**\n * Memoized list of all element properties, including any superclass properties.\n * Created lazily on user subclasses when finalizing the class.\n * @nocollapse\n * @category properties\n */\nReactiveElement.elementProperties = new Map();\n/**\n * Memoized list of all element styles.\n * Created lazily on user subclasses when finalizing the class.\n * @nocollapse\n * @category styles\n */\nReactiveElement.elementStyles = [];\n/**\n * Options used when calling `attachShadow`. Set this property to customize\n * the options for the shadowRoot; for example, to create a closed\n * shadowRoot: `{mode: 'closed'}`.\n *\n * Note, these options are used in `createRenderRoot`. If this method\n * is customized, options should be respected if possible.\n * @nocollapse\n * @category rendering\n */\nReactiveElement.shadowRootOptions = { mode: 'open' };\n// Apply polyfills if available\npolyfillSupport === null || polyfillSupport === void 0 ? void 0 : polyfillSupport({ ReactiveElement });\n// Dev mode warnings...\nif (DEV_MODE) {\n // Default warning set.\n ReactiveElement.enabledWarnings = ['change-in-update'];\n const ensureOwnWarnings = function (ctor) {\n if (!ctor.hasOwnProperty(JSCompiler_renameProperty('enabledWarnings', ctor))) {\n ctor.enabledWarnings = ctor.enabledWarnings.slice();\n }\n };\n ReactiveElement.enableWarning = function (warning) {\n ensureOwnWarnings(this);\n if (this.enabledWarnings.indexOf(warning) < 0) {\n this.enabledWarnings.push(warning);\n }\n };\n ReactiveElement.disableWarning = function (warning) {\n ensureOwnWarnings(this);\n const i = this.enabledWarnings.indexOf(warning);\n if (i >= 0) {\n this.enabledWarnings.splice(i, 1);\n }\n };\n}\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for ReactiveElement usage.\n((_c = globalThis.reactiveElementVersions) !== null && _c !== void 0 ? _c : (globalThis.reactiveElementVersions = [])).push('1.1.1');\nif (DEV_MODE && globalThis.reactiveElementVersions.length > 1) {\n issueWarning('multiple-versions', `Multiple versions of Lit loaded. Loading multiple versions ` +\n `is not recommended.`);\n}\n//# sourceMappingURL=reactive-element.js.map\n\n//# sourceURL=webpack://replaywebpage/./node_modules/@lit/reactive-element/development/reactive-element.js?")},"./node_modules/lit-element/development/lit-element.js":
/*!*************************************************************!*\
!*** ./node_modules/lit-element/development/lit-element.js ***!
\*************************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CSSResult\": () => (/* reexport safe */ _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.CSSResult),\n/* harmony export */ \"INTERNAL\": () => (/* reexport safe */ lit_html__WEBPACK_IMPORTED_MODULE_1__.INTERNAL),\n/* harmony export */ \"LitElement\": () => (/* binding */ LitElement),\n/* harmony export */ \"ReactiveElement\": () => (/* reexport safe */ _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.ReactiveElement),\n/* harmony export */ \"UpdatingElement\": () => (/* binding */ UpdatingElement),\n/* harmony export */ \"_$LE\": () => (/* binding */ _$LE),\n/* harmony export */ \"_$LH\": () => (/* reexport safe */ lit_html__WEBPACK_IMPORTED_MODULE_1__._$LH),\n/* harmony export */ \"adoptStyles\": () => (/* reexport safe */ _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.adoptStyles),\n/* harmony export */ \"css\": () => (/* reexport safe */ _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.css),\n/* harmony export */ \"defaultConverter\": () => (/* reexport safe */ _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.defaultConverter),\n/* harmony export */ \"getCompatibleStyle\": () => (/* reexport safe */ _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.getCompatibleStyle),\n/* harmony export */ \"html\": () => (/* reexport safe */ lit_html__WEBPACK_IMPORTED_MODULE_1__.html),\n/* harmony export */ \"noChange\": () => (/* reexport safe */ lit_html__WEBPACK_IMPORTED_MODULE_1__.noChange),\n/* harmony export */ \"notEqual\": () => (/* reexport safe */ _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.notEqual),\n/* harmony export */ \"nothing\": () => (/* reexport safe */ lit_html__WEBPACK_IMPORTED_MODULE_1__.nothing),\n/* harmony export */ \"render\": () => (/* reexport safe */ lit_html__WEBPACK_IMPORTED_MODULE_1__.render),\n/* harmony export */ \"supportsAdoptingStyleSheets\": () => (/* reexport safe */ _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.supportsAdoptingStyleSheets),\n/* harmony export */ \"svg\": () => (/* reexport safe */ lit_html__WEBPACK_IMPORTED_MODULE_1__.svg),\n/* harmony export */ \"unsafeCSS\": () => (/* reexport safe */ _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.unsafeCSS)\n/* harmony export */ });\n/* harmony import */ var _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lit/reactive-element */ \"./node_modules/@lit/reactive-element/development/reactive-element.js\");\n/* harmony import */ var lit_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lit-html */ \"./node_modules/lit-html/development/lit-html.js\");\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar _a, _b, _c;\n/**\n * The main LitElement module, which defines the [[`LitElement`]] base class and\n * related APIs.\n *\n * LitElement components can define a template and a set of observed\n * properties. Changing an observed property triggers a re-render of the\n * element.\n *\n * Import [[`LitElement`]] and [[`html`]] from this module to create a\n * component:\n *\n * ```js\n * import {LitElement, html} from 'lit-element';\n *\n * class MyElement extends LitElement {\n *\n * // Declare observed properties\n * static get properties() {\n * return {\n * adjective: {}\n * }\n * }\n *\n * constructor() {\n * this.adjective = 'awesome';\n * }\n *\n * // Define the element's template\n * render() {\n * return html`<p>your ${adjective} template here</p>`;\n * }\n * }\n *\n * customElements.define('my-element', MyElement);\n * ```\n *\n * `LitElement` extends [[`ReactiveElement`]] and adds lit-html templating.\n * The `ReactiveElement` class is provided for users that want to build\n * their own custom element base classes that don't use lit-html.\n *\n * @packageDocumentation\n */\n\n\n\n\n// For backwards compatibility export ReactiveElement as UpdatingElement. Note,\n// IE transpilation requires exporting like this.\nconst UpdatingElement = _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.ReactiveElement;\nconst DEV_MODE = true;\nlet issueWarning;\nif (DEV_MODE) {\n // Ensure warnings are issued only 1x, even if multiple versions of Lit\n // are loaded.\n const issuedWarnings = ((_a = globalThis.litIssuedWarnings) !== null && _a !== void 0 ? _a : (globalThis.litIssuedWarnings = new Set()));\n // Issue a warning, if we haven't already.\n issueWarning = (code, warning) => {\n warning += ` See https://lit.dev/msg/${code} for more information.`;\n if (!issuedWarnings.has(warning)) {\n console.warn(warning);\n issuedWarnings.add(warning);\n }\n };\n}\n/**\n * Base element class that manages element properties and attributes, and\n * renders a lit-html template.\n *\n * To define a component, subclass `LitElement` and implement a\n * `render` method to provide the component's template. Define properties\n * using the [[`properties`]] property or the [[`property`]] decorator.\n */\nclass LitElement extends _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.ReactiveElement {\n constructor() {\n super(...arguments);\n /**\n * @category rendering\n */\n this.renderOptions = { host: this };\n this.__childPart = undefined;\n }\n /**\n * @category rendering\n */\n createRenderRoot() {\n var _a;\n var _b;\n const renderRoot = super.createRenderRoot();\n // When adoptedStyleSheets are shimmed, they are inserted into the\n // shadowRoot by createRenderRoot. Adjust the renderBefore node so that\n // any styles in Lit content render before adoptedStyleSheets. This is\n // important so that adoptedStyleSheets have precedence over styles in\n // the shadowRoot.\n (_a = (_b = this.renderOptions).renderBefore) !== null && _a !== void 0 ? _a : (_b.renderBefore = renderRoot.firstChild);\n return renderRoot;\n }\n /**\n * Updates the element. This method reflects property values to attributes\n * and calls `render` to render DOM via lit-html. Setting properties inside\n * this method will *not* trigger another update.\n * @param changedProperties Map of changed properties with old values\n * @category updates\n */\n update(changedProperties) {\n // Setting properties in `render` should not trigger an update. Since\n // updates are allowed after super.update, it's important to call `render`\n // before that.\n const value = this.render();\n if (!this.hasUpdated) {\n this.renderOptions.isConnected = this.isConnected;\n }\n super.update(changedProperties);\n this.__childPart = (0,lit_html__WEBPACK_IMPORTED_MODULE_1__.render)(value, this.renderRoot, this.renderOptions);\n }\n /**\n * Invoked when the component is added to the document's DOM.\n *\n * In `connectedCallback()` you should setup tasks that should only occur when\n * the element is connected to the document. The most common of these is\n * adding event listeners to nodes external to the element, like a keydown\n * event handler added to the window.\n *\n * ```ts\n * connectedCallback() {\n * super.connectedCallback();\n * addEventListener('keydown', this._handleKeydown);\n * }\n * ```\n *\n * Typically, anything done in `connectedCallback()` should be undone when the\n * element is disconnected, in `disconnectedCallback()`.\n *\n * @category lifecycle\n */\n connectedCallback() {\n var _a;\n super.connectedCallback();\n (_a = this.__childPart) === null || _a === void 0 ? void 0 : _a.setConnected(true);\n }\n /**\n * Invoked when the component is removed from the document's DOM.\n *\n * This callback is the main signal to the element that it may no longer be\n * used. `disconnectedCallback()` should ensure that nothing is holding a\n * reference to the element (such as event listeners added to nodes external\n * to the element), so that it is free to be garbage collected.\n *\n * ```ts\n * disconnectedCallback() {\n * super.disconnectedCallback();\n * window.removeEventListener('keydown', this._handleKeydown);\n * }\n * ```\n *\n * An element may be re-connected after being disconnected.\n *\n * @category lifecycle\n */\n disconnectedCallback() {\n var _a;\n super.disconnectedCallback();\n (_a = this.__childPart) === null || _a === void 0 ? void 0 : _a.setConnected(false);\n }\n /**\n * Invoked on each update to perform rendering tasks. This method may return\n * any value renderable by lit-html's `ChildPart` - typically a\n * `TemplateResult`. Setting properties inside this method will *not* trigger\n * the element to update.\n * @category rendering\n */\n render() {\n return lit_html__WEBPACK_IMPORTED_MODULE_1__.noChange;\n }\n}\n/**\n * Ensure this class is marked as `finalized` as an optimization ensuring\n * it will not needlessly try to `finalize`.\n *\n * Note this property name is a string to prevent breaking Closure JS Compiler\n * optimizations. See @lit/reactive-element for more information.\n */\nLitElement['finalized'] = true;\n// This property needs to remain unminified.\nLitElement['_$litElement$'] = true;\n// Install hydration if available\n(_b = globalThis.litElementHydrateSupport) === null || _b === void 0 ? void 0 : _b.call(globalThis, { LitElement });\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n ? globalThis.litElementPolyfillSupportDevMode\n : globalThis.litElementPolyfillSupport;\npolyfillSupport === null || polyfillSupport === void 0 ? void 0 : polyfillSupport({ LitElement });\n// DEV mode warnings\nif (DEV_MODE) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // Note, for compatibility with closure compilation, this access\n // needs to be as a string property index.\n LitElement['finalize'] = function () {\n const finalized = _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__.ReactiveElement.finalize.call(this);\n if (!finalized) {\n return false;\n }\n const warnRemovedOrRenamed = (obj, name, renamed = false) => {\n if (obj.hasOwnProperty(name)) {\n const ctorName = (typeof obj === 'function' ? obj : obj.constructor)\n .name;\n issueWarning(renamed ? 'renamed-api' : 'removed-api', `\\`${name}\\` is implemented on class ${ctorName}. It ` +\n `has been ${renamed ? 'renamed' : 'removed'} ` +\n `in this version of LitElement.`);\n }\n };\n warnRemovedOrRenamed(this, 'render');\n warnRemovedOrRenamed(this, 'getStyles', true);\n warnRemovedOrRenamed(this.prototype, 'adoptStyles');\n return true;\n };\n /* eslint-enable @typescript-eslint/no-explicit-any */\n}\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports mangled in the\n * client side code, we export a _$LE object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-html, since this module re-exports all of lit-html.\n *\n * @private\n */\nconst _$LE = {\n _$attributeToProperty: (el, name, value) => {\n // eslint-disable-next-line\n el._$attributeToProperty(name, value);\n },\n // eslint-disable-next-line\n _$changedProperties: (el) => el._$changedProperties,\n};\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for LitElement usage.\n((_c = globalThis.litElementVersions) !== null && _c !== void 0 ? _c : (globalThis.litElementVersions = [])).push('3.1.1');\nif (DEV_MODE && globalThis.litElementVersions.length > 1) {\n issueWarning('multiple-versions', `Multiple versions of Lit loaded. Loading multiple versions ` +\n `is not recommended.`);\n}\n//# sourceMappingURL=lit-element.js.map\n\n//# sourceURL=webpack://replaywebpage/./node_modules/lit-element/development/lit-element.js?")},"./node_modules/lit-html/development/directive.js":
/*!********************************************************!*\
!*** ./node_modules/lit-html/development/directive.js ***!
\********************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "Directive": () => (/* binding */ Directive),\n/* harmony export */ "PartType": () => (/* binding */ PartType),\n/* harmony export */ "directive": () => (/* binding */ directive)\n/* harmony export */ });\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst PartType = {\n ATTRIBUTE: 1,\n CHILD: 2,\n PROPERTY: 3,\n BOOLEAN_ATTRIBUTE: 4,\n EVENT: 5,\n ELEMENT: 6,\n};\n/**\n * Creates a user-facing directive function from a Directive class. This\n * function has the same parameters as the directive\'s render() method.\n */\nconst directive = (c) => (...values) => ({\n // This property needs to remain unminified.\n [\'_$litDirective$\']: c,\n values,\n});\n/**\n * Base class for creating custom directives. Users should extend this class,\n * implement `render` and/or `update`, and then pass their subclass to\n * `directive`.\n */\nclass Directive {\n constructor(_partInfo) { }\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n /** @internal */\n _$initialize(part, parent, attributeIndex) {\n this.__part = part;\n this._$parent = parent;\n this.__attributeIndex = attributeIndex;\n }\n /** @internal */\n _$resolve(part, props) {\n return this.update(part, props);\n }\n update(_part, props) {\n return this.render(...props);\n }\n}\n//# sourceMappingURL=directive.js.map\n\n//# sourceURL=webpack://replaywebpage/./node_modules/lit-html/development/directive.js?')},"./node_modules/lit-html/development/directives/if-defined.js":
/*!********************************************************************!*\
!*** ./node_modules/lit-html/development/directives/if-defined.js ***!
\********************************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "ifDefined": () => (/* binding */ ifDefined)\n/* harmony export */ });\n/* harmony import */ var _lit_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lit-html.js */ "./node_modules/lit-html/development/lit-html.js");\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * For AttributeParts, sets the attribute if the value is defined and removes\n * the attribute if the value is undefined.\n *\n * For other part types, this directive is a no-op.\n */\nconst ifDefined = (value) => value !== null && value !== void 0 ? value : _lit_html_js__WEBPACK_IMPORTED_MODULE_0__.nothing;\n//# sourceMappingURL=if-defined.js.map\n\n//# sourceURL=webpack://replaywebpage/./node_modules/lit-html/development/directives/if-defined.js?')},"./node_modules/lit-html/development/directives/style-map.js":
/*!*******************************************************************!*\
!*** ./node_modules/lit-html/development/directives/style-map.js ***!
\*******************************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"styleMap\": () => (/* binding */ styleMap)\n/* harmony export */ });\n/* harmony import */ var _lit_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lit-html.js */ \"./node_modules/lit-html/development/lit-html.js\");\n/* harmony import */ var _directive_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../directive.js */ \"./node_modules/lit-html/development/directive.js\");\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n\nclass StyleMapDirective extends _directive_js__WEBPACK_IMPORTED_MODULE_1__.Directive {\n constructor(partInfo) {\n var _a;\n super(partInfo);\n if (partInfo.type !== _directive_js__WEBPACK_IMPORTED_MODULE_1__.PartType.ATTRIBUTE ||\n partInfo.name !== 'style' ||\n ((_a = partInfo.strings) === null || _a === void 0 ? void 0 : _a.length) > 2) {\n throw new Error('The `styleMap` directive must be used in the `style` attribute ' +\n 'and must be the only part in the attribute.');\n }\n }\n render(styleInfo) {\n return Object.keys(styleInfo).reduce((style, prop) => {\n const value = styleInfo[prop];\n if (value == null) {\n return style;\n }\n // Convert property names from camel-case to dash-case, i.e.:\n // `backgroundColor` -> `background-color`\n // Vendor-prefixed names need an extra `-` appended to front:\n // `webkitAppearance` -> `-webkit-appearance`\n // Exception is any property name containing a dash, including\n // custom properties; we assume these are already dash-cased i.e.:\n // `--my-button-color` --\x3e `--my-button-color`\n prop = prop\n .replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, '-$&')\n .toLowerCase();\n return style + `${prop}:${value};`;\n }, '');\n }\n update(part, [styleInfo]) {\n const { style } = part.element;\n if (this._previousStyleProperties === undefined) {\n this._previousStyleProperties = new Set();\n for (const name in styleInfo) {\n this._previousStyleProperties.add(name);\n }\n return this.render(styleInfo);\n }\n // Remove old properties that no longer exist in styleInfo\n // We use forEach() instead of for-of so that re don't require down-level\n // iteration.\n this._previousStyleProperties.forEach((name) => {\n // If the name isn't in styleInfo or it's null/undefined\n if (styleInfo[name] == null) {\n this._previousStyleProperties.delete(name);\n if (name.includes('-')) {\n style.removeProperty(name);\n }\n else {\n // Note reset using empty string (vs null) as IE11 does not always\n // reset via null (https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style#setting_styles)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n style[name] = '';\n }\n }\n });\n // Add or update properties\n for (const name in styleInfo) {\n const value = styleInfo[name];\n if (value != null) {\n this._previousStyleProperties.add(name);\n if (name.includes('-')) {\n style.setProperty(name, value);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n style[name] = value;\n }\n }\n }\n return _lit_html_js__WEBPACK_IMPORTED_MODULE_0__.noChange;\n }\n}\n/**\n * A directive that applies CSS properties to an element.\n *\n * `styleMap` can only be used in the `style` attribute and must be the only\n * expression in the attribute. It takes the property names in the `styleInfo`\n * object and adds the property values as CSS properties. Property names with\n * dashes (`-`) are assumed to be valid CSS property names and set on the\n * element's style object using `setProperty()`. Names without dashes are\n * assumed to be camelCased JavaScript property names and set on the element's\n * style object using property assignment, allowing the style object to\n * translate JavaScript-style names to CSS property names.\n *\n * For example `styleMap({backgroundColor: 'red', 'border-top': '5px', '--size':\n * '0'})` sets the `background-color`, `border-top` and `--size` properties.\n *\n * @param styleInfo\n */\nconst styleMap = (0,_directive_js__WEBPACK_IMPORTED_MODULE_1__.directive)(StyleMapDirective);\n//# sourceMappingURL=style-map.js.map\n\n//# sourceURL=webpack://replaywebpage/./node_modules/lit-html/development/directives/style-map.js?")},"./node_modules/lit-html/development/directives/unsafe-html.js":
/*!*********************************************************************!*\
!*** ./node_modules/lit-html/development/directives/unsafe-html.js ***!
\*********************************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"UnsafeHTMLDirective\": () => (/* binding */ UnsafeHTMLDirective),\n/* harmony export */ \"unsafeHTML\": () => (/* binding */ unsafeHTML)\n/* harmony export */ });\n/* harmony import */ var _lit_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lit-html.js */ \"./node_modules/lit-html/development/lit-html.js\");\n/* harmony import */ var _directive_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../directive.js */ \"./node_modules/lit-html/development/directive.js\");\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n\nconst HTML_RESULT = 1;\nclass UnsafeHTMLDirective extends _directive_js__WEBPACK_IMPORTED_MODULE_1__.Directive {\n constructor(partInfo) {\n super(partInfo);\n this._value = _lit_html_js__WEBPACK_IMPORTED_MODULE_0__.nothing;\n if (partInfo.type !== _directive_js__WEBPACK_IMPORTED_MODULE_1__.PartType.CHILD) {\n throw new Error(`${this.constructor.directiveName}() can only be used in child bindings`);\n }\n }\n render(value) {\n if (value === _lit_html_js__WEBPACK_IMPORTED_MODULE_0__.nothing || value == null) {\n this._templateResult = undefined;\n return (this._value = value);\n }\n if (value === _lit_html_js__WEBPACK_IMPORTED_MODULE_0__.noChange) {\n return value;\n }\n if (typeof value != 'string') {\n throw new Error(`${this.constructor.directiveName}() called with a non-string value`);\n }\n if (value === this._value) {\n return this._templateResult;\n }\n this._value = value;\n const strings = [value];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n strings.raw = strings;\n // WARNING: impersonating a TemplateResult like this is extremely\n // dangerous. Third-party directives should not do this.\n return (this._templateResult = {\n // Cast to a known set of integers that satisfy ResultType so that we\n // don't have to export ResultType and possibly encourage this pattern.\n // This property needs to remain unminified.\n ['_$litType$']: this.constructor\n .resultType,\n strings,\n values: [],\n });\n }\n}\nUnsafeHTMLDirective.directiveName = 'unsafeHTML';\nUnsafeHTMLDirective.resultType = HTML_RESULT;\n/**\n * Renders the result as HTML, rather than text.\n *\n * The values `undefined`, `null`, and `nothing`, will all result in no content\n * (empty string) being rendered.\n *\n * Note, this is unsafe to use with any user-provided input that hasn't been\n * sanitized or escaped, as it may lead to cross-site-scripting\n * vulnerabilities.\n */\nconst unsafeHTML = (0,_directive_js__WEBPACK_IMPORTED_MODULE_1__.directive)(UnsafeHTMLDirective);\n//# sourceMappingURL=unsafe-html.js.map\n\n//# sourceURL=webpack://replaywebpage/./node_modules/lit-html/development/directives/unsafe-html.js?")},"./node_modules/lit-html/development/directives/unsafe-svg.js":
/*!********************************************************************!*\
!*** ./node_modules/lit-html/development/directives/unsafe-svg.js ***!
\********************************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "unsafeSVG": () => (/* binding */ unsafeSVG)\n/* harmony export */ });\n/* harmony import */ var _directive_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../directive.js */ "./node_modules/lit-html/development/directive.js");\n/* harmony import */ var _unsafe_html_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./unsafe-html.js */ "./node_modules/lit-html/development/directives/unsafe-html.js");\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n\nconst SVG_RESULT = 2;\nclass UnsafeSVGDirective extends _unsafe_html_js__WEBPACK_IMPORTED_MODULE_1__.UnsafeHTMLDirective {\n}\nUnsafeSVGDirective.directiveName = \'unsafeSVG\';\nUnsafeSVGDirective.resultType = SVG_RESULT;\n/**\n * Renders the result as SVG, rather than text.\n *\n * The values `undefined`, `null`, and `nothing`, will all result in no content\n * (empty string) being rendered.\n *\n * Note, this is unsafe to use with any user-provided input that hasn\'t been\n * sanitized or escaped, as it may lead to cross-site-scripting\n * vulnerabilities.\n */\nconst unsafeSVG = (0,_directive_js__WEBPACK_IMPORTED_MODULE_0__.directive)(UnsafeSVGDirective);\n//# sourceMappingURL=unsafe-svg.js.map\n\n//# sourceURL=webpack://replaywebpage/./node_modules/lit-html/development/directives/unsafe-svg.js?')},"./node_modules/lit-html/development/lit-html.js":
/*!*******************************************************!*\
!*** ./node_modules/lit-html/development/lit-html.js ***!
\*******************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"INTERNAL\": () => (/* binding */ INTERNAL),\n/* harmony export */ \"_$LH\": () => (/* binding */ _$LH),\n/* harmony export */ \"html\": () => (/* binding */ html),\n/* harmony export */ \"noChange\": () => (/* binding */ noChange),\n/* harmony export */ \"nothing\": () => (/* binding */ nothing),\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"svg\": () => (/* binding */ svg)\n/* harmony export */ });\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar _a, _b, _c, _d;\nconst DEV_MODE = true;\nconst ENABLE_EXTRA_SECURITY_HOOKS = true;\nconst ENABLE_SHADYDOM_NOPATCH = true;\n/**\n * `true` if we're building for google3 with temporary back-compat helpers.\n * This export is not present in prod builds.\n * @internal\n */\nconst INTERNAL = true;\nlet issueWarning;\nif (DEV_MODE) {\n (_a = globalThis.litIssuedWarnings) !== null && _a !== void 0 ? _a : (globalThis.litIssuedWarnings = new Set());\n // Issue a warning, if we haven't already.\n issueWarning = (code, warning) => {\n warning += code\n ? ` See https://lit.dev/msg/${code} for more information.`\n : '';\n if (!globalThis.litIssuedWarnings.has(warning)) {\n console.warn(warning);\n globalThis.litIssuedWarnings.add(warning);\n }\n };\n issueWarning('dev-mode', `Lit is in dev mode. Not recommended for production!`);\n}\nconst wrap = ENABLE_SHADYDOM_NOPATCH &&\n ((_b = window.ShadyDOM) === null || _b === void 0 ? void 0 : _b.inUse) &&\n ((_c = window.ShadyDOM) === null || _c === void 0 ? void 0 : _c.noPatch) === true\n ? window.ShadyDOM.wrap\n : (node) => node;\nconst trustedTypes = globalThis.trustedTypes;\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = trustedTypes\n ? trustedTypes.createPolicy('lit-html', {\n createHTML: (s) => s,\n })\n : undefined;\nconst identityFunction = (value) => value;\nconst noopSanitizer = (_node, _name, _type) => identityFunction;\n/** Sets the global sanitizer factory. */\nconst setSanitizer = (newSanitizer) => {\n if (!ENABLE_EXTRA_SECURITY_HOOKS) {\n return;\n }\n if (sanitizerFactoryInternal !== noopSanitizer) {\n throw new Error(`Attempted to overwrite existing lit-html security policy.` +\n ` setSanitizeDOMValueFactory should be called at most once.`);\n }\n sanitizerFactoryInternal = newSanitizer;\n};\n/**\n * Only used in internal tests, not a part of the public API.\n */\nconst _testOnlyClearSanitizerFactoryDoNotCallOrElse = () => {\n sanitizerFactoryInternal = noopSanitizer;\n};\nconst createSanitizer = (node, name, type) => {\n return sanitizerFactoryInternal(node, name, type);\n};\n// Added to an attribute name to mark the attribute as bound so we can find\n// it easily.\nconst boundAttributeSuffix = '$lit$';\n// This marker is used in many syntactic positions in HTML, so it must be\n// a valid element name and attribute name. We don't support dynamic names (yet)\n// but this at least ensures that the parse tree is closer to the template\n// intention.\nconst marker = `lit$${String(Math.random()).slice(9)}$`;\n// String used to tell if a comment is a marker comment\nconst markerMatch = '?' + marker;\n// Text used to insert a comment marker node. We use processing instruction\n// syntax because it's slightly smaller, but parses as a comment node.\nconst nodeMarker = `<${markerMatch}>`;\nconst d = document;\n// Creates a dynamic marker. We never have to search for these in the DOM.\nconst createMarker = (v = '') => d.createComment(v);\nconst isPrimitive = (value) => value === null || (typeof value != 'object' && typeof value != 'function');\nconst isArray = Array.isArray;\nconst isIterable = (value) => {\n var _a;\n return isArray(value) ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof ((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.iterator]) === 'function';\n};\nconst SPACE_CHAR = `[ \\t\\n\\f\\r]`;\nconst ATTR_VALUE_CHAR = `[^ \\t\\n\\f\\r\"'\\`<>=]`;\nconst NAME_CHAR = `[^\\\\s\"'>=/]`;\n// These regexes represent the five parsing states that we care about in the\n// Template's HTML scanner. They match the *end* of the state they're named\n// after.\n// Depending on the match, we transition to a new state. If there's no match,\n// we stay in the same state.\n// Note that the regexes are stateful. We utilize lastIndex and sync it\n// across the multiple regexes used. In addition to the five regexes below\n// we also dynamically create a regex to find the matching end tags for raw\n// text elements.\n/**\n * End of text is: `<` followed by:\n * (comment start) or (tag) or (dynamic tag binding)\n */\nconst textEndRegex = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nconst COMMENT_START = 1;\nconst TAG_NAME = 2;\nconst DYNAMIC_TAG_NAME = 3;\nconst commentEndRegex = /--\x3e/g;\n/**\n * Comments not started with \x3c!--, like </{, can be ended by a single `>`\n */\nconst comment2EndRegex = />/g;\n/**\n * The tagEnd regex matches the end of the \"inside an opening\" tag syntax\n * position. It either matches a `>`, an attribute-like sequence, or the end\n * of the string after a space (attribute-name position ending).\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\t\\n\\f\\r\" are HTML space characters:\n * https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * So an attribute is:\n * * The name: any character except a whitespace character, (\"), ('), \">\",\n * \"=\", or \"/\". Note: this is different from the HTML spec which also excludes control characters.\n * * Followed by zero or more space characters\n * * Followed by \"=\"\n * * Followed by zero or more space characters\n * * Followed by:\n * * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n * * (\") then any non-(\"), or\n * * (') then any non-(')\n */\nconst tagEndRegex = new RegExp(`>|${SPACE_CHAR}(?:(${NAME_CHAR}+)(${SPACE_CHAR}*=${SPACE_CHAR}*(?:${ATTR_VALUE_CHAR}|(\"|')|))|$)`, 'g');\nconst ENTIRE_MATCH = 0;\nconst ATTRIBUTE_NAME = 1;\nconst SPACES_AND_EQUALS = 2;\nconst QUOTE_CHAR = 3;\nconst singleQuoteAttrEndRegex = /'/g;\nconst doubleQuoteAttrEndRegex = /\"/g;\n/**\n * Matches the raw text elements.\n *\n * Comments are not parsed within raw text elements, so we need to search their\n * text content for marker strings.\n */\nconst rawTextElement = /^(?:script|style|textarea)$/i;\n/** TemplateResult types */\nconst HTML_RESULT = 1;\nconst SVG_RESULT = 2;\n// TemplatePart types\n// IMPORTANT: these must match the values in PartType\nconst ATTRIBUTE_PART = 1;\nconst CHILD_PART = 2;\nconst PROPERTY_PART = 3;\nconst BOOLEAN_ATTRIBUTE_PART = 4;\nconst EVENT_PART = 5;\nconst ELEMENT_PART = 6;\nconst COMMENT_PART = 7;\n/**\n * Generates a template literal tag function that returns a TemplateResult with\n * the given result type.\n */\nconst tag = (type) => (strings, ...values) => {\n // Warn against templates octal escape sequences\n // We do this here rather than in render so that the warning is closer to the\n // template definition.\n if (DEV_MODE && strings.some((s) => s === undefined)) {\n console.warn('Some template strings are undefined.\\n' +\n 'This is probably caused by illegal octal escape sequences.');\n }\n return {\n // This property needs to remain unminified.\n ['_$litType$']: type,\n strings,\n values,\n };\n};\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n *\n * ```ts\n * const header = (title: string) => html`<h1>${title}</h1>`;\n * ```\n *\n * The `html` tag returns a description of the DOM to render as a value. It is\n * lazy, meaning no work is done until the template is rendered. When rendering,\n * if a template comes from the same expression as a previously rendered result,\n * it's efficiently updated instead of replaced.\n */\nconst html = tag(HTML_RESULT);\n/**\n * Interprets a template literal as an SVG template that can efficiently\n * render to and update a container.\n */\nconst svg = tag(SVG_RESULT);\n/**\n * A sentinel value that signals that a value was handled by a directive and\n * should not be written to the DOM.\n */\nconst noChange = Symbol.for('lit-noChange');\n/**\n * A sentinel value that signals a ChildPart to fully clear its content.\n *\n * ```ts\n * const button = html`${\n * user.isAdmin\n * ? html`<button>DELETE</button>`\n * : nothing\n * }`;\n * ```\n *\n * Prefer using `nothing` over other falsy values as it provides a consistent\n * behavior between various expression binding contexts.\n *\n * In child expressions, `undefined`, `null`, `''`, and `nothing` all behave the\n * same and render no nodes. In attribute expressions, `nothing` _removes_ the\n * attribute, while `undefined` and `null` will render an empty string. In\n * property expressions `nothing` becomes `undefined`.\n */\nconst nothing = Symbol.for('lit-nothing');\n/**\n * The cache of prepared templates, keyed by the tagged TemplateStringsArray\n * and _not_ accounting for the specific template tag used. This means that\n * template tags cannot be dynamic - the must statically be one of html, svg,\n * or attr. This restriction simplifies the cache lookup, which is on the hot\n * path for rendering.\n */\nconst templateCache = new WeakMap();\n/**\n * Renders a value, usually a lit-html TemplateResult, to the container.\n * @param value\n * @param container\n * @param options\n */\nconst render = (value, container, options) => {\n var _a, _b, _c;\n const partOwnerNode = (_a = options === null || options === void 0 ? void 0 : options.renderBefore) !== null && _a !== void 0 ? _a : container;\n // This property needs to remain unminified.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let part = partOwnerNode['_$litPart$'];\n if (part === undefined) {\n const endNode = (_b = options === null || options === void 0 ? void 0 : options.renderBefore) !== null && _b !== void 0 ? _b : null;\n // Internal modification: don't clear container to match lit-html 2.0\n if (INTERNAL &&\n ((_c = options) === null || _c === void 0 ? void 0 : _c.clearContainerForLit2MigrationOnly) ===\n true) {\n let n = container.firstChild;\n // Clear only up to the `endNode` aka `renderBefore` node.\n while (n && n !== endNode) {\n const next = n.nextSibling;\n n.remove();\n n = next;\n }\n }\n // This property needs to remain unminified.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n partOwnerNode['_$litPart$'] = part = new ChildPart(container.insertBefore(createMarker(), endNode), endNode, undefined, options !== null && options !== void 0 ? options : {});\n }\n part._$setValue(value);\n return part;\n};\nif (ENABLE_EXTRA_SECURITY_HOOKS) {\n render.setSanitizer = setSanitizer;\n render.createSanitizer = createSanitizer;\n if (DEV_MODE) {\n render._testOnlyClearSanitizerFactoryDoNotCallOrElse =\n _testOnlyClearSanitizerFactoryDoNotCallOrElse;\n }\n}\nconst walker = d.createTreeWalker(d, 129 /* NodeFilter.SHOW_{ELEMENT|COMMENT} */, null, false);\nlet sanitizerFactoryInternal = noopSanitizer;\n/**\n * Returns an HTML string for the given TemplateStringsArray and result type\n * (HTML or SVG), along with the case-sensitive bound attribute names in\n * template order. The HTML contains comment comment markers denoting the\n * `ChildPart`s and suffixes on bound attributes denoting the `AttributeParts`.\n *\n * @param strings template strings array\n * @param type HTML or SVG\n * @return Array containing `[html, attrNames]` (array returned for terseness,\n * to avoid object fields since this code is shared with non-minified SSR\n * code)\n */\nconst getTemplateHtml = (strings, type) => {\n // Insert makers into the template HTML to represent the position of\n // bindings. The following code scans the template strings to determine the\n // syntactic position of the bindings. They can be in text position, where\n // we insert an HTML comment, attribute value position, where we insert a\n // sentinel string and re-write the attribute name, or inside a tag where\n // we insert the sentinel string.\n const l = strings.length - 1;\n // Stores the case-sensitive bound attribute names in the order of their\n // parts. ElementParts are also reflected in this array as undefined\n // rather than a string, to disambiguate from attribute bindings.\n const attrNames = [];\n let html = type === SVG_RESULT ? '<svg>' : '';\n // When we're inside a raw text tag (not it's text content), the regex\n // will still be tagRegex so we can find attributes, but will switch to\n // this regex when the tag ends.\n let rawTextEndRegex;\n // The current parsing state, represented as a reference to one of the\n // regexes\n let regex = textEndRegex;\n for (let i = 0; i < l; i++) {\n const s = strings[i];\n // The index of the end of the last attribute name. When this is\n // positive at end of a string, it means we're in an attribute value\n // position and need to rewrite the attribute name.\n // We also use a special value of -2 to indicate that we encountered\n // the end of a string in attribute name position.\n let attrNameEndIndex = -1;\n let attrName;\n let lastIndex = 0;\n let match;\n // The conditions in this loop handle the current parse state, and the\n // assignments to the `regex` variable are the state transitions.\n while (lastIndex < s.length) {\n // Make sure we start searching from where we previously left off\n regex.lastIndex = lastIndex;\n match = regex.exec(s);\n if (match === null) {\n break;\n }\n lastIndex = regex.lastIndex;\n if (regex === textEndRegex) {\n if (match[COMMENT_START] === '!--') {\n regex = commentEndRegex;\n }\n else if (match[COMMENT_START] !== undefined) {\n // We started a weird comment, like </{\n regex = comment2EndRegex;\n }\n else if (match[TAG_NAME] !== undefined) {\n if (rawTextElement.test(match[TAG_NAME])) {\n // Record if we encounter a raw-text element. We'll switch to\n // this regex at the end of the tag.\n rawTextEndRegex = new RegExp(`</${match[TAG_NAME]}`, 'g');\n }\n regex = tagEndRegex;\n }\n else if (match[DYNAMIC_TAG_NAME] !== undefined) {\n if (DEV_MODE) {\n throw new Error('Bindings in tag names are not supported. Please use static templates instead. ' +\n 'See https://lit.dev/docs/templates/expressions/#static-expressions');\n }\n regex = tagEndRegex;\n }\n }\n else if (regex === tagEndRegex) {\n if (match[ENTIRE_MATCH] === '>') {\n // End of a tag. If we had started a raw-text element, use that\n // regex\n regex = rawTextEndRegex !== null && rawTextEndRegex !== void 0 ? rawTextEndRegex : textEndRegex;\n // We may be ending an unquoted attribute value, so make sure we\n // clear any pending attrNameEndIndex\n attrNameEndIndex = -1;\n }\n else if (match[ATTRIBUTE_NAME] === undefined) {\n // Attribute name position\n attrNameEndIndex = -2;\n }\n else {\n attrNameEndIndex = regex.lastIndex - match[SPACES_AND_EQUALS].length;\n attrName = match[ATTRIBUTE_NAME];\n regex =\n match[QUOTE_CHAR] === undefined\n ? tagEndRegex\n : match[QUOTE_CHAR] === '\"'\n ? doubleQuoteAttrEndRegex\n : singleQuoteAttrEndRegex;\n }\n }\n else if (regex === doubleQuoteAttrEndRegex ||\n regex === singleQuoteAttrEndRegex) {\n regex = tagEndRegex;\n }\n else if (regex === commentEndRegex || regex === comment2EndRegex) {\n regex = textEndRegex;\n }\n else {\n // Not one of the five state regexes, so it must be the dynamically\n // created raw text regex and we're at the close of that element.\n regex = tagEndRegex;\n rawTextEndRegex = undefined;\n }\n }\n if (DEV_MODE) {\n // If we have a attrNameEndIndex, which indicates that we should\n // rewrite the attribute name, assert that we're in a valid attribute\n // position - either in a tag, or a quoted attribute value.\n console.assert(attrNameEndIndex === -1 ||\n regex === tagEndRegex ||\n regex === singleQuoteAttrEndRegex ||\n regex === doubleQuoteAttrEndRegex, 'unexpected parse state B');\n }\n // We have four cases:\n // 1. We're in text position, and not in a raw text element\n // (regex === textEndRegex): insert a comment marker.\n // 2. We have a non-negative attrNameEndIndex which means we need to\n // rewrite the attribute name to add a bound attribute suffix.\n // 3. We're at the non-first binding in a multi-binding attribute, use a\n // plain marker.\n // 4. We're somewhere else inside the tag. If we're in attribute name\n // position (attrNameEndIndex === -2), add a sequential suffix to\n // generate a unique attribute name.\n // Detect a binding next to self-closing tag end and insert a space to\n // separate the marker from the tag end:\n const end = regex === tagEndRegex && strings[i + 1].startsWith('/>') ? ' ' : '';\n html +=\n regex === textEndRegex\n ? s + nodeMarker\n : attrNameEndIndex >= 0\n ? (attrNames.push(attrName),\n s.slice(0, attrNameEndIndex) +\n boundAttributeSuffix +\n s.slice(attrNameEndIndex)) +\n marker +\n end\n : s +\n marker +\n (attrNameEndIndex === -2 ? (attrNames.push(undefined), i) : end);\n }\n const htmlResult = html + (strings[l] || '<?>') + (type === SVG_RESULT ? '</svg>' : '');\n // A security check to prevent spoofing of Lit template results.\n // In the future, we may be able to replace this with Array.isTemplateObject,\n // though we might need to make that check inside of the html and svg\n // functions, because precompiled templates don't come in as\n // TemplateStringArray objects.\n if (!Array.isArray(strings) || !strings.hasOwnProperty('raw')) {\n let message = 'invalid template strings array';\n if (DEV_MODE) {\n message =\n `Internal Error: expected template strings to be an array ` +\n `with a 'raw' field. Please file a bug at ` +\n `https://github.com/lit/lit/issues/new?template=bug_report.md ` +\n `and include information about your build tooling, if any.`;\n }\n throw new Error(message);\n }\n // Returned as an array for terseness\n return [\n policy !== undefined\n ? policy.createHTML(htmlResult)\n : htmlResult,\n attrNames,\n ];\n};\nclass Template {\n constructor(\n // This property needs to remain unminified.\n { strings, ['_$litType$']: type }, options) {\n /** @internal */\n this.parts = [];\n let node;\n let nodeIndex = 0;\n let attrNameIndex = 0;\n const partCount = strings.length - 1;\n const parts = this.parts;\n // Create template element\n const [html, attrNames] = getTemplateHtml(strings, type);\n this.el = Template.createElement(html, options);\n walker.currentNode = this.el.content;\n // Reparent SVG nodes into template root\n if (type === SVG_RESULT) {\n const content = this.el.content;\n const svgElement = content.firstChild;\n svgElement.remove();\n content.append(...svgElement.childNodes);\n }\n // Walk the template to find binding markers and create TemplateParts\n while ((node = walker.nextNode()) !== null && parts.length < partCount) {\n if (node.nodeType === 1) {\n if (DEV_MODE) {\n const tag = node.localName;\n // Warn if `textarea` includes an expression and throw if `template`\n // does since these are not supported. We do this by checking\n // innerHTML for anything that looks like a marker. This catches\n // cases like bindings in textarea there markers turn into text nodes.\n if (/^(?:textarea|template)$/i.test(tag) &&\n node.innerHTML.includes(marker)) {\n const m = `Expressions are not supported inside \\`${tag}\\` ` +\n `elements. See https://lit.dev/msg/expression-in-${tag} for more ` +\n `information.`;\n if (tag === 'template') {\n throw new Error(m);\n }\n else\n issueWarning('', m);\n }\n }\n // TODO (justinfagnani): for attempted dynamic tag names, we don't\n // increment the bindingIndex, and it'll be off by 1 in the element\n // and off by two after it.\n if (node.hasAttributes()) {\n // We defer removing bound attributes because on IE we might not be\n // iterating attributes in their template order, and would sometimes\n // remove an attribute that we still need to create a part for.\n const attrsToRemove = [];\n for (const name of node.getAttributeNames()) {\n // `name` is the name of the attribute we're iterating over, but not\n // _neccessarily_ the name of the attribute we will create a part\n // for. They can be different in browsers that don't iterate on\n // attributes in source order. In that case the attrNames array\n // contains the attribute name we'll process next. We only need the\n // attribute name here to know if we should process a bound attribute\n // on this element.\n if (name.endsWith(boundAttributeSuffix) ||\n name.startsWith(marker)) {\n const realName = attrNames[attrNameIndex++];\n attrsToRemove.push(name);\n if (realName !== undefined) {\n // Lowercase for case-sensitive SVG attributes like viewBox\n const value = node.getAttribute(realName.toLowerCase() + boundAttributeSuffix);\n const statics = value.split(marker);\n const m = /([.?@])?(.*)/.exec(realName);\n parts.push({\n type: ATTRIBUTE_PART,\n index: nodeIndex,\n name: m[2],\n strings: statics,\n ctor: m[1] === '.'\n ? PropertyPart\n : m[1] === '?'\n ? BooleanAttributePart\n : m[1] === '@'\n ? EventPart\n : AttributePart,\n });\n }\n else {\n parts.push({\n type: ELEMENT_PART,\n index: nodeIndex,\n });\n }\n }\n }\n for (const name of attrsToRemove) {\n node.removeAttribute(name);\n }\n }\n // TODO (justinfagnani): benchmark the regex against testing for each\n // of the 3 raw text element names.\n if (rawTextElement.test(node.tagName)) {\n // For raw text elements we need to split the text content on\n // markers, create a Text node for each segment, and create\n // a TemplatePart for each marker.\n const strings = node.textContent.split(marker);\n const lastIndex = strings.length - 1;\n if (lastIndex > 0) {\n node.textContent = trustedTypes\n ? trustedTypes.emptyScript\n : '';\n // Generate a new text node for each literal section\n // These nodes are also used as the markers for node parts\n // We can't use empty text nodes as markers because they're\n // normalized when cloning in IE (could simplify when\n // IE is no longer supported)\n for (let i = 0; i < lastIndex; i++) {\n node.append(strings[i], createMarker());\n // Walk past the marker node we just added\n walker.nextNode();\n parts.push({ type: CHILD_PART, index: ++nodeIndex });\n }\n // Note because this marker is added after the walker's current\n // node, it will be walked to in the outer loop (and ignored), so\n // we don't need to adjust nodeIndex here\n node.append(strings[lastIndex], createMarker());\n }\n }\n }\n else if (node.nodeType === 8) {\n const data = node.data;\n if (data === markerMatch) {\n parts.push({ type: CHILD_PART, index: nodeIndex });\n }\n else {\n let i = -1;\n while ((i = node.data.indexOf(marker, i + 1)) !== -1) {\n // Comment node has a binding marker inside, make an inactive part\n // The binding won't work, but subsequent bindings will\n parts.push({ type: COMMENT_PART, index: nodeIndex });\n // Move to the end of the match\n i += marker.length - 1;\n }\n }\n }\n nodeIndex++;\n }\n }\n // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n /** @nocollapse */\n static createElement(html, _options) {\n const el = d.createElement('template');\n el.innerHTML = html;\n return el;\n }\n}\nfunction resolveDirective(part, value, parent = part, attributeIndex) {\n var _a, _b, _c;\n var _d;\n // Bail early if the value is explicitly noChange. Note, this means any\n // nested directive is still attached and is not run.\n if (value === noChange) {\n return value;\n }\n let currentDirective = attributeIndex !== undefined\n ? (_a = parent.__directives) === null || _a === void 0 ? void 0 : _a[attributeIndex]\n : parent.__directive;\n const nextDirectiveConstructor = isPrimitive(value)\n ? undefined\n : // This property needs to remain unminified.\n value['_$litDirective$'];\n if ((currentDirective === null || currentDirective === void 0 ? void 0 : currentDirective.constructor) !== nextDirectiveConstructor) {\n // This property needs to remain unminified.\n (_b = currentDirective === null || currentDirective === void 0 ? void 0 : currentDirective['_$notifyDirectiveConnectionChanged']) === null || _b === void 0 ? void 0 : _b.call(currentDirective, false);\n if (nextDirectiveConstructor === undefined) {\n currentDirective = undefined;\n }\n else {\n currentDirective = new nextDirectiveConstructor(part);\n currentDirective._$initialize(part, parent, attributeIndex);\n }\n if (attributeIndex !== undefined) {\n ((_c = (_d = parent).__directives) !== null && _c !== void 0 ? _c : (_d.__directives = []))[attributeIndex] =\n currentDirective;\n }\n else {\n parent.__directive = currentDirective;\n }\n }\n if (currentDirective !== undefined) {\n value = resolveDirective(part, currentDirective._$resolve(part, value.values), currentDirective, attributeIndex);\n }\n return value;\n}\n/**\n * An updateable instance of a Template. Holds references to the Parts used to\n * update the template instance.\n */\nclass TemplateInstance {\n constructor(template, parent) {\n /** @internal */\n this._parts = [];\n /** @internal */\n this._$disconnectableChildren = undefined;\n this._$template = template;\n this._$parent = parent;\n }\n // Called by ChildPart parentNode getter\n get parentNode() {\n return this._$parent.parentNode;\n }\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n // This method is separate from the constructor because we need to return a\n // DocumentFragment and we don't want to hold onto it with an instance field.\n _clone(options) {\n var _a;\n const { el: { content }, parts: parts, } = this._$template;\n const fragment = ((_a = options === null || options === void 0 ? void 0 : options.creationScope) !== null && _a !== void 0 ? _a : d).importNode(content, true);\n walker.currentNode = fragment;\n let node = walker.nextNode();\n let nodeIndex = 0;\n let partIndex = 0;\n let templatePart = parts[0];\n while (templatePart !== undefined) {\n if (nodeIndex === templatePart.index) {\n let part;\n if (templatePart.type === CHILD_PART) {\n part = new ChildPart(node, node.nextSibling, this, options);\n }\n else if (templatePart.type === ATTRIBUTE_PART) {\n part = new templatePart.ctor(node, templatePart.name, templatePart.strings, this, options);\n }\n else if (templatePart.type === ELEMENT_PART) {\n part = new ElementPart(node, this, options);\n }\n this._parts.push(part);\n templatePart = parts[++partIndex];\n }\n if (nodeIndex !== (templatePart === null || templatePart === void 0 ? void 0 : templatePart.index)) {\n node = walker.nextNode();\n nodeIndex++;\n }\n }\n return fragment;\n }\n _update(values) {\n let i = 0;\n for (const part of this._parts) {\n if (part !== undefined) {\n if (part.strings !== undefined) {\n part._$setValue(values, part, i);\n // The number of values the part consumes is part.strings.length - 1\n // since values are in between template spans. We increment i by 1\n // later in the loop, so increment it by part.strings.length - 2 here\n i += part.strings.length - 2;\n }\n else {\n part._$setValue(values[i]);\n }\n }\n i++;\n }\n }\n}\nclass ChildPart {\n constructor(startNode, endNode, parent, options) {\n var _a;\n this.type = CHILD_PART;\n this._$committedValue = nothing;\n // The following fields will be patched onto ChildParts when required by\n // AsyncDirective\n /** @internal */\n this._$disconnectableChildren = undefined;\n this._$startNode = startNode;\n this._$endNode = endNode;\n this._$parent = parent;\n this.options = options;\n // Note __isConnected is only ever accessed on RootParts (i.e. when there is\n // no _$parent); the value on a non-root-part is \"don't care\", but checking\n // for parent would be more code\n this.__isConnected = (_a = options === null || options === void 0 ? void 0 : options.isConnected) !== null && _a !== void 0 ? _a : true;\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n // Explicitly initialize for consistent class shape.\n this._textSanitizer = undefined;\n }\n }\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n var _a, _b;\n // ChildParts that are not at the root should always be created with a\n // parent; only RootChildNode's won't, so they return the local isConnected\n // state\n return (_b = (_a = this._$parent) === null || _a === void 0 ? void 0 : _a._$isConnected) !== null && _b !== void 0 ? _b : this.__isConnected;\n }\n /**\n * The parent node into which the part renders its content.\n *\n * A ChildPart's content consists of a range of adjacent child nodes of\n * `.parentNode`, possibly bordered by 'marker nodes' (`.startNode` and\n * `.endNode`).\n *\n * - If both `.startNode` and `.endNode` are non-null, then the part's content\n * consists of all siblings between `.startNode` and `.endNode`, exclusively.\n *\n * - If `.startNode` is non-null but `.endNode` is null, then the part's\n * content consists of all siblings following `.startNode`, up to and\n * including the last child of `.parentNode`. If `.endNode` is non-null, then\n * `.startNode` will always be non-null.\n *\n * - If both `.endNode` and `.startNode` are null, then the part's content\n * consists of all child nodes of `.parentNode`.\n */\n get parentNode() {\n let parentNode = wrap(this._$startNode).parentNode;\n const parent = this._$parent;\n if (parent !== undefined &&\n parentNode.nodeType === 11 /* Node.DOCUMENT_FRAGMENT */) {\n // If the parentNode is a DocumentFragment, it may be because the DOM is\n // still in the cloned fragment during initial render; if so, get the real\n // parentNode the part will be committed into by asking the parent.\n parentNode = parent.parentNode;\n }\n return parentNode;\n }\n /**\n * The part's leading marker node, if any. See `.parentNode` for more\n * information.\n */\n get startNode() {\n return this._$startNode;\n }\n /**\n * The part's trailing marker node, if any. See `.parentNode` for more\n * information.\n */\n get endNode() {\n return this._$endNode;\n }\n _$setValue(value, directiveParent = this) {\n if (DEV_MODE && this.parentNode === null) {\n throw new Error(`This \\`ChildPart\\` has no \\`parentNode\\` and therefore cannot accept a value. This likely means the element containing the part was manipulated in an unsupported way outside of Lit's control such that the part's marker nodes were ejected from DOM. For example, setting the element's \\`innerHTML\\` or \\`textContent\\` can do this.`);\n }\n value = resolveDirective(this, value, directiveParent);\n if (isPrimitive(value)) {\n // Non-rendering child values. It's important that these do not render\n // empty text nodes to avoid issues with preventing default <slot>\n // fallback content.\n if (value === nothing || value == null || value === '') {\n if (this._$committedValue !== nothing) {\n this._$clear();\n }\n this._$committedValue = nothing;\n }\n else if (value !== this._$committedValue && value !== noChange) {\n this._commitText(value);\n }\n // This property needs to remain unminified.\n }\n else if (value['_$litType$'] !== undefined) {\n this._commitTemplateResult(value);\n }\n else if (value.nodeType !== undefined) {\n this._commitNode(value);\n }\n else if (isIterable(value)) {\n this._commitIterable(value);\n }\n else {\n // Fallback, will render the string representation\n this._commitText(value);\n }\n }\n _insert(node, ref = this._$endNode) {\n return wrap(wrap(this._$startNode).parentNode).insertBefore(node, ref);\n }\n _commitNode(value) {\n var _a;\n if (this._$committedValue !== value) {\n this._$clear();\n if (ENABLE_EXTRA_SECURITY_HOOKS &&\n sanitizerFactoryInternal !== noopSanitizer) {\n const parentNodeName = (_a = this._$startNode.parentNode) === null || _a === void 0 ? void 0 : _a.nodeName;\n if (parentNodeName === 'STYLE' || parentNodeName === 'SCRIPT') {\n let message = 'Forbidden';\n if (DEV_MODE) {\n if (parentNodeName === 'STYLE') {\n message =\n `Lit does not support binding inside style nodes. ` +\n `This is a security risk, as style injection attacks can ` +\n `exfiltrate data and spoof UIs. ` +\n `Consider instead using css\\`...\\` literals ` +\n `to compose styles, and make do dynamic styling with ` +\n `css custom properties, ::parts, <slot>s, ` +\n `and by mutating the DOM rather than stylesheets.`;\n }\n else {\n message =\n `Lit does not support binding inside script nodes. ` +\n `This is a security risk, as it could allow arbitrary ` +\n `code execution.`;\n }\n }\n throw new Error(message);\n }\n }\n this._$committedValue = this._insert(value);\n }\n }\n _commitText(value) {\n // If the committed value is a primitive it means we called _commitText on\n // the previous render, and we know that this._$startNode.nextSibling is a\n // Text node. We can now just replace the text content (.data) of the node.\n if (this._$committedValue !== nothing &&\n isPrimitive(this._$committedValue)) {\n const node = wrap(this._$startNode).nextSibling;\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n if (this._textSanitizer === undefined) {\n this._textSanitizer = createSanitizer(node, 'data', 'property');\n }\n value = this._textSanitizer(value);\n }\n node.data = value;\n }\n else {\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n const textNode = document.createTextNode('');\n this._commitNode(textNode);\n // When setting text content, for security purposes it matters a lot\n // what the parent is. For example, <style> and <script> need to be\n // handled with care, while <span> does not. So first we need to put a\n // text node into the document, then we can sanitize its contentx.\n if (this._textSanitizer === undefined) {\n this._textSanitizer = createSanitizer(textNode, 'data', 'property');\n }\n value = this._textSanitizer(value);\n textNode.data = value;\n }\n else {\n this._commitNode(d.createTextNode(value));\n }\n }\n this._$committedValue = value;\n }\n _commitTemplateResult(result) {\n var _a;\n // This property needs to remain unminified.\n const { values, ['_$litType$']: type } = result;\n // If $litType$ is a number, result is a plain TemplateResult and we get\n // the template from the template cache. If not, result is a\n // CompiledTemplateResult and _$litType$ is a CompiledTemplate and we need\n // to create the <template> element the first time we see it.\n const template = typeof type === 'number'\n ? this._$getTemplate(result)\n : (type.el === undefined &&\n (type.el = Template.createElement(type.h, this.options)),\n type);\n if (((_a = this._$committedValue) === null || _a === void 0 ? void 0 : _a._$template) === template) {\n this._$committedValue._update(values);\n }\n else {\n const instance = new TemplateInstance(template, this);\n const fragment = instance._clone(this.options);\n instance._update(values);\n this._commitNode(fragment);\n this._$committedValue = instance;\n }\n }\n // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n /** @internal */\n _$getTemplate(result) {\n let template = templateCache.get(result.strings);\n if (template === undefined) {\n templateCache.set(result.strings, (template = new Template(result)));\n }\n return template;\n }\n _commitIterable(value) {\n // For an Iterable, we create a new InstancePart per item, then set its\n // value to the item. This is a little bit of overhead for every item in\n // an Iterable, but it lets us recurse easily and efficiently update Arrays\n // of TemplateResults that will be commonly returned from expressions like:\n // array.map((i) => html`${i}`), by reusing existing TemplateInstances.\n // If value is an array, then the previous render was of an\n // iterable and value will contain the ChildParts from the previous\n // render. If value is not an array, clear this part and make a new\n // array for ChildParts.\n if (!isArray(this._$committedValue)) {\n this._$committedValue = [];\n this._$clear();\n }\n // Lets us keep track of how many items we stamped so we can clear leftover\n // items from a previous render\n const itemParts = this._$committedValue;\n let partIndex = 0;\n let itemPart;\n for (const item of value) {\n if (partIndex === itemParts.length) {\n // If no existing part, create a new one\n // TODO (justinfagnani): test perf impact of always creating two parts\n // instead of sharing parts between nodes\n // https://github.com/lit/lit/issues/1266\n itemParts.push((itemPart = new ChildPart(this._insert(createMarker()), this._insert(createMarker()), this, this.options)));\n }\n else {\n // Reuse an existing part\n itemPart = itemParts[partIndex];\n }\n itemPart._$setValue(item);\n partIndex++;\n }\n if (partIndex < itemParts.length) {\n // itemParts always have end nodes\n this._$clear(itemPart && wrap(itemPart._$endNode).nextSibling, partIndex);\n // Truncate the parts array so _value reflects the current state\n itemParts.length = partIndex;\n }\n }\n /**\n * Removes the nodes contained within this Part from the DOM.\n *\n * @param start Start node to clear from, for clearing a subset of the part's\n * DOM (used when truncating iterables)\n * @param from When `start` is specified, the index within the iterable from\n * which ChildParts are being removed, used for disconnecting directives in\n * those Parts.\n *\n * @internal\n */\n _$clear(start = wrap(this._$startNode).nextSibling, from) {\n var _a;\n (_a = this._$notifyConnectionChanged) === null || _a === void 0 ? void 0 : _a.call(this, false, true, from);\n while (start && start !== this._$endNode) {\n const n = wrap(start).nextSibling;\n wrap(start).remove();\n start = n;\n }\n }\n /**\n * Implementation of RootPart's `isConnected`. Note that this metod\n * should only be called on `RootPart`s (the `ChildPart` returned from a\n * top-level `render()` call). It has no effect on non-root ChildParts.\n * @param isConnected Whether to set\n * @internal\n */\n setConnected(isConnected) {\n var _a;\n if (this._$parent === undefined) {\n this.__isConnected = isConnected;\n (_a = this._$notifyConnectionChanged) === null || _a === void 0 ? void 0 : _a.call(this, isConnected);\n }\n else if (DEV_MODE) {\n throw new Error('part.setConnected() may only be called on a ' +\n 'RootPart returned from render().');\n }\n }\n}\nclass AttributePart {\n constructor(element, name, strings, parent, options) {\n this.type = ATTRIBUTE_PART;\n /** @internal */\n this._$committedValue = nothing;\n /** @internal */\n this._$disconnectableChildren = undefined;\n this.element = element;\n this.name = name;\n this._$parent = parent;\n this.options = options;\n if (strings.length > 2 || strings[0] !== '' || strings[1] !== '') {\n this._$committedValue = new Array(strings.length - 1).fill(new String());\n this.strings = strings;\n }\n else {\n this._$committedValue = nothing;\n }\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n this._sanitizer = undefined;\n }\n }\n get tagName() {\n return this.element.tagName;\n }\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n /**\n * Sets the value of this part by resolving the value from possibly multiple\n * values and static strings and committing it to the DOM.\n * If this part is single-valued, `this._strings` will be undefined, and the\n * method will be called with a single value argument. If this part is\n * multi-value, `this._strings` will be defined, and the method is called\n * with the value array of the part's owning TemplateInstance, and an offset\n * into the value array from which the values should be read.\n * This method is overloaded this way to eliminate short-lived array slices\n * of the template instance values, and allow a fast-path for single-valued\n * parts.\n *\n * @param value The part value, or an array of values for multi-valued parts\n * @param valueIndex the index to start reading values from. `undefined` for\n * single-valued parts\n * @param noCommit causes the part to not commit its value to the DOM. Used\n * in hydration to prime attribute parts with their first-rendered value,\n * but not set the attribute, and in SSR to no-op the DOM operation and\n * capture the value for serialization.\n *\n * @internal\n */\n _$setValue(value, directiveParent = this, valueIndex, noCommit) {\n const strings = this.strings;\n // Whether any of the values has changed, for dirty-checking\n let change = false;\n if (strings === undefined) {\n // Single-value binding case\n value = resolveDirective(this, value, directiveParent, 0);\n change =\n !isPrimitive(value) ||\n (value !== this._$committedValue && value !== noChange);\n if (change) {\n this._$committedValue = value;\n }\n }\n else {\n // Interpolation case\n const values = value;\n value = strings[0];\n let i, v;\n for (i = 0; i < strings.length - 1; i++) {\n v = resolveDirective(this, values[valueIndex + i], directiveParent, i);\n if (v === noChange) {\n // If the user-provided value is `noChange`, use the previous value\n v = this._$committedValue[i];\n }\n change || (change = !isPrimitive(v) || v !== this._$committedValue[i]);\n if (v === nothing) {\n value = nothing;\n }\n else if (value !== nothing) {\n value += (v !== null && v !== void 0 ? v : '') + strings[i + 1];\n }\n // We always record each value, even if one is `nothing`, for future\n // change detection.\n this._$committedValue[i] = v;\n }\n }\n if (change && !noCommit) {\n this._commitValue(value);\n }\n }\n /** @internal */\n _commitValue(value) {\n if (value === nothing) {\n wrap(this.element).removeAttribute(this.name);\n }\n else {\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n if (this._sanitizer === undefined) {\n this._sanitizer = sanitizerFactoryInternal(this.element, this.name, 'attribute');\n }\n value = this._sanitizer(value !== null && value !== void 0 ? value : '');\n }\n wrap(this.element).setAttribute(this.name, (value !== null && value !== void 0 ? value : ''));\n }\n }\n}\nclass PropertyPart extends AttributePart {\n constructor() {\n super(...arguments);\n this.type = PROPERTY_PART;\n }\n /** @internal */\n _commitValue(value) {\n if (ENABLE_EXTRA_SECURITY_HOOKS) {\n if (this._sanitizer === undefined) {\n this._sanitizer = sanitizerFactoryInternal(this.element, this.name, 'property');\n }\n value = this._sanitizer(value);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.element[this.name] = value === nothing ? undefined : value;\n }\n}\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n ? trustedTypes.emptyScript\n : '';\nclass BooleanAttributePart extends AttributePart {\n constructor() {\n super(...arguments);\n this.type = BOOLEAN_ATTRIBUTE_PART;\n }\n /** @internal */\n _commitValue(value) {\n if (value && value !== nothing) {\n wrap(this.element).setAttribute(this.name, emptyStringForBooleanAttribute);\n }\n else {\n wrap(this.element).removeAttribute(this.name);\n }\n }\n}\nclass EventPart extends AttributePart {\n constructor(element, name, strings, parent, options) {\n super(element, name, strings, parent, options);\n this.type = EVENT_PART;\n if (DEV_MODE && this.strings !== undefined) {\n throw new Error(`A \\`<${element.localName}>\\` has a \\`@${name}=...\\` listener with ` +\n 'invalid content. Event listeners in templates must have exactly ' +\n 'one expression and no surrounding text.');\n }\n }\n // EventPart does not use the base _$setValue/_resolveValue implementation\n // since the dirty checking is more complex\n /** @internal */\n _$setValue(newListener, directiveParent = this) {\n var _a;\n newListener =\n (_a = resolveDirective(this, newListener, directiveParent, 0)) !== null && _a !== void 0 ? _a : nothing;\n if (newListener === noChange) {\n return;\n }\n const oldListener = this._$committedValue;\n // If the new value is nothing or any options change we have to remove the\n // part as a listener.\n const shouldRemoveListener = (newListener === nothing && oldListener !== nothing) ||\n newListener.capture !==\n oldListener.capture ||\n newListener.once !==\n oldListener.once ||\n newListener.passive !==\n oldListener.passive;\n // If the new value is not nothing and we removed the listener, we have\n // to add the part as a listener.\n const shouldAddListener = newListener !== nothing &&\n (oldListener === nothing || shouldRemoveListener);\n if (shouldRemoveListener) {\n this.element.removeEventListener(this.name, this, oldListener);\n }\n if (shouldAddListener) {\n // Beware: IE11 and Chrome 41 don't like using the listener as the\n // options object. Figure out how to deal w/ this in IE11 - maybe\n // patch addEventListener?\n this.element.addEventListener(this.name, this, newListener);\n }\n this._$committedValue = newListener;\n }\n handleEvent(event) {\n var _a, _b;\n if (typeof this._$committedValue === 'function') {\n this._$committedValue.call((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.host) !== null && _b !== void 0 ? _b : this.element, event);\n }\n else {\n this._$committedValue.handleEvent(event);\n }\n }\n}\nclass ElementPart {\n constructor(element, parent, options) {\n this.element = element;\n this.type = ELEMENT_PART;\n /** @internal */\n this._$disconnectableChildren = undefined;\n this._$parent = parent;\n this.options = options;\n }\n // See comment in Disconnectable interface for why this is a getter\n get _$isConnected() {\n return this._$parent._$isConnected;\n }\n _$setValue(value) {\n resolveDirective(this, value);\n }\n}\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports mangled in the\n * client side code, we export a _$LH object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-element, which re-exports all of lit-html.\n *\n * @private\n */\nconst _$LH = {\n // Used in lit-ssr\n _boundAttributeSuffix: boundAttributeSuffix,\n _marker: marker,\n _markerMatch: markerMatch,\n _HTML_RESULT: HTML_RESULT,\n _getTemplateHtml: getTemplateHtml,\n // Used in hydrate\n _TemplateInstance: TemplateInstance,\n _isIterable: isIterable,\n _resolveDirective: resolveDirective,\n // Used in tests and private-ssr-support\n _ChildPart: ChildPart,\n _AttributePart: AttributePart,\n _BooleanAttributePart: BooleanAttributePart,\n _EventPart: EventPart,\n _PropertyPart: PropertyPart,\n _ElementPart: ElementPart,\n};\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n ? window.litHtmlPolyfillSupportDevMode\n : window.litHtmlPolyfillSupport;\npolyfillSupport === null || polyfillSupport === void 0 ? void 0 : polyfillSupport(Template, ChildPart);\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for lit-html usage.\n((_d = globalThis.litHtmlVersions) !== null && _d !== void 0 ? _d : (globalThis.litHtmlVersions = [])).push('2.1.1');\nif (DEV_MODE && globalThis.litHtmlVersions.length > 1) {\n issueWarning('multiple-versions', `Multiple versions of Lit loaded. ` +\n `Loading multiple versions is not recommended.`);\n}\n//# sourceMappingURL=lit-html.js.map\n\n//# sourceURL=webpack://replaywebpage/./node_modules/lit-html/development/lit-html.js?")},"./node_modules/lit/directives/if-defined.js":
/*!***************************************************!*\
!*** ./node_modules/lit/directives/if-defined.js ***!
\***************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "ifDefined": () => (/* reexport safe */ lit_html_directives_if_defined_js__WEBPACK_IMPORTED_MODULE_0__.ifDefined)\n/* harmony export */ });\n/* harmony import */ var lit_html_directives_if_defined_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-html/directives/if-defined.js */ "./node_modules/lit-html/development/directives/if-defined.js");\n\n//# sourceMappingURL=if-defined.js.map\n\n\n//# sourceURL=webpack://replaywebpage/./node_modules/lit/directives/if-defined.js?')},"./node_modules/lit/directives/style-map.js":
/*!**************************************************!*\
!*** ./node_modules/lit/directives/style-map.js ***!
\**************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "styleMap": () => (/* reexport safe */ lit_html_directives_style_map_js__WEBPACK_IMPORTED_MODULE_0__.styleMap)\n/* harmony export */ });\n/* harmony import */ var lit_html_directives_style_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-html/directives/style-map.js */ "./node_modules/lit-html/development/directives/style-map.js");\n\n//# sourceMappingURL=style-map.js.map\n\n\n//# sourceURL=webpack://replaywebpage/./node_modules/lit/directives/style-map.js?')},"./node_modules/lit/directives/unsafe-html.js":
/*!****************************************************!*\
!*** ./node_modules/lit/directives/unsafe-html.js ***!
\****************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "UnsafeHTMLDirective": () => (/* reexport safe */ lit_html_directives_unsafe_html_js__WEBPACK_IMPORTED_MODULE_0__.UnsafeHTMLDirective),\n/* harmony export */ "unsafeHTML": () => (/* reexport safe */ lit_html_directives_unsafe_html_js__WEBPACK_IMPORTED_MODULE_0__.unsafeHTML)\n/* harmony export */ });\n/* harmony import */ var lit_html_directives_unsafe_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-html/directives/unsafe-html.js */ "./node_modules/lit-html/development/directives/unsafe-html.js");\n\n//# sourceMappingURL=unsafe-html.js.map\n\n\n//# sourceURL=webpack://replaywebpage/./node_modules/lit/directives/unsafe-html.js?')},"./node_modules/lit/directives/unsafe-svg.js":
/*!***************************************************!*\
!*** ./node_modules/lit/directives/unsafe-svg.js ***!
\***************************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "unsafeSVG": () => (/* reexport safe */ lit_html_directives_unsafe_svg_js__WEBPACK_IMPORTED_MODULE_0__.unsafeSVG)\n/* harmony export */ });\n/* harmony import */ var lit_html_directives_unsafe_svg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lit-html/directives/unsafe-svg.js */ "./node_modules/lit-html/development/directives/unsafe-svg.js");\n\n//# sourceMappingURL=unsafe-svg.js.map\n\n\n//# sourceURL=webpack://replaywebpage/./node_modules/lit/directives/unsafe-svg.js?')},"./node_modules/lit/index.js":
/*!***********************************!*\
!*** ./node_modules/lit/index.js ***!
\***********************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "CSSResult": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.CSSResult),\n/* harmony export */ "INTERNAL": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.INTERNAL),\n/* harmony export */ "LitElement": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.LitElement),\n/* harmony export */ "ReactiveElement": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.ReactiveElement),\n/* harmony export */ "UpdatingElement": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.UpdatingElement),\n/* harmony export */ "_$LE": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__._$LE),\n/* harmony export */ "_$LH": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__._$LH),\n/* harmony export */ "adoptStyles": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.adoptStyles),\n/* harmony export */ "css": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.css),\n/* harmony export */ "defaultConverter": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.defaultConverter),\n/* harmony export */ "getCompatibleStyle": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.getCompatibleStyle),\n/* harmony export */ "html": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.html),\n/* harmony export */ "noChange": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.noChange),\n/* harmony export */ "notEqual": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.notEqual),\n/* harmony export */ "nothing": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.nothing),\n/* harmony export */ "render": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.render),\n/* harmony export */ "supportsAdoptingStyleSheets": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.supportsAdoptingStyleSheets),\n/* harmony export */ "svg": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.svg),\n/* harmony export */ "unsafeCSS": () => (/* reexport safe */ lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__.unsafeCSS)\n/* harmony export */ });\n/* harmony import */ var _lit_reactive_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lit/reactive-element */ "./node_modules/@lit/reactive-element/development/reactive-element.js");\n/* harmony import */ var lit_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lit-html */ "./node_modules/lit-html/development/lit-html.js");\n/* harmony import */ var lit_element_lit_element_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lit-element/lit-element.js */ "./node_modules/lit-element/development/lit-element.js");\n\n//# sourceMappingURL=index.js.map\n\n\n//# sourceURL=webpack://replaywebpage/./node_modules/lit/index.js?')},"./node_modules/marked/lib/marked.esm.js":
/*!***********************************************!*\
!*** ./node_modules/marked/lib/marked.esm.js ***!
\***********************************************/(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Lexer\": () => (/* binding */ Lexer),\n/* harmony export */ \"Parser\": () => (/* binding */ Parser),\n/* harmony export */ \"Renderer\": () => (/* binding */ Renderer),\n/* harmony export */ \"Slugger\": () => (/* binding */ Slugger),\n/* harmony export */ \"TextRenderer\": () => (/* binding */ TextRenderer),\n/* harmony export */ \"Tokenizer\": () => (/* binding */ Tokenizer),\n/* harmony export */ \"defaults\": () => (/* binding */ defaults),\n/* harmony export */ \"getDefaults\": () => (/* binding */ getDefaults),\n/* harmony export */ \"lexer\": () => (/* binding */ lexer),\n/* harmony export */ \"marked\": () => (/* binding */ marked),\n/* harmony export */ \"options\": () => (/* binding */ options),\n/* harmony export */ \"parse\": () => (/* binding */ parse),\n/* harmony export */ \"parseInline\": () => (/* binding */ parseInline),\n/* harmony export */ \"parser\": () => (/* binding */ parser),\n/* harmony export */ \"setOptions\": () => (/* binding */ setOptions),\n/* harmony export */ \"use\": () => (/* binding */ use),\n/* harmony export */ \"walkTokens\": () => (/* binding */ walkTokens)\n/* harmony export */ });\n/**\n * marked - a markdown parser\n * Copyright (c) 2011-2022, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nlet defaults = getDefaults();\n\nfunction changeDefaults(newDefaults) {\n defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nconst escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction merge(obj) {\n let i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) { cells.shift(); }\n if (!cells[cells.length - 1].trim()) { cells.pop(); }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\n// copied from https://stackoverflow.com/a/5450113/806777\nfunction repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n let result = '';\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n count >>= 1;\n pattern += pattern;\n }\n return result + pattern;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text, [])\n };\n lexer.state.inLink = false;\n return token;\n } else {\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n }\n}\n\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nclass Tokenizer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text\n };\n }\n }\n\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n const token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *> ?/gm, '');\n\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\n text\n };\n }\n }\n\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?: [^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0];\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n line = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(line)) {\n break;\n }\n\n if (line.search(/[^ ]/) >= indent || !line.trim()) { // Dedent if possible\n itemContents += '\\n' + line.slice(indent);\n } else if (!blankLine) { // Until blank line, item doesn't need indentation\n itemContents += '\\n' + line;\n } else { // Otherwise, improper indentation ends this item\n break;\n }\n\n if (!blankLine && !line.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.every(t => {\n const chars = t.raw.split('');\n let lineBreaks = 0;\n for (const char of chars) {\n if (char === '\\n') {\n lineBreaks += 1;\n }\n if (lineBreaks > 1) {\n return true;\n }\n }\n\n return false;\n });\n\n if (!list.loose && spacers.length && hasMultipleLineBreaks) {\n // Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item\n list.loose = true;\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n token.type = 'paragraph';\n token.text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.tokens = [];\n this.lexer.inline(token.text, token.tokens);\n }\n return token;\n }\n }\n\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n }\n\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n header: splitCells(cap[1]).map(c => { return { text: c }; }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = [];\n this.lexer.inlineTokens(item.header[j].text, item.header[j].tokens);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = [];\n this.lexer.inlineTokens(row[k].text, row[k].tokens);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n const token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const token = {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n const token = {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link || !link.href) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || (nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = src.slice(1, lLength + match.index + rLength);\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n }\n }\n\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2], [])\n };\n }\n }\n\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)( [^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?<?([^\\s>]+)>?(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /\x3c!--(?!-?>)[\\s\\S]*?(?:--\x3e|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n});\n\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n});\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan delim inside strong (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^([\\spunctuation])/\n};\n\n// list of punctuation marks from CommonMark spec\n// without * and _ to handle the different emphasis markers * and _\ninline._punctuation = '!\"#$%&\\'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~';\ninline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\ninline.escapedEmSt = /\\\\\\*|\\\\_/g;\n\ninline._comment = edit(block._comment).replace('(?:--\x3e|$)', '--\x3e').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim)\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n});\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n});\n\n/**\n * smartypants text replacement\n */\nfunction smartypants(text) {\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n}\n\n/**\n * mangle email addresses\n */\nfunction mangle(text) {\n let out = '',\n i,\n ch;\n\n const l = text.length;\n for (i = 0; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nclass Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/^ +$/gm, '');\n }\n let token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src, tokens) {\n this.inlineQueue.push({ src, tokens });\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped em & strong delimiters\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang, true)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n\n blockquote(quote) {\n return '<blockquote>\\n' + quote + '</blockquote>\\n';\n }\n\n html(html) {\n return html;\n }\n\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '<h'\n + level\n + ' id=\"'\n + this.options.headerPrefix\n + slugger.slug(raw)\n + '\">'\n + text\n + '</h'\n + level\n + '>\\n';\n }\n // ignore IDs\n return '<h' + level + '>' + text + '</h' + level + '>\\n';\n }\n\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n }\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n\n listitem(text) {\n return '<li>' + text + '</li>\\n';\n }\n\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n }\n\n paragraph(text) {\n return '<p>' + text + '</p>\\n';\n }\n\n table(header, body) {\n if (body) body = '<tbody>' + body + '</tbody>';\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n\n tablerow(content) {\n return '<tr>\\n' + content + '</tr>\\n';\n }\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '</' + type + '>\\n';\n }\n\n // span level renderer\n strong(text) {\n return '<strong>' + text + '</strong>';\n }\n\n em(text) {\n return '<em>' + text + '</em>';\n }\n\n codespan(text) {\n return '<code>' + text + '</code>';\n }\n\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n }\n\n del(text) {\n return '<del>' + text + '</del>';\n }\n\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '<a href=\"' + escape(href) + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n }\n\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n html(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass Slugger {\n constructor() {\n this.seen = {};\n }\n\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n * @param {object} options\n * @param {boolean} options.dryrun Generates the next unique slug without updating the internal accumulator.\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass Parser {\n constructor(options) {\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens),\n token.depth,\n unescape(this.parseInline(token.tokens, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens),\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens),\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n const done = function(err) {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n marked.walkTokens(tokens, function(token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, function(err, code) {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n const tokens = Lexer.lex(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n return Parser.parse(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (opt.silent) {\n return '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args) {\n const opts = merge({}, ...args);\n const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };\n let hasExtensions;\n\n args.forEach((pack) => {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if (ext.renderer) { // Renderer extensions\n const prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (ext.tokenizer) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = marked.defaults.renderer || new Renderer();\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = (...args) => {\n let ret = pack.renderer[prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = marked.defaults.tokenizer || new Tokenizer();\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = (...args) => {\n let ret = pack.tokenizer[prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = marked.defaults.walkTokens;\n opts.walkTokens = function(token) {\n pack.walkTokens.call(this, token);\n if (walkTokens) {\n walkTokens.call(this, token);\n }\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked.setOptions(opts);\n });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens, callback) {\n for (const token of tokens) {\n callback.call(marked, token);\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n marked.walkTokens(cell.tokens, callback);\n }\n for (const row of token.rows) {\n for (const cell of row) {\n marked.walkTokens(cell.tokens, callback);\n }\n }\n break;\n }\n case 'list': {\n marked.walkTokens(token.items, callback);\n break;\n }\n default: {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {\n marked.walkTokens(token[childTokens], callback);\n });\n } else if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n }\n};\n\n/**\n * Parse Inline\n */\nmarked.parseInline = function(src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n const tokens = Lexer.lexInline(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (opt.silent) {\n return '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n};\n\n/**\n * Expose\n */\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\nmarked.Tokenizer = Tokenizer;\nmarked.Slugger = Slugger;\nmarked.parse = marked;\n\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = Parser.parse;\nconst lexer = Lexer.lex;\n\n\n\n\n//# sourceURL=webpack://replaywebpage/./node_modules/marked/lib/marked.esm.js?")}},__webpack_module_cache__={};function __webpack_require__(n){var e=__webpack_module_cache__[n];if(void 0!==e)return e.exports;var t=__webpack_module_cache__[n]={id:n,loaded:!1,exports:{}};return __webpack_modules__[n].call(t.exports,t,t.exports,__webpack_require__),t.loaded=!0,t.exports}__webpack_require__.n=n=>{var e=n&&n.__esModule?()=>n.default:()=>n;return __webpack_require__.d(e,{a:e}),e},__webpack_require__.d=(n,e)=>{for(var t in e)__webpack_require__.o(e,t)&&!__webpack_require__.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},__webpack_require__.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),__webpack_require__.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},__webpack_require__.nmd=n=>(n.paths=[],n.children||(n.children=[]),n);var __webpack_exports__=__webpack_require__("./src/ui.js"),__webpack_export_target__=self;for(var i in __webpack_exports__)__webpack_export_target__[i]=__webpack_exports__[i];__webpack_exports__.__esModule&&Object.defineProperty(__webpack_export_target__,"__esModule",{value:!0})})();