diff --git a/static-files/clog-terminal/jquery.terminal.min.css.map b/static-files/clog-terminal/jquery.terminal.min.css.map new file mode 100644 index 0000000..9f8b7f0 --- /dev/null +++ b/static-files/clog-terminal/jquery.terminal.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["jquery.terminal.css"],"names":[],"mappings":"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","file":"jquery.terminal.min.css","sourcesContent":["/*!\n * __ _____ ________ __\n * / // _ /__ __ _____ ___ __ _/__ ___/__ ___ ______ __ __ __ ___ / /\n * __ / // // // // // _ // _// // / / // _ // _// // // \\/ // _ \\/ /\n * / / // // // // // ___// / / // / / // ___// / / / / // // /\\ // // / /__\n * \\___//____ \\\\___//____//_/ _\\_ / /_//____//_/ /_/ /_//_//_/ /_/ \\__\\_\\___/\n * \\/ /____/ version 2.34.0\n * http://terminal.jcubic.pl\n *\n * This file is part of jQuery Terminal.\n *\n * Copyright (c) 2011-2022 Jakub T. Jankiewicz \n * Released under the MIT license\n *\n * Date: Sun, 10 Jul 2022 21:53:25 +0000\n */\n.terminal .terminal-output .format, .cmd .format,\n.cmd-prompt, .cmd-prompt div {\n display: inline-block;\n}\n.terminal h1, .terminal h2, .terminal h3, .terminal h4, .terminal h5, .terminal h6, .terminal pre, .cmd {\n margin: 0;\n}\n.cmd .cmd-clipboard {\n position: absolute !important;\n let: -16px;\n left: calc(-16px / var(--pixel-density, 1)) !important;\n top: 0 !important;\n width: 16px;\n height: 16px;\n width: calc(16px / var(--pixel-density, 1)) !important;\n height: calc(16px / var(--pixel-density, 1)) !important;\n background: transparent !important;\n border: none !important;\n color: transparent !important;\n outline: none !important;\n padding: 0 !important;\n resize: none !important;\n z-index: 1000 !important;\n overflow: hidden !important;\n white-space: pre !important;\n text-indent: -9999em !important; /* better cursor hiding for Safari and IE */\n top: calc(var(--cursor-line, 0) * var(--size, 1) * (14px / var(--pixel-density, 1))) !important;\n}\n.visually-hidden {\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n top: 0;\n left: 0;\n}\n.cmd span.cmd-end-line,\n.cmd span.cmd-end-line span,\n.cmd div.cmd-end-line span[data-text]:last-child,\n.cmd div.cmd-end-line span[data-text]:last-child span,\n.cmd textarea,\n.cmd .cursor + span:empty {\n -webkit-touch-callout: none; /* iOS Safari */\n -webkit-user-select: none; /* Safari */\n -khtml-user-select: none; /* Konqueror HTML */\n -moz-user-select: none; /* Firefox */\n -ms-user-select: none; /* Internet Explorer/Edge */\n user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */\n}\n.terminal img, .terminal audio, .terminal object, .terminal canvas {\n cursor: default;\n}\n.terminal {\n position: relative;\n line-height: initial;\n}\n.terminal-scroller {\n position: relative;\n overflow-y: auto;\n scrollbar-gutter: stable;\n height: 100%;\n box-sizing: border-box;\n}\nterminal.terminal-temp {\n visibility: hidden;\n}\n.terminal {\n contain: content;\n}\nbody.terminal {\n min-height: 100vh;\n height: 100%;\n}\nhtml {\n height: 100%;\n}\nbody.terminal, body.full-screen-terminal {\n margin: 0;\n height: 100%;\n}\nbody.full-screen-terminal .terminal {\n height: 100%;\n}\n.terminal > div.terminal-fill {\n min-height: 100%;\n height: 100%;\n}\n.terminal > .terminal-pixel {\n position: absolute;\n display: inline;\n left: -2px;\n top: -2px;\n width: 1px;\n height: 1px;\n}\n.terminal > .terminal-resizer,\n.terminal > .terminal-font .terminal-resizer {\n position: absolute !important;\n top: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n left: 0 !important;\n overflow: hidden !important;\n pointer-events: none !important;\n z-index: -1 !important;\n height: 100% !important;\n border: none !important;\n padding: 0 !important;\n width: 100% !important;\n}\n.cmd {\n padding: 0;\n position: relative;\n width: 100%;\n z-index: 300;\n}\n.terminal .cmd, .terminal .cmd div {\n background: transparent !important;\n}\n.terminal a[tabindex=\"1000\"],\n.terminal a[tabindex=\"1000\"]:active,\n.terminal a[tabindex=\"1000\"]:focus {\n outline: none;\n}\n.terminal .inverted, .cmd.cmd.cmd .inverted,\n.terminal .terminal-inverted, .cmd.cmd.cmd .cmd-inverted {\n background-color: #aaa !important;\n color: #000 !important;\n}\n.terminal .terminal-output > :not(.raw) a[href],\n.cmd a[href],\n.terminal.external a[href] {\n color: #3377FF;\n color: var(--link-color, #3377FF);\n cursor: pointer;\n}\n.cmd a[href]:not(.terminal-inverted),\n.terminal .terminal-output > :not(.raw) a[href]:not(.terminal-inverted),\n.terminal.external a[href]:not(.terminal-inverted) {\n --color: var(--link-color, #3377FF);\n /* conditionals: https://www.kizu.ru/conditions-for-css-variables/ */\n /* --glow: 0; */\n text-shadow: 0 0 calc(var(--glow) * 5px) var(--color, #ccc);\n}\n.terminal .terminal-output > :not(.raw) a[href].terminal-inverted,\n.terminal.external a[href].terminal-inverted {\n background: var(--color, #ccc);\n /* conditionals: https://www.kizu.ru/conditions-for-css-variables/ */\n /* --glow: 0; */\n text-shadow: 0 0 calc(var(--glow) * 5px) var(--background, #000);\n}\n.terminal .terminal-output > :not(.raw) a[href]:hover,\n.cmd a[href]:hover,\n.terminal.external a[href]:hover {\n background-color: #3377FF;\n background-color: var(--link-color, #3377FF) !important;\n color: #000;\n color: var(--background, #000) !important;\n text-decoration: none;\n}\n.terminal .terminal-output > :not(.raw) a[href] span,\n.cmd a[href] span,\n.terminal.external a[href] span {\n /*\n * shorter and simple solution\n * it's hard to overwrite long :not selector (:not(a span) don't work)\n */\n color: #3377FF !important;\n --color: var(--link-color, #3377FF);\n color: var(--link-color, #3377FF) !important;\n text-decoration: underline;\n}\n.terminal .terminal-output > :not(.raw) a[href]:hover span,\n.cmd a[href]:hover span,\n.terminal.external a[href]:hover span {\n background-color: #3377FF !important;\n background-color: var(--link-color, #3377FF) !important;\n color: #000 !important;\n color: var(--background, #000) !important;\n text-decoration: none;\n}\n.cmd .cmd-cursor {\n display: inline-block;\n}\n.cmd .cmd-cursor-line > span,\n.cmd .cmd-cursor-line img {\n display: inline-block;\n}\n.cmd .cmd-cursor.cmd-blink > span[data-text]:not(.emoji):not(.fa):not(.far):not(.fas) span,\n.cmd .cmd-cursor.cmd-blink a,\n.cmd .cmd-cursor.cmd-blink .fa,\n.cmd .cmd-cursor.cmd-blink .far,\n.cmd .cmd-cursor.cmd-blink .fas,\n.cmd .cmd-cursor .emoji {\n -webkit-animation: terminal-blink 1s infinite linear;\n -moz-animation: terminal-blink 1s infinite linear;\n -ms-animation: terminal-blink 1s infinite linear;\n animation: terminal-blink 1s infinite linear;\n}\n.bar.terminal .inverted, .bar.cmd .cmd-inverted {\n box-shadow: -2px 0 0 -1px #aaa;\n box-shadow: -2px 0 0 -1px var(--original-color, #aaa);\n}\n.terminal, .terminal .terminal-output > div > div, .cmd .cmd-prompt {\n display: block;\n height: auto;\n}\n.terminal .terminal-output > div:not(.raw) div {\n white-space: nowrap;\n clear: both;\n}\n.cmd .cmd-prompt > span, .cmd .cmd-prompt:empty {\n float: left;\n}\n.cmd [data-text] span,\n.terminal [data-text] span {\n display: inline-block;\n}\n.terminal-ouput span[style*=\"width\"] {\n min-height: 14px;\n min-height: calc(var(--size, 1) * (14px / var(--pixel-density, 1)));\n}\n.terminal .terminal-output > :not(.raw) > div,\n.cmd div,\n.terminal.external div {\n line-height: 1em;\n line-height: calc((var(--size) * (14px / var(--pixel-density, 1))) + (1px / var(--pixel-density, 1)));\n}\n.cmd .cmd-prompt span.fa::before,\n.cmd .cmd-prompt span.fab::before,\n.cmd .cmd-prompt span.fad::before,\n.cmd .cmd-prompt span.fal::before,\n.cmd .cmd-prompt span.far::before,\n.cmd .cmd-prompt span.fas {\n position: relative;\n top: 2px;\n}\n.terminal,\n.terminal-output > :not(.raw),\n.terminal-output > :not(.raw) span:not(.fas):not(.far):not(.fa),\n.terminal-output > :not(.raw) a,\n.cmd,\n.cmd span:not(.fas):not(.far):not(.fa) {\n font-family: monospace;\n font-family: var(--font, monospace);\n}\n.terminal,\n.cmd {\n font-size: 12px;\n}\n.terminal-output > div:not(.raw) div::before,\n.cmd .cmd-line::before {\n content: '\\0200B';\n width: 0;\n display: inline-block;\n}\n.terminal span[data-text],\n.cmd span[data-text] {\n display: inline-block;\n}\n.terminal, terminal-output > div:not(.raw) div > span:not(.token):not(.inverted):not(.terminal-inverted):not(.cmd-inverted):not(.terminal-error):not(.emoji),\n.cmd span[data-text]:not(.cmd-inverted):not(.token):not(.emoji) {\n color: #aaa;\n background-color: #000;\n}\n.terminal span[data-text] span, .cmd span[data-text] span {\n text-decoration: inherit;\n}\n.terminal .ansi > div {\n line-height: 13px !important;\n line-height: calc(var(--size, 1) * (13px / var(--pixel-density, 1))) !important;\n}\n.cmd span.cmd-prompt, .cmd .cmd-prompt span {\n background-color: transparent !important;\n}\n.terminal-output .emoji, .cmd .emoji {\n height: 12px;\n height: calc(12px / var(--pixel-density, 1));\n background-size: contain;\n background-repeat: no-repeat;\n color: transparent;\n position: relative;\n}\n.terminal .terminal-output .fa span,\n.terminal .terminal-output .fas span,\n.terminal .terminal-output .far span,\n.cmd .fa span,\n.cmd .fas span,\n.cmd .far span {\n background: transparent !important;\n color: transparent !important;\n clip: rect(1px,1px,1px,1px);\n position: absolute;\n}\n.terminal-output .emoji,\n.terminal-output .emoji span,\n.cmd .emoji, .cmd .emoji span {\n display: inline-block;\n width: 2ch;\n}\n.terminal, .cmd {\n box-sizing: border-box;\n}\n.cmd .cmd-cursor span:not(.token):not(.inverted) {\n color: inherit;\n background-color: inherit;\n}\n.cmd .emoji.emoji.emoji.emoji, .cmd .emoji.emoji.emoji.emoji span {\n color: transparent;\n background-color: transparent;\n}\n.cmd .cmd-cursor * {\n background-color: transparent;\n}\n.terminal span[style*=\"width\"] span,\n.cmd span[style*=\"width\"] span {\n width: inherit;\n}\n.cmd div {\n clear: both;\n}\n.cmd .cmd-prompt + div {\n clear: right;\n}\nterminal .terminal-output > div {\n margin-top: -1px;\n}\n.terminal-output > div.raw > div * {\n overflow-wrap: break-word;\n word-wrap: break-word;\n}\n.terminal .terminal-font {\n position: absolute;\n float: left;\n font-size: inherit;\n line-height: inherit;\n top: -100%;\n left: 0;\n margin-bottom: 1px;\n}\n.cmd > span:not(.cmd-prompt) {\n float: left;\n}\n.cmd .cmd-prompt span.cmd-line {\n display: block;\n float: none;\n}\n.terminal table {\n border-collapse: collapse;\n}\n.terminal td {\n border: 1px solid #aaa;\n}\n.cmd span[data-text]:not(.emoji):not(.fa):not(.fas):not(.far) span {\n background-color: inherit;\n color: inherit;\n}\n/* fix for underline on middle line */\n.cmd [role=\"presentation\"].cmd-cursor-line {\n position: relative;\n z-index: 100;\n cursor: text;\n}\n/* prompt above cursor line */\n.cmd .cmd-prompt {\n position: relative;\n z-index: 200;\n}\n.cmd [role=\"presentation\"]:not(.cmd-cursor-line) {\n overflow: hidden;\n}\n/*\n * this is set so animation can select original color as backgound for cursor\n * so span can have --color for selection\n */\n.cmd {\n --original-color: var(--color, #aaa);\n}\n.cmd a[href] {\n --original-color: var(--link-color, #3377FF);\n}\n/* DEFAULT ANIMATION */\n@-webkit-keyframes terminal-blink {\n 0%, 50% {\n background-color: #aaa;\n background-color: var(--original-color, #aaa);\n color: #000;\n color: var(--background, #000);\n -webkit-box-shadow: 0 0 calc(var(--glow) * 3px) var(--color, #aaa);\n box-shadow: 0 0 calc(var(--glow) * 3px) var(--color, #aaa);\n }\n 50.1%, 100% {\n background-color: inherit;\n /* original background is set in emoji that need different style */\n color: inherit;\n color: var(--original-background, var(--original-color, #aaa));\n }\n}\n@-moz-keyframes terminal-blink {\n 0%, 50% {\n background-color: #aaa;\n background-color: var(--original-color, #aaa);\n color: #000;\n color: var(--background, #000);\n -webkit-box-shadow: 0 0 calc(var(--glow) * 3px) var(--color, #aaa);\n box-shadow: 0 0 calc(var(--glow) * 3px) var(--color, #aaa);\n }\n 50.1%, 100% {\n background-color: inherit;\n color: inherit;\n color: var(--original-background, var(--original-color, #aaa));\n }\n}\n@keyframes terminal-blink {\n 0%, 50% {\n background-color: #aaa;\n background-color: var(--original-color, #aaa);\n color: #000;\n color: var(--background, #000);\n -webkit-box-shadow: 0 0 calc(var(--glow) * 3px) var(--color, #aaa);\n box-shadow: 0 0 calc(var(--glow) * 3px) var(--color, #aaa);\n }\n 50.1%, 100% {\n background-color: inherit;\n color: inherit;\n color: var(--original-background, var(--original-color, #aaa));\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n/* GLOW ANIMATION */\n@-webkit-keyframes terminal-glow {\n 0%, 50% {\n background-color: #aaa;\n background-color: var(--original-color, #aaa);\n color: #000;\n color: var(--background, #000);\n box-shadow: 0 0 3px #aaa;\n -webkit-box-shadow: 0 0 3px var(--color, #aaa);\n box-shadow: 0 0 3px var(--color, #aaa);\n }\n 50.1%, 100% {\n background-color: inherit;\n color: inherit;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n@-moz-keyframes terminal-glow {\n 0%, 50% {\n background-color: #aaa;\n background-color: var(--original-color, #aaa);\n color: #000;\n color: var(--background, #000);\n box-shadow: 0 0 3px #aaa;\n -moz-box-shadow: 0 0 3px var(--color, #aaa);\n box-shadow: 0 0 3px var(--color, #aaa);\n }\n 50.1%, 100% {\n background-color: inherit;\n color: inherit;\n -moz-box-shadow: none;\n box-shadow: none;\n }\n}\n@keyframes terminal-glow {\n 0%, 50% {\n background-color: #aaa;\n background-color: var(--original-color, #aaa);\n color: #000;\n color: var(--background, #000);\n box-shadow: 0 0 3px #aaa;\n box-shadow: 0 0 3px var(--color, #aaa);\n }\n 50.1%, 100% {\n background-color: inherit;\n color: inherit;\n box-shadow: none;\n }\n}\n/* BAR ANIMATION */\n@-webkit-keyframes terminal-bar {\n 0%, 50% {\n box-shadow: -2px 0 0 -1px #aaa;\n box-shadow: -2px 0 0 -1px var(--original-color, #aaa);\n }\n 50.1%, 100% {\n box-shadow: none;\n }\n}\n@-moz-keyframes terminal-bar {\n 0%, 50% {\n box-shadow: -2px 0 0 -1px #aaa;\n box-shadow: -2px 0 0 -1px var(--original-color, #aaa);\n }\n 50.1%, 100% {\n box-shadow: none;\n }\n}\n@keyframes terminal-bar {\n 0%, 50% {\n box-shadow: -2px 0 0 -1px #aaa;\n box-shadow: -2px 0 0 -1px var(--original-color, #aaa);\n }\n 50.1%, 100% {\n box-shadow: none;\n }\n}\n/* UNDERLINE ANIMATION */\n@-webkit-keyframes terminal-underline {\n 0%, 50% {\n box-shadow: 0 2px 0 #aaa;\n box-shadow: 0 2px 0 var(--original-color, #aaa);\n }\n 50.1%, 100% {\n box-shadow: none;\n }\n}\n@-moz-keyframes terminal-underline {\n 0%, 50% {\n box-shadow: 0 2px 0 #aaa;\n box-shadow: 0 2px 0 var(--original-color, #aaa);\n }\n 50.1%, 100% {\n box-shadow: none;\n }\n}\n@keyframes terminal-underline {\n 0%, 50% {\n box-shadow: 0 2px 0 #aaa;\n box-shadow: 0 2px 0 var(--original-color, #aaa);\n }\n 50.1%, 100% {\n box-shadow: none;\n }\n}\n/* NONE ANIMATION */\n@-webkit-keyframes terminal-none {\n 0%, 100% {\n background-color: #aaa;\n background-color: var(--original-color, #aaa);\n color: #000;\n color: var(--background, #000);\n -webkit-box-shadow: 0 0 calc(var(--glow) * 3px) var(--color, #aaa);\n box-shadow: 0 0 calc(var(--glow) * 3px) var(--color, #aaa);\n }\n}\n@-moz-keyframes terminal-none {\n 0%, 100% {\n background-color: #aaa;\n background-color: var(--original-color, #aaa);\n color: #000;\n color: var(--background, #000);\n -webkit-box-shadow: 0 0 calc(var(--glow) * 3px) var(--color, #aaa);\n box-shadow: 0 0 calc(var(--glow) * 3px) var(--color, #aaa);\n }\n}\n@keyframes terminal-none {\n 0%, 100% {\n background-color: #aaa;\n background-color: var(--original-color, #aaa);\n color: #000;\n color: var(--background, #000);\n -webkit-box-shadow: 0 0 calc(var(--glow) * 3px) var(--color, #aaa);\n box-shadow: 0 0 calc(var(--glow) * 3px) var(--color, #aaa);\n }\n}\n.underline-animation .cmd .cmd-cursor.cmd-blink > span[data-text]:not(.emoji):not(.fa):not(.far):not(.fas) span,\n.underline-animation .cmd .cmd-cursor.cmd-blink a,\n.underline-animation .cmd .cmd-cursor.cmd-blink .fa,\n.underline-animation .cmd .cmd-cursor.cmd-blink .far,\n.underline-animation .cmd .cmd-cursor.cmd-blink .fas,\n.underline-animation .cmd .cmd-cursor .emoji {\n -webkit-animation-name: terminal-underline;\n -moz-animation-name: terminal-underline;\n -ms-animation-name: terminal-underline;\n animation-name: terminal-underline;\n}\n.glow-animation .cmd .cmd-cursor.cmd-blink > span[data-text]:not(.emoji):not(.fa):not(.far):not(.fas) span,\n.glow-animation .cmd .cmd-cursor.cmd-blink a,\n.glow-animation .cmd .cmd-cursor.cmd-blink .fa,\n.glow-animation .cmd .cmd-cursor.cmd-blink .far,\n.glow-animation .cmd .cmd-cursor.cmd-blink .fas,\n.glow-animation .cmd .cmd-cursor .emoji {\n -webkit-animation-name: terminal-glow;\n -moz-animation-name: terminal-glow;\n -ms-animation-name: terminal-glow;\n animation-name: terminal-glow;\n}\n.bar-animation .cmd .cmd-cursor.cmd-blink > span[data-text]:not(.emoji):not(.fa):not(.far):not(.fas) span,\n.bar-animation .cmd .cmd-cursor.cmd-blink a,\n.bar-animation .cmd .cmd-cursor.cmd-blink .fa,\n.bar-animation .cmd .cmd-cursor.cmd-blink .far,\n.bar-animation .cmd .cmd-cursor.cmd-blink .fas,\n.bar-animation .cmd .cmd-cursor .emoji {\n -webkit-animation-name: terminal-bar;\n -moz-animation-name: terminal-bar;\n -ms-animation-name: terminal-bar;\n animation-name: terminal-bar;\n}\n/*\n Internet Explorer & Edge *, Safari ≤ 6\n source: https://w3reign.com/internet-explorer-edge-css-hacks/\n*/\n\n\n@supports (-ms-ime-align:auto) {\n .cmd .cmd-clipboard {\n margin-left: -9999px;\n }\n @keyframes terminal-blink {\n 0%, 50% {\n background-color: var(--original-color, #aaa);\n color: var(--background, #000);\n }\n 50.1%, 100% {\n background-color: var(--background, #000);\n color: var(--original-color, #aaa);\n }\n }\n @keyframes terminal-bar {\n 0%, 50% {\n border-left-color: var(--color, #aaa);\n }\n 50.1%, 100% {\n border-left-color: var(--background, #000);\n }\n }\n @keyframes terminal-underline {\n 0%, 50% {\n border-bottom-color: var(--color, #aaa);\n line-height: 12px;\n line-height: calc(var(--size, 1) * (12px / var(--pixel-density, 1)));\n }\n 50.1%, 100% {\n border-bottom-color: var(--background, #000);\n line-height: 12px;\n line-height: calc(var(--size, 1) * (12px / var(--pixel-density, 1)));\n }\n }\n}\n/* IE hack Edge one don't work in IE11 */\n@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n .cmd .cmd-clipboard {\n margin-left: -9999px;\n }\n .underline-animation .cursor.blink span span {\n margin-top: 1px;\n }\n @-ms-keyframes terminal-blink {\n 0%, 50% {\n background-color: #aaa;\n color: #000;\n }\n 50.1%, 100% {\n background-color: #000;\n color: #aaa;\n }\n }\n}\n.terminal h1::-moz-selection,\n.terminal h2::-moz-selection,\n.terminal h3::-moz-selection,\n.terminal h4::-moz-selection,\n.terminal h5::-moz-selection,\n.terminal h6::-moz-selection,\n.terminal pre::-moz-selection,\n.terminal td::-moz-selection,\n.terminal .terminal-output::-moz-selection,\n.terminal .terminal-output div div::-moz-selection,\n.terminal .terminal-output div div a::-moz-selection,\n.terminal .terminal-output span[data-text]::-moz-selection,\n.terminal .terminal-output span[data-text]:not(.far):not(.fa):not(.fas) span::-moz-selection,\n.terminal .terminal-output .raw div::-moz-selection,\n.cmd span[data-text]::-moz-selection,\n.cmd span[data-text]:not(.far):not(.fa):not(.fas) span::-moz-selection {\n background-color: #aaa;\n color: #000;\n}\n/* this don't work in Chrome\n.terminal tr td::-moz-selection {\n border-color: #000;\n}\n.terminal tr td::selection {\n border-color: #000;\n}\n*/\n/* fix selection/click on text that was echo without newline while prompt is relocated */\n.terminal .cmd {\n pointer-events: none;\n}\n.terminal .cmd-prompt * {\n pointer-events: visible;\n}\n.cmd-prompt > span:first-child {\n margin-left: var(--prompt-offset);\n}\n.terminal .cmd-wrapper > div:not(.cmd-cursor-line),\n.terminal .cmd-cursor-line > span,\n.terminal .cmd textarea {\n pointer-events: visible;\n}\n.terminal h1::selection,\n.terminal h2::selection,\n.terminal h3::selection,\n.terminal h4::selection,\n.terminal h5::selection,\n.terminal h6::selection,\n.terminal pre::selection,\n.terminal td::selection,\n.terminal .terminal-output::selection,\n.terminal .terminal-output div div::selection,\n.terminal .terminal-output div div a::selection,\n.terminal .terminal-output span[data-text]::selection,\n.terminal .terminal-output span[data-text]:not(.far):not(.fa):not(.fas) span::selection,\n.terminal .terminal-output .raw div::selection,\n.cmd span[data-text]:not(.far):not(.fa):not(.fas) span::selection {\n /*\n * use rgba to fix transparent selection in chrome\n * http://stackoverflow.com/questions/7224445/css3-selection-behaves-differently-in-ff-chrome\n */\n background-color: rgba(170, 170, 170, 0.99);\n color: #000;\n}\n.terminal-output .emoji::-moz-selection,\n.terminal-output .emoji span::-moz-selection,\n.cmd .emoji::-moz-selection,\n.cmd .emoji span::-moz-selection,\n.cmd textarea::-moz-selection {\n background-color: transparent !important;\n color: transparent !important;\n}\n.terminal-output .emoji::selection,\n.terminal-output .emoji span::selection,\n.cmd .emoji span::selection,\n.cmd .emoji::selection,\n.cmd textarea::selection {\n background-color: transparent !important;\n color: transparent !important;\n}\n\n.terminal .terminal-output > :not(.raw) .terminal-error,\n.terminal .terminal-output > :not(.raw) .terminal-error * {\n color: red;\n color: var(--error-color, red);\n}\n.tilda {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n z-index: 1100;\n}\n.ui-dialog-content .terminal {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n}\n.ui-dialog .ui-dialog-content.dterm {\n padding: 0;\n}\n.clear {\n clear: both;\n}\n.terminal .terminal-fill {\n position: absolute;\n left: 0;\n top: -100%;\n width: 100%;\n height: 100%;\n margin: 1px 0 0;\n border: none;\n opacity: 0.01;\n pointer-events: none;\n box-sizing: border-box;\n}\n.terminal-scroller, .terminal .terminal-fill, .cmd-editable {\n padding: calc(10px / var(--pixel-density, 1));\n}\n.cmd-editable {\n padding-top: 0;\n}\n/* padding added as margin to .cmd to fix FireFox bug see: https://stackoverflow.com/q/29986977/387194 */\n.terminal-scroller {\n padding-bottom: 0;\n}\n.terminal .terminal-output > :not(.raw) .terminal-error,\n.terminal .terminal-output > :not(.raw) .terminal-error * {\n --color: var(--error-color, red);\n text-shadow: 0 0 calc(var(--glow) * 5px) var(--color);\n}\n.terminal .terminal-output > :not(.raw) a[href] {\n text-shadow: 0 0 calc(var(--glow) * 5px) var(--color);\n}\n.terminal .cmd {\n margin-bottom: calc(10px / var(--pixel-density, 1));\n position: relative;\n}\n.terminal .partial, .terminal .partial > div {\n display: inline-block;\n}\n@supports (--css: variables) {\n .terminal,\n .terminal-output > :not(.raw) span[data-text]:not(.token):not(.inverted):not(.terminal-inverted):not(.cmd-inverted):not(.terminal-error):not(.emoji),\n .terminal-output > :not(.raw) a,\n .terminal-output > :not(.raw) div,\n .cmd,\n .cmd span[data-text]:not(.cmd-inverted):not(.token):not(.emoji),\n .terminal.external [data-text],\n .cmd div {\n color: var(--color, #aaa);\n background-color: var(--background, #000);\n }\n .terminal [data-text], .cmd [data-text] {\n /* conditionals: https://www.kizu.ru/conditions-for-css-variables/ */\n /* --glow: 0; */\n text-shadow: var(--text-shadow, 0 0 calc(var(--glow) * 5px) var(--color, #ccc));\n }\n .terminal span[style*=\"--length\"] {\n /*\n * default value for char-width taken from Google Chrome for default font\n * to silence warning in webpack #371\n */\n width: calc(var(--length, 1) * var(--char-width, 7.23438) * 1px);\n display: inline-block;\n }\n .terminal,\n .terminal-output > :not(.raw) span,\n .terminal-output > :not(.raw) a,\n .terminal-output > :not(.raw) div,\n .cmd,\n .cmd span,\n .cmd div {\n font-size: calc(var(--size, 1) * (12px / var(--pixel-density, 1)));\n }\n .terminal-output .emoji, .cmd .emoji {\n height: calc(var(--size, 1) * (12px / var(--pixel-density, 1)));\n }\n .cmd .clipboard {\n top: calc(var(--size, 1) * (14 / var(--pixel-density, 1)) * var(--cursor-line, 0) * 1px);\n }\n .terminal .inverted, .cmd.cmd.cmd .inverted, .cmd.cmd.cmd .cmd-inverted {\n background-color: var(--color, #aaa) !important;\n color: var(--background, #000) !important;\n }\n .cmd .cmd-cursor.cmd-blink {\n color: var(--color, #aaa);\n background-color: var(--background, #000);\n }\n .cmd .cmd-cursor.cmd-blink > span[data-text]:not(.emoji):not(.fa):not(.far):not(.fas) span,\n .cmd .cmd-cursor.cmd-blink a,\n .cmd .cmd-cursor.cmd-blink .fa,\n .cmd .cmd-cursor.cmd-blink .far,\n .cmd .cmd-cursor.cmd-blink .fas,\n .cmd .cmd-cursor.cmd-blink .emoji {\n -webkit-animation: var(--animation, terminal-blink) 1s infinite linear;\n -moz-animation: var(--animation, terminal-blink) 1s infinite linear;\n -ms-animation: var(--animation, terminal-blink) 1s infinite linear;\n animation: var(--animation, terminal-blink) 1s infinite linear;\n --original-background: inherit;\n }\n .cmd .cmd-cursor.cmd-blink .emoji span {\n color: transparent;\n background: transparent;\n }\n .terminal h1::-moz-selection,\n .terminal h2::-moz-selection,\n .terminal h3::-moz-selection,\n .terminal h4::-moz-selection,\n .terminal h5::-moz-selection,\n .terminal h6::-moz-selection,\n .terminal pre::-moz-selection,\n .terminal td::-moz-selection,\n .terminal .terminal-output::-moz-selection,\n .terminal .terminal-output div div::-moz-selection,\n .terminal .terminal-output div div a::-moz-selection,\n .terminal .terminal-output span[data-text]::-moz-selection,\n /*\n * font icons (fontawesome) don't render selection we make emoji the same becuase,\n * selection on emoji looks weird\n */\n .terminal .terminal-output span[data-text]:not(.far):not(.fa):not(.fas):not(.emoji) span::-moz-selection,\n .terminal .terminal-output .raw div::-moz-selection,\n .cmd span[data-text]:not(.far):not(.fa):not(.fas):not(.emoji) span::-moz-selection {\n background-color: var(--color, #aaa);\n color: var(--background, #000);\n }\n .terminal .terminal-output div div a::-moz-selection {\n background-color: var(--link-color, rgba(15, 96, 255, 0.99)) !important;\n color: var(--background, #000) !important;\n }\n .terminal .terminal-output div div a:hover::-moz-selection {\n background-color: var(--link-color, rgba(2, 50, 144, 0.99)) !important;\n }\n .terminal h1::selection,\n .terminal h2::selection,\n .terminal h3::selection,\n .terminal h4::selection,\n .terminal h5::selection,\n .terminal h6::selection,\n .terminal pre::selection,\n .terminal td::selection,\n .terminal .terminal-output::selection,\n .terminal .terminal-output div div::selection,\n .terminal .terminal-output div div a::selection,\n .terminal .terminal-output span[data-text]:not(.emoji)::selection,\n .terminal .terminal-output span[data-text]:not(.far):not(.fa):not(.fas):not(.emoji) span::selection,\n .terminal .terminal-output .raw div::selection,\n .cmd span[data-text]:not(.far):not(.fa):not(.fas):not(.emoji) span::selection {\n background-color: var(--color, rgba(170, 170, 170, 0.99)) !important;\n color: var(--background, #000) !important;\n }\n .terminal .terminal-output div div a::selection {\n background-color: var(--link-color, rgba(15, 96, 255, 0.99)) !important;\n color: var(--background, #000) !important;\n }\n .terminal .terminal-output div div a:hover::selection {\n background-color: var(--link-color, rgba(2, 50, 144, 0.99)) !important;\n }\n}\n/*\n * overwrite css variables that don't work with selection in Edge\n */\n@supports (-ms-ime-align:auto) {\n .terminal h1::selection,\n .terminal h2::selection,\n .terminal h3::selection,\n .terminal h4::selection,\n .terminal h5::selection,\n .terminal h6::selection,\n .terminal pre::selection,\n .terminal td::selection,\n .terminal .terminal-output div div::selection,\n .terminal .terminal-output div div a::selection,\n .cmd span[data-text]::selection {\n background-color: rgba(170, 170, 170, 0.99);\n color: #000;\n }\n}\n/* PrismJS style overwrites */\n.terminal .token.token,\n.terminal .token.operator,\n.terminal .token.entity,\n.terminal .token.variable,\n.terminal .token.url,\n.terminal .token.string,\n.terminal .style .token.string,\n.terminal .token.token,\n.cmd .token.operator,\n.cmd .token.entity,\n.cmd .token.variable,\n.cmd .token.url,\n.cmd .token.string,\n.cmd .style .token.string,\n.cmd .token.token {\n background-color: inherit;\n}\n/* FireFox hack\n@supports (-moz-animation: foo) {\n .terminal,\n .terminal .terminal-output > :not(.raw) span,\n .terminal .terminal-output > :not(.raw) a,\n .terminal .terminal-output > :not(.raw) div,\n .cmd,\n .cmd span,\n .cmd div {\n line-height: calc(var(--size, 1) * 13px);\n }\n}\n*/\n/* style for autocomplete menu */\n.cmd .cursor-wrapper ul {\n list-style: none;\n margin: 0;\n padding: 0;\n float: left;\n position: absolute;\n top: 14px;\n left: 0;\n}\n.cmd .cursor-wrapper li {\n cursor: pointer;\n white-space: nowrap;\n}\n.cmd .cursor-wrapper li:hover {\n background: #aaa;\n color: #000;\n}\n.cursor-wrapper {\n position: relative;\n}\n.terminal-output img {\n vertical-align: top;\n}\n.cmd img {\n height: 14px;\n height: calc(var(--size, 1) * (14px / var(--pixel-density, 1)));\n border: 1px solid transparent;\n}\n.cmd-cursor img {\n border-color: #ccc;\n border-color: var(--color, #ccc);\n}\n.terminal-output svg.terminal-broken-image {\n height: calc(var(--size, 1) * (14px / var(--pixel-density, 1)));\n}\n.terminal-output svg.terminal-broken-image use {\n fill: var(--color, #ccc);\n}\n.terminal-error {\n --color: var(--error-color);\n}\n.terminal-glow {\n --animation: terminal-glow;\n}\n.terminal-glow span[data-text],\n.terminal-glow .cmd-prompt > span,\n.terminal-glow a[data-text],\n.terminal-glow [data-text] span,\n.terminal-glow .terminal-output > div span,\n.terminal-glow .terminal-output > div a[href] {\n text-shadow: 1px 1px 5px #ccc;\n text-shadow: 1px 1px 5px var(--color, #ccc);\n}\n/* is_bottom detection */\n.terminal-scroll-marker {\n position: relative;\n height: 1px;\n height: calc(1px / var(--pixel-density, 1));\n margin-top: -1px;\n margin-top: calc(-1px / var(--pixel-density, 1));\n z-index: 100;\n}\n.terminal-scroll-marker div {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 200;\n}\n.terminal-less {\n touch-action: none;\n overscroll-behavior-y: contain;\n}\n/*\n * mobile scroll fix, with help from StackOverflow\n * https://stackoverflow.com/a/60535925/387194\n */\n.terminal-mobile.terminal-less .terminal-wrapper {\n pointer-events: none;\n}\n.terminal-mobile.terminal-less .terminal-output a, .cmd-editable {\n pointer-events: visible;\n}\n.cmd-editable::before {\n content: attr(data-cmd-prompt);\n display: inline-block;\n}\n.cmd-editable {\n position: absolute;\n top: 0;\n top: calc(var(--terminal-y, var(--cmd-y, 0)) + var(--terminal-scroll, 0) * 1px);\n right: 0;\n left: 0;\n bottom: 0;\n bottom: calc(var(--terminal-scroll, 0) * -1px);\n z-index: 500;\n color: transparent;\n background: transparent;\n opacity: 0.01;\n}\n.terminal-scroller::-webkit-scrollbar {\n width: calc(6px / var(--pixel-density, 1));\n height: calc(6px / var(--pixel-density, 1));\n background: var(--background, #000);\n}\n.terminal-scroller::-webkit-scrollbar-thumb {\n background: var(--color, #aaa);\n}\n.terminal-scroller::-webkit-scrollbar-thumb:hover {\n background: var(--color, #aaa);\n}\n.terminal-scroller {\n scrollbar-color: #aaa #000;\n scrollbar-color: var(--color, #aaa) var(--background, #000);\n scrollbar-width: thin;\n}\n.cmd .token {\n --original-color: var(--color);\n}\n.terminal .terminal-blink, .cmd .terminal-blink {\n animation: terminal-ansi-blink 1s steps(2, start) infinite;\n -webkit-animation: terminal-ansi-blink 1s steps(2, start) infinite;\n}\n@keyframes terminal-ansi-blink {\n to {\n color: var(--background);\n }\n}\n@-webkit-keyframes terminal-ansi-blink {\n to {\n color: var(--background);\n }\n}\n@media (prefers-reduced-motion) {\n :root {\n --animation: terminal-none;\n }\n}\n"]} \ No newline at end of file diff --git a/static-files/clog-terminal/jquery.terminal.min.js.map b/static-files/clog-terminal/jquery.terminal.min.js.map new file mode 100644 index 0000000..f5f82b3 --- /dev/null +++ b/static-files/clog-terminal/jquery.terminal.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["jquery.terminal.js"],"sourcesContent":["/**@license\n * __ _____ ________ __\n * / // _ /__ __ _____ ___ __ _/__ ___/__ ___ ______ __ __ __ ___ / /\n * __ / // // // // // _ // _// // / / // _ // _// // // \\/ // _ \\/ /\n * / / // // // // // ___// / / // / / // ___// / / / / // // /\\ // // / /__\n * \\___//____ \\\\___//____//_/ _\\_ / /_//____//_/ /_/ /_//_//_/ /_/ \\__\\_\\___/\n * \\/ /____/ version 2.34.0\n *\n * This file is part of jQuery Terminal. https://terminal.jcubic.pl\n *\n * Copyright (c) 2010-2022 Jakub T. Jankiewicz \n * Released under the MIT license\n *\n * Contains:\n *\n * Storage plugin Distributed under the MIT License\n * modified to work from Data URIs that block storage and cookies in Chrome\n * Copyright (c) 2010 Dave Schindler\n *\n * jQuery Timers licenced with the WTFPL\n * \n *\n * Cross-Browser Split 1.1.1\n * Copyright 2007-2012 Steven Levithan \n * Available under the MIT License\n *\n * jQuery Caret\n * Copyright (c) 2009, Gideon Sireling\n * 3 clause BSD License\n *\n * sprintf.js\n * Copyright (c) 2007-2013 Alexandru Marasteanu \n * licensed under 3 clause BSD license\n *\n * debounce function from Lodash\n * Copyright JS Foundation and other contributors \n * The MIT License\n *\n * emoji regex v9.0.0 by Mathias Bynens\n * MIT license\n *\n * broken image by Sophia Bai from the Noun Project (CC-BY)\n *\n * Date: Sun, 10 Jul 2022 21:53:25 +0000\n */\n/* global define, Map */\n/* eslint-disable */\n/* istanbul ignore next */\n(function(ctx) {\n var sprintf = function() {\n if (!sprintf.cache.hasOwnProperty(arguments[0])) {\n sprintf.cache[arguments[0]] = sprintf.parse(arguments[0]);\n }\n return sprintf.format.call(null, sprintf.cache[arguments[0]], arguments);\n };\n sprintf.format = function(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length;\n for (i = 0; i < tree_length; i++) {\n node_type = get_type(parse_tree[i]);\n if (node_type === 'string') {\n output.push(parse_tree[i]);\n }\n else if (node_type === 'array') {\n match = parse_tree[i]; // convenience purposes only\n if (match[2]) { // keyword argument\n arg = argv[cursor];\n for (k = 0; k < match[2].length; k++) {\n if (!arg.hasOwnProperty(match[2][k])) {\n throw(sprintf('[sprintf] property \"%s\" does not exist', match[2][k]));\n }\n arg = arg[match[2][k]];\n }\n }\n else if (match[1]) { // positional argument (explicit)\n arg = argv[match[1]];\n }\n else { // positional argument (implicit)\n arg = argv[cursor++];\n }\n\n if (/[^s]/.test(match[8]) && (get_type(arg) !== 'number')) {\n throw(sprintf('[sprintf] expecting number but found %s', get_type(arg)));\n }\n switch (match[8]) {\n case 'b': arg = arg.toString(2); break;\n case 'c': arg = String.fromCharCode(arg); break;\n case 'd': arg = parseInt(arg, 10); break;\n case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break;\n case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break;\n case 'o': arg = arg.toString(8); break;\n case 's': arg = ((arg = String(arg)) && match[7] ? arg.slice(0, match[7]) : arg); break;\n case 'u': arg = arg >>> 0; break;\n case 'x': arg = arg.toString(16); break;\n case 'X': arg = arg.toString(16).toUpperCase(); break;\n }\n arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? ' +' + arg : arg);\n pad_character = match[4] ? match[4] === '0' ? '0' : match[4].charAt(1) : ' ';\n pad_length = match[6] - String(arg).length;\n pad = match[6] ? str_repeat(pad_character, pad_length) : '';\n output.push(match[5] ? arg + pad : pad + arg);\n }\n }\n return output.join('');\n };\n\n sprintf.cache = {};\n\n sprintf.parse = function(fmt) {\n var _fmt = fmt, match = [], parse_tree = [], arg_names = 0;\n while (_fmt) {\n if ((match = /^[^\\x25]+/.exec(_fmt)) !== null) {\n parse_tree.push(match[0]);\n }\n else if ((match = /^\\x25{2}/.exec(_fmt)) !== null) {\n parse_tree.push('%');\n }\n else if ((match = /^\\x25(?:([1-9]\\d*)\\$|\\(([^\\)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-fosuxX])/.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1;\n var field_list = [], replacement_field = match[2], field_match = [];\n if ((field_match = /^([a-z_][a-z_\\d]*)/i.exec(replacement_field)) !== null) {\n field_list.push(field_match[1]);\n while ((replacement_field = replacement_field.slice(field_match[0].length)) !== '') {\n if ((field_match = /^\\.([a-z_][a-z_\\d]*)/i.exec(replacement_field)) !== null) {\n field_list.push(field_match[1]);\n }\n else if ((field_match = /^\\[(\\d+)\\]/.exec(replacement_field)) !== null) {\n field_list.push(field_match[1]);\n }\n else {\n throw('[sprintf] huh?');\n }\n }\n }\n else {\n throw('[sprintf] huh?');\n }\n match[2] = field_list;\n }\n else {\n arg_names |= 2;\n }\n if (arg_names === 3) {\n throw('[sprintf] mixing positional and named placeholders is not (yet) supported');\n }\n parse_tree.push(match);\n }\n else {\n throw('[sprintf] huh?');\n }\n _fmt = _fmt.slice(match[0].length);\n }\n return parse_tree;\n };\n\n var vsprintf = function(fmt, argv, _argv) {\n _argv = argv.slice(0);\n _argv.splice(0, 0, fmt);\n return sprintf.apply(null, _argv);\n };\n\n /**\n * helpers\n */\n function get_type(variable) {\n return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();\n }\n\n function str_repeat(input, multiplier) {\n for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */}\n return output.join('');\n }\n\n /**\n * export to either browser or node.js\n */\n ctx.sprintf = sprintf;\n ctx.vsprintf = vsprintf;\n})(typeof global !== \"undefined\" ? global : self || window);\n// -----------------------------------------------------------------------\n/* eslint-enable */\n// UMD taken from https://github.com/umdjs/umd\n(function(factory, undefined) {\n var root;\n if (typeof window !== 'undefined') {\n root = window;\n } else if (typeof self !== 'undefined') {\n root = self;\n } else if (typeof global !== 'undefined') {\n root = global;\n } else {\n throw new Error('Unknow context');\n }\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n // istanbul ignore next\n define(['jquery', 'wcwidth'], function(jquery, wcwidth) {\n factory(jquery, wcwidth, root);\n return jquery;\n });\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function(root, jQuery, wcwidth) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n } else {\n jQuery = require('jquery')(root);\n }\n }\n if (wcwidth === undefined) {\n wcwidth = require('wcwidth');\n }\n factory(jQuery, wcwidth, root);\n return jQuery;\n };\n } else {\n // Browser\n // istanbul ignore next\n if (!root.jQuery) {\n root.$ = root.cash;\n }\n factory(root.jQuery || root.cash, root.wcwidth, root);\n }\n})(function($, wcwidth, root, undefined) {\n 'use strict';\n // -----------------------------------------------------------------------\n // :: debug functions\n // -----------------------------------------------------------------------\n /* eslint-disable */\n /* istanbul ignore next */\n function debug(str) {\n if (false) {\n console.log(str);\n //$.terminal.active().echo(str);\n }\n }\n /* eslint-enable */\n // -----------------------------------------------------------------------\n // :: Replacemenet for jQuery 2 deferred objects\n // -----------------------------------------------------------------------\n function DelayQueue() {\n var callbacks = $.Callbacks();\n var resolved = false;\n this.resolve = function() {\n callbacks.fire();\n resolved = true;\n };\n this.add = function(fn) {\n if (resolved) {\n fn();\n } else {\n callbacks.add(fn);\n }\n };\n }\n // -----------------------------------------------------------------------\n // :: map object to object\n // -----------------------------------------------------------------------\n $.omap = function(o, fn) {\n var result = {};\n $.each(o, function(k, v) {\n result[k] = fn.call(o, k, v);\n });\n return result;\n };\n $.fn.text_length = function() {\n return this.map(function() {\n return $(this).text().length;\n }).get().reduce(function(a, b) {\n return a + b;\n }, 0);\n };\n // -----------------------------------------------------------------------\n // :: Deep clone of objects and arrays\n // -----------------------------------------------------------------------\n var Clone = {\n clone_object: function(object) {\n var tmp = {};\n if (typeof object === 'object') {\n if ($.isArray(object)) {\n return this.clone_array(object);\n } else if (object === null) {\n return object;\n } else {\n for (var key in object) {\n if ($.isArray(object[key])) {\n tmp[key] = this.clone_array(object[key]);\n } else if (typeof object[key] === 'object') {\n tmp[key] = this.clone_object(object[key]);\n } else {\n tmp[key] = object[key];\n }\n }\n }\n }\n return tmp;\n },\n clone_array: function(array) {\n if (!is_function(Array.prototype.map)) {\n throw new Error(\"Your browser don't support ES5 array map \" +\n 'use es5-shim');\n }\n return array.slice(0).map(function(item) {\n if (typeof item === 'object') {\n return this.clone_object(item);\n } else {\n return item;\n }\n }.bind(this));\n }\n };\n var clone = function(object) {\n return Clone.clone_object(object);\n };\n // -----------------------------------------------------------------------\n // IE11 polyfill\n // -----------------------------------------------------------------------\n /* eslint-disable */\n if ('Map' in root && !('clear' in Map.prototype)) {\n Map.prototype.clear = function() {\n this.forEach(function(value, key, map) {\n map.delete(key);\n });\n };\n }\n // -----------------------------------------------------------------------\n // :: Storage plugin\n // -----------------------------------------------------------------------\n var localStorage;\n /* istanbul ignore next */\n (function() {\n var hasLS = function() {\n try {\n var testKey = 'test', storage = window.localStorage;\n storage.setItem(testKey, '1');\n storage.removeItem(testKey);\n return true;\n } catch (error) {\n return false;\n }\n };\n var hasCookies = function() {\n try {\n document.cookie.split(';');\n return true;\n } catch (e) {\n return false;\n }\n };\n // Private data\n var isLS = hasLS();\n // Private functions\n function wls(n, v) {\n var c;\n if (typeof n === 'string' && typeof v === 'string') {\n localStorage[n] = v;\n return true;\n } else if (typeof n === 'object' && typeof v === 'undefined') {\n for (c in n) {\n if (n.hasOwnProperty(c)) {\n localStorage[c] = n[c];\n }\n }\n return true;\n }\n return false;\n }\n function wc(n, v) {\n var dt, e, c;\n dt = new Date();\n dt.setTime(dt.getTime() + 31536000000);\n e = '; expires=' + dt.toGMTString();\n if (typeof n === 'string' && typeof v === 'string') {\n document.cookie = n + '=' + v + e + '; path=/';\n return true;\n } else if (typeof n === 'object' && typeof v === 'undefined') {\n for (c in n) {\n if (n.hasOwnProperty(c)) {\n document.cookie = c + '=' + n[c] + e + '; path=/';\n }\n }\n return true;\n }\n return false;\n }\n function rls(n) {\n return localStorage[n];\n }\n function rc(n) {\n var nn, ca, i, c;\n nn = n + '=';\n ca = document.cookie.split(';');\n for (i = 0; i < ca.length; i++) {\n c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.slice(1, c.length);\n }\n if (c.indexOf(nn) === 0) {\n return c.slice(nn.length, c.length);\n }\n }\n return null;\n }\n function dls(n) {\n return delete localStorage[n];\n }\n function dc(n) {\n return wc(n, '', -1);\n }\n /**\n * Public API\n * $.Storage.set(\"name\", \"value\")\n * $.Storage.set({\"name1\":\"value1\", \"name2\":\"value2\", etc})\n * $.Storage.get(\"name\")\n * $.Storage.remove(\"name\")\n */\n if (!hasCookies() && !isLS) {\n localStorage = {};\n $.extend({\n Storage: {\n set: wls,\n get: rls,\n remove: dls\n }\n });\n } else {\n if (isLS) {\n localStorage = window.localStorage;\n }\n $.extend({\n Storage: {\n set: isLS ? wls : wc,\n get: isLS ? rls : rc,\n remove: isLS ? dls : dc\n }\n });\n }\n })();\n // -----------------------------------------------------------------------\n // :: Debounce from Lodash\n // -----------------------------------------------------------------------\n /* istanbul ignore next */\n var debounce = (function() {\n var FUNC_ERROR_TEXT = 'Expected a function';\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n function now() {\n return Date.now();\n }\n return function debounce(func, wait, options) {\n var nativeMax = Math.max,\n nativeMin = Math.min;\n\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(options.maxWait || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n };\n })();\n // -----------------------------------------------------------------------\n // :: jQuery Timers\n // -----------------------------------------------------------------------\n var jQuery = $;\n /* istanbul ignore next */\n (function($) {\n jQuery.fn.extend({\n everyTime: function(interval, label, fn, times, belay) {\n return this.each(function() {\n jQuery.timer.add(this, interval, label, fn, times, belay);\n });\n },\n oneTime: function(interval, label, fn) {\n return this.each(function() {\n jQuery.timer.add(this, interval, label, fn, 1);\n });\n },\n stopTime: function(label, fn) {\n return this.each(function() {\n jQuery.timer.remove(this, label, fn);\n });\n }\n });\n\n jQuery.extend({\n timer: {\n guid: 1,\n global: {},\n regex: /^([0-9]+)\\s*(.*s)?$/,\n powers: {\n // Yeah this is major overkill...\n 'ms': 1,\n 'cs': 10,\n 'ds': 100,\n 's': 1000,\n 'das': 10000,\n 'hs': 100000,\n 'ks': 1000000\n },\n timeParse: function(value) {\n if (value === undefined || value === null) {\n return null;\n }\n var result = this.regex.exec(jQuery.trim(value.toString()));\n if (result[2]) {\n var num = parseInt(result[1], 10);\n var mult = this.powers[result[2]] || 1;\n return num * mult;\n } else {\n return value;\n }\n },\n add: function(element, interval, label, fn, times, belay) {\n var counter = 0;\n\n if (jQuery.isFunction(label)) {\n if (!times) {\n times = fn;\n }\n fn = label;\n label = interval;\n }\n\n interval = jQuery.timer.timeParse(interval);\n\n if (typeof interval !== 'number' ||\n isNaN(interval) ||\n interval <= 0) {\n return;\n }\n if (times && times.constructor !== Number) {\n belay = !!times;\n times = 0;\n }\n\n times = times || 0;\n belay = belay || false;\n\n if (!element.$timers) {\n element.$timers = {};\n }\n if (!element.$timers[label]) {\n element.$timers[label] = {};\n }\n fn.$timerID = fn.$timerID || this.guid++;\n\n var handler = function() {\n if (belay && handler.inProgress) {\n return;\n }\n handler.inProgress = true;\n if ((++counter > times && times !== 0) ||\n fn.call(element, counter) === false) {\n jQuery.timer.remove(element, label, fn);\n }\n handler.inProgress = false;\n };\n\n handler.$timerID = fn.$timerID;\n\n if (!element.$timers[label][fn.$timerID]) {\n element.$timers[label][fn.$timerID] = setInterval(handler, interval);\n }\n\n if (!this.global[label]) {\n this.global[label] = [];\n }\n this.global[label].push(element);\n\n },\n remove: function(element, label, fn) {\n var timers = element.$timers, ret;\n\n if (timers) {\n\n if (!label) {\n for (var lab in timers) {\n if (timers.hasOwnProperty(lab)) {\n this.remove(element, lab, fn);\n }\n }\n } else if (timers[label]) {\n if (fn) {\n if (fn.$timerID) {\n clearInterval(timers[label][fn.$timerID]);\n delete timers[label][fn.$timerID];\n }\n } else {\n for (var _fn in timers[label]) {\n if (timers[label].hasOwnProperty(_fn)) {\n clearInterval(timers[label][_fn]);\n delete timers[label][_fn];\n }\n }\n }\n\n for (ret in timers[label]) {\n if (timers[label].hasOwnProperty(ret)) {\n break;\n }\n }\n if (!ret) {\n ret = null;\n delete timers[label];\n }\n }\n\n for (ret in timers) {\n if (timers.hasOwnProperty(ret)) {\n break;\n }\n }\n if (!ret) {\n element.$timers = null;\n }\n }\n }\n }\n });\n if (/(msie) ([\\w.]+)/.exec(navigator.userAgent.toLowerCase())) {\n $(window).one('unload', function() {\n var global = jQuery.timer.global;\n for (var label in global) {\n if (global.hasOwnProperty(label)) {\n var els = global[label], i = els.length;\n while (--i) {\n jQuery.timer.remove(els[i], label);\n }\n }\n }\n });\n }\n })(jQuery);\n // -----------------------------------------------------------------------\n // :: CROSS BROWSER SPLIT\n // -----------------------------------------------------------------------\n /* istanbul ignore next */\n (function(undef) {\n // prevent double include\n\n if (!String.prototype.split.toString().match(/\\[native/)) {\n return;\n }\n\n var nativeSplit = String.prototype.split,\n compliantExecNpcg = /()??/.exec(\"\")[1] === undef, // NPCG: nonparticipating capturing group\n self;\n\n self = function(str, separator, limit) {\n // If `separator` is not a regex, use `nativeSplit`\n if (Object.prototype.toString.call(separator) !== \"[object RegExp]\") {\n return nativeSplit.call(str, separator, limit);\n }\n var output = [],\n flags = (separator.ignoreCase ? \"i\" : \"\") +\n (separator.multiline ? \"m\" : \"\") +\n (separator.extended ? \"x\" : \"\") + // Proposed for ES6\n (separator.sticky ? \"y\" : \"\"), // Firefox 3+\n lastLastIndex = 0,\n // Make `global` and avoid `lastIndex` issues by working with a copy\n separator2, match, lastIndex, lastLength;\n separator = new RegExp(separator.source, flags + \"g\");\n str += \"\"; // Type-convert\n if (!compliantExecNpcg) {\n // Doesn't need flags gy, but they don't hurt\n separator2 = new RegExp(\"^\" + separator.source + \"$(?!\\\\s)\", flags);\n }\n /* Values for `limit`, per the spec:\n * If undefined: 4294967295 // Math.pow(2, 32) - 1\n * If 0, Infinity, or NaN: 0\n * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;\n * If negative number: 4294967296 - Math.floor(Math.abs(limit))\n * If other: Type-convert, then use the above rules\n */\n // ? Math.pow(2, 32) - 1 : ToUint32(limit)\n limit = limit === undef ? -1 >>> 0 : limit >>> 0;\n while (match = separator.exec(str)) {\n // `separator.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0].length;\n if (lastIndex > lastLastIndex) {\n output.push(str.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for\n // nonparticipating capturing groups\n if (!compliantExecNpcg && match.length > 1) {\n match[0].replace(separator2, function() {\n for (var i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undef) {\n match[i] = undef;\n }\n }\n });\n }\n if (match.length > 1 && match.index < str.length) {\n Array.prototype.push.apply(output, match.slice(1));\n }\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= limit) {\n break;\n }\n }\n if (separator.lastIndex === match.index) {\n separator.lastIndex++; // Avoid an infinite loop\n }\n }\n if (lastLastIndex === str.length) {\n if (lastLength || !separator.test(\"\")) {\n output.push(\"\");\n }\n } else {\n output.push(str.slice(lastLastIndex));\n }\n return output.length > limit ? output.slice(0, limit) : output;\n };\n\n // For convenience\n String.prototype.split = function(separator, limit) {\n return self(this, separator, limit);\n };\n\n return self;\n\n })();\n // -----------------------------------------------------------------------\n // :: jQuery Caret\n // -----------------------------------------------------------------------\n /* istanbul ignore next */\n $.fn.caret = function(pos) {\n var target = this[0];\n var isContentEditable = target.contentEditable === 'true';\n //get\n if (arguments.length === 0) {\n //HTML5\n if (window.getSelection) {\n //contenteditable\n if (isContentEditable) {\n if (!this.is(':focus')) {\n target.focus();\n }\n var range1 = window.getSelection().getRangeAt(0),\n range2 = range1.cloneRange();\n range2.selectNodeContents(target);\n range2.setEnd(range1.endContainer, range1.endOffset);\n return range2.toString().length;\n }\n //textarea\n return target.selectionStart;\n }\n //IE<9\n if (document.selection) {\n target.focus();\n //contenteditable\n if (isContentEditable) {\n var range1 = document.selection.createRange(),\n range2 = document.body.createTextRange();\n range2.moveToElementText(target);\n range2.setEndPoint('EndToEnd', range1);\n return range2.text.length;\n }\n //textarea\n var pos = 0,\n range = target.createTextRange(),\n range2 = document.selection.createRange().duplicate(),\n bookmark = range2.getBookmark();\n range.moveToBookmark(bookmark);\n while (range.moveStart('character', -1) !== 0) pos++;\n return pos;\n }\n //not supported\n return 0;\n }\n //set\n if (pos === -1)\n pos = this[isContentEditable? 'text' : 'val']().length;\n //HTML5\n if (window.getSelection) {\n //contenteditable\n if (isContentEditable) {\n if (!this.is(':focus')) {\n target.focus();\n }\n var selection = window.getSelection();\n selection.collapse(selection.focusNode, pos);\n }\n //textarea\n else\n target.setSelectionRange(pos, pos);\n }\n //IE<9\n else if (document.body.createTextRange) {\n var range = document.body.createTextRange();\n range.moveToElementText(target);\n range.moveStart('character', pos);\n range.collapse(true);\n range.select();\n }\n if (!isContentEditable && !this.is(':focus')) {\n target.focus();\n }\n return pos;\n };\n /* eslint-enable */\n // -----------------------------------------------------------------------\n // :: callback based event handler plugin generator\n // -----------------------------------------------------------------------\n function make_callback_plugin(options) {\n var factory_settings = $.extend({\n init: $.noop,\n destroy: $.noop,\n name: 'event'\n }, options);\n return function(callback, options) {\n var trigger = arguments.length === 0;\n var unbind = arguments[0] === \"unbind\";\n if (!trigger && !unbind && !is_function(callback)) {\n throw new Error('Invalid argument, it need to a function or string ' +\n '\"unbind\" or no arguments.');\n }\n if (unbind) {\n callback = is_function(arguments[1]) ? arguments[1] : null;\n }\n var data_name = 'callbacks_' + factory_settings.name;\n return this.each(function() {\n var $this = $(this);\n var callbacks;\n function handler(arg) {\n callbacks.fireWith($this, [arg]);\n }\n if (trigger || unbind) {\n callbacks = $this.data(data_name);\n if (trigger) {\n callbacks && callbacks.fire();\n } else {\n if (callback && callbacks) {\n callbacks.remove(callback);\n if (!callbacks.has()) {\n callbacks = null;\n }\n } else {\n callbacks = null;\n }\n if (!callbacks) {\n $this.removeData(data_name);\n factory_settings.destroy.call(this, handler, options);\n }\n }\n } else if ($this.data(data_name)) {\n $(this).data(data_name).add(callback);\n } else {\n callbacks = $.Callbacks();\n callbacks.add(callback);\n $this.data(data_name, callbacks);\n factory_settings.init.call(this, handler, options);\n }\n });\n };\n }\n // -----------------------------------------------------------------------\n // :: Cross-browser resize element plugin using sentinel iframe or\n // :: resizeObserver\n // -----------------------------------------------------------------------\n $.fn.resizer = make_callback_plugin({\n name: 'resize',\n init: function(handler, options) {\n var settings = $.extend({\n prefix: ''\n }, options);\n var $this = $(this);\n var resizer;\n var first = true;\n if ($this.is('body')) {\n $(window).on('resize.resizer', handler);\n } else if (window.ResizeObserver) {\n resizer = new ResizeObserver(function() {\n if (!first) {\n handler();\n }\n first = false;\n });\n resizer.observe(this);\n $this.data('observer', resizer);\n } else {\n var iframe = $('