@digitransit-component/digitransit-component-datetimepicker 1.1.7 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.development.js +2 -2
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/package.json +2 -2
package/lib/index.development.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("prop-types"),require("react"),require("moment-timezone"),require("lodash/debounce"),require("moment/locale/fi"),require("moment/locale/sv"),require("moment/locale/de"),require("lodash/uniqueId"),require("i18next"),require("@digitransit-component/digitransit-component-icon"),require("react-select"),require("classnames"),require("react-modal"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","prop-types","react","moment-timezone","lodash/debounce","moment/locale/fi","moment/locale/sv","moment/locale/de","lodash/uniqueId","i18next","@digitransit-component/digitransit-component-icon","react-select","classnames","react-modal","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-datetimepicker"]={},e.PropTypes,e.React,e.moment,e.debounce,null,null,null,e.uniqueId,e.i18next,e.Icon,e.Select,e.cx,e.ReactModal,e.Autosuggest)}(this,(function(e,t,n,i,a,l,o,r,s,d,u,c,p,_,m){"use strict";function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var b=f(t),y=f(n),g=f(i),h=f(a),v=f(s),x=f(d),w=f(u),k=f(c),E=f(p),N=f(_),C=f(m);function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function F(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,a,l,o,r=[],s=!0,d=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(i=l.call(n)).done)&&(r.push(i.value),r.length!==t);s=!0);}catch(e){d=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(d)throw a}}return r}}(e,t)||function(e,t){if(e){if("string"==typeof e)return R(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?R(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e){var t=e;return 3===t.length&&t.split("").every((e=>Number.isInteger(Number(e))))&&(t=Number(t.slice(0,2))<=23?`${t.slice(0,2)}:${t[2]}`:`${t[0]}:${t.slice(1)}`),t}var P=(e,t)=>{var n=!Number.isNaN(e)&&e>=0&&e<=23,i=2===t.length?!Number.isNaN(t)&&Number(t)>=0&&Number(t<=59):!Number.isNaN(t)&&Number(t)>=0&&Number(t<=5);return n&&i};function O(e){if(e.split(":").length>2)return!1;if(e.length<=2)return!0;if(3===e.length){var t,n;if(e.includes(":")){var i=F(e.split(":"),2);t=i[0],n=i[1]}else{if(!e.startsWith("0")){var a=e.split("");if(1===Number(a[0])){var l=[a[0].concat(a[1]),a[2]];t=l[0],n=l[1]}else if(2===Number(a[0]))if(Number(a[1]<=3)){var o=[a[0].concat(a[1]),a[2]];t=o[0],n=o[1]}else{var r=[a[0],a[1].concat(a[2])];t=r[0],n=r[1]}else{var s=[a[0],a[1].concat(a[2])];t=s[0],n=s[1]}return P(t,n)}if(t=e.substring(0,e.length-1),n=e.substring(e.length-1||0),Number(n)>5)return!1}return P(t,n)}if(5===e.length||4===e.length){var d=e.split(":"),u=d[0],c=d[1];return!(e.startsWith("0")&&1===c.length&&Number(c)>5)&&P(u,c)}return!0}var G=(e,t)=>{var n=e.trim();if(null!==n.match(/^[0-9]{1,2}(\.|:)[0-9]{2}$/)){var i=n.includes(".")?".":":",a=n.split(i),l=Number(a[0]),o=!Number.isNaN(l)&&l>=0&&l<=23,r=Number(a[1]);return!Number.isNaN(r)&&r>=0&&r<=59&&o?g.default(t).hours(l).minutes(r).valueOf():null}return null};var W={"sr-only":"styles_sr-only__BrzYQ","dt-datetimepicker":"styles_dt-datetimepicker__PtoFG",hidden:"styles_hidden__6ySER","datetimepicker-open-container":"styles_datetimepicker-open-container__1dVr5","top-row-container":"styles_top-row-container__cXGjL",closed:"styles_closed__Fqe1r","time-icon":"styles_time-icon__ntgLZ","dropdown-icon":"styles_dropdown-icon__diYYB","close-icon":"styles_close-icon__-MzK5","label-open":"styles_label-open__Gmvov",textbutton:"styles_textbutton__T7wS2",active:"styles_active__4L82E","combobox-left":"styles_combobox-left__Sp4kh","combobox-right":"styles_combobox-right__Hg8kN","departure-or-arrival-container":"styles_departure-or-arrival-container__pJ-Iw","radio-textbutton-label":"styles_radio-textbutton-label__h-zfy","first-radio":"styles_first-radio__FWNoD","radio-textbutton":"styles_radio-textbutton__tsKET","departure-now-button":"styles_departure-now-button__VKMMK","open-button":"styles_open-button__c2B-6","close-button":"styles_close-button__2mfgI","right-edge":"styles_right-edge__29UYw","combobox-container":"styles_combobox-container__CLY9U","combobox-icon":"styles_combobox-icon__-0XPH","date-input-icon":"styles_date-input-icon__KMrj1","time-input-icon":"styles_time-input-icon__qkhC7","datetimepicker-select-container":"styles_datetimepicker-select-container__EVW1l","picker-container":"styles_picker-container__V02r4","combobox-mobile-container":"styles_combobox-mobile-container__u2DSO","mobile-modal-overlay":"styles_mobile-modal-overlay__8vF8L","mobile-modal-content":"styles_mobile-modal-content__fWRgy","top-row":"styles_top-row__h8xy1","modal-title":"styles_modal-title__EA3YD","tab-row":"styles_tab-row__orgwh","radio-tab-label":"styles_radio-tab-label__vIfup","input-row":"styles_input-row__2XXEY","input-container":"styles_input-container__USZlF","time-input-mobile":"styles_time-input-mobile__6e4A5","mobile-input-display":"styles_mobile-input-display__VUMd0","mobile-input-hidden":"styles_mobile-input-hidden__2KIuK",container:"styles_container__ihyhz",suggestion:"styles_suggestion__ZczJa",suggestionHighlighted:"styles_suggestionHighlighted__fzLiW",suggestionsContainerOpen:"styles_suggestionsContainerOpen__ISHXi",input:"styles_input__PAfbH","buttons-row":"styles_buttons-row__-3wsn","ready-button":"styles_ready-button__dH7Qc"};function q(e){var t=e.value,i=e.onChange,a=e.getDisplay,l=e.timeChoices,o=e.id,r=e.label,s=e.icon,d=e.disableTyping,u=e.timeZone,c=e.datePicker,p=e.translationSettings;g.default.tz.setDefault(u);var _=F(n.useState(a(t)),2),m=_[0],f=_[1],b=F(n.useState(!1),2),h=b[0],v=b[1],w=F(n.useState(!0),2),N=w[0],C=w[1],R=F(n.useState(!1),2),P=R[0],q=R[1];n.useEffect((()=>{f(a(t)),c||q(!1)}),[t]);var z=e=>{var t=Number(e);!Number.isNaN(t)&&g.default(t).isValid()&&g.default(t).valueOf()===t&&i(t)};var A=l.map((e=>({value:e.toString(),label:a(e)}))),X=c?A:A.filter((e=>e.label.split(":")[1]%15==0)),$=X.length>0?null==X?void 0:X.reduce(((e,n)=>Math.abs(t-e.value)<Math.abs(t-n.value)?e:n)):void 0,T=`${o}-input`,D=`${o}-label`,Z=x.default.t("invalid-input",p);return y.default.createElement("label",{className:W["combobox-container"],htmlFor:T},y.default.createElement("span",{className:W["sr-only"],id:D},r," ",m),s,y.default.createElement(k.default,{"aria-labelledby":D,ariaLiveMessages:{guidance:e=>void 0===e.isDisabled&&P?Z:".",onChange:()=>"",onFilter:()=>"",onFocus:e=>{var t=e.context,n=e.label;return"menu"===t?n:""}},options:A,inputId:T,onChange:e=>{var n=g.default(t).format("HH:mm"),i=G(m,t);if(h)return null!==i?(n!==m&&e.value===t?z(i):z(e.value),v(!1)):(e.value!==t?z(e.value):f(a(t)),v(!1)),void(c||q(!1));c||q(!1),z(e.value)},components:{IndicatorsContainer:()=>null},className:E.default(W["datetimepicker-select-container"],P&&"datetimepicker-invalid-input"),classNamePrefix:"datetimepicker-select",onInputChange:(e,t)=>{var n=t.action;if("menu-close"===n?C(!0):N&&C(!1),!(d||e&&!function(e){if(e.length<(null==m?void 0:m.length)){var t=O(e);return q(!t),!0}if(/[a-zA-Z§ÄäÖö.-\s]/g.test(e))return!1;var n=O(e.length>5?e.slice(0,-1):e);return q(!n),e.length<=5}(e))&&"input-change"===n){var i=S(e);f(i),v(!0)}},inputValue:!d&&m,value:$,noOptionsMessage:()=>"",filterOption:(e,t)=>{var n;if(c)return!0;var i=5===t.length||4===t.length&&1===t.split(":")[0].length,a=e.label.split(":")[1]%15==0,l=1===(null===(n=t.split(":")[1])||void 0===n?void 0:n.length);if(N&&a)return!0;if(l){var o=1===t.split(":")[0].length?"0".concat(t.split(":")[0]):t.split(":")[0],r=t.split(":")[1],s=e.label.split(":")[0],d=e.label.split(":")[1];if(o===s){var u=10*Number(r),p=Number(d)-u;return p>=0&&p<=9}}return i&&!N?4===t.length?"0".concat(t)===e.label:t===e.label:!!a&&((e,t)=>{var n=t.length<=2?t:t.split(":")[0],i=/^([0-1]?[0-9]|2[0-3])$/.test(n),a=1===n.length?"0".concat(t):t;return!i||e.label.split(":")[0]===a.split(":")[0]})(e,t)},controlShouldRenderValue:d,tabSelectsValue:!1,placeholder:"",onFocus:e=>{d||e.target.select()},onBlur:()=>{if(h){var e=G(m,t);null!==e?(z(e),v(!1)):(f(a(t)),v(!1))}c||q(!1)},onKeyDown:e=>{["ArrowDown","ArrowUp"].includes(e.key)&&v(!1)},isSearchable:!d}))}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}(".styles_sr-only__BrzYQ:not(:focus, :active) {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n\n.styles_dt-datetimepicker__PtoFG {\n border: none;\n padding: 0;\n margin: 0;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG button,\n .styles_dt-datetimepicker__PtoFG label {\n font-size: 1em;\n font-weight: inherit; }\n .styles_dt-datetimepicker__PtoFG label button {\n cursor: pointer;\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', Roboto, Arial, Georgia, serif; }\n .styles_dt-datetimepicker__PtoFG .styles_hidden__6ySER {\n display: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-open-container__1dVr5 {\n background-color: #f4f4f5;\n border-radius: 5px;\n padding: 15px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n display: flex;\n flex-wrap: wrap; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL.styles_closed__Fqe1r {\n margin: 11px 0 6px 18px; }\n @media screen and (max-width: 319px) {\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_time-icon__ntgLZ svg {\n width: 18px;\n height: 19px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB {\n margin-left: 9px;\n position: relative;\n top: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB svg {\n width: 14px;\n height: 10px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg {\n width: 12px;\n height: 12px;\n border-radius: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg path {\n stroke-width: 30; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label.styles_label-open__Gmvov {\n align-items: flex-start;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL button,\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n font-size: 1em;\n letter-spacing: -0.5px;\n line-height: 1; }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 9px;\n margin-top: 1px;\n background: none;\n border: none;\n color: #666;\n padding: 0; }\n @media screen and (min-width: 768px) {\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2.styles_active__4L82E {\n color: var(--color); }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-left__Sp4kh {\n position: relative;\n margin-right: 4px;\n width: 63%; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-right__Hg8kN {\n position: relative;\n margin-left: 4px;\n width: 37%; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-or-arrival-container__pJ-Iw {\n height: calc(1rem + 20px);\n background-color: #ddd;\n border-radius: 8px;\n display: flex;\n width: calc(5px + 13em); }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy {\n color: #333;\n margin: 2px;\n background: none;\n border-radius: 6px;\n padding: 9px 0;\n width: 50%;\n cursor: pointer;\n height: calc(1rem + 16px);\n text-align: center;\n font-weight: 400;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.03em; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_active__4L82E {\n font-weight: 500;\n background: white; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy:focus-within {\n /* First apply outline that is used in Edge and Firefox */\n outline: 1px dotted #212121;\n /* Then override outline for webkit browsers like Chrome, this has no effect on other browsers */\n outline: 5px auto -webkit-focus-ring-color;\n /* stylelint-disable-line declaration-block-no-duplicate-properties */ }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_first-radio__FWNoD {\n margin: 0;\n display: flex;\n align-items: flex-start; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-now-button__VKMMK {\n font-family: inherit;\n letter-spacing: -0.02em;\n height: calc(1rem + 18px);\n color: var(--color);\n padding: 8px 0;\n width: 6.6875rem;\n background: white;\n border: 1px solid #888;\n border-radius: 30px;\n margin-left: 11px; }\n .styles_dt-datetimepicker__PtoFG .styles_open-button__c2B-6 {\n display: flex;\n margin-bottom: 0;\n margin-top: -1px;\n padding: 2px 0 2px 0; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI {\n transition: transform 0.2s;\n position: relative;\n top: -8px;\n right: -8px;\n border: 0;\n font-weight: normal;\n background: none;\n color: var(--color);\n padding: 0;\n line-height: normal; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI:hover {\n transform: scale(1.2); }\n .styles_dt-datetimepicker__PtoFG .styles_right-edge__29UYw {\n margin-left: auto;\n margin-right: 0;\n position: relative;\n top: -2px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-container__CLY9U {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH {\n color: var(--color);\n height: 40px;\n position: absolute;\n z-index: 7;\n pointer-events: none; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 14px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 svg {\n width: 20px;\n height: 18px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 8px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 svg {\n margin-top: 1px;\n width: 22px;\n height: 22px; }\n .styles_dt-datetimepicker__PtoFG .datetimepicker-invalid-input input {\n color: #f00 !important; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l {\n position: relative;\n height: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__control {\n cursor: inherit;\n height: 40px;\n border: 1px solid #888; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__value-container {\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__single-value {\n margin: 0 0 0 47px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input {\n background: inherit;\n position: relative;\n margin-left: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input {\n opacity: 1 !important;\n background: inherit;\n box-shadow: none;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333;\n font-family: inherit;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input:focus {\n box-shadow: none;\n outline: none;\n border: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu {\n z-index: 19;\n padding: 0;\n background: #fff;\n max-height: 250px;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list {\n max-height: 250px;\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option {\n height: 50px;\n border-top: 1px solid #ddd;\n padding: 13px 0 0 12px;\n letter-spacing: -0.6px;\n color: #333; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-selected {\n background: inherit; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-focused {\n background: #dfe5e8; }\n .styles_dt-datetimepicker__PtoFG .styles_picker-container__V02r4 {\n margin: 14px 0 0 0;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-mobile-container__u2DSO {\n flex-grow: 1; }\n\n.styles_mobile-modal-overlay__8vF8L {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.6);\n z-index: 1000; }\n\n.styles_mobile-modal-content__fWRgy {\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', Roboto, Arial, Georgia, serif;\n background: white;\n width: 89%;\n position: absolute;\n left: 5.5%;\n padding: 31px 20px 33px 20px;\n top: 80px;\n border-radius: 5px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 {\n display: flex;\n justify-content: space-between;\n margin-bottom: 21px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_modal-title__EA3YD {\n font-weight: var(--font-weight-medium);\n font-size: 20px;\n line-height: 18px;\n letter-spacing: -0.5px;\n color: #333;\n padding: 6px 0 0 8px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_departure-now-button__VKMMK {\n background-color: white;\n font-family: inherit;\n padding: 5px 15px;\n border: 1px solid #888;\n border-radius: 50px;\n font-weight: var(--font-weight-medium);\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.02em;\n color: var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh {\n display: flex;\n border: 2px solid #ddd;\n border-radius: 5px;\n margin-bottom: 16px;\n background-color: #ddd; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup {\n padding: 9px 0;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.5px;\n border-radius: 3px;\n font-weight: normal;\n width: 50%;\n text-align: center;\n color: #333; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup.styles_active__4L82E {\n font-weight: var(--font-weight-medium);\n background-color: #fff; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY {\n display: flex;\n margin-bottom: 25px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:first-child {\n flex-basis: 60%;\n margin-right: 10px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:nth-child(2) {\n flex-basis: 40%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF {\n border: 1px solid #888;\n border-radius: 5px;\n display: flex;\n align-items: center;\n height: 40px;\n line-height: 1.5;\n font-size: 100%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF:focus-within {\n background: rgba(0, 122, 201, 0.06);\n border: 2px solid var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH {\n height: 18px;\n font-size: 18px;\n padding: 0 0 0 10px;\n border: none;\n position: relative;\n top: 3px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 > svg {\n height: 20px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .mobile-datetimepicker-invalid-input {\n color: #f00 !important; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_time-input-mobile__6e4A5 {\n font-family: inherit;\n box-shadow: none;\n font-size: 18px;\n letter-spacing: -0.5px;\n line-height: 20px;\n font-weight: var(--font-weight-medium);\n border: none;\n outline: none;\n background: none;\n width: 50px;\n margin-left: 10px;\n color: #333;\n height: 1.5265rem; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0 {\n position: relative;\n left: 10px;\n border: none;\n background: inherit;\n box-shadow: none;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-stretch: normal;\n font-style: normal;\n font-size: 16px;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0:focus {\n outline: none;\n box-shadow: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK {\n font-size: 16px;\n margin-bottom: 12px;\n height: 0;\n width: 0;\n background: inherit;\n color: transparent;\n outline: none;\n box-shadow: none;\n border: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK:focus {\n outline: none;\n box-shadow: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz {\n position: absolute;\n width: calc((100% - 50px) * 0.6);\n height: 25px;\n font-size: 15px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestion__ZczJa {\n list-style: none;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: 49px;\n height: 50px;\n margin: 0;\n padding: 0 0 0 16px;\n color: rgba(0, 0, 0, 0.87);\n background: white; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionHighlighted__fzLiW {\n background: #dfe5e8; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi {\n position: absolute;\n z-index: 19;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 42px;\n left: -2px;\n width: 100%;\n font-size: 16px;\n line-height: 1;\n color: rgba(0, 0, 0, 0.87); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi ul {\n padding: 0;\n margin: 0; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH {\n box-shadow: none;\n border: none;\n background: none;\n font-size: 16px;\n font-weight: var(--font-weight-medium);\n height: 25px;\n display: inline-block;\n font-family: inherit;\n line-height: 1.33;\n padding-left: 46px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH:focus {\n outline: none;\n border: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn {\n display: flex;\n flex-direction: column;\n font-size: 16px;\n font-weight: var(--font-weight-medium); }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button {\n background-color: white;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-size: 16px;\n letter-spacing: -0.02em;\n width: 100%;\n border-radius: 50px;\n height: 40px;\n color: var(--color);\n border: 1px solid #888; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button.styles_ready-button__dH7Qc {\n color: white;\n background-color: var(--color);\n border: none;\n margin-bottom: 10px; }\n"),"production"!==process.env.NODE_ENV&&(q.propTypes={value:b.default.number.isRequired,onChange:b.default.func.isRequired,getDisplay:b.default.func.isRequired,timeChoices:b.default.arrayOf(b.default.number).isRequired,id:b.default.string.isRequired,label:b.default.node.isRequired,icon:b.default.node.isRequired,disableTyping:b.default.bool,timeZone:b.default.string,datePicker:b.default.bool,translationSettings:b.default.shape({lng:b.default.string.isRequired})}),q.defaultProps={disableTyping:!1,timeZone:"Europe/Helsinki",datePicker:!1,translationSettings:{lng:"fi"}};var z={de:{today:"Heute",tomorrow:"Morgen","accessible-close":"Schließe die Auswahl","accessible-closed":"Auswahl geschlossen","accessible-open":"Öffne die Auswahl","accessible-opened":"Auswahl geöffnet","accessible-title":"Datum und Uhrzeitauswahl",arrival:"Ankunft",date:"Datum",departure:"Abfahrt","departure-now":"Abfahrt jetzt","choose-time":"Zeit wählen",ready:"Fertig",time:"Zeit",cancel:"Abbrechen"},en:{today:"Today",tomorrow:"Tomorrow","accessible-close":"Close the picker","accessible-closed":"Timepicker closed","accessible-open":"Open the picker","accessible-opened":"Timepicker opened","accessible-title":"Date and timepicker","accessible-update-instructions":"Changing time parameters will trigger a new search.",arrival:"Arrival",date:"Date",departure:"Departure","departure-now":"Leaving now",time:"Time","choose-time":"Choose time",ready:"Ready",cancel:"Cancel","invalid-input":"The time you entered is invalid"},fi:{today:"Tänään",tomorrow:"Huomenna","accessible-close":"Sulje valitsin","accessible-closed":"Valitsin suljettu","accessible-open":"Avaa valitsin","accessible-opened":"Valitsin avattu","accessible-title":"Aika- ja päivämäärävalitsin","accessible-update-instructions":"Aikavalintojen muuttaminen laukaisee uuden haun.",arrival:"Perillä",date:"Päivä",departure:"Lähtöaika","departure-now":"Lähtö nyt",time:"Aika","choose-time":"Valitse aika",ready:"Valmis",cancel:"Peruuta","invalid-input":"Syöttämäsi aika on virheellinen"},pl:{today:"Dziś",tomorrow:"Jutro","accessible-close":"Zamknij wybornik","accessible-closed":"Zamknięto wybornik","accessible-open":"Otwórz wybornik","accessible-opened":"Otwarto wybornik","accessible-title":"Wybór daty i godziny","accessible-update-instructions":"Zmiana wybranej godziny wywoła nowe wyszukiwanie.",arrival:"Przyjazd",date:"Data",departure:"Wyjazd","departure-now":"Wyjeżdżam teraz",time:"Godzina","choose-time":"Wybierz godzinę",ready:"Gotowe",cancel:"Anuluj","invalid-input":"Wprowadzona godzina jest nieprawidłowa"},sv:{today:"I dag",tomorrow:"I morgon","accessible-close":"Stäng väljaren","accessible-closed":"Väljaren stängde","accessible-open":"Öppna väljaren","accessible-opened":"Väljaren öppnade","accessible-title":"Tid- och datumväljaren","accessible-update-instructions":"Om du ändrar tiderna, startas en ny sökning automatiskt.",arrival:"Anländer",date:"Datum",departure:"Avgångstid","departure-now":"Avgår nu",time:"Tid","choose-time":"Välj tid",ready:"Färdig",cancel:"Avbryt","invalid-input":"Tiden du angav är felaktig"}};function A(){var e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)}function X(e,t){if(null==e)return{};var n,i,a=function(e,t){if(null==e)return{};var n,i,a={},l=Object.keys(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var $=["ref"];function T(e){var t=e.value,i=e.getDisplay,a=e.onChange,l=e.itemCount,o=e.startTime,r=e.id,s=e.label,d=e.icon,u=e.timeZone;g.default.tz.setDefault(u);var c=F(n.useState(!1),2),p=c[0],_=c[1],m=n.useRef(null),f=Array(l).fill().map(((e,t)=>g.default(o).add(t,"day").valueOf())),b=f.map((e=>t-e)).findIndex((e=>e<6e4));n.useLayoutEffect((()=>{p&&m.current&&(m.current.scrollTop=50*b)}),[t,p]);var h=!(navigator.userAgent.toLowerCase().indexOf("android")>-1),v=`${r}-input`,x=`${r}-label`;return y.default.createElement("label",{className:W["input-container"],htmlFor:v},y.default.createElement("span",null,d),y.default.createElement("span",{className:W["sr-only"],id:x},s),h?y.default.createElement("select",{className:W["mobile-input-display"],onChange:e=>a(Number(e.target.value)),value:t},f.map((e=>y.default.createElement("option",{key:e,value:e},i(e))))):y.default.createElement(C.default,{id:r,suggestions:f,getSuggestionValue:e=>e.toString(),renderSuggestion:e=>i(e),onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,inputProps:{value:i(t),onChange:(e,t)=>{var n=t.newValue;a(Number(n))},onFocus:()=>{_(!0)},onBlur:()=>{_(!1)},"aria-labelledby":x,"aria-autocomplete":"none",readOnly:!0},focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,renderSuggestionsContainer:e=>{var t=e.containerProps,n=e.children,i=t.ref,a=X(t,$);return y.default.createElement("div",Object.assign({tabIndex:"-1"},a,{ref:e=>{e&&(m.current=e,i(e))}}),n)},theme:W}))}function D(e){var t=e.value,i=e.getDisplay,a=e.onChange,l=e.id,o=e.label,r=e.icon,s=e.timeZone,d=F(n.useState(i(t)),2),u=d[0],c=d[1],p=F(n.useState(!0),2),_=p[0],m=p[1];g.default.tz.setDefault(s);var f=`${l}-input`,b=`${l}-label`,h=n.useRef(null);n.useLayoutEffect((()=>{h.current&&h.current.focus()}),[]);var v=!_;return y.default.createElement("label",{className:W["input-container"],htmlFor:f},y.default.createElement("span",null,r),y.default.createElement("span",{className:W["sr-only"],id:b},o),y.default.createElement("input",{id:f,inputMode:"numeric",type:"text",maxLength:"6",className:E.default(W["time-input-mobile"],v&&"mobile-datetimepicker-invalid-input"),value:u,onFocus:e=>{e.target.setSelectionRange(0,0)},onChange:e=>{var n=e.target.value.replace(".",":"),i=O(n);if(m(i),n.match(/[0-9]{3}:[0-9]{2}/)&&n.slice(1)===u&&(n=n.charAt(0)),!(n.length>5)){var l=S(n);c(l);var o=G(l,t);o&&a(o)}},ref:h}))}function Z(e){var t=e.departureOrArrival,i=e.onNowClick,a=e.lang,l=e.color,o=e.timeZone,r=e.onSubmit,s=e.onCancel,d=e.timestamp,u=e.getTimeDisplay,c=e.dateSelectItemCount,p=e.getDateDisplay,_=e.fontWeights;g.default.tz.setDefault(o);var m={lng:a},f=F(n.useState(d),2),b=f[0],h=f[1],k=F(n.useState(t),2),E=k[0],C=k[1];var R=F(n.useState(v.default("datetimepicker-")),1)[0],S=g.default().startOf("day").hour(g.default(b).hour()).minute(g.default(b).minute()).valueOf();return y.default.createElement(N.default,{appElement:document?document.querySelector("#app"):void 0,isOpen:!0,className:W["mobile-modal-content"],overlayClassName:W["mobile-modal-overlay"]},y.default.createElement("div",{style:{"--color":`${l}`,"--font-weight-medium":_.medium}},y.default.createElement("div",{className:W["top-row"]},y.default.createElement("h3",{className:W["modal-title"]},x.default.t("choose-time",m)),y.default.createElement("button",{type:"button",className:W["departure-now-button"],onClick:i},x.default.t("departure-now",m))),y.default.createElement("div",{className:W["tab-row"]},y.default.createElement("label",{htmlFor:`${R}-modal-departure`,className:`${W["radio-tab-label"]}\n ${W["departure"===E?"active":void 0]}`},x.default.t("departure",m),y.default.createElement("input",{id:`${R}-modal-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:W["radio-textbutton"],onChange:()=>{C("departure")},checked:"departure"===E})),y.default.createElement("label",{htmlFor:`${R}-modal-arrival`,className:`${W["radio-tab-label"]}\n ${W["arrival"===E?"active":void 0]}`},x.default.t("arrival",m),y.default.createElement("input",{id:`${R}-modal-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:W["radio-textbutton"],onChange:()=>{C("arrival")},checked:"arrival"===E}))),y.default.createElement("div",{className:W["input-row"]},y.default.createElement(T,{value:b,getDisplay:p,onChange:h,itemCount:c,startTime:S,id:`${R}-date`,label:x.default.t("date",m),icon:y.default.createElement("span",{className:`${W["combobox-icon"]} ${W["date-input-icon"]}`},y.default.createElement(w.default,{img:"calendar",color:l})),timeZone:o}),y.default.createElement(D,{value:b,getDisplay:u,onChange:h,id:`${R}-time`,label:x.default.t("time",m),icon:y.default.createElement("span",{className:`${W["combobox-icon"]} ${W["time-input-icon"]}`},y.default.createElement(w.default,{img:"time",color:l})),timeZone:o})),y.default.createElement("div",{className:W["buttons-row"]},y.default.createElement("button",{type:"button",className:W["ready-button"],onClick:()=>r(b,E)},x.default.t("ready",m)),y.default.createElement("button",{type:"button",className:W["cancel-button"],onClick:s},x.default.t("cancel",m)))))}function j(e){var t=e.timestamp,i=e.onTimeChange,a=e.onDateChange,l=e.departureOrArrival,o=e.onNowClick,r=e.onDepartureClick,s=e.onArrivalClick,d=e.embedWhenClosed,u=e.embedWhenOpen,c=e.lang,p=e.color,_=e.timeZone,m=e.onModalSubmit,f=e.fontWeights,b=e.serviceTimeRange,h=e.onOpen,k=e.onClose,E=e.openPicker;g.default.tz.setDefault(_);var N=F(n.useState(E||!1),2),C=N[0],R=N[1],S=F(n.useState(t||g.default().valueOf()),2),P=S[0],O=S[1],G=F(n.useState(null),2),X=G[0],$=G[1],T=F(n.useState(v.default("datetimepicker-")),1)[0],D=F(n.useState(A()&&function(){if("undefined"==typeof window||null===window)return!1;var e=document.createElement("input");return e.type="date","date"===e.type&&(e.type="time","time"===e.type)}()),1)[0],j=n.useRef(),V=n.useRef(),M=n.useRef(),I={lng:c};n.useEffect((()=>{Object.keys(z).forEach((e=>x.default.addResourceBundle(e,"translation",z[c])))}),[]),n.useEffect((()=>{g.default.locale(c)}),[c]);var L=null===t;n.useEffect((()=>{L?O(g.default().valueOf()):(X&&(clearInterval(X),$(null)),O(t))}),[t]),n.useEffect((()=>{if(L){X&&clearInterval(X);var e=setInterval((()=>{var t=g.default().valueOf();g.default(P).isSame(t,"minute")||(clearInterval(e),$(null),O(t))}),5e3);return $(e),()=>clearInterval(e)}}),[P]);var H=n.useRef();n.useEffect((()=>{H.current=C}));for(var Y=e=>{var t,n=g.default(e);return t=`${(t=n.isSame(g.default(),"day")?x.default.t("today",I):n.isSame(g.default().add(1,"day"),"day")?x.default.t("tomorrow",I):n.format("dd D.M.")).charAt(0).toUpperCase()}${t.slice(1)}`},U=e=>g.default(e).format("HH:mm"),K=g.default(P),B=g.default(P).startOf("day").valueOf(),J=[],Q=g.default(B);Q.isSame(B,"day");)J.push(Q.valueOf()),A()?Q.add(15,"minutes"):Q.add(1,"minutes");if(null===t){var ee=3e5,te=Math.ceil(P/ee)*ee,ne=Array(7).fill().map(((e,t)=>te+t*ee)),ie=J.map((e=>P-e)).findIndex((e=>e<=0));J.splice(ie,0,...ne),J=Array.from(new Set(J))}var ae=g.default().startOf("day").hour(K.hour()).minute(K.minute()).valueOf(),le=Array(b).fill().map(((e,t)=>g.default(ae).add(t,"day").valueOf()));function oe(){M.current&&(M.current.innerHTML=x.default.t("accessible-closed",I),setTimeout((()=>{M.current.innerHTML=null}),100))}return y.default.createElement("fieldset",{className:W["dt-datetimepicker"],id:`${T}-root`,style:{"--color":`${p}`,"--font-weight-medium":f.medium}},y.default.createElement("legend",{className:W["sr-only"]},x.default.t("accessible-title",I)),y.default.createElement("span",{className:W["sr-only"]},x.default.t("accessible-update-instructions",I)),y.default.createElement("div",{className:C?`${W.hidden} datetimepicker-top-row`:`${W["top-row-container"]} ${W.closed} datetimepicker-top-row`},y.default.createElement("label",{className:W["label-open"],htmlFor:`${T}-open`},y.default.createElement("span",{className:W["time-icon"]},y.default.createElement(w.default,{img:"time",color:p})),y.default.createElement("span",{className:W["sr-only"]},x.default.t("accessible-open",I)),y.default.createElement("span",{role:"alert",className:W["sr-only"],ref:M}),y.default.createElement("button",{id:`${T}-open`,type:"button",className:`${W.textbutton} ${W.active} ${W["open-button"]}`,"aria-controls":`${T}-root`,"aria-expanded":"false",onClick:()=>{R(!0),M.current&&(M.current.innerHTML=x.default.t("accessible-opened",I),setTimeout((()=>{M.current.innerHTML=null}),100)),h&&h()},ref:j},y.default.createElement("span",null,L&&"departure"===l?x.default.t("departure-now",I):y.default.createElement(y.default.Fragment,null,x.default.t("departure"===l?"departure":"arrival",I),` ${g.default().isSame(g.default(P),"day")?"":Y(P).toLowerCase()} ${U(P)}`)),y.default.createElement("span",{className:W["dropdown-icon"]},y.default.createElement(w.default,{img:"arrow-dropdown",color:p})))),y.default.createElement("span",{className:W["right-edge"]},d)),y.default.createElement("div",null),D?C&&y.default.createElement(Z,{departureOrArrival:l,onNowClick:()=>{R(!1),oe(),o()},lang:c,color:p,onSubmit:(e,t)=>{m(e,t),R(!1),oe()},onCancel:()=>{R(!1),oe(),k&&k()},getTimeDisplay:U,timeZone:_,timestamp:P,getDateDisplay:Y,dateSelectItemCount:b,getDisplay:U,fontWeights:f}):y.default.createElement(y.default.Fragment,null,y.default.createElement("div",{className:`${W["datetimepicker-open-container"]} ${C?"":W.hidden}`},y.default.createElement("div",{className:C?`${W["top-row-container"]} datetimepicker-top-row`:`${W.hidden} datetimepicker-top-row`}," ",y.default.createElement("span",{role:"alert",className:W["sr-only"],ref:M}),y.default.createElement("span",null),y.default.createElement("span",{className:W["departure-or-arrival-container"]},y.default.createElement("label",{htmlFor:`${T}-departure`,className:`${W["radio-textbutton-label"]}\n ${W["departure"===l?"active":void 0]}`},x.default.t("departure",I),y.default.createElement("input",{id:`${T}-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:W["radio-textbutton"],onChange:()=>{r()},checked:"departure"===l})),y.default.createElement("label",{htmlFor:`${T}-arrival`,className:`${W["radio-textbutton-label"]}\n ${W["arrival"===l?"active":void 0]}`},x.default.t("arrival",I),y.default.createElement("input",{id:`${T}-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:W["radio-textbutton"],onChange:()=>{s()},checked:"arrival"===l}))),y.default.createElement("button",{id:`${T}-now`,type:"button",className:W["departure-now-button"],onClick:()=>{R(!1),oe(),k&&k(),o()},ref:V},x.default.t("departure-now",I)),y.default.createElement("span",{className:W["right-edge"]},y.default.createElement("button",{type:"button",className:W["close-button"],"aria-controls":`${T}-root`,"aria-expanded":"true",onClick:()=>{R(!1),oe(),k&&k()}},y.default.createElement("span",{className:W["close-icon"]},y.default.createElement(w.default,{img:"close",color:p})),y.default.createElement("span",{className:W["sr-only"]},x.default.t("accessible-close",I))))),y.default.createElement("div",{className:C?`${W["picker-container"]}`:`${W.hidden} datetimepicker-top-row`},y.default.createElement("span",{className:W["combobox-left"]},y.default.createElement(q,{value:P,onChange:e=>{a(e)},getDisplay:Y,timeChoices:le,validate:()=>null,icon:y.default.createElement("span",{className:`${W["combobox-icon"]} ${W["date-input-icon"]}`},y.default.createElement(w.default,{img:"calendar",color:p})),id:`${T}-date`,label:x.default.t("date",I),disableTyping:!0,timeZone:_,datePicker:!0})),y.default.createElement("span",{className:W["combobox-right"]},y.default.createElement(q,{value:P,onChange:e=>{i(e)},getDisplay:U,timeChoices:J,icon:y.default.createElement("span",{className:`${W["combobox-icon"]} ${W["time-input-icon"]}`},y.default.createElement(w.default,{img:"time",color:p})),id:`${T}-time`,label:x.default.t("time",I),timeZone:_,translationSettings:I})))),y.default.createElement("span",{className:C?"":W.hidden},u),y.default.createElement("div",{className:C?"datetimepicker-bottom-row-open":""})))}function V(e){var t=e.realtime,i=e.initialArriveBy,a=e.initialTimestamp,l=e.onDepartureClick,o=e.onArrivalClick,r=e.onTimeChange,s=e.onDateChange,d=e.onNowClick,u=e.embedWhenClosed,c=e.embedWhenOpen,p=e.lang,_=e.color,m=e.timeZone,f=e.fontWeights,b=e.serviceTimeRange,v=e.onOpen,x=e.onClose,w=e.openPicker;g.default.locale(p),g.default.tz.setDefault(m);var k=t?null:g.default().valueOf(),E=F(n.useState(a?1e3*a:k),2),N=E[0],C=E[1],R=F(n.useState(!0===i?"arrival":"departure"),2),S=R[0],P=R[1];n.useEffect((()=>{var e=null===N&&void 0===a,t=null===N||void 0===a,n=Math.round(N/1e3)===a;!e&&(t||!n)&&C(void 0===a?null:1e3*a),!i==("arrival"===S)&&P(!0===i?"arrival":"departure")}),[a,i]);var O=h.default((e=>{if(null===e)return C(g.default().valueOf()),void r(Math.round(g.default().valueOf()/1e3),"arrival"===S);C(e),r(Math.round(e/1e3),"arrival"===S)}),10),G=h.default((e=>{if(null===e)return C(g.default().valueOf()),void s(Math.round(g.default().valueOf()/1e3),"arrival"===S);C(e),s(Math.round(e/1e3),"arrival"===S)}),10);return y.default.createElement(j,{timestamp:N,onTimeChange:O,onDateChange:G,departureOrArrival:S,onNowClick:()=>{P("departure");var e=t?null:g.default().valueOf();C(e),d(Math.round(e/1e3))},onDepartureClick:()=>{var e=!1,t=N;if(null===N){var n=g.default().valueOf();C(n),t=n,e=!0}"departure"!==S&&(P("departure"),e=!0),e&&l(Math.round(t/1e3))},onArrivalClick:()=>{var e=!1,t=N;if(null===N){var n=g.default().valueOf();C(n),t=n,e=!0}"arrival"!==S&&(P("arrival"),e=!0),e&&o(Math.round(t/1e3))},embedWhenClosed:u,embedWhenOpen:c,lang:p,color:_,timeZone:m,onModalSubmit:(e,t)=>{C(e),P(t),r(Math.round(e/1e3),"arrival"===t,!0)},fontWeights:f,serviceTimeRange:b,onOpen:v,onClose:x,openPicker:w})}"production"!==process.env.NODE_ENV&&(T.propTypes={value:b.default.number.isRequired,getDisplay:b.default.func.isRequired,onChange:b.default.func.isRequired,itemCount:b.default.number.isRequired,startTime:b.default.number.isRequired,id:b.default.string.isRequired,label:b.default.string.isRequired,icon:b.default.node,dateTimeCombined:b.default.bool,timeZone:b.default.string}),T.defaultProps={icon:null,dateTimeCombined:!1,timeZone:"Europe/Helsinki"},"production"!==process.env.NODE_ENV&&(D.propTypes={value:b.default.number.isRequired,getDisplay:b.default.func.isRequired,onChange:b.default.func.isRequired,id:b.default.string.isRequired,label:b.default.string.isRequired,icon:b.default.node,timeZone:b.default.string}),D.defaultProps={icon:null,timeZone:"Europe/Helsinki"},g.default.locale("en"),x.default.init({lng:"en",resources:{}}),Object.keys(z).forEach((e=>x.default.addResourceBundle(e,"translation",z[e]))),"production"!==process.env.NODE_ENV&&(Z.propTypes={timeZone:b.default.string,departureOrArrival:b.default.oneOf(["departure","arrival"]).isRequired,onNowClick:b.default.func.isRequired,lang:b.default.string.isRequired,color:b.default.string,onSubmit:b.default.func.isRequired,onCancel:b.default.func.isRequired,timestamp:b.default.number.isRequired,getTimeDisplay:b.default.func.isRequired,dateSelectItemCount:b.default.number.isRequired,getDateDisplay:b.default.func.isRequired,fontWeights:b.default.shape({medium:b.default.number.isRequired}).isRequired}),Z.defaultProps={color:"#007ac9",timeZone:"Europe/Helsinki"},g.default.locale("en"),x.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}}),"production"!==process.env.NODE_ENV&&(j.propTypes={timestamp:b.default.number,timeZone:b.default.string,onTimeChange:b.default.func.isRequired,onDateChange:b.default.func.isRequired,departureOrArrival:b.default.oneOf(["departure","arrival"]).isRequired,onNowClick:b.default.func.isRequired,onDepartureClick:b.default.func.isRequired,onArrivalClick:b.default.func.isRequired,embedWhenClosed:b.default.node,embedWhenOpen:b.default.node,lang:b.default.string.isRequired,color:b.default.string,onModalSubmit:b.default.func.isRequired,fontWeights:b.default.shape({medium:b.default.number.isRequired}).isRequired,serviceTimeRange:b.default.number.isRequired,onOpen:b.default.func,onClose:b.default.func,openPicker:b.default.bool}),j.defaultProps={timestamp:null,embedWhenClosed:null,embedWhenOpen:null,color:"#007ac9",timeZone:"Europe/Helsinki",onOpen:null,onClose:null,openPicker:void 0},"production"!==process.env.NODE_ENV&&(V.propTypes={realtime:b.default.bool,initialTimestamp:b.default.number,initialArriveBy:b.default.bool,onDepartureClick:b.default.func.isRequired,onArrivalClick:b.default.func.isRequired,onTimeChange:b.default.func.isRequired,onDateChange:b.default.func.isRequired,onNowClick:b.default.func.isRequired,embedWhenClosed:b.default.node,embedWhenOpen:b.default.node,lang:b.default.string,color:b.default.string,timeZone:b.default.string,fontWeights:b.default.shape({medium:b.default.number}),serviceTimeRange:b.default.number,onOpen:b.default.func,onClose:b.default.func,openPicker:b.default.bool}),V.defaultProps={realtime:!1,initialArriveBy:void 0,initialTimestamp:void 0,embedWhenClosed:null,embedWhenOpen:null,lang:"en",color:"#007ac9",timeZone:"Europe/Helsinki",fontWeights:{medium:500},onOpen:null,onClose:null,openPicker:void 0,serviceTimeRange:30},e.default=V,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVSZXN0LmpzIiwiLi4vc3JjL2hlbHBlcnMvdXRpbHMuanMiLCIuLi9zcmMvaGVscGVycy9EZXNrdG9wRGF0ZXRpbWVwaWNrZXIuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtaW5qZWN0L2Rpc3Qvc3R5bGUtaW5qZWN0LmVzLmpzIiwiLi4vc3JjL2hlbHBlcnMvdHJhbnNsYXRpb25zLmpzIiwiLi4vc3JjL2hlbHBlcnMvbW9iaWxlRGV0ZWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCIuLi9zcmMvaGVscGVycy9Nb2JpbGVEYXRlcGlja2VyLmpzIiwiLi4vc3JjL2hlbHBlcnMvTW9iaWxlVGltZXBpY2tlci5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZVBpY2tlck1vZGFsLmpzIiwiLi4vc3JjL2hlbHBlcnMvRGF0ZXRpbWVwaWNrZXIuanMiLCIuLi9zcmMvaGVscGVycy9kYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQuanMiLCIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTtcbiAgcmV0dXJuIGFycjI7XG59IiwiaW1wb3J0IGFycmF5V2l0aEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5TGltaXQgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlUmVzdCBmcm9tIFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn0iLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59IiwiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuXG4vKipcbiAqIEhhbmRsZSB0eXBpbmcgdGltZSBhbmQgYWRkaW5nIG5lY2Vzc2FyeSA6XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVkVmFsdWVcbiAqXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVR5cGVkVGltZSh0eXBlZFZhbHVlKSB7XG4gIGxldCBhY3R1YWxWYWx1ZSA9IHR5cGVkVmFsdWU7XG4gIGlmIChcbiAgICBhY3R1YWxWYWx1ZS5sZW5ndGggPT09IDMgJiZcbiAgICBhY3R1YWxWYWx1ZS5zcGxpdCgnJykuZXZlcnkobiA9PiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcihuKSkpXG4gICkge1xuICAgIC8vIGFkZCAnOicgaWYgdXNlciB0eXBlcyB0aHJlZSBudW1iZXJzIGluIGEgcm93XG4gICAgaWYgKE51bWJlcihhY3R1YWxWYWx1ZS5zbGljZSgwLCAyKSkgPD0gMjMpIHtcbiAgICAgIGFjdHVhbFZhbHVlID0gYCR7YWN0dWFsVmFsdWUuc2xpY2UoMCwgMil9OiR7YWN0dWFsVmFsdWVbMl19YDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0dWFsVmFsdWUgPSBgJHthY3R1YWxWYWx1ZVswXX06JHthY3R1YWxWYWx1ZS5zbGljZSgxKX1gO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYWN0dWFsVmFsdWU7XG59XG5cbmNvbnN0IHZhbGlkYXRlQ2xvY2sgPSAoaG91cnMsIG1pbnV0ZXMpID0+IHtcbiAgY29uc3QgaG91cnNWYWxpZCA9ICFOdW1iZXIuaXNOYU4oaG91cnMpICYmIGhvdXJzID49IDAgJiYgaG91cnMgPD0gMjM7XG4gIGNvbnN0IG1pbnV0ZXNMZW4gPSBtaW51dGVzLmxlbmd0aDtcbiAgY29uc3QgbWludXRlc1ZhbGlkID1cbiAgICBtaW51dGVzTGVuID09PSAyXG4gICAgICA/ICFOdW1iZXIuaXNOYU4obWludXRlcykgJiYgTnVtYmVyKG1pbnV0ZXMpID49IDAgJiYgTnVtYmVyKG1pbnV0ZXMgPD0gNTkpXG4gICAgICA6ICFOdW1iZXIuaXNOYU4obWludXRlcykgJiYgTnVtYmVyKG1pbnV0ZXMpID49IDAgJiYgTnVtYmVyKG1pbnV0ZXMgPD0gNSk7XG4gIHJldHVybiBob3Vyc1ZhbGlkICYmIG1pbnV0ZXNWYWxpZDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUlucHV0KGlucHV0VmFsdWUpIHtcbiAgLy8gV2UgZG9uJ3QgYWNjZXB0IHNlY29uZHMgaW4gdGhlIGlucHV0XG4gIGlmIChpbnB1dFZhbHVlLnNwbGl0KCc6JykubGVuZ3RoID4gMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoaW5wdXRWYWx1ZS5sZW5ndGggPD0gMikge1xuICAgIC8vIFRvbyBtYW55IG9wdGlvbnMsIGRvbid0ICB2YWxpZGF0ZVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpbnB1dFZhbHVlLmxlbmd0aCA9PT0gMykge1xuICAgIGxldCBob3VycztcbiAgICBsZXQgbWludXRlcztcbiAgICBpZiAoaW5wdXRWYWx1ZS5pbmNsdWRlcygnOicpKSB7XG4gICAgICBbaG91cnMsIG1pbnV0ZXNdID0gaW5wdXRWYWx1ZS5zcGxpdCgnOicpO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRWYWx1ZS5zdGFydHNXaXRoKCcwJykpIHtcbiAgICAgIGhvdXJzID0gaW5wdXRWYWx1ZS5zdWJzdHJpbmcoMCwgaW5wdXRWYWx1ZS5sZW5ndGggLSAxKTtcbiAgICAgIG1pbnV0ZXMgPSBpbnB1dFZhbHVlLnN1YnN0cmluZyhpbnB1dFZhbHVlLmxlbmd0aCAtIDEgfHwgMCk7XG4gICAgICBpZiAoTnVtYmVyKG1pbnV0ZXMpID4gNSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgaXMgaG93IGJhc2ljYWxseSBtb21lbnQgaGFuZGxlcyBzdHJpbmcgZm9ybWF0dGluZy5cbiAgICAgIC8vIElmIHRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIHN0cmluZyBpcyAxLCB0aGVuIHJlc3QgYXJlIG1pbnV0ZXMuXG4gICAgICAvLyBpZiB0aGUgZmlyc3QgbGV0dGVyIGlzIDIsIHRoZW4gaWYgc2Vjb25kIGxldHRlciBpcyAwLDEsMiBvciAzLCB0aGVuIHNlY29uZCBsZXR0ZXIgaXMgaG91ciwgZWxzZSByZXN0IGFyZSBtaW51dGVzXG4gICAgICAvLyBlbHNlLCBmaXJzdCBsZXR0ZXIgaXMgaG91ciwgcmVzdCBvZiB0aGVtIGFyZSBtaW51dGVzLlxuICAgICAgY29uc3QgdmFsdWVzID0gaW5wdXRWYWx1ZS5zcGxpdCgnJyk7XG4gICAgICBpZiAoTnVtYmVyKHZhbHVlc1swXSkgPT09IDEpIHtcbiAgICAgICAgW2hvdXJzLCBtaW51dGVzXSA9IFt2YWx1ZXNbMF0uY29uY2F0KHZhbHVlc1sxXSksIHZhbHVlc1syXV07XG4gICAgICB9IGVsc2UgaWYgKE51bWJlcih2YWx1ZXNbMF0pID09PSAyKSB7XG4gICAgICAgIGlmIChOdW1iZXIodmFsdWVzWzFdIDw9IDMpKSB7XG4gICAgICAgICAgW2hvdXJzLCBtaW51dGVzXSA9IFt2YWx1ZXNbMF0uY29uY2F0KHZhbHVlc1sxXSksIHZhbHVlc1syXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgW2hvdXJzLCBtaW51dGVzXSA9IFt2YWx1ZXNbMF0sIHZhbHVlc1sxXS5jb25jYXQodmFsdWVzWzJdKV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFtob3VycywgbWludXRlc10gPSBbdmFsdWVzWzBdLCB2YWx1ZXNbMV0uY29uY2F0KHZhbHVlc1syXSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbGlkYXRlQ2xvY2soaG91cnMsIG1pbnV0ZXMpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdGVDbG9jayhob3VycywgbWludXRlcyk7XG4gIH1cbiAgaWYgKGlucHV0VmFsdWUubGVuZ3RoID09PSA1IHx8IGlucHV0VmFsdWUubGVuZ3RoID09PSA0KSB7XG4gICAgY29uc3QgdmFsdWVzID0gaW5wdXRWYWx1ZS5zcGxpdCgnOicpO1xuICAgIGNvbnN0IGhvdXJzID0gdmFsdWVzWzBdO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSB2YWx1ZXNbMV07XG4gICAgaWYgKFxuICAgICAgaW5wdXRWYWx1ZS5zdGFydHNXaXRoKCcwJykgJiZcbiAgICAgIG1pbnV0ZXMubGVuZ3RoID09PSAxICYmXG4gICAgICBOdW1iZXIobWludXRlcykgPiA1XG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlQ2xvY2soaG91cnMsIG1pbnV0ZXMpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0VHMgPSAoaW5wdXRWYWx1ZSwgY3VycmVudFRpbWVzdGFtcCkgPT4ge1xuICBjb25zdCB0cmltbWVkID0gaW5wdXRWYWx1ZS50cmltKCk7XG4gIGlmICh0cmltbWVkLm1hdGNoKC9eWzAtOV17MSwyfShcXC58OilbMC05XXsyfSQvKSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHNwbGl0dGVyID0gdHJpbW1lZC5pbmNsdWRlcygnLicpID8gJy4nIDogJzonO1xuICAgIGNvbnN0IHZhbHVlcyA9IHRyaW1tZWQuc3BsaXQoc3BsaXR0ZXIpO1xuICAgIGNvbnN0IGhvdXJzID0gTnVtYmVyKHZhbHVlc1swXSk7XG4gICAgY29uc3QgaG91cnNWYWxpZCA9ICFOdW1iZXIuaXNOYU4oaG91cnMpICYmIGhvdXJzID49IDAgJiYgaG91cnMgPD0gMjM7XG4gICAgY29uc3QgbWludXRlcyA9IE51bWJlcih2YWx1ZXNbMV0pO1xuICAgIGNvbnN0IG1pbnV0ZXNWYWxpZCA9XG4gICAgICAhTnVtYmVyLmlzTmFOKG1pbnV0ZXMpICYmIG1pbnV0ZXMgPj0gMCAmJiBtaW51dGVzIDw9IDU5O1xuICAgIGlmICghbWludXRlc1ZhbGlkIHx8ICFob3Vyc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbmV3U3RhbXAgPSBtb21lbnQoY3VycmVudFRpbWVzdGFtcClcbiAgICAgIC5ob3Vycyhob3VycylcbiAgICAgIC5taW51dGVzKG1pbnV0ZXMpXG4gICAgICAudmFsdWVPZigpO1xuICAgIHJldHVybiBuZXdTdGFtcDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHsgcGFyc2VUeXBlZFRpbWUsIHZhbGlkYXRlSW5wdXQsIGdldFRzIH07XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgU2VsZWN0IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgaTE4bmV4dCBmcm9tICdpMThuZXh0JztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IHBhcnNlVHlwZWRUaW1lLCB2YWxpZGF0ZUlucHV0LCBnZXRUcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIGRhdGUgb3IgdGltZSBpbnB1dCBvbiBkZXNrdG9wLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICogQHBhcmFtIHtOdW1iZXJ9IHByb3BzLnZhbHVlICAgIEN1cnJlbnRseSBzZWxlY3RlZCB0aW1lLiBVbml4IHRpbWVzdGFtcCBpbiBtaWxsaXNlY29uZHNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2hhbmdlICAgICBUaGlzIGlzIGNhbGxlZCB3aXRoIG5ldyB0aW1lc3RhbXAgd2hlbiBpbnB1dCBpcyBjaGFuZ2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5nZXREaXNwbGF5ICAgRnVuY3Rpb24gdG8gZ2V0IGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGZyb20gYSB0aW1lc3RhbXBcbiAqIEBwYXJhbSB7YXJyYXl9ICAgIHByb3BzLnRpbWVDaG9pY2VzICBBcnJheSBvZiB0aW1lc3RhbXBzIHRvIGNob29zZSBmcm9tXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgICAgICAgICAgICAgICAgICAgSWQgcHJlZml4IGZvciBsYWJlbHMgYW5kIGFyaWEgYXR0cmlidXRlcy4gU2hvdWxkIGJlIHVuaXF1ZSBpbiBwYWdlXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFiZWwgICAgICAgICAgICAgICAgVGV4dCB0byBzaG93IGFzIGlucHV0IGxhYmVsXG4gKiBAcGFyYW0ge25vZGV9IGljb24gICAgICAgICAgICAgICAgICAgSlNYIGZvciBpY29uIHRvIHNob3cgaW4gaW5wdXRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZVR5cGluZyAgICAgICBTZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIHR5cGluZyBpbiB0aGUgaW5wdXRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGF0ZVBpY2tlciAgICAgICAgICBJcyB0aGUgcGlja2VyIERhdGVQaWNrZXIgb3IgVGltZVBpY2tlclxuICpcbiAqIEBleGFtcGxlXG4gKiA8RGVza3RvcERhdGV0aW1lcGlja2VyXG4gKiAgIHZhbHVlPXsxNTkwMTMzODIzMDAwfVxuICogICBvbkNoYW5nZT17dGltZXN0YW1wID0+IHVwZGF0ZSh0aW1lc3RhbXApfVxuICogICBnZXREaXNwbGF5PXt0aW1lc3RhbXAgPT4gZm9ybWF0VGltZSh0aW1lc3RhbXApfVxuICogICB0aW1lQ2hvaWNlcz17WzE1OTAxMzM4MjMwMDBdfVxuICogICBpZD1cInRpbWVpbnB1dFwiXG4gKiAgIGljb249XCI8SWNvbiAvPlwiXG4gKiAgIGRpc2FibGVUeXBpbmc9e2ZhbHNlfSAvLyBjYW4gYmUgb21pdHRlZCBpZiBub3QgdHJ1ZVxuICogICBkYXRlUGlja2VyPXt0cnVlfSAvLyBjYW4gYmUgb21pdHRlZCBpZiBub3QgdHJ1ZVxuICovXG5mdW5jdGlvbiBEZXNrdG9wRGF0ZXRpbWVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIGdldERpc3BsYXksXG4gIHRpbWVDaG9pY2VzLFxuICBpZCxcbiAgbGFiZWwsXG4gIGljb24sXG4gIGRpc2FibGVUeXBpbmcsXG4gIHRpbWVab25lLFxuICBkYXRlUGlja2VyLFxuICB0cmFuc2xhdGlvblNldHRpbmdzLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG4gIGNvbnN0IFtkaXNwbGF5VmFsdWUsIGNoYW5nZURpc3BsYXlWYWx1ZV0gPSB1c2VTdGF0ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gIGNvbnN0IFt0eXBpbmcsIHNldFR5cGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93QWxsT3B0aW9ucywgc2V0U2hvd0FsbE9wdGlvbnNdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtpbnZhbGlkSW5wdXQsIHNldGludmFsaWRJbnB1dF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY2hhbmdlRGlzcGxheVZhbHVlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgICBpZiAoIWRhdGVQaWNrZXIpIHtcbiAgICAgIHNldGludmFsaWRJbnB1dChmYWxzZSk7XG4gICAgfVxuICB9LCBbdmFsdWVdKTtcblxuICAvLyBuZXdWYWx1ZSBpcyBzdHJpbmdcbiAgY29uc3QgaGFuZGxlVGltZXN0YW1wID0gbmV3VmFsdWUgPT4ge1xuICAgIGNvbnN0IGFzTnVtYmVyID0gTnVtYmVyKG5ld1ZhbHVlKTtcbiAgICBpZiAoXG4gICAgICBOdW1iZXIuaXNOYU4oYXNOdW1iZXIpIHx8XG4gICAgICAhbW9tZW50KGFzTnVtYmVyKS5pc1ZhbGlkKCkgfHxcbiAgICAgIG1vbWVudChhc051bWJlcikudmFsdWVPZigpICE9PSBhc051bWJlclxuICAgICkge1xuICAgICAgLy8gVE9ETyBoYW5kbGUgZXJyb3I/XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG9uQ2hhbmdlKGFzTnVtYmVyKTtcbiAgfTtcbiAgZnVuY3Rpb24gaXNpbnZhbGlkSW5wdXQoc3RyKSB7XG4gICAgY29uc3QgcmVnZXggPSAvW2EtekEtWsKnw4TDpMOWw7YuLVxcc10vZztcbiAgICBpZiAoc3RyLmxlbmd0aCA8IGRpc3BsYXlWYWx1ZT8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCB2YWxpZCA9IHZhbGlkYXRlSW5wdXQoc3RyKTtcbiAgICAgIHNldGludmFsaWRJbnB1dCghdmFsaWQpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHJlZ2V4LnRlc3Qoc3RyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB0aW1lID0gc3RyLmxlbmd0aCA+IDUgPyBzdHIuc2xpY2UoMCwgLTEpIDogc3RyO1xuICAgIGNvbnN0IHZhbGlkID0gdmFsaWRhdGVJbnB1dCh0aW1lKTtcbiAgICBzZXRpbnZhbGlkSW5wdXQoIXZhbGlkKTtcbiAgICByZXR1cm4gc3RyLmxlbmd0aCA8PSA1O1xuICB9XG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSAobmV3VmFsdWUsIHsgYWN0aW9uIH0pID0+IHtcbiAgICBpZiAoYWN0aW9uID09PSAnbWVudS1jbG9zZScpIHtcbiAgICAgIHNldFNob3dBbGxPcHRpb25zKHRydWUpO1xuICAgIH0gZWxzZSBpZiAoc2hvd0FsbE9wdGlvbnMpIHtcbiAgICAgIHNldFNob3dBbGxPcHRpb25zKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGRpc2FibGVUeXBpbmcgfHwgKG5ld1ZhbHVlICYmICFpc2ludmFsaWRJbnB1dChuZXdWYWx1ZSkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdpbnB1dC1jaGFuZ2UnKSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZWQgPSBwYXJzZVR5cGVkVGltZShuZXdWYWx1ZSk7XG4gICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUodmFsaWRhdGVkKTtcbiAgICAgIHNldFR5cGluZyh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9wdGlvbnMgPSB0aW1lQ2hvaWNlcy5tYXAodCA9PiB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHQudG9TdHJpbmcoKSwgbGFiZWw6IGdldERpc3BsYXkodCkgfTtcbiAgfSk7XG5cbiAgLy8gVGltZSBwaWNrZXIgaGFzIGEgbGlzdCBvZiBtaW51dGVzLCBpbnN0ZWFkIG9mIDE1IG1pbnV0ZXMuIFdlIG5lZWQgdG8gZmlsdGVyIHRob3NlIG91dFxuICAvLyBzbyBjbG9zZXN0IG9wdGlvbiB3aWxsIHNob3cgdXAgaW4gdGhlIGxpc3QuXG4gIGNvbnN0IGNsb3Nlc3RPcHRpb25zID0gZGF0ZVBpY2tlclxuICAgID8gb3B0aW9uc1xuICAgIDogb3B0aW9ucy5maWx0ZXIobyA9PiBvLmxhYmVsLnNwbGl0KCc6JylbMV0gJSAxNSA9PT0gMCk7XG4gIGNvbnN0IGNsb3Nlc3RPcHRpb24gPVxuICAgIGNsb3Nlc3RPcHRpb25zLmxlbmd0aCA+IDBcbiAgICAgID8gY2xvc2VzdE9wdGlvbnM/LnJlZHVjZSgoYSwgYikgPT5cbiAgICAgICAgICBNYXRoLmFicyh2YWx1ZSAtIGEudmFsdWUpIDwgTWF0aC5hYnModmFsdWUgLSBiLnZhbHVlKSA/IGEgOiBiLFxuICAgICAgICApXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuICBjb25zdCBmaWx0ZXJPcHRpb25zID0gKG9wdGlvbiwgaW5wdXQpID0+IHtcbiAgICBjb25zdCBob3VyID0gaW5wdXQubGVuZ3RoIDw9IDIgPyBpbnB1dCA6IGlucHV0LnNwbGl0KCc6JylbMF07XG4gICAgY29uc3QgaXNWYWxpZEhvdXIgPSAvXihbMC0xXT9bMC05XXwyWzAtM10pJC8udGVzdChob3VyKTtcbiAgICBjb25zdCBjb21wID0gaG91ci5sZW5ndGggPT09IDEgPyAnMCcuY29uY2F0KGlucHV0KSA6IGlucHV0O1xuICAgIHJldHVybiBpc1ZhbGlkSG91clxuICAgICAgPyBvcHRpb24ubGFiZWwuc3BsaXQoJzonKVswXSA9PT0gY29tcC5zcGxpdCgnOicpWzBdXG4gICAgICA6IHRydWU7XG4gIH07XG4gIGNvbnN0IGFyaWFFcnJvciA9IGkxOG5leHQudCgnaW52YWxpZC1pbnB1dCcsIHRyYW5zbGF0aW9uU2V0dGluZ3MpO1xuICByZXR1cm4gKFxuICAgIDxsYWJlbCBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtY29udGFpbmVyJ119IGh0bWxGb3I9e2lucHV0SWR9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0gaWQ9e2xhYmVsSWR9PlxuICAgICAgICB7bGFiZWx9IHtkaXNwbGF5VmFsdWV9XG4gICAgICA8L3NwYW4+XG4gICAgICB7aWNvbn1cbiAgICAgIDxTZWxlY3RcbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtsYWJlbElkfVxuICAgICAgICBhcmlhTGl2ZU1lc3NhZ2VzPXt7XG4gICAgICAgICAgZ3VpZGFuY2U6IGNvbnRleHQgPT4ge1xuICAgICAgICAgICAgLy8gV2hlbiB1c2VyIHR5cGVzIGludmFsaWQgdmFsdWUsIGlzRGlzYWJsZWQgYmVjb21lcyB1bmRlZmluZWQgaW5zdGVhZCBvZiBmYWxzZVxuICAgICAgICAgICAgaWYgKGNvbnRleHQuaXNEaXNhYmxlZCA9PT0gdW5kZWZpbmVkICYmIGludmFsaWRJbnB1dCkge1xuICAgICAgICAgICAgICByZXR1cm4gYXJpYUVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICcuJzsgLy8gdGhpcyBjYW4ndCBiZSBlbXB0eSBmb3Igc29tZSByZWFzb25cbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkZpbHRlcjogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Gb2N1czogKHsgY29udGV4dCwgbGFiZWw6IGl0ZW1MYWJlbCB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoY29udGV4dCA9PT0gJ21lbnUnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBpdGVtTGFiZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgfSxcbiAgICAgICAgfX1cbiAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgaW5wdXRJZD17aW5wdXRJZH1cbiAgICAgICAgb25DaGFuZ2U9e3RpbWUgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoJ0hIOm1tJyk7XG4gICAgICAgICAgY29uc3QgdHMgPSBnZXRUcyhkaXNwbGF5VmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICBpZiAodHlwaW5nKSB7XG4gICAgICAgICAgICBpZiAodHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRUaW1lICE9PSBkaXNwbGF5VmFsdWUgJiYgdGltZS52YWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUaW1lc3RhbXAodHMpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhbmRsZVRpbWVzdGFtcCh0aW1lLnZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKHRpbWUudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVGltZXN0YW1wKHRpbWUudmFsdWUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHJlc2V0IHZhbHVlXG4gICAgICAgICAgICAgICAgY2hhbmdlRGlzcGxheVZhbHVlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFkYXRlUGlja2VyKSB7XG4gICAgICAgICAgICAgIHNldGludmFsaWRJbnB1dChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZGF0ZVBpY2tlcikge1xuICAgICAgICAgICAgc2V0aW52YWxpZElucHV0KGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaGFuZGxlVGltZXN0YW1wKHRpbWUudmFsdWUpO1xuICAgICAgICB9fVxuICAgICAgICBjb21wb25lbnRzPXt7XG4gICAgICAgICAgSW5kaWNhdG9yc0NvbnRhaW5lcjogKCkgPT4gbnVsbCxcbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICBzdHlsZXNbJ2RhdGV0aW1lcGlja2VyLXNlbGVjdC1jb250YWluZXInXSxcbiAgICAgICAgICBpbnZhbGlkSW5wdXQgPyAnZGF0ZXRpbWVwaWNrZXItaW52YWxpZC1pbnB1dCcgOiAnJyxcbiAgICAgICAgKX1cbiAgICAgICAgY2xhc3NOYW1lUHJlZml4PVwiZGF0ZXRpbWVwaWNrZXItc2VsZWN0XCJcbiAgICAgICAgb25JbnB1dENoYW5nZT17b25JbnB1dENoYW5nZX1cbiAgICAgICAgaW5wdXRWYWx1ZT17IWRpc2FibGVUeXBpbmcgJiYgZGlzcGxheVZhbHVlfVxuICAgICAgICB2YWx1ZT17Y2xvc2VzdE9wdGlvbn1cbiAgICAgICAgbm9PcHRpb25zTWVzc2FnZT17KCkgPT4ge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfX1cbiAgICAgICAgZmlsdGVyT3B0aW9uPXsob3B0aW9uLCBpbnB1dCkgPT4ge1xuICAgICAgICAgIGlmIChkYXRlUGlja2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgY29tcGxldGVJbnB1dCA9XG4gICAgICAgICAgICBpbnB1dC5sZW5ndGggPT09IDUgfHxcbiAgICAgICAgICAgIChpbnB1dC5sZW5ndGggPT09IDQgJiYgaW5wdXQuc3BsaXQoJzonKVswXS5sZW5ndGggPT09IDEpO1xuICAgICAgICAgIGNvbnN0IGlzTW9kMTUgPSBvcHRpb24ubGFiZWwuc3BsaXQoJzonKVsxXSAlIDE1ID09PSAwO1xuICAgICAgICAgIGNvbnN0IG1pbnV0ZUlucHV0ID0gaW5wdXQuc3BsaXQoJzonKVsxXT8ubGVuZ3RoID09PSAxO1xuXG4gICAgICAgICAgaWYgKHNob3dBbGxPcHRpb25zICYmIGlzTW9kMTUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobWludXRlSW5wdXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0SCA9XG4gICAgICAgICAgICAgIGlucHV0LnNwbGl0KCc6JylbMF0ubGVuZ3RoID09PSAxXG4gICAgICAgICAgICAgICAgPyAnMCcuY29uY2F0KGlucHV0LnNwbGl0KCc6JylbMF0pXG4gICAgICAgICAgICAgICAgOiBpbnB1dC5zcGxpdCgnOicpWzBdO1xuICAgICAgICAgICAgY29uc3QgaW5wdXRNID0gaW5wdXQuc3BsaXQoJzonKVsxXTtcbiAgICAgICAgICAgIGNvbnN0IG9wdEggPSBvcHRpb24ubGFiZWwuc3BsaXQoJzonKVswXTtcbiAgICAgICAgICAgIGNvbnN0IG9wdE0gPSBvcHRpb24ubGFiZWwuc3BsaXQoJzonKVsxXTtcbiAgICAgICAgICAgIGlmIChpbnB1dEggPT09IG9wdEgpIHtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IE51bWJlcihpbnB1dE0pICogMTA7XG4gICAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gTnVtYmVyKG9wdE0pIC0gdDtcbiAgICAgICAgICAgICAgaWYgKHRvdGFsID49IDAgJiYgdG90YWwgPD0gOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNvbXBsZXRlSW5wdXQgJiYgIXNob3dBbGxPcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQubGVuZ3RoID09PSA0XG4gICAgICAgICAgICAgID8gJzAnLmNvbmNhdChpbnB1dCkgPT09IG9wdGlvbi5sYWJlbFxuICAgICAgICAgICAgICA6IGlucHV0ID09PSBvcHRpb24ubGFiZWw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc01vZDE1KSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyT3B0aW9ucyhvcHRpb24sIGlucHV0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH19XG4gICAgICAgIGNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZT17ZGlzYWJsZVR5cGluZ31cbiAgICAgICAgdGFiU2VsZWN0c1ZhbHVlPXtmYWxzZX1cbiAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICBvbkZvY3VzPXtlID0+IHtcbiAgICAgICAgICBpZiAoIWRpc2FibGVUeXBpbmcpIHtcbiAgICAgICAgICAgIGUudGFyZ2V0LnNlbGVjdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgb25CbHVyPXsoKSA9PiB7XG4gICAgICAgICAgLy8gcmVtb3ZpbmcgZm9jdXMgYWxzbyBsb2NrcyBpbiB2YWx1ZVxuICAgICAgICAgIGlmICh0eXBpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZCA9IGdldFRzKGRpc3BsYXlWYWx1ZSwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBoYW5kbGVUaW1lc3RhbXAodmFsaWRhdGVkKTtcbiAgICAgICAgICAgICAgc2V0VHlwaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNoYW5nZURpc3BsYXlWYWx1ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZGF0ZVBpY2tlcikge1xuICAgICAgICAgICAgc2V0aW52YWxpZElucHV0KGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIG9uS2V5RG93bj17ZSA9PiB7XG4gICAgICAgICAgaWYgKFsnQXJyb3dEb3duJywgJ0Fycm93VXAnXS5pbmNsdWRlcyhlLmtleSkpIHtcbiAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBpc1NlYXJjaGFibGU9eyFkaXNhYmxlVHlwaW5nfVxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuICApO1xufVxuRGVza3RvcERhdGV0aW1lcGlja2VyLnByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHRpbWVDaG9pY2VzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubnVtYmVyKS5pc1JlcXVpcmVkLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZVR5cGluZzogUHJvcFR5cGVzLmJvb2wsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBkYXRlUGlja2VyOiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJhbnNsYXRpb25TZXR0aW5nczogUHJvcFR5cGVzLnNoYXBlKHsgbG5nOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQgfSksXG59O1xuXG5EZXNrdG9wRGF0ZXRpbWVwaWNrZXIuZGVmYXVsdFByb3BzID0ge1xuICBkaXNhYmxlVHlwaW5nOiBmYWxzZSxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxuICBkYXRlUGlja2VyOiBmYWxzZSxcbiAgdHJhbnNsYXRpb25TZXR0aW5nczogeyBsbmc6ICdmaScgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlc2t0b3BEYXRldGltZXBpY2tlcjtcbiIsImZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVJbmplY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgdG9kYXk6ICdIZXV0ZScsXG4gICAgdG9tb3Jyb3c6ICdNb3JnZW4nLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ1NjaGxpZcOfZSBkaWUgQXVzd2FobCcsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2VkJzogJ0F1c3dhaGwgZ2VzY2hsb3NzZW4nLFxuICAgICdhY2Nlc3NpYmxlLW9wZW4nOiAnw5ZmZm5lIGRpZSBBdXN3YWhsJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuZWQnOiAnQXVzd2FobCBnZcO2ZmZuZXQnLFxuICAgICdhY2Nlc3NpYmxlLXRpdGxlJzogJ0RhdHVtIHVuZCBVaHJ6ZWl0YXVzd2FobCcsXG4gICAgYXJyaXZhbDogJ0Fua3VuZnQnLFxuICAgIGRhdGU6ICdEYXR1bScsXG4gICAgZGVwYXJ0dXJlOiAnQWJmYWhydCcsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnQWJmYWhydCBqZXR6dCcsXG4gICAgJ2Nob29zZS10aW1lJzogJ1plaXQgd8OkaGxlbicsXG4gICAgcmVhZHk6ICdGZXJ0aWcnLFxuICAgIHRpbWU6ICdaZWl0JyxcbiAgICBjYW5jZWw6ICdBYmJyZWNoZW4nLFxuICB9LFxuICBlbjoge1xuICAgIHRvZGF5OiAnVG9kYXknLFxuICAgIHRvbW9ycm93OiAnVG9tb3Jyb3cnLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ0Nsb3NlIHRoZSBwaWNrZXInLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlZCc6ICdUaW1lcGlja2VyIGNsb3NlZCcsXG4gICAgJ2FjY2Vzc2libGUtb3Blbic6ICdPcGVuIHRoZSBwaWNrZXInLFxuICAgICdhY2Nlc3NpYmxlLW9wZW5lZCc6ICdUaW1lcGlja2VyIG9wZW5lZCcsXG4gICAgJ2FjY2Vzc2libGUtdGl0bGUnOiAnRGF0ZSBhbmQgdGltZXBpY2tlcicsXG4gICAgJ2FjY2Vzc2libGUtdXBkYXRlLWluc3RydWN0aW9ucyc6XG4gICAgICAnQ2hhbmdpbmcgdGltZSBwYXJhbWV0ZXJzIHdpbGwgdHJpZ2dlciBhIG5ldyBzZWFyY2guJyxcbiAgICBhcnJpdmFsOiAnQXJyaXZhbCcsXG4gICAgZGF0ZTogJ0RhdGUnLFxuICAgIGRlcGFydHVyZTogJ0RlcGFydHVyZScsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnTGVhdmluZyBub3cnLFxuICAgIHRpbWU6ICdUaW1lJyxcbiAgICAnY2hvb3NlLXRpbWUnOiAnQ2hvb3NlIHRpbWUnLFxuICAgIHJlYWR5OiAnUmVhZHknLFxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgJ2ludmFsaWQtaW5wdXQnOiAnVGhlIHRpbWUgeW91IGVudGVyZWQgaXMgaW52YWxpZCcsXG4gIH0sXG4gIGZpOiB7XG4gICAgdG9kYXk6ICdUw6Ruw6TDpG4nLFxuICAgIHRvbW9ycm93OiAnSHVvbWVubmEnLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ1N1bGplIHZhbGl0c2luJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZWQnOiAnVmFsaXRzaW4gc3VsamV0dHUnLFxuICAgICdhY2Nlc3NpYmxlLW9wZW4nOiAnQXZhYSB2YWxpdHNpbicsXG4gICAgJ2FjY2Vzc2libGUtb3BlbmVkJzogJ1ZhbGl0c2luIGF2YXR0dScsXG4gICAgJ2FjY2Vzc2libGUtdGl0bGUnOiAnQWlrYS0gamEgcMOkaXbDpG3DpMOkcsOkdmFsaXRzaW4nLFxuICAgICdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnOlxuICAgICAgJ0Fpa2F2YWxpbnRvamVuIG11dXR0YW1pbmVuIGxhdWthaXNlZSB1dWRlbiBoYXVuLicsXG4gICAgYXJyaXZhbDogJ1BlcmlsbMOkJyxcbiAgICBkYXRlOiAnUMOkaXbDpCcsXG4gICAgZGVwYXJ0dXJlOiAnTMOkaHTDtmFpa2EnLFxuICAgICdkZXBhcnR1cmUtbm93JzogJ0zDpGh0w7Ygbnl0JyxcbiAgICB0aW1lOiAnQWlrYScsXG4gICAgJ2Nob29zZS10aW1lJzogJ1ZhbGl0c2UgYWlrYScsXG4gICAgcmVhZHk6ICdWYWxtaXMnLFxuICAgIGNhbmNlbDogJ1BlcnV1dGEnLFxuICAgICdpbnZhbGlkLWlucHV0JzogJ1N5w7Z0dMOkbcOkc2kgYWlrYSBvbiB2aXJoZWVsbGluZW4nLFxuICB9LFxuICBwbDoge1xuICAgIHRvZGF5OiAnRHppxZsnLFxuICAgIHRvbW9ycm93OiAnSnV0cm8nLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ1phbWtuaWogd3lib3JuaWsnLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlZCc6ICdaYW1rbmnEmXRvIHd5Ym9ybmlrJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuJzogJ090d8Ozcnogd3lib3JuaWsnLFxuICAgICdhY2Nlc3NpYmxlLW9wZW5lZCc6ICdPdHdhcnRvIHd5Ym9ybmlrJyxcbiAgICAnYWNjZXNzaWJsZS10aXRsZSc6ICdXeWLDs3IgZGF0eSBpIGdvZHppbnknLFxuICAgICdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnOlxuICAgICAgJ1ptaWFuYSB3eWJyYW5laiBnb2R6aW55IHd5d2/FgmEgbm93ZSB3eXN6dWtpd2FuaWUuJyxcbiAgICBhcnJpdmFsOiAnUHJ6eWphemQnLFxuICAgIGRhdGU6ICdEYXRhJyxcbiAgICBkZXBhcnR1cmU6ICdXeWphemQnLFxuICAgICdkZXBhcnR1cmUtbm93JzogJ1d5amXFvGTFvGFtIHRlcmF6JyxcbiAgICB0aW1lOiAnR29kemluYScsXG4gICAgJ2Nob29zZS10aW1lJzogJ1d5YmllcnogZ29kemluxJknLFxuICAgIHJlYWR5OiAnR290b3dlJyxcbiAgICBjYW5jZWw6ICdBbnVsdWonLFxuICAgICdpbnZhbGlkLWlucHV0JzogJ1dwcm93YWR6b25hIGdvZHppbmEgamVzdCBuaWVwcmF3aWTFgm93YScsXG4gIH0sXG4gIHN2OiB7XG4gICAgdG9kYXk6ICdJIGRhZycsXG4gICAgdG9tb3Jyb3c6ICdJIG1vcmdvbicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2UnOiAnU3TDpG5nIHbDpGxqYXJlbicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2VkJzogJ1bDpGxqYXJlbiBzdMOkbmdkZScsXG4gICAgJ2FjY2Vzc2libGUtb3Blbic6ICfDlnBwbmEgdsOkbGphcmVuJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuZWQnOiAnVsOkbGphcmVuIMO2cHBuYWRlJyxcbiAgICAnYWNjZXNzaWJsZS10aXRsZSc6ICdUaWQtIG9jaCBkYXR1bXbDpGxqYXJlbicsXG4gICAgJ2FjY2Vzc2libGUtdXBkYXRlLWluc3RydWN0aW9ucyc6XG4gICAgICAnT20gZHUgw6RuZHJhciB0aWRlcm5hLCBzdGFydGFzIGVuIG55IHPDtmtuaW5nIGF1dG9tYXRpc2t0LicsXG4gICAgYXJyaXZhbDogJ0FubMOkbmRlcicsXG4gICAgZGF0ZTogJ0RhdHVtJyxcbiAgICBkZXBhcnR1cmU6ICdBdmfDpW5nc3RpZCcsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnQXZnw6VyIG51JyxcbiAgICB0aW1lOiAnVGlkJyxcbiAgICAnY2hvb3NlLXRpbWUnOiAnVsOkbGogdGlkJyxcbiAgICByZWFkeTogJ0bDpHJkaWcnLFxuICAgIGNhbmNlbDogJ0F2YnJ5dCcsXG4gICAgJ2ludmFsaWQtaW5wdXQnOiAnVGlkZW4gZHUgYW5nYXYgw6RyIGZlbGFrdGlnJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRyYW5zbGF0aW9ucztcbiIsIi8qKlxuICogIERldGVjdCBpZiB1c2VyIGlzIG9uIGEgbW9iaWxlIGRldmljZSBieSBwYXJzaW5nIHVzZXJBZ2VudC4gVGhpcyBpcyBub3QgMTAwJSByZWxpYWJsZSBidXQgY2xvc2UgZW5vdWdoLlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzTW9iaWxlKCkge1xuICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgd2luZG93Lm9wZXJhO1xuICBjb25zdCBtb2JpbGUgPVxuICAgIC8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyBjZXx4ZGF8eGlpbm8vaS50ZXN0KFxuICAgICAgdXNlckFnZW50LFxuICAgICk7XG4gIHJldHVybiBtb2JpbGU7XG59XG5cbi8qKlxuICogRGV0ZWN0IGlmIHVzZXIgaXMgb24gYW4gYW5kcm9pZCBkZXZpY2UuIE5vdCAxMDAlIHJlbGlhYmxlLlxuICovXG5mdW5jdGlvbiBpc0FuZHJvaWQoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHVzZXJBZ2VudC5pbmRleE9mKCdhbmRyb2lkJykgPiAtMTtcbn1cblxuZXhwb3J0IHsgaXNNb2JpbGUsIGlzQW5kcm9pZCB9O1xuIiwiaW1wb3J0IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuICB2YXIga2V5LCBpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldO1xuICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuICBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59IiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgQXV0b3N1Z2dlc3QgZnJvbSAncmVhY3QtYXV0b3N1Z2dlc3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB7IGlzQW5kcm9pZCB9IGZyb20gJy4vbW9iaWxlRGV0ZWN0aW9uJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIGRhdGUgaW5wdXQgb24gbW9iaWxlXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZURhdGVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgZ2V0RGlzcGxheSxcbiAgb25DaGFuZ2UsXG4gIGl0ZW1Db3VudCxcbiAgc3RhcnRUaW1lLFxuICBpZCxcbiAgbGFiZWwsXG4gIGljb24sXG4gIHRpbWVab25lLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG5cbiAgY29uc3QgW29wZW4sIGNoYW5nZU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzY3JvbGxSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGRhdGVDaG9pY2VzID0gQXJyYXkoaXRlbUNvdW50KVxuICAgIC5maWxsKClcbiAgICAubWFwKChfLCBpKSA9PiBtb21lbnQoc3RhcnRUaW1lKS5hZGQoaSwgJ2RheScpLnZhbHVlT2YoKSk7XG4gIGNvbnN0IG1pbnV0ZSA9IDEwMDAgKiA2MDtcbiAgY29uc3QgZGlmZnMgPSBkYXRlQ2hvaWNlcy5tYXAodCA9PiB2YWx1ZSAtIHQpO1xuICBjb25zdCBzY3JvbGxJbmRleCA9IGRpZmZzLmZpbmRJbmRleCh0ID0+IHQgPCBtaW51dGUpOyAvLyB3aGVuIHRpbWUgaXMgbm93LCB0aGUgdGltZXMgbWlnaHQgZGlmZmVyIGJ5IGxlc3MgdGhhbiBvbmUgbWludXRlXG4gIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSA1MDtcbiAgLy8gc2Nyb2xsIHRvIHNlbGVjdGVkIHRpbWUgd2hlbiBkcm9wZG93biBpcyBvcGVuZWRcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlbiAmJiBzY3JvbGxSZWYuY3VycmVudCkge1xuICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gZWxlbWVudEhlaWdodCAqIHNjcm9sbEluZGV4O1xuICAgIH1cbiAgfSwgW3ZhbHVlLCBvcGVuXSk7XG4gIGNvbnN0IG5hdGl2ZUlucHV0ID0gIWlzQW5kcm9pZCgpO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydpbnB1dC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICA8c3Bhbj57aWNvbn08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtuYXRpdmVJbnB1dCA/IChcbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydtb2JpbGUtaW5wdXQtZGlzcGxheSddfVxuICAgICAgICAgIG9uQ2hhbmdlPXtlID0+IG9uQ2hhbmdlKE51bWJlcihlLnRhcmdldC52YWx1ZSkpfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgPlxuICAgICAgICAgIHtkYXRlQ2hvaWNlcy5tYXAoZGF0ZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8b3B0aW9uIGtleT17ZGF0ZX0gdmFsdWU9e2RhdGV9PlxuICAgICAgICAgICAgICAgIHtnZXREaXNwbGF5KGRhdGUpfVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgKSA6IChcbiAgICAgICAgPEF1dG9zdWdnZXN0XG4gICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgIHN1Z2dlc3Rpb25zPXtkYXRlQ2hvaWNlc31cbiAgICAgICAgICBnZXRTdWdnZXN0aW9uVmFsdWU9e3MgPT4gcy50b1N0cmluZygpfVxuICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb249e3MgPT4gZ2V0RGlzcGxheShzKX1cbiAgICAgICAgICBvblN1Z2dlc3Rpb25zRmV0Y2hSZXF1ZXN0ZWQ9eygpID0+IG51bGx9XG4gICAgICAgICAgc2hvdWxkUmVuZGVyU3VnZ2VzdGlvbnM9eygpID0+IHRydWV9XG4gICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgdmFsdWU6IGdldERpc3BsYXkodmFsdWUpLFxuICAgICAgICAgICAgb25DaGFuZ2U6IChfLCB7IG5ld1ZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UoTnVtYmVyKG5ld1ZhbHVlKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Gb2N1czogKCkgPT4ge1xuICAgICAgICAgICAgICBjaGFuZ2VPcGVuKHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogbGFiZWxJZCxcbiAgICAgICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJyxcbiAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrPXtmYWxzZX1cbiAgICAgICAgICBvblN1Z2dlc3Rpb25zQ2xlYXJSZXF1ZXN0ZWQ9eygpID0+IG51bGx9XG4gICAgICAgICAgcmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXI9eyh7IGNvbnRhaW5lclByb3BzLCBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICAgICAgICAvLyBzZXQgcmVmcyBmb3IgYXV0b3N1Z2dlc3QgbGlicmFyeSBhbmQgc2Nyb2xsYmFyIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICBjb25zdCB7IHJlZiwgLi4ub3RoZXJSZWZzIH0gPSBjb250YWluZXJQcm9wcztcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IGVsZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgIHNjcm9sbFJlZi5jdXJyZW50ID0gZWxlbTtcbiAgICAgICAgICAgICAgICByZWYoZWxlbSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8ZGl2IHRhYkluZGV4PVwiLTFcIiB7Li4ub3RoZXJSZWZzfSByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICB0aGVtZT17c3R5bGVzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2xhYmVsPlxuICApO1xufVxuTW9iaWxlRGF0ZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpdGVtQ291bnQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgc3RhcnRUaW1lOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGljb246IFByb3BUeXBlcy5ub2RlLFxuICBkYXRlVGltZUNvbWJpbmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5Nb2JpbGVEYXRlcGlja2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgaWNvbjogbnVsbCxcbiAgZGF0ZVRpbWVDb21iaW5lZDogZmFsc2UsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZURhdGVwaWNrZXI7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNlTGF5b3V0RWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuc2Nzcyc7XG5pbXBvcnQgeyBwYXJzZVR5cGVkVGltZSwgZ2V0VHMsIHZhbGlkYXRlSW5wdXQgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIHRpbWUgaW5wdXQgb24gbW9iaWxlXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZVRpbWVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgZ2V0RGlzcGxheSxcbiAgb25DaGFuZ2UsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbiAgdGltZVpvbmUsXG59KSB7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBjaGFuZ2VJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgY29uc3QgW2lzVmFsaWRJbnB1dCwgc2V0VmFsaWRJbnB1dF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIGNvbnN0IHRpbWVJbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGltZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHRpbWVJbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbXSk7XG4gIGNvbnN0IHNob3dFcnJvciA9ICFpc1ZhbGlkSW5wdXQ7XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydpbnB1dC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICA8c3Bhbj57aWNvbn08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBpZD17aW5wdXRJZH1cbiAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgbWF4TGVuZ3RoPVwiNlwiXG4gICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgc3R5bGVzWyd0aW1lLWlucHV0LW1vYmlsZSddLFxuICAgICAgICAgIHNob3dFcnJvciA/ICdtb2JpbGUtZGF0ZXRpbWVwaWNrZXItaW52YWxpZC1pbnB1dCcgOiAnJyxcbiAgICAgICAgKX1cbiAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIG9uRm9jdXM9e2UgPT4ge1xuICAgICAgICAgIGUudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKDAsIDApOyAvLyBzZXQgY2FyZXQgdG8gc3RhcnQgb2YgaW5wdXRcbiAgICAgICAgfX1cbiAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IHtcbiAgICAgICAgICBsZXQgbmV3VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWUucmVwbGFjZSgnLicsICc6Jyk7XG5cbiAgICAgICAgICBjb25zdCB2YWxpZCA9IHZhbGlkYXRlSW5wdXQobmV3VmFsdWUpO1xuICAgICAgICAgIHNldFZhbGlkSW5wdXQodmFsaWQpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIC8vIG51bWJlciB0eXBlZCBhcyBmaXJzdCBjaGFyID0+IGNsZWFyIHJlc3Qgb2YgdGhlIGlucHV0XG4gICAgICAgICAgICBuZXdWYWx1ZS5tYXRjaCgvWzAtOV17M306WzAtOV17Mn0vKSAmJlxuICAgICAgICAgICAgbmV3VmFsdWUuc2xpY2UoMSkgPT09IGlucHV0VmFsdWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUuY2hhckF0KDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmV3VmFsdWUubGVuZ3RoID4gNSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhY3R1YWwgPSBwYXJzZVR5cGVkVGltZShuZXdWYWx1ZSk7XG4gICAgICAgICAgY2hhbmdlSW5wdXRWYWx1ZShhY3R1YWwpO1xuICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IGdldFRzKGFjdHVhbCwgdmFsdWUpO1xuICAgICAgICAgIGlmICh0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKHRpbWVzdGFtcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICByZWY9e3RpbWVJbnB1dFJlZn1cbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cbiAgKTtcbn1cbk1vYmlsZVRpbWVwaWNrZXIucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXREaXNwbGF5OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuTW9iaWxlVGltZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGljb246IG51bGwsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZVRpbWVwaWNrZXI7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2ZpJztcbmltcG9ydCAnbW9tZW50L2xvY2FsZS9zdic7XG5pbXBvcnQgJ21vbWVudC9sb2NhbGUvZGUnO1xuaW1wb3J0IHVuaXF1ZUlkIGZyb20gJ2xvZGFzaC91bmlxdWVJZCc7XG5pbXBvcnQgaTE4bmV4dCBmcm9tICdpMThuZXh0JztcbmltcG9ydCBNb2RhbCBmcm9tICdyZWFjdC1tb2RhbCc7XG5pbXBvcnQgSWNvbiBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1pY29uJztcbmltcG9ydCBNb2JpbGVEYXRlcGlja2VyIGZyb20gJy4vTW9iaWxlRGF0ZXBpY2tlcic7XG5pbXBvcnQgTW9iaWxlVGltZXBpY2tlciBmcm9tICcuL01vYmlsZVRpbWVwaWNrZXInO1xuaW1wb3J0IHRyYW5zbGF0aW9ucyBmcm9tICcuL3RyYW5zbGF0aW9ucyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLnNjc3MnO1xuXG5tb21lbnQubG9jYWxlKCdlbicpO1xuaTE4bmV4dC5pbml0KHsgbG5nOiAnZW4nLCByZXNvdXJjZXM6IHt9IH0pO1xuT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5mb3JFYWNoKGxhbmcgPT5cbiAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5nLCAndHJhbnNsYXRpb24nLCB0cmFuc2xhdGlvbnNbbGFuZ10pLFxuKTtcblxuLyoqXG4gKiBUT0RPXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZVBpY2tlck1vZGFsKHtcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsLFxuICBvbk5vd0NsaWNrLFxuICBsYW5nLFxuICBjb2xvcixcbiAgdGltZVpvbmUsXG4gIG9uU3VibWl0LFxuICBvbkNhbmNlbCxcbiAgdGltZXN0YW1wLFxuICBnZXRUaW1lRGlzcGxheSxcbiAgZGF0ZVNlbGVjdEl0ZW1Db3VudCxcbiAgZ2V0RGF0ZURpc3BsYXksXG4gIGZvbnRXZWlnaHRzLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG4gIGNvbnN0IHRyYW5zbGF0aW9uU2V0dGluZ3MgPSB7IGxuZzogbGFuZyB9O1xuXG4gIGNvbnN0IFtkaXNwbGF5VGltZXN0YW1wLCBjaGFuZ2VUaW1lc3RhbXBdID0gdXNlU3RhdGUodGltZXN0YW1wKTtcblxuICBjb25zdCBbZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCwgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsXSA9XG4gICAgdXNlU3RhdGUoZGVwYXJ0dXJlT3JBcnJpdmFsKTtcblxuICBmdW5jdGlvbiBvbkFycml2YWxDbGljaygpIHtcbiAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwoJ2Fycml2YWwnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRGVwYXJ0dXJlQ2xpY2soKSB7XG4gICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKCdkZXBhcnR1cmUnKTtcbiAgfVxuXG4gIC8vIGZvciBpbnB1dCBsYWJlbHNcbiAgY29uc3QgW2h0bWxJZF0gPSB1c2VTdGF0ZSh1bmlxdWVJZCgnZGF0ZXRpbWVwaWNrZXItJykpO1xuICBjb25zdCBkYXRlU2VsZWN0U3RhcnRUaW1lID0gbW9tZW50KClcbiAgICAuc3RhcnRPZignZGF5JylcbiAgICAuaG91cihtb21lbnQoZGlzcGxheVRpbWVzdGFtcCkuaG91cigpKVxuICAgIC5taW51dGUobW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLm1pbnV0ZSgpKVxuICAgIC52YWx1ZU9mKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8TW9kYWxcbiAgICAgIGFwcEVsZW1lbnQ9e2RvY3VtZW50ID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2FwcCcpIDogdW5kZWZpbmVkfVxuICAgICAgaXNPcGVuXG4gICAgICBjbGFzc05hbWU9e3N0eWxlc1snbW9iaWxlLW1vZGFsLWNvbnRlbnQnXX1cbiAgICAgIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1snbW9iaWxlLW1vZGFsLW92ZXJsYXknXX1cbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgJy0tY29sb3InOiBgJHtjb2xvcn1gLFxuICAgICAgICAgICctLWZvbnQtd2VpZ2h0LW1lZGl1bSc6IGZvbnRXZWlnaHRzLm1lZGl1bSxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1sndG9wLXJvdyddfT5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXNbJ21vZGFsLXRpdGxlJ119PlxuICAgICAgICAgICAge2kxOG5leHQudCgnY2hvb3NlLXRpbWUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2RlcGFydHVyZS1ub3ctYnV0dG9uJ119XG4gICAgICAgICAgICBvbkNsaWNrPXtvbk5vd0NsaWNrfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2RlcGFydHVyZS1ub3cnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3RhYi1yb3cnXX0+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPXtgJHtodG1sSWR9LW1vZGFsLWRlcGFydHVyZWB9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1sncmFkaW8tdGFiLWxhYmVsJ119XG4gICAgICAgICAgICAgICAgJHtcbiAgICAgICAgICAgICAgICAgIHN0eWxlc1tcbiAgICAgICAgICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCA9PT0gJ2RlcGFydHVyZSdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdhY3RpdmUnXG4gICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdkZXBhcnR1cmUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1tb2RhbC1kZXBhcnR1cmVgfVxuICAgICAgICAgICAgICBuYW1lPVwiZGVwYXJ0dXJlT3JBcnJpdmFsXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJkZXBhcnR1cmVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbiddfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uRGVwYXJ0dXJlQ2xpY2soKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCA9PT0gJ2RlcGFydHVyZSd9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPXtgJHtodG1sSWR9LW1vZGFsLWFycml2YWxgfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRhYi1sYWJlbCddfVxuICAgICAgICAgICAgICAgICR7XG4gICAgICAgICAgICAgICAgICBzdHlsZXNbXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQgPT09ICdhcnJpdmFsJ1xuICAgICAgICAgICAgICAgICAgICAgID8gJ2FjdGl2ZSdcbiAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2Fycml2YWwnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1tb2RhbC1hcnJpdmFsYH1cbiAgICAgICAgICAgICAgbmFtZT1cImRlcGFydHVyZU9yQXJyaXZhbFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIHZhbHVlPVwiYXJyaXZhbFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydyYWRpby10ZXh0YnV0dG9uJ119XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgb25BcnJpdmFsQ2xpY2soKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCA9PT0gJ2Fycml2YWwnfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snaW5wdXQtcm93J119PlxuICAgICAgICAgIDxNb2JpbGVEYXRlcGlja2VyXG4gICAgICAgICAgICB2YWx1ZT17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGdldERpc3BsYXk9e2dldERhdGVEaXNwbGF5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2NoYW5nZVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGl0ZW1Db3VudD17ZGF0ZVNlbGVjdEl0ZW1Db3VudH1cbiAgICAgICAgICAgIHN0YXJ0VGltZT17ZGF0ZVNlbGVjdFN0YXJ0VGltZX1cbiAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LWRhdGVgfVxuICAgICAgICAgICAgbGFiZWw9e2kxOG5leHQudCgnZGF0ZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ2RhdGUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJjYWxlbmRhclwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPE1vYmlsZVRpbWVwaWNrZXJcbiAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0VGltZURpc3BsYXl9XG4gICAgICAgICAgICBvbkNoYW5nZT17Y2hhbmdlVGltZXN0YW1wfVxuICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tdGltZWB9XG4gICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCd0aW1lJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snY29tYm9ib3gtaWNvbiddfSAke3N0eWxlc1sndGltZS1pbnB1dC1pY29uJ119YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRpbWVcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snYnV0dG9ucy1yb3cnXX0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmVhZHktYnV0dG9uJ119XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICBvblN1Ym1pdChkaXNwbGF5VGltZXN0YW1wLCBkZXBhcnR1cmVPckFycml2YWxDdXJyZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ3JlYWR5JywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snY2FuY2VsLWJ1dHRvbiddfVxuICAgICAgICAgICAgb25DbGljaz17b25DYW5jZWx9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnY2FuY2VsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9Nb2RhbD5cbiAgKTtcbn1cblxuTW9iaWxlUGlja2VyTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aW1lWm9uZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsOiBQcm9wVHlwZXMub25lT2YoWydkZXBhcnR1cmUnLCAnYXJyaXZhbCddKS5pc1JlcXVpcmVkLFxuICBvbk5vd0NsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DYW5jZWw6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXRUaW1lRGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZGF0ZVNlbGVjdEl0ZW1Db3VudDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXREYXRlRGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG59O1xuXG5Nb2JpbGVQaWNrZXJNb2RhbC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNvbG9yOiAnIzAwN2FjOScsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZVBpY2tlck1vZGFsO1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgJ21vbWVudC9sb2NhbGUvZmknO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL3N2JztcbmltcG9ydCAnbW9tZW50L2xvY2FsZS9kZSc7XG5pbXBvcnQgdW5pcXVlSWQgZnJvbSAnbG9kYXNoL3VuaXF1ZUlkJztcbmltcG9ydCBpMThuZXh0IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgRGVza3RvcERhdGV0aW1lcGlja2VyIGZyb20gJy4vRGVza3RvcERhdGV0aW1lcGlja2VyJztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi9tb2JpbGVEZXRlY3Rpb24nO1xuaW1wb3J0IGRhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCBmcm9tICcuL2RhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCc7XG5pbXBvcnQgTW9iaWxlUGlja2VyTW9kYWwgZnJvbSAnLi9Nb2JpbGVQaWNrZXJNb2RhbCc7XG5cbm1vbWVudC5sb2NhbGUoJ2VuJyk7XG5pMThuZXh0LmluaXQoe1xuICBsbmc6ICdmaScsXG4gIGZhbGxiYWNrTG5nOiAnZmknLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICB9LFxufSk7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgcmVuZGVycyBjb21ib2JveCBzdHlsZSBpbnB1dHMgZm9yIHNlbGVjdGluZyBkYXRlIGFuZCB0aW1lLiBUaGlzIGlzIGEgY29udHJvbGxlZCBjb21wb25lbnQsIHRpbWVzdGFtcCBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBib3RoIGlucHV0cy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBwcm9wcy50aW1lc3RhbXAgICAgICBDdXJyZW50bHkgc2VsZWN0ZWQgdGltZSBhcyBhIHVuaXggdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcy4gU2V0IHRvIG51bGwgdG8gc2lnbmlmeSB0aGF0IFwibm93XCIgaXMgc2VsZWN0ZWQuIERpc3BsYXllZCB0aW1lIGlzIHVwZGF0ZWQgaW4gcmVhbHRpbWUgd2hlbiBzZXQgdG8gbnVsbFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25UaW1lQ2hhbmdlICAgICAgIENhbGxlZCB3aXRoIG5ldyB0aW1lc3RhbXAgd2hlbiB0aW1lIGlucHV0IGNoYW5nZXNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uRGF0ZUNoYW5nZSAgICAgICBDYWxsZWQgd2l0aCBuZXcgdGltZXN0YW1wIHdoZW4gZGF0ZSBpbnB1dCBjaGFuZ2VzXG4gKiBAcGFyYW0geydhcnJpdmFsJ3wnZGVwYXJ0dXJlJ30gcHJvcHMuZGVwYXJ0dXJlT3JBcnJpdmFsICAgRGV0ZXJtaW5lIGlmIGlucHV0IGlzIHNldCB0byBjaG9vc2UgZGVwYXJ0dXJlIG9yIGFycml2YWwgdGltZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25Ob3dDbGljayAgICAgICAgIENhbGxlZCB3aGVuIFwiZGVwYXJ0IG5vd1wiIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRlcGFydHVyZUNsaWNrICAgQ2FsbGVkIHdoZW4gXCJkZXBhcnR1cmVcIiBidXR0b24gaXMgY2xpY2tlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25BcnJpdmFsQ2xpY2sgICAgIENhbGxlZCB3aGVuIFwiYXJyaXZhbFwiIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAcGFyYW0ge25vZGV9IHByb3BzLmVtYmVkV2hlbkNsb3NlZCAgICAgICAgSlNYIGVsZW1lbnQgdG8gcmVuZGVyIGluIHRoZSBjb3JuZXIgd2hlbiBpbnB1dCBpcyBjbG9zZWRcbiAqIEBwYXJhbSB7bm9kZX0gcHJvcHMuZW1iZWRXaGVuT3BlbiAgICAgICAgICBKU1ggZWxlbWVudCB0byByZW5kZXIgd2hlbiBpbnB1dCBpcyBvcGVuXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMubGFuZyAgICAgICAgICAgICAgICAgTGFuZ3VhZ2Ugc2VsZWN0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2VydmljZVRpbWVSYW5nZSAgICAgICAgICAgRGV0ZXJtaW5lIG51bWJlciBvZiBkYXlzIHNob3duIGluIHRpbWVwaWNrZXIuIE9wdGlvbmFsLiBkZWZhdWx0IGlzIDMwLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25PcGVuICAgICAgICAgICAgICAgICAgIERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGltZXBpY2tlciBpcyBvcGVuLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2xvc2UgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgY2xvc2VkLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9wZW5QaWNrZXIgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgdGltZXBpY2tlciBzaG91bGQgYmUgb3BlbiBpbiBpbnRpYWwgcmVuZGVyLiBPcHRpb25hbC4gRGVmYXVsdCBpcyB1bmRlZmluZWQuXG4gKlxuICpcbiAqIEBleGFtcGxlXG4gKiA8RGF0ZXRpbWVwaWNrZXJcbiAqICAgdGltZXN0YW1wPXsxNTkwMTMzODIzMDAwfVxuICogICBvblRpbWVDaGFuZ2U9eyhuZXdUaW1lc3RhbXApID0+IHVwZGF0ZShuZXdUaW1lc3RhbXApfVxuICogICBvbkRhdGVDaGFuZ2U9eyhuZXdUaW1lc3RhbXApID0+IHVwZGF0ZShuZXdUaW1lc3RhbXApfVxuICogICBkZXBhcnR1cmVPckFycml2YWw9eydkZXBhcnR1cmUnfVxuICogICBvbk5vd0NsaWNrPXsoKSA9PiBzZXRUaW1lc3RhbXBUb051bGwoKX1cbiAqICAgb25EZXBhcnR1cmVDbGljaz17KCkgPT4gZGVwYXJ0dXJlQ2xpY2tlZCgpfVxuICogICBvbkFycml2YWxDbGljaz17KCkgPT4gYXJyaXZhbENsaWNrZWQoKX1cbiAqICAgZW1iZWRXaGVuQ2xvc2VkPXs8YnV0dG9uIC8+fVxuICogICBsYW5nPXsnZW4nfVxuICogICBzZXJ2aWNlVGltZVJhbmdlPXsxNX1cbiAqIC8+XG4gKi9cbmZ1bmN0aW9uIERhdGV0aW1lcGlja2VyKHtcbiAgdGltZXN0YW1wLFxuICBvblRpbWVDaGFuZ2UsXG4gIG9uRGF0ZUNoYW5nZSxcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsLFxuICBvbk5vd0NsaWNrLFxuICBvbkRlcGFydHVyZUNsaWNrLFxuICBvbkFycml2YWxDbGljayxcbiAgZW1iZWRXaGVuQ2xvc2VkLFxuICBlbWJlZFdoZW5PcGVuLFxuICBsYW5nLFxuICBjb2xvcixcbiAgdGltZVpvbmUsXG4gIG9uTW9kYWxTdWJtaXQsXG4gIGZvbnRXZWlnaHRzLFxuICBzZXJ2aWNlVGltZVJhbmdlLFxuICBvbk9wZW4sXG4gIG9uQ2xvc2UsXG4gIG9wZW5QaWNrZXIsXG59KSB7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgW2lzT3BlbiwgY2hhbmdlT3Blbl0gPSB1c2VTdGF0ZShvcGVuUGlja2VyIHx8IGZhbHNlKTtcbiAgY29uc3QgW2Rpc3BsYXlUaW1lc3RhbXAsIGNoYW5nZURpc3BsYXlUaW1lc3RhbXBdID0gdXNlU3RhdGUoXG4gICAgdGltZXN0YW1wIHx8IG1vbWVudCgpLnZhbHVlT2YoKSxcbiAgKTtcbiAgLy8gdGltZXIgZm9yIHVwZGF0aW5nIGRpc3BsYXlUaW1lc3RhbXAgaW4gcmVhbCB0aW1lXG4gIGNvbnN0IFt0aW1lcklkLCBzZXRUaW1lcl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgLy8gZm9yIGlucHV0IGxhYmVsc1xuICBjb25zdCBbaHRtbElkXSA9IHVzZVN0YXRlKHVuaXF1ZUlkKCdkYXRldGltZXBpY2tlci0nKSk7XG4gIGNvbnN0IFt1c2VNb2JpbGVJbnB1dHNdID0gdXNlU3RhdGUoaXNNb2JpbGUoKSAmJiBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQoKSk7XG4gIGNvbnN0IG9wZW5QaWNrZXJSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgYWxlcnRSZWYgPSB1c2VSZWYoKTtcblxuICBjb25zdCB0cmFuc2xhdGlvblNldHRpbmdzID0geyBsbmc6IGxhbmcgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIE9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5ndWFnZSA9PlxuICAgICAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5ndWFnZSwgJ3RyYW5zbGF0aW9uJywgdHJhbnNsYXRpb25zW2xhbmddKSxcbiAgICApO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBtb21lbnQubG9jYWxlKGxhbmcpO1xuICB9LCBbbGFuZ10pO1xuXG4gIGNvbnN0IG5vd1NlbGVjdGVkID0gdGltZXN0YW1wID09PSBudWxsO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChub3dTZWxlY3RlZCkge1xuICAgICAgY2hhbmdlRGlzcGxheVRpbWVzdGFtcChtb21lbnQoKS52YWx1ZU9mKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjbGVhciB0aW1lclxuICAgICAgaWYgKHRpbWVySWQpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcklkKTtcbiAgICAgICAgc2V0VGltZXIobnVsbCk7XG4gICAgICB9XG4gICAgICBjaGFuZ2VEaXNwbGF5VGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gICAgfVxuICB9LCBbdGltZXN0YW1wXSk7XG5cbiAgLy8gc2V0IHRpbWVyIHRvIHVwZGF0ZSBkaXNwbGF5VGltZXN0YW1wIHdoZW4gbWludXRlIGNoYW5nZXMgaWYgbm93U2VsZWN0ZWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW5vd1NlbGVjdGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGltZXJJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcklkKTtcbiAgICB9XG4gICAgY29uc3QgbmV3SWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG4gICAgICBjb25zdCBzYW1lTWludXRlID0gbW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLmlzU2FtZShub3csICdtaW51dGUnKTtcbiAgICAgIGlmICghc2FtZU1pbnV0ZSkge1xuICAgICAgICBjbGVhckludGVydmFsKG5ld0lkKTtcbiAgICAgICAgc2V0VGltZXIobnVsbCk7XG4gICAgICAgIGNoYW5nZURpc3BsYXlUaW1lc3RhbXAobm93KTtcbiAgICAgIH1cbiAgICB9LCA1MDAwKTtcbiAgICBzZXRUaW1lcihuZXdJZCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwobmV3SWQpO1xuICB9LCBbZGlzcGxheVRpbWVzdGFtcF0pO1xuXG4gIGNvbnN0IHByZXZJc09wZW5SZWYgPSB1c2VSZWYoKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBwcmV2SXNPcGVuUmVmLmN1cnJlbnQgPSBpc09wZW47XG4gIH0pO1xuXG4gIC8vIHBhcmFtIGRhdGUgaXMgdGltZXN0YW1wXG4gIGNvbnN0IGdldERhdGVEaXNwbGF5ID0gZGF0ZSA9PiB7XG4gICAgY29uc3QgdGltZSA9IG1vbWVudChkYXRlKTtcbiAgICBsZXQgZm9ybWF0dGVkO1xuICAgIGlmICh0aW1lLmlzU2FtZShtb21lbnQoKSwgJ2RheScpKSB7XG4gICAgICBmb3JtYXR0ZWQgPSBpMThuZXh0LnQoJ3RvZGF5JywgdHJhbnNsYXRpb25TZXR0aW5ncyk7XG4gICAgfSBlbHNlIGlmICh0aW1lLmlzU2FtZShtb21lbnQoKS5hZGQoMSwgJ2RheScpLCAnZGF5JykpIHtcbiAgICAgIGZvcm1hdHRlZCA9IGkxOG5leHQudCgndG9tb3Jyb3cnLCB0cmFuc2xhdGlvblNldHRpbmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybWF0dGVkID0gdGltZS5mb3JtYXQoJ2RkIEQuTS4nKTtcbiAgICB9XG4gICAgZm9ybWF0dGVkID0gYCR7Zm9ybWF0dGVkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7Zm9ybWF0dGVkLnNsaWNlKDEpfWA7XG4gICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgfTtcblxuICAvLyBwYXJhbSB0aW1lIGlzIHRpbWVzdGFtcFxuICBjb25zdCBnZXRUaW1lRGlzcGxheSA9IHRpbWUgPT4ge1xuICAgIHJldHVybiBtb21lbnQodGltZSkuZm9ybWF0KCdISDptbScpO1xuICB9O1xuXG4gIGNvbnN0IHNlbGVjdGVkTW9tZW50ID0gbW9tZW50KGRpc3BsYXlUaW1lc3RhbXApO1xuICBjb25zdCB0aW1lU2VsZWN0U3RhcnRUaW1lID0gbW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcbiAgbGV0IHRpbWVDaG9pY2VzID0gW107XG4gIGNvbnN0IGN1cnJlbnQgPSBtb21lbnQodGltZVNlbGVjdFN0YXJ0VGltZSk7XG4gIHdoaWxlIChjdXJyZW50LmlzU2FtZSh0aW1lU2VsZWN0U3RhcnRUaW1lLCAnZGF5JykpIHtcbiAgICB0aW1lQ2hvaWNlcy5wdXNoKGN1cnJlbnQudmFsdWVPZigpKTtcbiAgICBpZiAoaXNNb2JpbGUoKSkge1xuICAgICAgY3VycmVudC5hZGQoMTUsICdtaW51dGVzJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnQuYWRkKDEsICdtaW51dGVzJyk7XG4gICAgfVxuICB9XG4gIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAvLyBpZiB0aW1lIGlzIHNldCB0byBub3dcbiAgICAvLyBhZGQgdGltZXMgaW4gNSBtaW4gaW50ZXJ2YWxzIGZvciBuZXh0IDMwIG1pbnNcbiAgICBjb25zdCBmaXZlTWludXRlcyA9IDEwMDAgKiA2MCAqIDU7XG4gICAgY29uc3QgbmV4dEZpdmVNaW4gPSBNYXRoLmNlaWwoZGlzcGxheVRpbWVzdGFtcCAvIGZpdmVNaW51dGVzKSAqIGZpdmVNaW51dGVzO1xuICAgIGNvbnN0IHRpbWVzVG9BZGQgPSBBcnJheSg3KVxuICAgICAgLmZpbGwoKVxuICAgICAgLm1hcCgoXywgaSkgPT4gbmV4dEZpdmVNaW4gKyBpICogZml2ZU1pbnV0ZXMpO1xuICAgIGNvbnN0IGNsb3Nlc3RJbmRleEFmdGVyID0gdGltZUNob2ljZXNcbiAgICAgIC5tYXAodCA9PiBkaXNwbGF5VGltZXN0YW1wIC0gdClcbiAgICAgIC5maW5kSW5kZXgodCA9PiB0IDw9IDApO1xuICAgIHRpbWVDaG9pY2VzLnNwbGljZShjbG9zZXN0SW5kZXhBZnRlciwgMCwgLi4udGltZXNUb0FkZCk7XG4gICAgdGltZUNob2ljZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQodGltZUNob2ljZXMpKTsgLy8gcmVtb3ZlIGR1cGxpY2F0ZXNcbiAgfVxuXG4gIGNvbnN0IGRhdGVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoKVxuICAgIC5zdGFydE9mKCdkYXknKVxuICAgIC5ob3VyKHNlbGVjdGVkTW9tZW50LmhvdXIoKSlcbiAgICAubWludXRlKHNlbGVjdGVkTW9tZW50Lm1pbnV0ZSgpKVxuICAgIC52YWx1ZU9mKCk7XG4gIGNvbnN0IGRhdGVDaG9pY2VzID0gQXJyYXkoc2VydmljZVRpbWVSYW5nZSlcbiAgICAuZmlsbCgpXG4gICAgLm1hcCgoXywgaSkgPT4gbW9tZW50KGRhdGVTZWxlY3RTdGFydFRpbWUpLmFkZChpLCAnZGF5JykudmFsdWVPZigpKTtcblxuICBmdW5jdGlvbiBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpIHtcbiAgICBpZiAoYWxlcnRSZWYuY3VycmVudCkge1xuICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBpMThuZXh0LnQoXG4gICAgICAgICdhY2Nlc3NpYmxlLWNsb3NlZCcsXG4gICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3MsXG4gICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGFsZXJ0UmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2hvd1NjcmVlbnJlYWRlck9wZW5BbGVydCgpIHtcbiAgICBpZiAoYWxlcnRSZWYuY3VycmVudCkge1xuICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBpMThuZXh0LnQoXG4gICAgICAgICdhY2Nlc3NpYmxlLW9wZW5lZCcsXG4gICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3MsXG4gICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGFsZXJ0UmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVuZGVyT3BlbigpIHtcbiAgICBpZiAodXNlTW9iaWxlSW5wdXRzKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBpc09wZW4gJiYgKFxuICAgICAgICAgIDxNb2JpbGVQaWNrZXJNb2RhbFxuICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsPXtkZXBhcnR1cmVPckFycml2YWx9XG4gICAgICAgICAgICBvbk5vd0NsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICBvbk5vd0NsaWNrKCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgbGFuZz17bGFuZ31cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgIG9uU3VibWl0PXsobmV3VGltZXN0YW1wLCBuZXdEZXBhcnR1cmVPckFycml2YWwpID0+IHtcbiAgICAgICAgICAgICAgb25Nb2RhbFN1Ym1pdChuZXdUaW1lc3RhbXAsIG5ld0RlcGFydHVyZU9yQXJyaXZhbCk7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGdldFRpbWVEaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgICAgICAgIHRpbWVzdGFtcD17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGdldERhdGVEaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgIGRhdGVTZWxlY3RJdGVtQ291bnQ9e3NlcnZpY2VUaW1lUmFuZ2V9XG4gICAgICAgICAgICBnZXREaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIGZvbnRXZWlnaHRzPXtmb250V2VpZ2h0c31cbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2RhdGV0aW1lcGlja2VyLW9wZW4tY29udGFpbmVyJ119ICR7XG4gICAgICAgICAgICAhaXNPcGVuID8gc3R5bGVzLmhpZGRlbiA6ICcnXG4gICAgICAgICAgfWB9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgICBpc09wZW5cbiAgICAgICAgICAgICAgICA/IGAke3N0eWxlc1sndG9wLXJvdy1jb250YWluZXInXX0gZGF0ZXRpbWVwaWNrZXItdG9wLXJvd2BcbiAgICAgICAgICAgICAgICA6IGAke3N0eWxlcy5oaWRkZW59IGRhdGV0aW1lcGlja2VyLXRvcC1yb3dgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgeycgJ31cbiAgICAgICAgICAgIDxzcGFuIHJvbGU9XCJhbGVydFwiIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119IHJlZj17YWxlcnRSZWZ9IC8+XG4gICAgICAgICAgICA8c3BhbiAvPlxuICAgICAgICAgICAgey8qIFRoaXMgZW1wdHkgc3BhbiBwcmV2ZW50cyBhIHdlaXJkIGZvY3VzIGJ1ZyBvbiBjaHJvbWUgKi99XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snZGVwYXJ0dXJlLW9yLWFycml2YWwtY29udGFpbmVyJ119PlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBodG1sRm9yPXtgJHtodG1sSWR9LWRlcGFydHVyZWB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24tbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnID8gJ2FjdGl2ZScgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtpMThuZXh0LnQoJ2RlcGFydHVyZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiZGVwYXJ0dXJlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydyYWRpby10ZXh0YnV0dG9uJ119XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvbkRlcGFydHVyZUNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnZGVwYXJ0dXJlJ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBodG1sRm9yPXtgJHtodG1sSWR9LWFycml2YWxgfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydyYWRpby10ZXh0YnV0dG9uLWxhYmVsJ119XG4gICAgICAgICAgICAgICAgJHtcbiAgICAgICAgICAgICAgICAgIHN0eWxlc1tcbiAgICAgICAgICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCcgPyAnYWN0aXZlJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2kxOG5leHQudCgnYXJyaXZhbCcsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tYXJyaXZhbGB9XG4gICAgICAgICAgICAgICAgICBuYW1lPVwiZGVwYXJ0dXJlT3JBcnJpdmFsXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cImFycml2YWxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uQXJyaXZhbENsaWNrKCk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tbm93YH1cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydkZXBhcnR1cmUtbm93LWJ1dHRvbiddfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2hvd1NjcmVlbnJlYWRlckNsb3NlQWxlcnQoKTtcbiAgICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvbk5vd0NsaWNrKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtpMThuZXh0LnQoJ2RlcGFydHVyZS1ub3cnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3JpZ2h0LWVkZ2UnXX0+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snY2xvc2UtYnV0dG9uJ119XG4gICAgICAgICAgICAgICAgYXJpYS1jb250cm9scz17YCR7aHRtbElkfS1yb290YH1cbiAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICAgICAgaWYgKG9uQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snY2xvc2UtaWNvbiddfT5cbiAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cImNsb3NlXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfT5cbiAgICAgICAgICAgICAgICAgIHtpMThuZXh0LnQoJ2FjY2Vzc2libGUtY2xvc2UnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgICAgIGlzT3BlblxuICAgICAgICAgICAgICAgID8gYCR7c3R5bGVzWydwaWNrZXItY29udGFpbmVyJ119YFxuICAgICAgICAgICAgICAgIDogYCR7c3R5bGVzLmhpZGRlbn0gZGF0ZXRpbWVwaWNrZXItdG9wLXJvd2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtbGVmdCddfT5cbiAgICAgICAgICAgICAgPERlc2t0b3BEYXRldGltZXBpY2tlclxuICAgICAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtuZXdWYWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICBvbkRhdGVDaGFuZ2UobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0RGF0ZURpc3BsYXl9XG4gICAgICAgICAgICAgICAgdGltZUNob2ljZXM9e2RhdGVDaG9pY2VzfVxuICAgICAgICAgICAgICAgIHZhbGlkYXRlPXsoKSA9PiBudWxsfVxuICAgICAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ2RhdGUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cImNhbGVuZGFyXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1kYXRlYH1cbiAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCdkYXRlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZVR5cGluZ1xuICAgICAgICAgICAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgICAgICAgICAgICBkYXRlUGlja2VyXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtcmlnaHQnXX0+XG4gICAgICAgICAgICAgIDxEZXNrdG9wRGF0ZXRpbWVwaWNrZXJcbiAgICAgICAgICAgICAgICB2YWx1ZT17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17bmV3VmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UaW1lQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGdldERpc3BsYXk9e2dldFRpbWVEaXNwbGF5fVxuICAgICAgICAgICAgICAgIHRpbWVDaG9pY2VzPXt0aW1lQ2hvaWNlc31cbiAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWyd0aW1lLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS10aW1lYH1cbiAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCd0aW1lJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3M9e3RyYW5zbGF0aW9uU2V0dGluZ3N9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2lzT3BlbiA/ICcnIDogc3R5bGVzLmhpZGRlbn0+e2VtYmVkV2hlbk9wZW59PC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17aXNPcGVuID8gJ2RhdGV0aW1lcGlja2VyLWJvdHRvbS1yb3ctb3BlbicgOiAnJ30gLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2R0LWRhdGV0aW1lcGlja2VyJ119XG4gICAgICBpZD17YCR7aHRtbElkfS1yb290YH1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgICctLWNvbG9yJzogYCR7Y29sb3J9YCxcbiAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8bGVnZW5kIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLXRpdGxlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAhaXNPcGVuXG4gICAgICAgICAgICA/IGAke3N0eWxlc1sndG9wLXJvdy1jb250YWluZXInXX0gJHtzdHlsZXMuY2xvc2VkfSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgOiBgJHtzdHlsZXMuaGlkZGVufSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICB9XG4gICAgICA+XG4gICAgICAgIDxsYWJlbCBjbGFzc05hbWU9e3N0eWxlc1snbGFiZWwtb3BlbiddfSBodG1sRm9yPXtgJHtodG1sSWR9LW9wZW5gfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sndGltZS1pY29uJ119PlxuICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLW9wZW4nLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gcm9sZT1cImFsZXJ0XCIgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0gcmVmPXthbGVydFJlZn0gLz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBpZD17YCR7aHRtbElkfS1vcGVuYH1cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMudGV4dGJ1dHRvbn0gJHtzdHlsZXMuYWN0aXZlfSAke3N0eWxlc1snb3Blbi1idXR0b24nXX1gfVxuICAgICAgICAgICAgYXJpYS1jb250cm9scz17YCR7aHRtbElkfS1yb290YH1cbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4odHJ1ZSk7XG4gICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJPcGVuQWxlcnQoKTtcbiAgICAgICAgICAgICAgaWYgKG9uT3Blbikge1xuICAgICAgICAgICAgICAgIG9uT3BlbigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcmVmPXtvcGVuUGlja2VyUmVmfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICB7bm93U2VsZWN0ZWQgJiYgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnZGVwYXJ0dXJlJyA/IChcbiAgICAgICAgICAgICAgICBpMThuZXh0LnQoJ2RlcGFydHVyZS1ub3cnLCB0cmFuc2xhdGlvblNldHRpbmdzKVxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICB7aTE4bmV4dC50KFxuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnZGVwYXJ0dXJlJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2Fycml2YWwnLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHtgICR7XG4gICAgICAgICAgICAgICAgICAgIG1vbWVudCgpLmlzU2FtZShtb21lbnQoZGlzcGxheVRpbWVzdGFtcCksICdkYXknKVxuICAgICAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgICAgICA6IGdldERhdGVEaXNwbGF5KGRpc3BsYXlUaW1lc3RhbXApLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgIH0gJHtnZXRUaW1lRGlzcGxheShkaXNwbGF5VGltZXN0YW1wKX1gfVxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ2Ryb3Bkb3duLWljb24nXX0+XG4gICAgICAgICAgICAgIDxJY29uIGltZz1cImFycm93LWRyb3Bkb3duXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sncmlnaHQtZWRnZSddfT57ZW1iZWRXaGVuQ2xvc2VkfTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAvPlxuICAgICAge3JlbmRlck9wZW4oKX1cbiAgICA8L2ZpZWxkc2V0PlxuICApO1xufVxuXG5EYXRldGltZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlcixcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uVGltZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25EYXRlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBkZXBhcnR1cmVPckFycml2YWw6IFByb3BUeXBlcy5vbmVPZihbJ2RlcGFydHVyZScsICdhcnJpdmFsJ10pLmlzUmVxdWlyZWQsXG4gIG9uTm93Q2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRGVwYXJ0dXJlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQXJyaXZhbENsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBlbWJlZFdoZW5DbG9zZWQ6IFByb3BUeXBlcy5ub2RlLFxuICBlbWJlZFdoZW5PcGVuOiBQcm9wVHlwZXMubm9kZSxcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25Nb2RhbFN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgb25PcGVuOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9wZW5QaWNrZXI6IFByb3BUeXBlcy5ib29sLFxufTtcblxuRGF0ZXRpbWVwaWNrZXIuZGVmYXVsdFByb3BzID0ge1xuICB0aW1lc3RhbXA6IG51bGwsXG4gIGVtYmVkV2hlbkNsb3NlZDogbnVsbCxcbiAgZW1iZWRXaGVuT3BlbjogbnVsbCxcbiAgY29sb3I6ICcjMDA3YWM5JyxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxuICBvbk9wZW46IG51bGwsXG4gIG9uQ2xvc2U6IG51bGwsXG4gIG9wZW5QaWNrZXI6IHVuZGVmaW5lZCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhdGV0aW1lcGlja2VyO1xuIiwiLyoqXG4gKiBEZXRlY3QgaWYgaW5wdXQgdHlwZT1cImRhdGVcIiBhbmQgdHlwZT1cInRpbWVcIiBhcmUgc3VwcG9ydGVkIGluIGJ5IHRoZSBicm93c2VyXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkKCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgd2luZG93ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICBlbGVtLnR5cGUgPSAnZGF0ZSc7XG4gIGlmIChlbGVtLnR5cGUgIT09ICdkYXRlJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBlbGVtLnR5cGUgPSAndGltZSc7XG4gIGlmIChlbGVtLnR5cGUgIT09ICd0aW1lJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkO1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5pbXBvcnQgRGF0ZXRpbWVwaWNrZXIgZnJvbSAnLi9oZWxwZXJzL0RhdGV0aW1lcGlja2VyJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCByZW5kZXJzIGFuIGlucHV0IHRvIGNob29zZSBhIGRhdGUgYW5kIHRpbWUuIFJlbmRlcnMgc2VwYXJhdGUgaW5wdXQgZmllbGRzIGZvciBkYXRlIGFuZCB0aW1lIHNlbGVjdGlvbi4gVmFsdWVzIGZvciB0aW1lc3RhbXAgYW5kIGFycml2ZUJ5IGNvcnJlc3BvbmQgdG8gRGlnaXRyYW5zaXQgcXVlcnkgcGFyYW1zIHRpbWUgYW5kIGFycml2ZUJ5LiBUaGlzIGNvbXBvbmVudCB3aWxsIGRpc3BsYXkgYSBuYXRpdmUgZGF0ZSBpbnB1dCBvbiBtb2JpbGUgYW5kIGEgY3VzdG9tIG9uZSBmb3IgZGVza3RvcC4gTW9iaWxlIGRldGVjdGlvbiBpcyBkb25lIGJ5IHBhcnNpbmcgdXNlciBhZ2VudC5cbiAqXG4gKiBAYWxpYXMgRGF0ZXRpbWVwaWNrZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHNcbiAqXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHByb3BzLnJlYWx0aW1lICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGlmIHNlbGVjdGVkIHRpbWUgc2hvdWxkIGJlIHVwZGF0ZWQgaW4gcmVhbHRpbWUgd2hlbiAnbm93JyBpcyBzZWxlY3RlZC5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwcm9wcy5pbml0aWFsVGltZXN0YW1wICAgICAgICAgICBJbml0aWFsIHZhbHVlIGZvciBzZWxlY3RlZCB0aW1lLiBVbml4IHRpbWVzdGFtcCBpbiBzZWNvbmRzLiBVcGRhdGluZyB0aGlzIHdpbGwgY2hhbmdlIHRpbWVwaWNrZXIgdmFsdWUgYnV0IHRoZSBjb3JyZWN0IHZhbHVlIGlzIGtlcHQgaW4gY29tcG9uZW50IHN0YXRlIGV2ZW4gaWYgdGhpcyBpcyBub3QgdXBkYXRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMuaW5pdGlhbEFycml2ZUJ5ICAgICAgICAgICBJbml0aWFsIHZhbHVlIGZvciBhcnJpdmVCeS4gRGV0ZXJtaW5lcyBpZiBwaWNrZXIgaXMgaW4gYXJyaXZhbCBtb2RlICh0cnVlKSBvciBkZXBhcnR1cmUgbW9kZSAoZmFsc2UpLiBDb3JyZWN0IHZhbHVlIGlzIGtlcHQgaW4gY29tcG9uZW50IHN0YXRlIGV2ZW4gaWYgdGhpcyBpcyBub3QgdXBkYXRlZC4gQ2hhbmdpbmcgdGhpcyB3aWxsIGFsc28gdHJpZ2dlciBjaGFuZ2UgaW4gdGhlIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uVGltZUNoYW5nZSAgICAgICAgICAgICBDYWxsZWQgd2l0aCAodGltZSwgYXJyaXZlQnkpIHdoZW4gdGltZSBpbnB1dCBjaGFuZ2VzLiB0aW1lIGlzIG51bWJlciB0aW1lc3RhbXAgaW4gc2Vjb25kcywgYXJyaXZlQnkgaXMgYm9vbGVhblxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25EYXRlQ2hhbmdlICAgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lLCBhcnJpdmVCeSkgd2hlbiBkYXRlIGlucHV0IGNoYW5nZXMuIHRpbWUgaXMgbnVtYmVyIHRpbWVzdGFtcCBpbiBzZWNvbmRzLCBhcnJpdmVCeSBpcyBib29sZWFuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbk5vd0NsaWNrICAgICAgICAgICAgICAgQ2FsbGVkIHdoZW4gXCJkZXBhcnQgbm93XCIgYnV0dG9uIGlzIGNsaWNrZWQuIHRpbWUgaXMgY3VycmVudCBpbnB1dCB2YWx1ZSBpbiBzZWNvbmRzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRlcGFydHVyZUNsaWNrICAgICAgICAgQ2FsbGVkIHdpdGggKHRpbWUpIHdoZW4gXCJkZXBhcnR1cmVcIiBidXR0b24gaXMgY2xpY2tlZC4gdGltZSBpcyBjdXJyZW50IGlucHV0IHZhbHVlIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQXJyaXZhbENsaWNrICAgICAgICAgICBDYWxsZWQgd2l0aCAodGltZSkgd2hlbiBcImFycml2YWxcIiBidXR0b24gaXMgY2xpY2tlZC4gdGltZSBpcyBjdXJyZW50IGlucHV0IHZhbHVlIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7bm9kZX0gcHJvcHMuZW1iZWRXaGVuQ2xvc2VkICAgICAgICAgICAgICBKU1ggZWxlbWVudCB0byByZW5kZXIgaW4gdGhlIGNvcm5lciB3aGVuIGlucHV0IGlzIGNsb3NlZFxuICogQHBhcmFtIHtub2RlfSBwcm9wcy5lbWJlZFdoZW5PcGVuICAgICAgICAgICAgICAgIEpTWCBlbGVtZW50IHRvIHJlbmRlciB3aGVuIGlucHV0IGlzIG9wZW5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5sYW5nICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZSBzZWxlY3Rpb24uIERlZmF1bHQgJ2VuJ1xuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnNlcnZpY2VUaW1lUmFuZ2UgICAgICAgICAgIERldGVybWluZSBudW1iZXIgb2YgZGF5cyBzaG93biBpbiB0aW1lcGlja2VyLiBPcHRpb25hbC4gZGVmYXVsdCBpcyAzMC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uT3BlbiAgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgb3Blbi4gT3B0aW9uYWwuIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkNsb3NlICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIHdoYXQgdG8gZG8gd2hlbiB0aW1lcGlja2VyIGlzIGNsb3NlZC4gT3B0aW9uYWwuIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vcGVuUGlja2VyICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGlmIHRpbWVwaWNrZXIgc2hvdWxkIGJlIG9wZW4gaW4gaW50aWFsIHJlbmRlci4gT3B0aW9uYWwuIERlZmF1bHQgaXMgdW5kZWZpbmVkLlxuICogQGV4YW1wbGVcbiAqIDxEYXRldGltZXBpY2tlclxuICogICByZWFsdGltZT17dHJ1ZX1cbiAqICAgaW5pdGlhbFRpbWVzdGFtcD17MTU5MDEzMzgyM31cbiAqICAgaW5pdGlhbEFycml2ZUJ5PXtmYWxzZX1cbiAqICAgb25UaW1lQ2hhbmdlPXsodGltZSwgYXJyaXZlQnkpID0+IGNoYW5nZVVybCh0aW1lLCBhcnJpdmVCeSl9XG4gKiAgIG9uRGF0ZUNoYW5nZT17KHRpbWUsIGFycml2ZUJ5KSA9PiBjaGFuZ2VVcmwodGltZSwgYXJyaXZlQnkpfVxuICogICBvbk5vd0NsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHVuZGVmaW5lZCwgdW5kZWZpbmVkKX1cbiAqICAgb25EZXBhcnR1cmVDbGljaz17KHRpbWUpID0+IGNoYW5nZVVybCh0aW1lLCAndHJ1ZScpfVxuICogICBvbkFycml2YWxDbGljaz17KHRpbWUpID0+IGNoYW5nZVVybCh0aW1lLCB1bmRlZmluZWQpfVxuICogICBlbWJlZFdoZW5DbG9zZWQ9ezxidXR0b24gLz59XG4gKiAgIGxhbmc9eydlbid9XG4gKiAgIHNlcnZpY2VUaW1lUmFuZ2U9ezE1fVxuICogLz5cbiAqL1xuZnVuY3Rpb24gRGF0ZXRpbWVwaWNrZXJTdGF0ZUNvbnRhaW5lcih7XG4gIHJlYWx0aW1lLFxuICBpbml0aWFsQXJyaXZlQnksXG4gIGluaXRpYWxUaW1lc3RhbXAsXG4gIG9uRGVwYXJ0dXJlQ2xpY2ssXG4gIG9uQXJyaXZhbENsaWNrLFxuICBvblRpbWVDaGFuZ2UsXG4gIG9uRGF0ZUNoYW5nZSxcbiAgb25Ob3dDbGljayxcbiAgZW1iZWRXaGVuQ2xvc2VkLFxuICBlbWJlZFdoZW5PcGVuLFxuICBsYW5nLFxuICBjb2xvcixcbiAgdGltZVpvbmUsXG4gIGZvbnRXZWlnaHRzLFxuICBzZXJ2aWNlVGltZVJhbmdlLFxuICBvbk9wZW4sXG4gIG9uQ2xvc2UsXG4gIG9wZW5QaWNrZXIsXG59KSB7XG4gIG1vbWVudC5sb2NhbGUobGFuZyk7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgaW5pdGlhbE5vdyA9IHJlYWx0aW1lID8gbnVsbCA6IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgY29uc3QgW3RpbWVzdGFtcCwgY2hhbmdlVGltZXN0YW1wU3RhdGVdID0gdXNlU3RhdGUoXG4gICAgaW5pdGlhbFRpbWVzdGFtcCA/IGluaXRpYWxUaW1lc3RhbXAgKiAxMDAwIDogaW5pdGlhbE5vdyxcbiAgKTtcbiAgY29uc3QgW2RlcGFydHVyZU9yQXJyaXZhbCwgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsXSA9IHVzZVN0YXRlKFxuICAgIGluaXRpYWxBcnJpdmVCeSA9PT0gdHJ1ZSA/ICdhcnJpdmFsJyA6ICdkZXBhcnR1cmUnLFxuICApO1xuXG4gIC8vIHVwZGF0ZSBzdGF0ZSBpZiBwcm9wcyBjaGFuZ2VcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBib3RoTnVsbCA9IHRpbWVzdGFtcCA9PT0gbnVsbCAmJiBpbml0aWFsVGltZXN0YW1wID09PSB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb25lTnVsbCA9IHRpbWVzdGFtcCA9PT0gbnVsbCB8fCBpbml0aWFsVGltZXN0YW1wID09PSB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2FtZVRpbWUgPSBNYXRoLnJvdW5kKHRpbWVzdGFtcCAvIDEwMDApID09PSBpbml0aWFsVGltZXN0YW1wO1xuICAgIGNvbnN0IHRpbWVzdGFtcENoYW5nZWQgPSAhYm90aE51bGwgJiYgKG9uZU51bGwgfHwgIXNhbWVUaW1lKTtcbiAgICBpZiAodGltZXN0YW1wQ2hhbmdlZCkge1xuICAgICAgaWYgKGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKGluaXRpYWxUaW1lc3RhbXAgKiAxMDAwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpbml0aWFsQXJyaXZlQnkgPT09IChkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJykpIHtcbiAgICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbChcbiAgICAgICAgaW5pdGlhbEFycml2ZUJ5ID09PSB0cnVlID8gJ2Fycml2YWwnIDogJ2RlcGFydHVyZScsXG4gICAgICApO1xuICAgIH1cbiAgfSwgW2luaXRpYWxUaW1lc3RhbXAsIGluaXRpYWxBcnJpdmVCeV0pO1xuXG4gIGNvbnN0IHRpbWVDaGFuZ2VkID0gZGVib3VuY2UobmV3VGltZSA9PiB7XG4gICAgaWYgKG5ld1RpbWUgPT09IG51bGwpIHtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG1vbWVudCgpLnZhbHVlT2YoKSk7XG4gICAgICBvblRpbWVDaGFuZ2UoXG4gICAgICAgIE1hdGgucm91bmQobW9tZW50KCkudmFsdWVPZigpIC8gMTAwMCksXG4gICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobmV3VGltZSk7XG4gICAgb25UaW1lQ2hhbmdlKE1hdGgucm91bmQobmV3VGltZSAvIDEwMDApLCBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyk7XG4gIH0sIDEwKTtcblxuICBjb25zdCBkYXRlQ2hhbmdlZCA9IGRlYm91bmNlKG5ld0RhdGUgPT4ge1xuICAgIGlmIChuZXdEYXRlID09PSBudWxsKSB7XG4gICAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShtb21lbnQoKS52YWx1ZU9mKCkpO1xuICAgICAgb25EYXRlQ2hhbmdlKFxuICAgICAgICBNYXRoLnJvdW5kKG1vbWVudCgpLnZhbHVlT2YoKSAvIDEwMDApLFxuICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5ld0RhdGUpO1xuICAgIG9uRGF0ZUNoYW5nZShNYXRoLnJvdW5kKG5ld0RhdGUgLyAxMDAwKSwgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCcpO1xuICB9LCAxMCk7XG5cbiAgY29uc3Qgbm93Q2xpY2tlZCA9ICgpID0+IHtcbiAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwoJ2RlcGFydHVyZScpO1xuICAgIGNvbnN0IG5ld1RpbWVzdGFtcCA9IHJlYWx0aW1lID8gbnVsbCA6IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShuZXdUaW1lc3RhbXApO1xuICAgIG9uTm93Q2xpY2soTWF0aC5yb3VuZChuZXdUaW1lc3RhbXAgLyAxMDAwKSk7XG4gIH07XG5cbiAgY29uc3QgZGVwYXJ0dXJlQ2xpY2tlZCA9ICgpID0+IHtcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGxldCBuZXdUaW1lID0gdGltZXN0YW1wO1xuICAgIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5vdyk7XG4gICAgICBuZXdUaW1lID0gbm93O1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChkZXBhcnR1cmVPckFycml2YWwgIT09ICdkZXBhcnR1cmUnKSB7XG4gICAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwoJ2RlcGFydHVyZScpO1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICBvbkRlcGFydHVyZUNsaWNrKE1hdGgucm91bmQobmV3VGltZSAvIDEwMDApKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYXJyaXZhbENsaWNrZWQgPSAoKSA9PiB7XG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICBsZXQgbmV3VGltZSA9IHRpbWVzdGFtcDtcbiAgICBpZiAodGltZXN0YW1wID09PSBudWxsKSB7XG4gICAgICBjb25zdCBub3cgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG4gICAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShub3cpO1xuICAgICAgbmV3VGltZSA9IG5vdztcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZGVwYXJ0dXJlT3JBcnJpdmFsICE9PSAnYXJyaXZhbCcpIHtcbiAgICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnYXJyaXZhbCcpO1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICBvbkFycml2YWxDbGljayhNYXRoLnJvdW5kKG5ld1RpbWUgLyAxMDAwKSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbk1vZGFsU3VibWl0ID0gKHRpbWUsIG1vZGUpID0+IHtcbiAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZSh0aW1lKTtcbiAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwobW9kZSk7XG4gICAgb25UaW1lQ2hhbmdlKE1hdGgucm91bmQodGltZSAvIDEwMDApLCBtb2RlID09PSAnYXJyaXZhbCcsIHRydWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPERhdGV0aW1lcGlja2VyXG4gICAgICB0aW1lc3RhbXA9e3RpbWVzdGFtcH1cbiAgICAgIG9uVGltZUNoYW5nZT17dGltZUNoYW5nZWR9XG4gICAgICBvbkRhdGVDaGFuZ2U9e2RhdGVDaGFuZ2VkfVxuICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsPXtkZXBhcnR1cmVPckFycml2YWx9XG4gICAgICBvbk5vd0NsaWNrPXtub3dDbGlja2VkfVxuICAgICAgb25EZXBhcnR1cmVDbGljaz17ZGVwYXJ0dXJlQ2xpY2tlZH1cbiAgICAgIG9uQXJyaXZhbENsaWNrPXthcnJpdmFsQ2xpY2tlZH1cbiAgICAgIGVtYmVkV2hlbkNsb3NlZD17ZW1iZWRXaGVuQ2xvc2VkfVxuICAgICAgZW1iZWRXaGVuT3Blbj17ZW1iZWRXaGVuT3Blbn1cbiAgICAgIGxhbmc9e2xhbmd9XG4gICAgICBjb2xvcj17Y29sb3J9XG4gICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICBvbk1vZGFsU3VibWl0PXtvbk1vZGFsU3VibWl0fVxuICAgICAgZm9udFdlaWdodHM9e2ZvbnRXZWlnaHRzfVxuICAgICAgc2VydmljZVRpbWVSYW5nZT17c2VydmljZVRpbWVSYW5nZX1cbiAgICAgIG9uT3Blbj17b25PcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIG9wZW5QaWNrZXI9e29wZW5QaWNrZXJ9XG4gICAgLz5cbiAgKTtcbn1cblxuRGF0ZXRpbWVwaWNrZXJTdGF0ZUNvbnRhaW5lci5wcm9wVHlwZXMgPSB7XG4gIHJlYWx0aW1lOiBQcm9wVHlwZXMuYm9vbCxcbiAgaW5pdGlhbFRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlcixcbiAgaW5pdGlhbEFycml2ZUJ5OiBQcm9wVHlwZXMuYm9vbCxcbiAgb25EZXBhcnR1cmVDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25BcnJpdmFsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uVGltZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25EYXRlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbk5vd0NsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBlbWJlZFdoZW5DbG9zZWQ6IFByb3BUeXBlcy5ub2RlLFxuICBlbWJlZFdoZW5PcGVuOiBQcm9wVHlwZXMubm9kZSxcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBmb250V2VpZ2h0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZWRpdW06IFByb3BUeXBlcy5udW1iZXIsXG4gIH0pLFxuICBzZXJ2aWNlVGltZVJhbmdlOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvbk9wZW46IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3BlblBpY2tlcjogUHJvcFR5cGVzLmJvb2wsXG59O1xuXG5EYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyLmRlZmF1bHRQcm9wcyA9IHtcbiAgcmVhbHRpbWU6IGZhbHNlLFxuICBpbml0aWFsQXJyaXZlQnk6IHVuZGVmaW5lZCxcbiAgaW5pdGlhbFRpbWVzdGFtcDogdW5kZWZpbmVkLFxuICBlbWJlZFdoZW5DbG9zZWQ6IG51bGwsXG4gIGVtYmVkV2hlbk9wZW46IG51bGwsXG4gIGxhbmc6ICdlbicsXG4gIGNvbG9yOiAnIzAwN2FjOScsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbiAgZm9udFdlaWdodHM6IHtcbiAgICBtZWRpdW06IDUwMCxcbiAgfSxcbiAgb25PcGVuOiBudWxsLFxuICBvbkNsb3NlOiBudWxsLFxuICBvcGVuUGlja2VyOiB1bmRlZmluZWQsXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IDMwLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZXRpbWVwaWNrZXJTdGF0ZUNvbnRhaW5lcjtcbiJdLCJuYW1lcyI6WyJfYXJyYXlMaWtlVG9BcnJheSIsImFyciIsImxlbiIsImxlbmd0aCIsImkiLCJhcnIyIiwiQXJyYXkiLCJfc2xpY2VkVG9BcnJheSIsImlzQXJyYXkiLCJhcnJheVdpdGhIb2xlcyIsInIiLCJsIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiZSIsIm4iLCJ1IiwiYSIsImYiLCJvIiwiY2FsbCIsIm5leHQiLCJPYmplY3QiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiaXRlcmFibGVUb0FycmF5TGltaXQiLCJtaW5MZW4iLCJhcnJheUxpa2VUb0FycmF5IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwidW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJUeXBlRXJyb3IiLCJub25JdGVyYWJsZVJlc3QiLCJwYXJzZVR5cGVkVGltZSIsInR5cGVkVmFsdWUiLCJhY3R1YWxWYWx1ZSIsInNwbGl0IiwiZXZlcnkiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJ2YWxpZGF0ZUNsb2NrIiwiaG91cnMiLCJtaW51dGVzIiwiaG91cnNWYWxpZCIsImlzTmFOIiwibWludXRlc1ZhbGlkIiwidmFsaWRhdGVJbnB1dCIsImlucHV0VmFsdWUiLCJpbmNsdWRlcyIsIl9pbnB1dFZhbHVlJHNwbGl0MiIsInN0YXJ0c1dpdGgiLCJ2YWx1ZXMiLCJfcmVmIiwiY29uY2F0IiwiX3JlZjIiLCJfcmVmMyIsIl9yZWY0Iiwic3Vic3RyaW5nIiwiZ2V0VHMiLCJjdXJyZW50VGltZXN0YW1wIiwidHJpbW1lZCIsInRyaW0iLCJtYXRjaCIsInNwbGl0dGVyIiwibW9tZW50IiwidmFsdWVPZiIsIkRlc2t0b3BEYXRldGltZXBpY2tlciIsIm9uQ2hhbmdlIiwiZ2V0RGlzcGxheSIsInRpbWVDaG9pY2VzIiwiaWQiLCJsYWJlbCIsImljb24iLCJkaXNhYmxlVHlwaW5nIiwidGltZVpvbmUiLCJkYXRlUGlja2VyIiwidHJhbnNsYXRpb25TZXR0aW5ncyIsInR6Iiwic2V0RGVmYXVsdCIsIl91c2VTdGF0ZTIiLCJ1c2VTdGF0ZSIsImRpc3BsYXlWYWx1ZSIsImNoYW5nZURpc3BsYXlWYWx1ZSIsIl91c2VTdGF0ZTQiLCJ0eXBpbmciLCJzZXRUeXBpbmciLCJfdXNlU3RhdGU2Iiwic2hvd0FsbE9wdGlvbnMiLCJzZXRTaG93QWxsT3B0aW9ucyIsIl91c2VTdGF0ZTgiLCJpbnZhbGlkSW5wdXQiLCJzZXRpbnZhbGlkSW5wdXQiLCJ1c2VFZmZlY3QiLCJoYW5kbGVUaW1lc3RhbXAiLCJuZXdWYWx1ZSIsImFzTnVtYmVyIiwiaXNWYWxpZCIsIm9wdGlvbnMiLCJtYXAiLCJjbG9zZXN0T3B0aW9ucyIsImZpbHRlciIsImNsb3Nlc3RPcHRpb24iLCJyZWR1Y2UiLCJiIiwiTWF0aCIsImFicyIsInVuZGVmaW5lZCIsImlucHV0SWQiLCJsYWJlbElkIiwiYXJpYUVycm9yIiwiaTE4bmV4dCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInN0eWxlcyIsImh0bWxGb3IiLCJTZWxlY3QiLCJhcmlhTGl2ZU1lc3NhZ2VzIiwiZ3VpZGFuY2UiLCJjb250ZXh0IiwiaXNEaXNhYmxlZCIsIm9uRmlsdGVyIiwib25Gb2N1cyIsIml0ZW1MYWJlbCIsInRpbWUiLCJjdXJyZW50VGltZSIsImZvcm1hdCIsInRzIiwiY29tcG9uZW50cyIsIkluZGljYXRvcnNDb250YWluZXIiLCJjeCIsImNsYXNzTmFtZVByZWZpeCIsIm9uSW5wdXRDaGFuZ2UiLCJhY3Rpb24iLCJzdHIiLCJ2YWxpZCIsImlzaW52YWxpZElucHV0IiwidmFsaWRhdGVkIiwibm9PcHRpb25zTWVzc2FnZSIsImZpbHRlck9wdGlvbiIsIm9wdGlvbiIsImlucHV0IiwiX2lucHV0JHNwbGl0JCIsImNvbXBsZXRlSW5wdXQiLCJpc01vZDE1IiwibWludXRlSW5wdXQiLCJpbnB1dEgiLCJpbnB1dE0iLCJvcHRIIiwib3B0TSIsInRvdGFsIiwiZmlsdGVyT3B0aW9ucyIsImhvdXIiLCJpc1ZhbGlkSG91ciIsImNvbXAiLCJjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUiLCJ0YWJTZWxlY3RzVmFsdWUiLCJwbGFjZWhvbGRlciIsInRhcmdldCIsInNlbGVjdCIsIm9uQmx1ciIsIm9uS2V5RG93biIsImtleSIsImlzU2VhcmNoYWJsZSIsImNzcyIsInJlZiIsImluc2VydEF0IiwiZG9jdW1lbnQiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzdHlsZSIsInR5cGUiLCJmaXJzdENoaWxkIiwiaW5zZXJ0QmVmb3JlIiwiYXBwZW5kQ2hpbGQiLCJzdHlsZVNoZWV0IiwiY3NzVGV4dCIsImNyZWF0ZVRleHROb2RlIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwibnVtYmVyIiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJhcnJheU9mIiwic3RyaW5nIiwibm9kZSIsImJvb2wiLCJzaGFwZSIsImxuZyIsImRlZmF1bHRQcm9wcyIsInRyYW5zbGF0aW9ucyIsImRlIiwidG9kYXkiLCJ0b21vcnJvdyIsImFycml2YWwiLCJkYXRlIiwiZGVwYXJ0dXJlIiwicmVhZHkiLCJjYW5jZWwiLCJlbiIsImZpIiwicGwiLCJzdiIsImlzTW9iaWxlIiwidXNlckFnZW50IiwibmF2aWdhdG9yIiwidmVuZG9yIiwid2luZG93Iiwib3BlcmEiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInNvdXJjZUtleXMiLCJrZXlzIiwiaW5kZXhPZiIsIm9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJNb2JpbGVEYXRlcGlja2VyIiwiaXRlbUNvdW50Iiwic3RhcnRUaW1lIiwib3BlbiIsImNoYW5nZU9wZW4iLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJkYXRlQ2hvaWNlcyIsImZpbGwiLCJfIiwiYWRkIiwic2Nyb2xsSW5kZXgiLCJmaW5kSW5kZXgiLCJ1c2VMYXlvdXRFZmZlY3QiLCJjdXJyZW50Iiwic2Nyb2xsVG9wIiwibmF0aXZlSW5wdXQiLCJ0b0xvd2VyQ2FzZSIsIkF1dG9zdWdnZXN0Iiwic3VnZ2VzdGlvbnMiLCJnZXRTdWdnZXN0aW9uVmFsdWUiLCJzIiwicmVuZGVyU3VnZ2VzdGlvbiIsIm9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZCIsInNob3VsZFJlbmRlclN1Z2dlc3Rpb25zIiwiaW5wdXRQcm9wcyIsInJlYWRPbmx5IiwiZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrIiwib25TdWdnZXN0aW9uc0NsZWFyUmVxdWVzdGVkIiwicmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXIiLCJjb250YWluZXJQcm9wcyIsImNoaWxkcmVuIiwib3RoZXJSZWZzIiwiX2V4Y2x1ZGVkIiwiYXNzaWduIiwidGFiSW5kZXgiLCJlbGVtIiwidGhlbWUiLCJNb2JpbGVUaW1lcGlja2VyIiwiY2hhbmdlSW5wdXRWYWx1ZSIsImlzVmFsaWRJbnB1dCIsInNldFZhbGlkSW5wdXQiLCJ0aW1lSW5wdXRSZWYiLCJmb2N1cyIsInNob3dFcnJvciIsImlucHV0TW9kZSIsIm1heExlbmd0aCIsInNldFNlbGVjdGlvblJhbmdlIiwiZXZlbnQiLCJyZXBsYWNlIiwiY2hhckF0IiwiYWN0dWFsIiwidGltZXN0YW1wIiwiTW9iaWxlUGlja2VyTW9kYWwiLCJkZXBhcnR1cmVPckFycml2YWwiLCJvbk5vd0NsaWNrIiwibGFuZyIsImNvbG9yIiwib25TdWJtaXQiLCJvbkNhbmNlbCIsImdldFRpbWVEaXNwbGF5IiwiZGF0ZVNlbGVjdEl0ZW1Db3VudCIsImdldERhdGVEaXNwbGF5IiwiZm9udFdlaWdodHMiLCJkaXNwbGF5VGltZXN0YW1wIiwiY2hhbmdlVGltZXN0YW1wIiwiZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCIsImNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCIsImh0bWxJZCIsInVuaXF1ZUlkIiwiZGF0ZVNlbGVjdFN0YXJ0VGltZSIsInN0YXJ0T2YiLCJtaW51dGUiLCJNb2RhbCIsImFwcEVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiaXNPcGVuIiwib3ZlcmxheUNsYXNzTmFtZSIsIm1lZGl1bSIsIm9uQ2xpY2siLCJjaGVja2VkIiwiSWNvbiIsImltZyIsIkRhdGV0aW1lcGlja2VyIiwib25UaW1lQ2hhbmdlIiwib25EYXRlQ2hhbmdlIiwib25EZXBhcnR1cmVDbGljayIsIm9uQXJyaXZhbENsaWNrIiwiZW1iZWRXaGVuQ2xvc2VkIiwiZW1iZWRXaGVuT3BlbiIsIm9uTW9kYWxTdWJtaXQiLCJzZXJ2aWNlVGltZVJhbmdlIiwib25PcGVuIiwib25DbG9zZSIsIm9wZW5QaWNrZXIiLCJjaGFuZ2VEaXNwbGF5VGltZXN0YW1wIiwidGltZXJJZCIsInNldFRpbWVyIiwidXNlTW9iaWxlSW5wdXRzIiwiZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkIiwib3BlblBpY2tlclJlZiIsImlucHV0UmVmIiwiYWxlcnRSZWYiLCJmb3JFYWNoIiwibGFuZ3VhZ2UiLCJhZGRSZXNvdXJjZUJ1bmRsZSIsImxvY2FsZSIsIm5vd1NlbGVjdGVkIiwiY2xlYXJJbnRlcnZhbCIsIm5ld0lkIiwic2V0SW50ZXJ2YWwiLCJub3ciLCJpc1NhbWUiLCJwcmV2SXNPcGVuUmVmIiwiZm9ybWF0dGVkIiwidG9VcHBlckNhc2UiLCJzZWxlY3RlZE1vbWVudCIsInRpbWVTZWxlY3RTdGFydFRpbWUiLCJmaXZlTWludXRlcyIsIm5leHRGaXZlTWluIiwiY2VpbCIsInRpbWVzVG9BZGQiLCJjbG9zZXN0SW5kZXhBZnRlciIsInNwbGljZSIsIlNldCIsInNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0IiwiaW5uZXJIVE1MIiwic2V0VGltZW91dCIsImhpZGRlbiIsImNsb3NlZCIsInJvbGUiLCJ0ZXh0YnV0dG9uIiwiYWN0aXZlIiwiRnJhZ21lbnQiLCJuZXdUaW1lc3RhbXAiLCJuZXdEZXBhcnR1cmVPckFycml2YWwiLCJ2YWxpZGF0ZSIsIkRhdGV0aW1lcGlja2VyU3RhdGVDb250YWluZXIiLCJyZWFsdGltZSIsImluaXRpYWxBcnJpdmVCeSIsImluaXRpYWxUaW1lc3RhbXAiLCJpbml0aWFsTm93IiwiY2hhbmdlVGltZXN0YW1wU3RhdGUiLCJib3RoTnVsbCIsIm9uZU51bGwiLCJzYW1lVGltZSIsInJvdW5kIiwidGltZUNoYW5nZWQiLCJkZWJvdW5jZSIsIm5ld1RpbWUiLCJkYXRlQ2hhbmdlZCIsIm5ld0RhdGUiLCJub3dDbGlja2VkIiwiZGVwYXJ0dXJlQ2xpY2tlZCIsImNoYW5nZWQiLCJhcnJpdmFsQ2xpY2tlZCIsIm1vZGUiLCJkYXRlVGltZUNvbWJpbmVkIiwiaW5pdCIsInJlc291cmNlcyIsIm9uZU9mIiwiZmFsbGJhY2tMbmciLCJkZWZhdWx0TlMiLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiXSwibWFwcGluZ3MiOiJxdENBQWUsU0FBU0EsRUFBa0JDLEVBQUtDLElBQ2xDLE1BQVBBLEdBQWVBLEVBQU1ELEVBQUlFLFVBQVFELEVBQU1ELEVBQUlFLFFBQy9DLElBQUssSUFBSUMsRUFBSSxFQUFHQyxFQUFPLElBQUlDLE1BQU1KLEdBQU1FLEVBQUlGLEVBQUtFLElBQUtDLEVBQUtELEdBQUtILEVBQUlHLEdBQ25FLE9BQU9DLENBQ1Qs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
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("prop-types"),require("react"),require("moment-timezone"),require("lodash/debounce"),require("moment/locale/fi"),require("moment/locale/sv"),require("moment/locale/de"),require("lodash/uniqueId"),require("i18next"),require("@digitransit-component/digitransit-component-icon"),require("react-select"),require("classnames"),require("react-modal"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","prop-types","react","moment-timezone","lodash/debounce","moment/locale/fi","moment/locale/sv","moment/locale/de","lodash/uniqueId","i18next","@digitransit-component/digitransit-component-icon","react-select","classnames","react-modal","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-datetimepicker"]={},e.PropTypes,e.React,e.moment,e.debounce,null,null,null,e.uniqueId,e.i18next,e.Icon,e.Select,e.cx,e.ReactModal,e.Autosuggest)}(this,(function(e,t,n,i,a,l,o,r,s,d,u,c,p,_,m){"use strict";function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var y=f(t),b=f(n),g=f(i),h=f(a),v=f(s),x=f(d),w=f(u),k=f(c),E=f(p),N=f(_),C=f(m);function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function F(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,a,l,o,r=[],s=!0,d=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(i=l.call(n)).done)&&(r.push(i.value),r.length!==t);s=!0);}catch(e){d=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(d)throw a}}return r}}(e,t)||function(e,t){if(e){if("string"==typeof e)return R(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?R(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e){var t=e;return 3===t.length&&t.split("").every((e=>Number.isInteger(Number(e))))&&(t=Number(t.slice(0,2))<=23?`${t.slice(0,2)}:${t[2]}`:`${t[0]}:${t.slice(1)}`),t}var P=(e,t)=>{var n=!Number.isNaN(e)&&e>=0&&e<=23,i=2===t.length?!Number.isNaN(t)&&Number(t)>=0&&Number(t<=59):!Number.isNaN(t)&&Number(t)>=0&&Number(t<=5);return n&&i};function O(e){if(e.split(":").length>2)return!1;if(e.length<=2)return!0;if(3===e.length){var t,n;if(e.includes(":")){var i=F(e.split(":"),2);t=i[0],n=i[1]}else{if(!e.startsWith("0")){var a=e.split("");if(1===Number(a[0])){var l=[a[0].concat(a[1]),a[2]];t=l[0],n=l[1]}else if(2===Number(a[0]))if(Number(a[1]<=3)){var o=[a[0].concat(a[1]),a[2]];t=o[0],n=o[1]}else{var r=[a[0],a[1].concat(a[2])];t=r[0],n=r[1]}else{var s=[a[0],a[1].concat(a[2])];t=s[0],n=s[1]}return P(t,n)}if(t=e.substring(0,e.length-1),n=e.substring(e.length-1||0),Number(n)>5)return!1}return P(t,n)}if(5===e.length||4===e.length){var d=e.split(":"),u=d[0],c=d[1];return!(e.startsWith("0")&&1===c.length&&Number(c)>5)&&P(u,c)}return!0}var G=(e,t)=>{var n=e.trim();if(null!==n.match(/^[0-9]{1,2}(\.|:)[0-9]{2}$/)){var i=n.includes(".")?".":":",a=n.split(i),l=Number(a[0]),o=!Number.isNaN(l)&&l>=0&&l<=23,r=Number(a[1]);return!Number.isNaN(r)&&r>=0&&r<=59&&o?g.default(t).hours(l).minutes(r).valueOf():null}return null};var W={"sr-only":"styles_sr-only__BrzYQ","dt-datetimepicker":"styles_dt-datetimepicker__PtoFG",hidden:"styles_hidden__6ySER","datetimepicker-open-container":"styles_datetimepicker-open-container__1dVr5","top-row-container":"styles_top-row-container__cXGjL",closed:"styles_closed__Fqe1r","time-icon":"styles_time-icon__ntgLZ","dropdown-icon":"styles_dropdown-icon__diYYB","close-icon":"styles_close-icon__-MzK5","label-open":"styles_label-open__Gmvov",textbutton:"styles_textbutton__T7wS2",active:"styles_active__4L82E","combobox-left":"styles_combobox-left__Sp4kh","combobox-right":"styles_combobox-right__Hg8kN","departure-or-arrival-container":"styles_departure-or-arrival-container__pJ-Iw","radio-textbutton-label":"styles_radio-textbutton-label__h-zfy","first-radio":"styles_first-radio__FWNoD","radio-textbutton":"styles_radio-textbutton__tsKET","departure-now-button":"styles_departure-now-button__VKMMK","open-button":"styles_open-button__c2B-6","close-button":"styles_close-button__2mfgI","right-edge":"styles_right-edge__29UYw","combobox-container":"styles_combobox-container__CLY9U","combobox-icon":"styles_combobox-icon__-0XPH","date-input-icon":"styles_date-input-icon__KMrj1","time-input-icon":"styles_time-input-icon__qkhC7","datetimepicker-select-container":"styles_datetimepicker-select-container__EVW1l","picker-container":"styles_picker-container__V02r4","combobox-mobile-container":"styles_combobox-mobile-container__u2DSO","mobile-modal-overlay":"styles_mobile-modal-overlay__8vF8L","mobile-modal-content":"styles_mobile-modal-content__fWRgy","top-row":"styles_top-row__h8xy1","modal-title":"styles_modal-title__EA3YD","tab-row":"styles_tab-row__orgwh","radio-tab-label":"styles_radio-tab-label__vIfup","input-row":"styles_input-row__2XXEY","input-container":"styles_input-container__USZlF","time-input-mobile":"styles_time-input-mobile__6e4A5","mobile-input-display":"styles_mobile-input-display__VUMd0","mobile-input-hidden":"styles_mobile-input-hidden__2KIuK",container:"styles_container__ihyhz",suggestion:"styles_suggestion__ZczJa",suggestionHighlighted:"styles_suggestionHighlighted__fzLiW",suggestionsContainerOpen:"styles_suggestionsContainerOpen__ISHXi",input:"styles_input__PAfbH","buttons-row":"styles_buttons-row__-3wsn","ready-button":"styles_ready-button__dH7Qc"};function q(e){var t=e.value,i=e.onChange,a=e.getDisplay,l=e.timeChoices,o=e.id,r=e.label,s=e.icon,d=e.disableTyping,u=e.timeZone,c=e.datePicker,p=e.translationSettings;g.default.tz.setDefault(u);var _=F(n.useState(a(t)),2),m=_[0],f=_[1],y=F(n.useState(!1),2),h=y[0],v=y[1],w=F(n.useState(!0),2),N=w[0],C=w[1],R=F(n.useState(!1),2),P=R[0],q=R[1];n.useEffect((()=>{f(a(t)),c||q(!1)}),[t]);var z=e=>{var t=Number(e);!Number.isNaN(t)&&g.default(t).isValid()&&g.default(t).valueOf()===t&&i(t)};var A=l.map((e=>({value:e.toString(),label:a(e)}))),X=c?A:A.filter((e=>e.label.split(":")[1]%15==0)),$=X.length>0?null==X?void 0:X.reduce(((e,n)=>Math.abs(t-e.value)<Math.abs(t-n.value)?e:n)):void 0,T=`${o}-input`,D=`${o}-label`,Z=x.default.t("invalid-input",p);return b.default.createElement("label",{className:W["combobox-container"],htmlFor:T},b.default.createElement("span",{className:W["sr-only"],id:D},r," ",m),s,b.default.createElement(k.default,{"aria-labelledby":D,ariaLiveMessages:{guidance:e=>void 0===e.isDisabled&&P?Z:".",onChange:()=>"",onFilter:()=>"",onFocus:e=>{var t=e.context,n=e.label;return"menu"===t?n:""}},options:A,inputId:T,onChange:e=>{var n=g.default(t).format("HH:mm"),i=G(m,t);if(h)return null!==i?(n!==m&&e.value===t?z(i):z(e.value),v(!1)):(e.value!==t?z(e.value):f(a(t)),v(!1)),void(c||q(!1));c||q(!1),z(e.value)},components:{IndicatorsContainer:()=>null},className:E.default(W["datetimepicker-select-container"],P&&"datetimepicker-invalid-input"),classNamePrefix:"datetimepicker-select",onInputChange:(e,t)=>{var n=t.action;if("menu-close"===n?C(!0):N&&C(!1),!(d||e&&!function(e){if(e.length<(null==m?void 0:m.length)){var t=O(e);return q(!t),!0}if(/[a-zA-Z§ÄäÖö.-\s]/g.test(e))return!1;var n=O(e.length>5?e.slice(0,-1):e);return q(!n),e.length<=5}(e))&&"input-change"===n){var i=S(e);f(i),v(!0)}},inputValue:!d&&m,value:$,noOptionsMessage:()=>"",filterOption:(e,t)=>{var n;if(c)return!0;var i=5===t.length||4===t.length&&1===t.split(":")[0].length,a=e.label.split(":")[1]%15==0,l=1===(null===(n=t.split(":")[1])||void 0===n?void 0:n.length);if(N&&a)return!0;if(l){var o=1===t.split(":")[0].length?"0".concat(t.split(":")[0]):t.split(":")[0],r=t.split(":")[1],s=e.label.split(":")[0],d=e.label.split(":")[1];if(o===s){var u=10*Number(r),p=Number(d)-u;return p>=0&&p<=9}}return i&&!N?4===t.length?"0".concat(t)===e.label:t===e.label:!!a&&((e,t)=>{var n=t.length<=2?t:t.split(":")[0],i=/^([0-1]?[0-9]|2[0-3])$/.test(n),a=1===n.length?"0".concat(t):t;return!i||e.label.split(":")[0]===a.split(":")[0]})(e,t)},controlShouldRenderValue:d,tabSelectsValue:!1,placeholder:"",onFocus:e=>{d||e.target.select()},onBlur:()=>{if(h){var e=G(m,t);null!==e?(z(e),v(!1)):(f(a(t)),v(!1))}c||q(!1)},onKeyDown:e=>{["ArrowDown","ArrowUp"].includes(e.key)&&v(!1)},isSearchable:!d}))}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}(".styles_sr-only__BrzYQ:not(:focus, :active) {\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\n.styles_dt-datetimepicker__PtoFG {\n border: none;\n padding: 0;\n margin: 0;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG button,\n .styles_dt-datetimepicker__PtoFG label {\n font-size: 1em;\n font-weight: inherit; }\n .styles_dt-datetimepicker__PtoFG label button {\n cursor: pointer;\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', Roboto, Arial, Georgia, serif; }\n .styles_dt-datetimepicker__PtoFG .styles_hidden__6ySER {\n display: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-open-container__1dVr5 {\n background-color: #f2f5f7;\n border-radius: 5px;\n padding: 15px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n display: flex;\n flex-wrap: wrap; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL.styles_closed__Fqe1r {\n margin: 11px 0 6px 18px; }\n @media screen and (max-width: 319px) {\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_time-icon__ntgLZ svg {\n width: 18px;\n height: 19px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB {\n margin-left: 9px;\n position: relative;\n top: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB svg {\n width: 14px;\n height: 10px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg {\n width: 12px;\n height: 12px;\n border-radius: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg path {\n stroke-width: 30; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label.styles_label-open__Gmvov {\n align-items: flex-start;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL button,\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n font-size: 1em;\n letter-spacing: -0.5px;\n line-height: 1; }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 9px;\n margin-top: 1px;\n background: none;\n border: none;\n color: #666;\n padding: 0; }\n @media screen and (min-width: 768px) {\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2.styles_active__4L82E {\n color: var(--color); }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-left__Sp4kh {\n position: relative;\n margin-right: 4px;\n width: 63%; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-right__Hg8kN {\n position: relative;\n margin-left: 4px;\n width: 37%; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-or-arrival-container__pJ-Iw {\n height: calc(1rem + 20px);\n background-color: #ddd;\n border-radius: 8px;\n display: flex;\n width: calc(5px + 13em); }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy {\n color: #333;\n margin: 2px;\n background: none;\n border-radius: 6px;\n padding: 9px 0;\n width: 50%;\n cursor: pointer;\n height: calc(1rem + 16px);\n text-align: center;\n font-weight: 400;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.03em; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_active__4L82E {\n font-weight: 500;\n background: white; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy:focus-within {\n /* First apply outline that is used in Edge and Firefox */\n outline: 1px dotted #212121;\n /* Then override outline for webkit browsers like Chrome, this has no effect on other browsers */\n outline: 5px auto -webkit-focus-ring-color;\n /* stylelint-disable-line declaration-block-no-duplicate-properties */ }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_first-radio__FWNoD {\n margin: 0;\n display: flex;\n align-items: flex-start; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton__tsKET {\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 .styles_dt-datetimepicker__PtoFG .styles_departure-now-button__VKMMK {\n font-family: inherit;\n letter-spacing: -0.02em;\n height: calc(1rem + 18px);\n color: var(--color);\n padding: 8px 0;\n width: 6.6875rem;\n background: white;\n border: 1px solid #888;\n border-radius: 30px;\n margin-left: 11px; }\n .styles_dt-datetimepicker__PtoFG .styles_open-button__c2B-6 {\n display: flex;\n margin-bottom: 0;\n margin-top: -1px;\n padding: 2px 0 2px 0; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI {\n transition: transform 0.2s;\n position: relative;\n top: -8px;\n right: -8px;\n border: 0;\n font-weight: normal;\n background: none;\n color: var(--color);\n padding: 0;\n line-height: normal; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI:hover {\n transform: scale(1.2); }\n .styles_dt-datetimepicker__PtoFG .styles_right-edge__29UYw {\n margin-left: auto;\n margin-right: 0;\n position: relative;\n top: -2px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-container__CLY9U {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH {\n color: var(--color);\n height: 40px;\n position: absolute;\n z-index: 7;\n pointer-events: none; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 14px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 svg {\n width: 20px;\n height: 18px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 8px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 svg {\n margin-top: 1px;\n width: 22px;\n height: 22px; }\n .styles_dt-datetimepicker__PtoFG .datetimepicker-invalid-input input {\n color: #f00 !important; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l {\n position: relative;\n height: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__control {\n cursor: inherit;\n height: 40px;\n border: 1px solid #888; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__value-container {\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__single-value {\n margin: 0 0 0 47px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input {\n background: inherit;\n position: relative;\n margin-left: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input {\n opacity: 1 !important;\n background: inherit;\n box-shadow: none;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333;\n font-family: inherit;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input:focus {\n box-shadow: none;\n outline: none;\n border: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu {\n z-index: 19;\n padding: 0;\n background: #fff;\n max-height: 250px;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list {\n max-height: 250px;\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option {\n height: 50px;\n border-top: 1px solid #ddd;\n padding: 13px 0 0 12px;\n letter-spacing: -0.6px;\n color: #333; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-selected {\n background: inherit; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-focused {\n background: #dfe5e8; }\n .styles_dt-datetimepicker__PtoFG .styles_picker-container__V02r4 {\n margin: 14px 0 0 0;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-mobile-container__u2DSO {\n flex-grow: 1; }\n\n.styles_mobile-modal-overlay__8vF8L {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.6);\n z-index: 1000; }\n\n.styles_mobile-modal-content__fWRgy {\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', Roboto, Arial, Georgia, serif;\n background: white;\n width: 89%;\n position: absolute;\n left: 5.5%;\n padding: 31px 20px 33px 20px;\n top: 80px;\n border-radius: 5px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 {\n display: flex;\n justify-content: space-between;\n margin-bottom: 21px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_modal-title__EA3YD {\n font-weight: var(--font-weight-medium);\n font-size: 20px;\n line-height: 18px;\n letter-spacing: -0.5px;\n color: #333;\n padding: 6px 0 0 8px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_departure-now-button__VKMMK {\n background-color: white;\n font-family: inherit;\n padding: 5px 15px;\n border: 1px solid #888;\n border-radius: 50px;\n font-weight: var(--font-weight-medium);\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.02em;\n color: var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh {\n display: flex;\n border: 2px solid #ddd;\n border-radius: 5px;\n margin-bottom: 16px;\n background-color: #ddd; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup {\n padding: 9px 0;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.5px;\n border-radius: 3px;\n font-weight: normal;\n width: 50%;\n text-align: center;\n color: #333; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup.styles_active__4L82E {\n font-weight: var(--font-weight-medium);\n background-color: #fff; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-textbutton__tsKET {\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 .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY {\n display: flex;\n margin-bottom: 25px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:first-child {\n flex-basis: 60%;\n margin-right: 10px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:nth-child(2) {\n flex-basis: 40%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF {\n border: 1px solid #888;\n border-radius: 5px;\n display: flex;\n align-items: center;\n height: 40px;\n line-height: 1.5;\n font-size: 100%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF:focus-within {\n background: rgba(0, 122, 201, 0.06);\n border: 2px solid var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH {\n height: 18px;\n font-size: 18px;\n padding: 0 0 0 10px;\n border: none;\n position: relative;\n top: 3px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 > svg {\n height: 20px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .mobile-datetimepicker-invalid-input {\n color: #f00 !important; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_time-input-mobile__6e4A5 {\n font-family: inherit;\n box-shadow: none;\n font-size: 18px;\n letter-spacing: -0.5px;\n line-height: 20px;\n font-weight: var(--font-weight-medium);\n border: none;\n outline: none;\n background: none;\n width: 50px;\n margin-left: 10px;\n color: #333;\n height: 1.5265rem; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0 {\n position: relative;\n left: 10px;\n border: none;\n background: inherit;\n box-shadow: none;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-stretch: normal;\n font-style: normal;\n font-size: 16px;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0:focus {\n outline: none;\n box-shadow: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK {\n font-size: 16px;\n margin-bottom: 12px;\n height: 0;\n width: 0;\n background: inherit;\n color: transparent;\n outline: none;\n box-shadow: none;\n border: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK:focus {\n outline: none;\n box-shadow: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz {\n position: absolute;\n width: calc((100% - 50px) * 0.6);\n height: 25px;\n font-size: 15px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestion__ZczJa {\n list-style: none;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: 49px;\n height: 50px;\n margin: 0;\n padding: 0 0 0 16px;\n color: rgba(0, 0, 0, 0.87);\n background: white; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionHighlighted__fzLiW {\n background: #dfe5e8; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi {\n position: absolute;\n z-index: 19;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 42px;\n left: -2px;\n width: 100%;\n font-size: 16px;\n line-height: 1;\n color: rgba(0, 0, 0, 0.87); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi ul {\n padding: 0;\n margin: 0; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH {\n box-shadow: none;\n border: none;\n background: none;\n font-size: 16px;\n font-weight: var(--font-weight-medium);\n height: 25px;\n display: inline-block;\n font-family: inherit;\n line-height: 1.33;\n padding-left: 46px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH:focus {\n outline: none;\n border: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn {\n display: flex;\n flex-direction: column;\n font-size: 16px;\n font-weight: var(--font-weight-medium); }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button {\n background-color: white;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-size: 16px;\n letter-spacing: -0.02em;\n width: 100%;\n border-radius: 50px;\n height: 40px;\n color: var(--color);\n border: 1px solid #888; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button.styles_ready-button__dH7Qc {\n color: white;\n background-color: var(--color);\n border: none;\n margin-bottom: 10px; }\n"),"production"!==process.env.NODE_ENV&&(q.propTypes={value:y.default.number.isRequired,onChange:y.default.func.isRequired,getDisplay:y.default.func.isRequired,timeChoices:y.default.arrayOf(y.default.number).isRequired,id:y.default.string.isRequired,label:y.default.node.isRequired,icon:y.default.node.isRequired,disableTyping:y.default.bool,timeZone:y.default.string,datePicker:y.default.bool,translationSettings:y.default.shape({lng:y.default.string.isRequired})}),q.defaultProps={disableTyping:!1,timeZone:"Europe/Helsinki",datePicker:!1,translationSettings:{lng:"fi"}};var z={de:{today:"Heute",tomorrow:"Morgen","accessible-close":"Schließe die Auswahl","accessible-closed":"Auswahl geschlossen","accessible-open":"Öffne die Auswahl","accessible-opened":"Auswahl geöffnet","accessible-title":"Datum und Uhrzeitauswahl",arrival:"Ankunft",date:"Datum",departure:"Abfahrt","departure-now":"Abfahrt jetzt","choose-time":"Zeit wählen",ready:"Fertig",time:"Zeit",cancel:"Abbrechen"},en:{today:"Today",tomorrow:"Tomorrow","accessible-close":"Close the picker","accessible-closed":"Timepicker closed","accessible-open":"Open the picker","accessible-opened":"Timepicker opened","accessible-title":"Date and timepicker","accessible-update-instructions":"Changing time parameters will trigger a new search.",arrival:"Arrival",date:"Date",departure:"Departure","departure-now":"Leaving now",time:"Time","choose-time":"Choose time",ready:"Ready",cancel:"Cancel","invalid-input":"The time you entered is invalid"},fi:{today:"Tänään",tomorrow:"Huomenna","accessible-close":"Sulje valitsin","accessible-closed":"Valitsin suljettu","accessible-open":"Avaa valitsin","accessible-opened":"Valitsin avattu","accessible-title":"Aika- ja päivämäärävalitsin","accessible-update-instructions":"Aikavalintojen muuttaminen laukaisee uuden haun.",arrival:"Perillä",date:"Päivä",departure:"Lähtöaika","departure-now":"Lähtö nyt",time:"Aika","choose-time":"Valitse aika",ready:"Valmis",cancel:"Peruuta","invalid-input":"Syöttämäsi aika on virheellinen"},pl:{today:"Dziś",tomorrow:"Jutro","accessible-close":"Zamknij wybornik","accessible-closed":"Zamknięto wybornik","accessible-open":"Otwórz wybornik","accessible-opened":"Otwarto wybornik","accessible-title":"Wybór daty i godziny","accessible-update-instructions":"Zmiana wybranej godziny wywoła nowe wyszukiwanie.",arrival:"Przyjazd",date:"Data",departure:"Wyjazd","departure-now":"Wyjeżdżam teraz",time:"Godzina","choose-time":"Wybierz godzinę",ready:"Gotowe",cancel:"Anuluj","invalid-input":"Wprowadzona godzina jest nieprawidłowa"},sv:{today:"I dag",tomorrow:"I morgon","accessible-close":"Stäng väljaren","accessible-closed":"Väljaren stängde","accessible-open":"Öppna väljaren","accessible-opened":"Väljaren öppnade","accessible-title":"Tid- och datumväljaren","accessible-update-instructions":"Om du ändrar tiderna, startas en ny sökning automatiskt.",arrival:"Anländer",date:"Datum",departure:"Avgångstid","departure-now":"Avgår nu",time:"Tid","choose-time":"Välj tid",ready:"Färdig",cancel:"Avbryt","invalid-input":"Tiden du angav är felaktig"}};function A(){var e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)}function X(e,t){if(null==e)return{};var n,i,a=function(e,t){if(null==e)return{};var n,i,a={},l=Object.keys(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var $=["ref"];function T(e){var t=e.value,i=e.getDisplay,a=e.onChange,l=e.itemCount,o=e.startTime,r=e.id,s=e.label,d=e.icon,u=e.timeZone;g.default.tz.setDefault(u);var c=F(n.useState(!1),2),p=c[0],_=c[1],m=n.useRef(null),f=Array(l).fill().map(((e,t)=>g.default(o).add(t,"day").valueOf())),y=f.map((e=>t-e)).findIndex((e=>e<6e4));n.useLayoutEffect((()=>{p&&m.current&&(m.current.scrollTop=50*y)}),[t,p]);var h=!(navigator.userAgent.toLowerCase().indexOf("android")>-1),v=`${r}-input`,x=`${r}-label`;return b.default.createElement("label",{className:W["input-container"],htmlFor:v},b.default.createElement("span",null,d),b.default.createElement("span",{className:W["sr-only"],id:x},s),h?b.default.createElement("select",{className:W["mobile-input-display"],onChange:e=>a(Number(e.target.value)),value:t},f.map((e=>b.default.createElement("option",{key:e,value:e},i(e))))):b.default.createElement(C.default,{id:r,suggestions:f,getSuggestionValue:e=>e.toString(),renderSuggestion:e=>i(e),onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,inputProps:{value:i(t),onChange:(e,t)=>{var n=t.newValue;a(Number(n))},onFocus:()=>{_(!0)},onBlur:()=>{_(!1)},"aria-labelledby":x,"aria-autocomplete":"none",readOnly:!0},focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,renderSuggestionsContainer:e=>{var t=e.containerProps,n=e.children,i=t.ref,a=X(t,$);return b.default.createElement("div",Object.assign({tabIndex:"-1"},a,{ref:e=>{e&&(m.current=e,i(e))}}),n)},theme:W}))}function D(e){var t=e.value,i=e.getDisplay,a=e.onChange,l=e.id,o=e.label,r=e.icon,s=e.timeZone,d=F(n.useState(i(t)),2),u=d[0],c=d[1],p=F(n.useState(!0),2),_=p[0],m=p[1];g.default.tz.setDefault(s);var f=`${l}-input`,y=`${l}-label`,h=n.useRef(null);n.useLayoutEffect((()=>{h.current&&h.current.focus()}),[]);var v=!_;return b.default.createElement("label",{className:W["input-container"],htmlFor:f},b.default.createElement("span",null,r),b.default.createElement("span",{className:W["sr-only"],id:y},o),b.default.createElement("input",{id:f,inputMode:"numeric",type:"text",maxLength:"6",className:E.default(W["time-input-mobile"],v&&"mobile-datetimepicker-invalid-input"),value:u,onFocus:e=>{e.target.setSelectionRange(0,0)},onChange:e=>{var n=e.target.value.replace(".",":"),i=O(n);if(m(i),n.match(/[0-9]{3}:[0-9]{2}/)&&n.slice(1)===u&&(n=n.charAt(0)),!(n.length>5)){var l=S(n);c(l);var o=G(l,t);o&&a(o)}},ref:h}))}function Z(e){var t=e.departureOrArrival,i=e.onNowClick,a=e.lang,l=e.color,o=e.timeZone,r=e.onSubmit,s=e.onCancel,d=e.timestamp,u=e.getTimeDisplay,c=e.dateSelectItemCount,p=e.getDateDisplay,_=e.fontWeights;g.default.tz.setDefault(o);var m={lng:a},f=F(n.useState(d),2),y=f[0],h=f[1],k=F(n.useState(t),2),E=k[0],C=k[1];var R=F(n.useState(v.default("datetimepicker-")),1)[0],S=g.default().startOf("day").hour(g.default(y).hour()).minute(g.default(y).minute()).valueOf();return b.default.createElement(N.default,{appElement:document?document.querySelector("#app"):void 0,isOpen:!0,className:W["mobile-modal-content"],overlayClassName:W["mobile-modal-overlay"]},b.default.createElement("div",{style:{"--color":`${l}`,"--font-weight-medium":_.medium}},b.default.createElement("div",{className:W["top-row"]},b.default.createElement("h3",{className:W["modal-title"]},x.default.t("choose-time",m)),b.default.createElement("button",{type:"button",className:W["departure-now-button"],onClick:i},x.default.t("departure-now",m))),b.default.createElement("div",{className:W["tab-row"]},b.default.createElement("label",{htmlFor:`${R}-modal-departure`,className:`${W["radio-tab-label"]}\n ${W["departure"===E?"active":void 0]}`},x.default.t("departure",m),b.default.createElement("input",{id:`${R}-modal-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:W["radio-textbutton"],onChange:()=>{C("departure")},checked:"departure"===E})),b.default.createElement("label",{htmlFor:`${R}-modal-arrival`,className:`${W["radio-tab-label"]}\n ${W["arrival"===E?"active":void 0]}`},x.default.t("arrival",m),b.default.createElement("input",{id:`${R}-modal-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:W["radio-textbutton"],onChange:()=>{C("arrival")},checked:"arrival"===E}))),b.default.createElement("div",{className:W["input-row"]},b.default.createElement(T,{value:y,getDisplay:p,onChange:h,itemCount:c,startTime:S,id:`${R}-date`,label:x.default.t("date",m),icon:b.default.createElement("span",{className:`${W["combobox-icon"]} ${W["date-input-icon"]}`},b.default.createElement(w.default,{img:"calendar",color:l})),timeZone:o}),b.default.createElement(D,{value:y,getDisplay:u,onChange:h,id:`${R}-time`,label:x.default.t("time",m),icon:b.default.createElement("span",{className:`${W["combobox-icon"]} ${W["time-input-icon"]}`},b.default.createElement(w.default,{img:"time",color:l})),timeZone:o})),b.default.createElement("div",{className:W["buttons-row"]},b.default.createElement("button",{type:"button",className:W["ready-button"],onClick:()=>r(y,E)},x.default.t("ready",m)),b.default.createElement("button",{type:"button",className:W["cancel-button"],onClick:s},x.default.t("cancel",m)))))}function j(e){var t=e.timestamp,i=e.onTimeChange,a=e.onDateChange,l=e.departureOrArrival,o=e.onNowClick,r=e.onDepartureClick,s=e.onArrivalClick,d=e.embedWhenClosed,u=e.embedWhenOpen,c=e.lang,p=e.color,_=e.timeZone,m=e.onModalSubmit,f=e.fontWeights,y=e.serviceTimeRange,h=e.onOpen,k=e.onClose,E=e.openPicker;g.default.tz.setDefault(_);var N=F(n.useState(E||!1),2),C=N[0],R=N[1],S=F(n.useState(t||g.default().valueOf()),2),P=S[0],O=S[1],G=F(n.useState(null),2),X=G[0],$=G[1],T=F(n.useState(v.default("datetimepicker-")),1)[0],D=F(n.useState(A()&&function(){if("undefined"==typeof window||null===window)return!1;var e=document.createElement("input");return e.type="date","date"===e.type&&(e.type="time","time"===e.type)}()),1)[0],j=n.useRef(),V=n.useRef(),M=n.useRef(),I={lng:c};n.useEffect((()=>{Object.keys(z).forEach((e=>x.default.addResourceBundle(e,"translation",z[c])))}),[]),n.useEffect((()=>{g.default.locale(c)}),[c]);var L=null===t;n.useEffect((()=>{L?O(g.default().valueOf()):(X&&(clearInterval(X),$(null)),O(t))}),[t]),n.useEffect((()=>{if(L){X&&clearInterval(X);var e=setInterval((()=>{var t=g.default().valueOf();g.default(P).isSame(t,"minute")||(clearInterval(e),$(null),O(t))}),5e3);return $(e),()=>clearInterval(e)}}),[P]);var H=n.useRef();n.useEffect((()=>{H.current=C}));for(var Y=e=>{var t,n=g.default(e);return t=`${(t=n.isSame(g.default(),"day")?x.default.t("today",I):n.isSame(g.default().add(1,"day"),"day")?x.default.t("tomorrow",I):n.format("dd D.M.")).charAt(0).toUpperCase()}${t.slice(1)}`},U=e=>g.default(e).format("HH:mm"),K=g.default(P),B=g.default(P).startOf("day").valueOf(),J=[],Q=g.default(B);Q.isSame(B,"day");)J.push(Q.valueOf()),A()?Q.add(15,"minutes"):Q.add(1,"minutes");if(null===t){var ee=3e5,te=Math.ceil(P/ee)*ee,ne=Array(7).fill().map(((e,t)=>te+t*ee)),ie=J.map((e=>P-e)).findIndex((e=>e<=0));J.splice(ie,0,...ne),J=Array.from(new Set(J))}var ae=g.default().startOf("day").hour(K.hour()).minute(K.minute()).valueOf(),le=Array(y).fill().map(((e,t)=>g.default(ae).add(t,"day").valueOf()));function oe(){M.current&&(M.current.innerHTML=x.default.t("accessible-closed",I),setTimeout((()=>{M.current.innerHTML=null}),100))}return b.default.createElement("fieldset",{className:W["dt-datetimepicker"],id:`${T}-root`,style:{"--color":`${p}`,"--font-weight-medium":f.medium}},b.default.createElement("legend",{className:W["sr-only"]},x.default.t("accessible-title",I)),b.default.createElement("span",{className:W["sr-only"]},x.default.t("accessible-update-instructions",I)),b.default.createElement("div",{className:C?`${W.hidden} datetimepicker-top-row`:`${W["top-row-container"]} ${W.closed} datetimepicker-top-row`},b.default.createElement("label",{className:W["label-open"],htmlFor:`${T}-open`},b.default.createElement("span",{className:W["time-icon"]},b.default.createElement(w.default,{img:"time",color:p})),b.default.createElement("span",{className:W["sr-only"]},x.default.t("accessible-open",I)),b.default.createElement("span",{role:"alert",className:W["sr-only"],ref:M}),b.default.createElement("button",{id:`${T}-open`,type:"button",className:`${W.textbutton} ${W.active} ${W["open-button"]}`,"aria-controls":`${T}-root`,"aria-expanded":"false",onClick:()=>{R(!0),M.current&&(M.current.innerHTML=x.default.t("accessible-opened",I),setTimeout((()=>{M.current.innerHTML=null}),100)),h&&h()},ref:j},b.default.createElement("span",null,L&&"departure"===l?x.default.t("departure-now",I):b.default.createElement(b.default.Fragment,null,x.default.t("departure"===l?"departure":"arrival",I),` ${g.default().isSame(g.default(P),"day")?"":Y(P).toLowerCase()} ${U(P)}`)),b.default.createElement("span",{className:W["dropdown-icon"]},b.default.createElement(w.default,{img:"arrow-dropdown",color:p})))),b.default.createElement("span",{className:W["right-edge"]},d)),b.default.createElement("div",null),D?C&&b.default.createElement(Z,{departureOrArrival:l,onNowClick:()=>{R(!1),oe(),o()},lang:c,color:p,onSubmit:(e,t)=>{m(e,t),R(!1),oe()},onCancel:()=>{R(!1),oe(),k&&k()},getTimeDisplay:U,timeZone:_,timestamp:P,getDateDisplay:Y,dateSelectItemCount:y,getDisplay:U,fontWeights:f}):b.default.createElement(b.default.Fragment,null,b.default.createElement("div",{className:`${W["datetimepicker-open-container"]} ${C?"":W.hidden}`},b.default.createElement("div",{className:C?`${W["top-row-container"]} datetimepicker-top-row`:`${W.hidden} datetimepicker-top-row`}," ",b.default.createElement("span",{role:"alert",className:W["sr-only"],ref:M}),b.default.createElement("span",null),b.default.createElement("span",{className:W["departure-or-arrival-container"]},b.default.createElement("label",{htmlFor:`${T}-departure`,className:`${W["radio-textbutton-label"]}\n ${W["departure"===l?"active":void 0]}`},x.default.t("departure",I),b.default.createElement("input",{id:`${T}-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:W["radio-textbutton"],onChange:()=>{r()},checked:"departure"===l})),b.default.createElement("label",{htmlFor:`${T}-arrival`,className:`${W["radio-textbutton-label"]}\n ${W["arrival"===l?"active":void 0]}`},x.default.t("arrival",I),b.default.createElement("input",{id:`${T}-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:W["radio-textbutton"],onChange:()=>{s()},checked:"arrival"===l}))),b.default.createElement("button",{id:`${T}-now`,type:"button",className:W["departure-now-button"],onClick:()=>{R(!1),oe(),k&&k(),o()},ref:V},x.default.t("departure-now",I)),b.default.createElement("span",{className:W["right-edge"]},b.default.createElement("button",{type:"button",className:W["close-button"],"aria-controls":`${T}-root`,"aria-expanded":"true",onClick:()=>{R(!1),oe(),k&&k()}},b.default.createElement("span",{className:W["close-icon"]},b.default.createElement(w.default,{img:"close",color:p})),b.default.createElement("span",{className:W["sr-only"]},x.default.t("accessible-close",I))))),b.default.createElement("div",{className:C?`${W["picker-container"]}`:`${W.hidden} datetimepicker-top-row`},b.default.createElement("span",{className:W["combobox-left"]},b.default.createElement(q,{value:P,onChange:e=>{a(e)},getDisplay:Y,timeChoices:le,validate:()=>null,icon:b.default.createElement("span",{className:`${W["combobox-icon"]} ${W["date-input-icon"]}`},b.default.createElement(w.default,{img:"calendar",color:p})),id:`${T}-date`,label:x.default.t("date",I),disableTyping:!0,timeZone:_,datePicker:!0})),b.default.createElement("span",{className:W["combobox-right"]},b.default.createElement(q,{value:P,onChange:e=>{i(e)},getDisplay:U,timeChoices:J,icon:b.default.createElement("span",{className:`${W["combobox-icon"]} ${W["time-input-icon"]}`},b.default.createElement(w.default,{img:"time",color:p})),id:`${T}-time`,label:x.default.t("time",I),timeZone:_,translationSettings:I})))),b.default.createElement("span",{className:C?"":W.hidden},u),b.default.createElement("div",{className:C?"datetimepicker-bottom-row-open":""})))}function V(e){var t=e.realtime,i=e.initialArriveBy,a=e.initialTimestamp,l=e.onDepartureClick,o=e.onArrivalClick,r=e.onTimeChange,s=e.onDateChange,d=e.onNowClick,u=e.embedWhenClosed,c=e.embedWhenOpen,p=e.lang,_=e.color,m=e.timeZone,f=e.fontWeights,y=e.serviceTimeRange,v=e.onOpen,x=e.onClose,w=e.openPicker;g.default.locale(p),g.default.tz.setDefault(m);var k=t?null:g.default().valueOf(),E=F(n.useState(a?1e3*a:k),2),N=E[0],C=E[1],R=F(n.useState(!0===i?"arrival":"departure"),2),S=R[0],P=R[1];n.useEffect((()=>{var e=null===N&&void 0===a,t=null===N||void 0===a,n=Math.round(N/1e3)===a;!e&&(t||!n)&&C(void 0===a?null:1e3*a),!i==("arrival"===S)&&P(!0===i?"arrival":"departure")}),[a,i]);var O=h.default((e=>{if(null===e)return C(g.default().valueOf()),void r(Math.round(g.default().valueOf()/1e3),"arrival"===S);C(e),r(Math.round(e/1e3),"arrival"===S)}),10),G=h.default((e=>{if(null===e)return C(g.default().valueOf()),void s(Math.round(g.default().valueOf()/1e3),"arrival"===S);C(e),s(Math.round(e/1e3),"arrival"===S)}),10);return b.default.createElement(j,{timestamp:N,onTimeChange:O,onDateChange:G,departureOrArrival:S,onNowClick:()=>{P("departure");var e=t?null:g.default().valueOf();C(e),d(Math.round(e/1e3))},onDepartureClick:()=>{var e=!1,t=N;if(null===N){var n=g.default().valueOf();C(n),t=n,e=!0}"departure"!==S&&(P("departure"),e=!0),e&&l(Math.round(t/1e3))},onArrivalClick:()=>{var e=!1,t=N;if(null===N){var n=g.default().valueOf();C(n),t=n,e=!0}"arrival"!==S&&(P("arrival"),e=!0),e&&o(Math.round(t/1e3))},embedWhenClosed:u,embedWhenOpen:c,lang:p,color:_,timeZone:m,onModalSubmit:(e,t)=>{C(e),P(t),r(Math.round(e/1e3),"arrival"===t,!0)},fontWeights:f,serviceTimeRange:y,onOpen:v,onClose:x,openPicker:w})}"production"!==process.env.NODE_ENV&&(T.propTypes={value:y.default.number.isRequired,getDisplay:y.default.func.isRequired,onChange:y.default.func.isRequired,itemCount:y.default.number.isRequired,startTime:y.default.number.isRequired,id:y.default.string.isRequired,label:y.default.string.isRequired,icon:y.default.node,dateTimeCombined:y.default.bool,timeZone:y.default.string}),T.defaultProps={icon:null,dateTimeCombined:!1,timeZone:"Europe/Helsinki"},"production"!==process.env.NODE_ENV&&(D.propTypes={value:y.default.number.isRequired,getDisplay:y.default.func.isRequired,onChange:y.default.func.isRequired,id:y.default.string.isRequired,label:y.default.string.isRequired,icon:y.default.node,timeZone:y.default.string}),D.defaultProps={icon:null,timeZone:"Europe/Helsinki"},g.default.locale("en"),x.default.init({lng:"en",resources:{}}),Object.keys(z).forEach((e=>x.default.addResourceBundle(e,"translation",z[e]))),"production"!==process.env.NODE_ENV&&(Z.propTypes={timeZone:y.default.string,departureOrArrival:y.default.oneOf(["departure","arrival"]).isRequired,onNowClick:y.default.func.isRequired,lang:y.default.string.isRequired,color:y.default.string,onSubmit:y.default.func.isRequired,onCancel:y.default.func.isRequired,timestamp:y.default.number.isRequired,getTimeDisplay:y.default.func.isRequired,dateSelectItemCount:y.default.number.isRequired,getDateDisplay:y.default.func.isRequired,fontWeights:y.default.shape({medium:y.default.number.isRequired}).isRequired}),Z.defaultProps={color:"#007ac9",timeZone:"Europe/Helsinki"},g.default.locale("en"),x.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}}),"production"!==process.env.NODE_ENV&&(j.propTypes={timestamp:y.default.number,timeZone:y.default.string,onTimeChange:y.default.func.isRequired,onDateChange:y.default.func.isRequired,departureOrArrival:y.default.oneOf(["departure","arrival"]).isRequired,onNowClick:y.default.func.isRequired,onDepartureClick:y.default.func.isRequired,onArrivalClick:y.default.func.isRequired,embedWhenClosed:y.default.node,embedWhenOpen:y.default.node,lang:y.default.string.isRequired,color:y.default.string,onModalSubmit:y.default.func.isRequired,fontWeights:y.default.shape({medium:y.default.number.isRequired}).isRequired,serviceTimeRange:y.default.number.isRequired,onOpen:y.default.func,onClose:y.default.func,openPicker:y.default.bool}),j.defaultProps={timestamp:null,embedWhenClosed:null,embedWhenOpen:null,color:"#007ac9",timeZone:"Europe/Helsinki",onOpen:null,onClose:null,openPicker:void 0},"production"!==process.env.NODE_ENV&&(V.propTypes={realtime:y.default.bool,initialTimestamp:y.default.number,initialArriveBy:y.default.bool,onDepartureClick:y.default.func.isRequired,onArrivalClick:y.default.func.isRequired,onTimeChange:y.default.func.isRequired,onDateChange:y.default.func.isRequired,onNowClick:y.default.func.isRequired,embedWhenClosed:y.default.node,embedWhenOpen:y.default.node,lang:y.default.string,color:y.default.string,timeZone:y.default.string,fontWeights:y.default.shape({medium:y.default.number}),serviceTimeRange:y.default.number,onOpen:y.default.func,onClose:y.default.func,openPicker:y.default.bool}),V.defaultProps={realtime:!1,initialArriveBy:void 0,initialTimestamp:void 0,embedWhenClosed:null,embedWhenOpen:null,lang:"en",color:"#007ac9",timeZone:"Europe/Helsinki",fontWeights:{medium:500},onOpen:null,onClose:null,openPicker:void 0,serviceTimeRange:30},e.default=V,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVSZXN0LmpzIiwiLi4vc3JjL2hlbHBlcnMvdXRpbHMuanMiLCIuLi9zcmMvaGVscGVycy9EZXNrdG9wRGF0ZXRpbWVwaWNrZXIuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtaW5qZWN0L2Rpc3Qvc3R5bGUtaW5qZWN0LmVzLmpzIiwiLi4vc3JjL2hlbHBlcnMvdHJhbnNsYXRpb25zLmpzIiwiLi4vc3JjL2hlbHBlcnMvbW9iaWxlRGV0ZWN0aW9uLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCIuLi9zcmMvaGVscGVycy9Nb2JpbGVEYXRlcGlja2VyLmpzIiwiLi4vc3JjL2hlbHBlcnMvTW9iaWxlVGltZXBpY2tlci5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZVBpY2tlck1vZGFsLmpzIiwiLi4vc3JjL2hlbHBlcnMvRGF0ZXRpbWVwaWNrZXIuanMiLCIuLi9zcmMvaGVscGVycy9kYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQuanMiLCIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTtcbiAgcmV0dXJuIGFycjI7XG59IiwiaW1wb3J0IGFycmF5V2l0aEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aEhvbGVzLmpzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5TGltaXQgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIjtcbmltcG9ydCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSBmcm9tIFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiO1xuaW1wb3J0IG5vbkl0ZXJhYmxlUmVzdCBmcm9tIFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn0iLCJpbXBvcnQgYXJyYXlMaWtlVG9BcnJheSBmcm9tIFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59IiwiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuXG4vKipcbiAqIEhhbmRsZSB0eXBpbmcgdGltZSBhbmQgYWRkaW5nIG5lY2Vzc2FyeSA6XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVkVmFsdWVcbiAqXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVR5cGVkVGltZSh0eXBlZFZhbHVlKSB7XG4gIGxldCBhY3R1YWxWYWx1ZSA9IHR5cGVkVmFsdWU7XG4gIGlmIChcbiAgICBhY3R1YWxWYWx1ZS5sZW5ndGggPT09IDMgJiZcbiAgICBhY3R1YWxWYWx1ZS5zcGxpdCgnJykuZXZlcnkobiA9PiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcihuKSkpXG4gICkge1xuICAgIC8vIGFkZCAnOicgaWYgdXNlciB0eXBlcyB0aHJlZSBudW1iZXJzIGluIGEgcm93XG4gICAgaWYgKE51bWJlcihhY3R1YWxWYWx1ZS5zbGljZSgwLCAyKSkgPD0gMjMpIHtcbiAgICAgIGFjdHVhbFZhbHVlID0gYCR7YWN0dWFsVmFsdWUuc2xpY2UoMCwgMil9OiR7YWN0dWFsVmFsdWVbMl19YDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0dWFsVmFsdWUgPSBgJHthY3R1YWxWYWx1ZVswXX06JHthY3R1YWxWYWx1ZS5zbGljZSgxKX1gO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYWN0dWFsVmFsdWU7XG59XG5cbmNvbnN0IHZhbGlkYXRlQ2xvY2sgPSAoaG91cnMsIG1pbnV0ZXMpID0+IHtcbiAgY29uc3QgaG91cnNWYWxpZCA9ICFOdW1iZXIuaXNOYU4oaG91cnMpICYmIGhvdXJzID49IDAgJiYgaG91cnMgPD0gMjM7XG4gIGNvbnN0IG1pbnV0ZXNMZW4gPSBtaW51dGVzLmxlbmd0aDtcbiAgY29uc3QgbWludXRlc1ZhbGlkID1cbiAgICBtaW51dGVzTGVuID09PSAyXG4gICAgICA/ICFOdW1iZXIuaXNOYU4obWludXRlcykgJiYgTnVtYmVyKG1pbnV0ZXMpID49IDAgJiYgTnVtYmVyKG1pbnV0ZXMgPD0gNTkpXG4gICAgICA6ICFOdW1iZXIuaXNOYU4obWludXRlcykgJiYgTnVtYmVyKG1pbnV0ZXMpID49IDAgJiYgTnVtYmVyKG1pbnV0ZXMgPD0gNSk7XG4gIHJldHVybiBob3Vyc1ZhbGlkICYmIG1pbnV0ZXNWYWxpZDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUlucHV0KGlucHV0VmFsdWUpIHtcbiAgLy8gV2UgZG9uJ3QgYWNjZXB0IHNlY29uZHMgaW4gdGhlIGlucHV0XG4gIGlmIChpbnB1dFZhbHVlLnNwbGl0KCc6JykubGVuZ3RoID4gMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoaW5wdXRWYWx1ZS5sZW5ndGggPD0gMikge1xuICAgIC8vIFRvbyBtYW55IG9wdGlvbnMsIGRvbid0ICB2YWxpZGF0ZVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpbnB1dFZhbHVlLmxlbmd0aCA9PT0gMykge1xuICAgIGxldCBob3VycztcbiAgICBsZXQgbWludXRlcztcbiAgICBpZiAoaW5wdXRWYWx1ZS5pbmNsdWRlcygnOicpKSB7XG4gICAgICBbaG91cnMsIG1pbnV0ZXNdID0gaW5wdXRWYWx1ZS5zcGxpdCgnOicpO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRWYWx1ZS5zdGFydHNXaXRoKCcwJykpIHtcbiAgICAgIGhvdXJzID0gaW5wdXRWYWx1ZS5zdWJzdHJpbmcoMCwgaW5wdXRWYWx1ZS5sZW5ndGggLSAxKTtcbiAgICAgIG1pbnV0ZXMgPSBpbnB1dFZhbHVlLnN1YnN0cmluZyhpbnB1dFZhbHVlLmxlbmd0aCAtIDEgfHwgMCk7XG4gICAgICBpZiAoTnVtYmVyKG1pbnV0ZXMpID4gNSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgaXMgaG93IGJhc2ljYWxseSBtb21lbnQgaGFuZGxlcyBzdHJpbmcgZm9ybWF0dGluZy5cbiAgICAgIC8vIElmIHRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIHN0cmluZyBpcyAxLCB0aGVuIHJlc3QgYXJlIG1pbnV0ZXMuXG4gICAgICAvLyBpZiB0aGUgZmlyc3QgbGV0dGVyIGlzIDIsIHRoZW4gaWYgc2Vjb25kIGxldHRlciBpcyAwLDEsMiBvciAzLCB0aGVuIHNlY29uZCBsZXR0ZXIgaXMgaG91ciwgZWxzZSByZXN0IGFyZSBtaW51dGVzXG4gICAgICAvLyBlbHNlLCBmaXJzdCBsZXR0ZXIgaXMgaG91ciwgcmVzdCBvZiB0aGVtIGFyZSBtaW51dGVzLlxuICAgICAgY29uc3QgdmFsdWVzID0gaW5wdXRWYWx1ZS5zcGxpdCgnJyk7XG4gICAgICBpZiAoTnVtYmVyKHZhbHVlc1swXSkgPT09IDEpIHtcbiAgICAgICAgW2hvdXJzLCBtaW51dGVzXSA9IFt2YWx1ZXNbMF0uY29uY2F0KHZhbHVlc1sxXSksIHZhbHVlc1syXV07XG4gICAgICB9IGVsc2UgaWYgKE51bWJlcih2YWx1ZXNbMF0pID09PSAyKSB7XG4gICAgICAgIGlmIChOdW1iZXIodmFsdWVzWzFdIDw9IDMpKSB7XG4gICAgICAgICAgW2hvdXJzLCBtaW51dGVzXSA9IFt2YWx1ZXNbMF0uY29uY2F0KHZhbHVlc1sxXSksIHZhbHVlc1syXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgW2hvdXJzLCBtaW51dGVzXSA9IFt2YWx1ZXNbMF0sIHZhbHVlc1sxXS5jb25jYXQodmFsdWVzWzJdKV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFtob3VycywgbWludXRlc10gPSBbdmFsdWVzWzBdLCB2YWx1ZXNbMV0uY29uY2F0KHZhbHVlc1syXSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbGlkYXRlQ2xvY2soaG91cnMsIG1pbnV0ZXMpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdGVDbG9jayhob3VycywgbWludXRlcyk7XG4gIH1cbiAgaWYgKGlucHV0VmFsdWUubGVuZ3RoID09PSA1IHx8IGlucHV0VmFsdWUubGVuZ3RoID09PSA0KSB7XG4gICAgY29uc3QgdmFsdWVzID0gaW5wdXRWYWx1ZS5zcGxpdCgnOicpO1xuICAgIGNvbnN0IGhvdXJzID0gdmFsdWVzWzBdO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSB2YWx1ZXNbMV07XG4gICAgaWYgKFxuICAgICAgaW5wdXRWYWx1ZS5zdGFydHNXaXRoKCcwJykgJiZcbiAgICAgIG1pbnV0ZXMubGVuZ3RoID09PSAxICYmXG4gICAgICBOdW1iZXIobWludXRlcykgPiA1XG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlQ2xvY2soaG91cnMsIG1pbnV0ZXMpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0VHMgPSAoaW5wdXRWYWx1ZSwgY3VycmVudFRpbWVzdGFtcCkgPT4ge1xuICBjb25zdCB0cmltbWVkID0gaW5wdXRWYWx1ZS50cmltKCk7XG4gIGlmICh0cmltbWVkLm1hdGNoKC9eWzAtOV17MSwyfShcXC58OilbMC05XXsyfSQvKSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHNwbGl0dGVyID0gdHJpbW1lZC5pbmNsdWRlcygnLicpID8gJy4nIDogJzonO1xuICAgIGNvbnN0IHZhbHVlcyA9IHRyaW1tZWQuc3BsaXQoc3BsaXR0ZXIpO1xuICAgIGNvbnN0IGhvdXJzID0gTnVtYmVyKHZhbHVlc1swXSk7XG4gICAgY29uc3QgaG91cnNWYWxpZCA9ICFOdW1iZXIuaXNOYU4oaG91cnMpICYmIGhvdXJzID49IDAgJiYgaG91cnMgPD0gMjM7XG4gICAgY29uc3QgbWludXRlcyA9IE51bWJlcih2YWx1ZXNbMV0pO1xuICAgIGNvbnN0IG1pbnV0ZXNWYWxpZCA9XG4gICAgICAhTnVtYmVyLmlzTmFOKG1pbnV0ZXMpICYmIG1pbnV0ZXMgPj0gMCAmJiBtaW51dGVzIDw9IDU5O1xuICAgIGlmICghbWludXRlc1ZhbGlkIHx8ICFob3Vyc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbmV3U3RhbXAgPSBtb21lbnQoY3VycmVudFRpbWVzdGFtcClcbiAgICAgIC5ob3Vycyhob3VycylcbiAgICAgIC5taW51dGVzKG1pbnV0ZXMpXG4gICAgICAudmFsdWVPZigpO1xuICAgIHJldHVybiBuZXdTdGFtcDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHsgcGFyc2VUeXBlZFRpbWUsIHZhbGlkYXRlSW5wdXQsIGdldFRzIH07XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgU2VsZWN0IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgaTE4bmV4dCBmcm9tICdpMThuZXh0JztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IHBhcnNlVHlwZWRUaW1lLCB2YWxpZGF0ZUlucHV0LCBnZXRUcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIGRhdGUgb3IgdGltZSBpbnB1dCBvbiBkZXNrdG9wLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICogQHBhcmFtIHtOdW1iZXJ9IHByb3BzLnZhbHVlICAgIEN1cnJlbnRseSBzZWxlY3RlZCB0aW1lLiBVbml4IHRpbWVzdGFtcCBpbiBtaWxsaXNlY29uZHNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2hhbmdlICAgICBUaGlzIGlzIGNhbGxlZCB3aXRoIG5ldyB0aW1lc3RhbXAgd2hlbiBpbnB1dCBpcyBjaGFuZ2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5nZXREaXNwbGF5ICAgRnVuY3Rpb24gdG8gZ2V0IGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGZyb20gYSB0aW1lc3RhbXBcbiAqIEBwYXJhbSB7YXJyYXl9ICAgIHByb3BzLnRpbWVDaG9pY2VzICBBcnJheSBvZiB0aW1lc3RhbXBzIHRvIGNob29zZSBmcm9tXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgICAgICAgICAgICAgICAgICAgSWQgcHJlZml4IGZvciBsYWJlbHMgYW5kIGFyaWEgYXR0cmlidXRlcy4gU2hvdWxkIGJlIHVuaXF1ZSBpbiBwYWdlXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFiZWwgICAgICAgICAgICAgICAgVGV4dCB0byBzaG93IGFzIGlucHV0IGxhYmVsXG4gKiBAcGFyYW0ge25vZGV9IGljb24gICAgICAgICAgICAgICAgICAgSlNYIGZvciBpY29uIHRvIHNob3cgaW4gaW5wdXRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZVR5cGluZyAgICAgICBTZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIHR5cGluZyBpbiB0aGUgaW5wdXRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGF0ZVBpY2tlciAgICAgICAgICBJcyB0aGUgcGlja2VyIERhdGVQaWNrZXIgb3IgVGltZVBpY2tlclxuICpcbiAqIEBleGFtcGxlXG4gKiA8RGVza3RvcERhdGV0aW1lcGlja2VyXG4gKiAgIHZhbHVlPXsxNTkwMTMzODIzMDAwfVxuICogICBvbkNoYW5nZT17dGltZXN0YW1wID0+IHVwZGF0ZSh0aW1lc3RhbXApfVxuICogICBnZXREaXNwbGF5PXt0aW1lc3RhbXAgPT4gZm9ybWF0VGltZSh0aW1lc3RhbXApfVxuICogICB0aW1lQ2hvaWNlcz17WzE1OTAxMzM4MjMwMDBdfVxuICogICBpZD1cInRpbWVpbnB1dFwiXG4gKiAgIGljb249XCI8SWNvbiAvPlwiXG4gKiAgIGRpc2FibGVUeXBpbmc9e2ZhbHNlfSAvLyBjYW4gYmUgb21pdHRlZCBpZiBub3QgdHJ1ZVxuICogICBkYXRlUGlja2VyPXt0cnVlfSAvLyBjYW4gYmUgb21pdHRlZCBpZiBub3QgdHJ1ZVxuICovXG5mdW5jdGlvbiBEZXNrdG9wRGF0ZXRpbWVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIGdldERpc3BsYXksXG4gIHRpbWVDaG9pY2VzLFxuICBpZCxcbiAgbGFiZWwsXG4gIGljb24sXG4gIGRpc2FibGVUeXBpbmcsXG4gIHRpbWVab25lLFxuICBkYXRlUGlja2VyLFxuICB0cmFuc2xhdGlvblNldHRpbmdzLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG4gIGNvbnN0IFtkaXNwbGF5VmFsdWUsIGNoYW5nZURpc3BsYXlWYWx1ZV0gPSB1c2VTdGF0ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gIGNvbnN0IFt0eXBpbmcsIHNldFR5cGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93QWxsT3B0aW9ucywgc2V0U2hvd0FsbE9wdGlvbnNdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtpbnZhbGlkSW5wdXQsIHNldGludmFsaWRJbnB1dF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY2hhbmdlRGlzcGxheVZhbHVlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgICBpZiAoIWRhdGVQaWNrZXIpIHtcbiAgICAgIHNldGludmFsaWRJbnB1dChmYWxzZSk7XG4gICAgfVxuICB9LCBbdmFsdWVdKTtcblxuICAvLyBuZXdWYWx1ZSBpcyBzdHJpbmdcbiAgY29uc3QgaGFuZGxlVGltZXN0YW1wID0gbmV3VmFsdWUgPT4ge1xuICAgIGNvbnN0IGFzTnVtYmVyID0gTnVtYmVyKG5ld1ZhbHVlKTtcbiAgICBpZiAoXG4gICAgICBOdW1iZXIuaXNOYU4oYXNOdW1iZXIpIHx8XG4gICAgICAhbW9tZW50KGFzTnVtYmVyKS5pc1ZhbGlkKCkgfHxcbiAgICAgIG1vbWVudChhc051bWJlcikudmFsdWVPZigpICE9PSBhc051bWJlclxuICAgICkge1xuICAgICAgLy8gVE9ETyBoYW5kbGUgZXJyb3I/XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG9uQ2hhbmdlKGFzTnVtYmVyKTtcbiAgfTtcbiAgZnVuY3Rpb24gaXNpbnZhbGlkSW5wdXQoc3RyKSB7XG4gICAgY29uc3QgcmVnZXggPSAvW2EtekEtWsKnw4TDpMOWw7YuLVxcc10vZztcbiAgICBpZiAoc3RyLmxlbmd0aCA8IGRpc3BsYXlWYWx1ZT8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCB2YWxpZCA9IHZhbGlkYXRlSW5wdXQoc3RyKTtcbiAgICAgIHNldGludmFsaWRJbnB1dCghdmFsaWQpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHJlZ2V4LnRlc3Qoc3RyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB0aW1lID0gc3RyLmxlbmd0aCA+IDUgPyBzdHIuc2xpY2UoMCwgLTEpIDogc3RyO1xuICAgIGNvbnN0IHZhbGlkID0gdmFsaWRhdGVJbnB1dCh0aW1lKTtcbiAgICBzZXRpbnZhbGlkSW5wdXQoIXZhbGlkKTtcbiAgICByZXR1cm4gc3RyLmxlbmd0aCA8PSA1O1xuICB9XG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSAobmV3VmFsdWUsIHsgYWN0aW9uIH0pID0+IHtcbiAgICBpZiAoYWN0aW9uID09PSAnbWVudS1jbG9zZScpIHtcbiAgICAgIHNldFNob3dBbGxPcHRpb25zKHRydWUpO1xuICAgIH0gZWxzZSBpZiAoc2hvd0FsbE9wdGlvbnMpIHtcbiAgICAgIHNldFNob3dBbGxPcHRpb25zKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGRpc2FibGVUeXBpbmcgfHwgKG5ld1ZhbHVlICYmICFpc2ludmFsaWRJbnB1dChuZXdWYWx1ZSkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdpbnB1dC1jaGFuZ2UnKSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZWQgPSBwYXJzZVR5cGVkVGltZShuZXdWYWx1ZSk7XG4gICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUodmFsaWRhdGVkKTtcbiAgICAgIHNldFR5cGluZyh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9wdGlvbnMgPSB0aW1lQ2hvaWNlcy5tYXAodCA9PiB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHQudG9TdHJpbmcoKSwgbGFiZWw6IGdldERpc3BsYXkodCkgfTtcbiAgfSk7XG5cbiAgLy8gVGltZSBwaWNrZXIgaGFzIGEgbGlzdCBvZiBtaW51dGVzLCBpbnN0ZWFkIG9mIDE1IG1pbnV0ZXMuIFdlIG5lZWQgdG8gZmlsdGVyIHRob3NlIG91dFxuICAvLyBzbyBjbG9zZXN0IG9wdGlvbiB3aWxsIHNob3cgdXAgaW4gdGhlIGxpc3QuXG4gIGNvbnN0IGNsb3Nlc3RPcHRpb25zID0gZGF0ZVBpY2tlclxuICAgID8gb3B0aW9uc1xuICAgIDogb3B0aW9ucy5maWx0ZXIobyA9PiBvLmxhYmVsLnNwbGl0KCc6JylbMV0gJSAxNSA9PT0gMCk7XG4gIGNvbnN0IGNsb3Nlc3RPcHRpb24gPVxuICAgIGNsb3Nlc3RPcHRpb25zLmxlbmd0aCA+IDBcbiAgICAgID8gY2xvc2VzdE9wdGlvbnM/LnJlZHVjZSgoYSwgYikgPT5cbiAgICAgICAgICBNYXRoLmFicyh2YWx1ZSAtIGEudmFsdWUpIDwgTWF0aC5hYnModmFsdWUgLSBiLnZhbHVlKSA/IGEgOiBiLFxuICAgICAgICApXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuICBjb25zdCBmaWx0ZXJPcHRpb25zID0gKG9wdGlvbiwgaW5wdXQpID0+IHtcbiAgICBjb25zdCBob3VyID0gaW5wdXQubGVuZ3RoIDw9IDIgPyBpbnB1dCA6IGlucHV0LnNwbGl0KCc6JylbMF07XG4gICAgY29uc3QgaXNWYWxpZEhvdXIgPSAvXihbMC0xXT9bMC05XXwyWzAtM10pJC8udGVzdChob3VyKTtcbiAgICBjb25zdCBjb21wID0gaG91ci5sZW5ndGggPT09IDEgPyAnMCcuY29uY2F0KGlucHV0KSA6IGlucHV0O1xuICAgIHJldHVybiBpc1ZhbGlkSG91clxuICAgICAgPyBvcHRpb24ubGFiZWwuc3BsaXQoJzonKVswXSA9PT0gY29tcC5zcGxpdCgnOicpWzBdXG4gICAgICA6IHRydWU7XG4gIH07XG4gIGNvbnN0IGFyaWFFcnJvciA9IGkxOG5leHQudCgnaW52YWxpZC1pbnB1dCcsIHRyYW5zbGF0aW9uU2V0dGluZ3MpO1xuICByZXR1cm4gKFxuICAgIDxsYWJlbCBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtY29udGFpbmVyJ119IGh0bWxGb3I9e2lucHV0SWR9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0gaWQ9e2xhYmVsSWR9PlxuICAgICAgICB7bGFiZWx9IHtkaXNwbGF5VmFsdWV9XG4gICAgICA8L3NwYW4+XG4gICAgICB7aWNvbn1cbiAgICAgIDxTZWxlY3RcbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtsYWJlbElkfVxuICAgICAgICBhcmlhTGl2ZU1lc3NhZ2VzPXt7XG4gICAgICAgICAgZ3VpZGFuY2U6IGNvbnRleHQgPT4ge1xuICAgICAgICAgICAgLy8gV2hlbiB1c2VyIHR5cGVzIGludmFsaWQgdmFsdWUsIGlzRGlzYWJsZWQgYmVjb21lcyB1bmRlZmluZWQgaW5zdGVhZCBvZiBmYWxzZVxuICAgICAgICAgICAgaWYgKGNvbnRleHQuaXNEaXNhYmxlZCA9PT0gdW5kZWZpbmVkICYmIGludmFsaWRJbnB1dCkge1xuICAgICAgICAgICAgICByZXR1cm4gYXJpYUVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICcuJzsgLy8gdGhpcyBjYW4ndCBiZSBlbXB0eSBmb3Igc29tZSByZWFzb25cbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkZpbHRlcjogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Gb2N1czogKHsgY29udGV4dCwgbGFiZWw6IGl0ZW1MYWJlbCB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoY29udGV4dCA9PT0gJ21lbnUnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBpdGVtTGFiZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgfSxcbiAgICAgICAgfX1cbiAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgaW5wdXRJZD17aW5wdXRJZH1cbiAgICAgICAgb25DaGFuZ2U9e3RpbWUgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoJ0hIOm1tJyk7XG4gICAgICAgICAgY29uc3QgdHMgPSBnZXRUcyhkaXNwbGF5VmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICBpZiAodHlwaW5nKSB7XG4gICAgICAgICAgICBpZiAodHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRUaW1lICE9PSBkaXNwbGF5VmFsdWUgJiYgdGltZS52YWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUaW1lc3RhbXAodHMpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhbmRsZVRpbWVzdGFtcCh0aW1lLnZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKHRpbWUudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVGltZXN0YW1wKHRpbWUudmFsdWUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHJlc2V0IHZhbHVlXG4gICAgICAgICAgICAgICAgY2hhbmdlRGlzcGxheVZhbHVlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFkYXRlUGlja2VyKSB7XG4gICAgICAgICAgICAgIHNldGludmFsaWRJbnB1dChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZGF0ZVBpY2tlcikge1xuICAgICAgICAgICAgc2V0aW52YWxpZElucHV0KGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaGFuZGxlVGltZXN0YW1wKHRpbWUudmFsdWUpO1xuICAgICAgICB9fVxuICAgICAgICBjb21wb25lbnRzPXt7XG4gICAgICAgICAgSW5kaWNhdG9yc0NvbnRhaW5lcjogKCkgPT4gbnVsbCxcbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICBzdHlsZXNbJ2RhdGV0aW1lcGlja2VyLXNlbGVjdC1jb250YWluZXInXSxcbiAgICAgICAgICBpbnZhbGlkSW5wdXQgPyAnZGF0ZXRpbWVwaWNrZXItaW52YWxpZC1pbnB1dCcgOiAnJyxcbiAgICAgICAgKX1cbiAgICAgICAgY2xhc3NOYW1lUHJlZml4PVwiZGF0ZXRpbWVwaWNrZXItc2VsZWN0XCJcbiAgICAgICAgb25JbnB1dENoYW5nZT17b25JbnB1dENoYW5nZX1cbiAgICAgICAgaW5wdXRWYWx1ZT17IWRpc2FibGVUeXBpbmcgJiYgZGlzcGxheVZhbHVlfVxuICAgICAgICB2YWx1ZT17Y2xvc2VzdE9wdGlvbn1cbiAgICAgICAgbm9PcHRpb25zTWVzc2FnZT17KCkgPT4ge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfX1cbiAgICAgICAgZmlsdGVyT3B0aW9uPXsob3B0aW9uLCBpbnB1dCkgPT4ge1xuICAgICAgICAgIGlmIChkYXRlUGlja2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgY29tcGxldGVJbnB1dCA9XG4gICAgICAgICAgICBpbnB1dC5sZW5ndGggPT09IDUgfHxcbiAgICAgICAgICAgIChpbnB1dC5sZW5ndGggPT09IDQgJiYgaW5wdXQuc3BsaXQoJzonKVswXS5sZW5ndGggPT09IDEpO1xuICAgICAgICAgIGNvbnN0IGlzTW9kMTUgPSBvcHRpb24ubGFiZWwuc3BsaXQoJzonKVsxXSAlIDE1ID09PSAwO1xuICAgICAgICAgIGNvbnN0IG1pbnV0ZUlucHV0ID0gaW5wdXQuc3BsaXQoJzonKVsxXT8ubGVuZ3RoID09PSAxO1xuXG4gICAgICAgICAgaWYgKHNob3dBbGxPcHRpb25zICYmIGlzTW9kMTUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobWludXRlSW5wdXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0SCA9XG4gICAgICAgICAgICAgIGlucHV0LnNwbGl0KCc6JylbMF0ubGVuZ3RoID09PSAxXG4gICAgICAgICAgICAgICAgPyAnMCcuY29uY2F0KGlucHV0LnNwbGl0KCc6JylbMF0pXG4gICAgICAgICAgICAgICAgOiBpbnB1dC5zcGxpdCgnOicpWzBdO1xuICAgICAgICAgICAgY29uc3QgaW5wdXRNID0gaW5wdXQuc3BsaXQoJzonKVsxXTtcbiAgICAgICAgICAgIGNvbnN0IG9wdEggPSBvcHRpb24ubGFiZWwuc3BsaXQoJzonKVswXTtcbiAgICAgICAgICAgIGNvbnN0IG9wdE0gPSBvcHRpb24ubGFiZWwuc3BsaXQoJzonKVsxXTtcbiAgICAgICAgICAgIGlmIChpbnB1dEggPT09IG9wdEgpIHtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IE51bWJlcihpbnB1dE0pICogMTA7XG4gICAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gTnVtYmVyKG9wdE0pIC0gdDtcbiAgICAgICAgICAgICAgaWYgKHRvdGFsID49IDAgJiYgdG90YWwgPD0gOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNvbXBsZXRlSW5wdXQgJiYgIXNob3dBbGxPcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQubGVuZ3RoID09PSA0XG4gICAgICAgICAgICAgID8gJzAnLmNvbmNhdChpbnB1dCkgPT09IG9wdGlvbi5sYWJlbFxuICAgICAgICAgICAgICA6IGlucHV0ID09PSBvcHRpb24ubGFiZWw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc01vZDE1KSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyT3B0aW9ucyhvcHRpb24sIGlucHV0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH19XG4gICAgICAgIGNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZT17ZGlzYWJsZVR5cGluZ31cbiAgICAgICAgdGFiU2VsZWN0c1ZhbHVlPXtmYWxzZX1cbiAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICBvbkZvY3VzPXtlID0+IHtcbiAgICAgICAgICBpZiAoIWRpc2FibGVUeXBpbmcpIHtcbiAgICAgICAgICAgIGUudGFyZ2V0LnNlbGVjdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgb25CbHVyPXsoKSA9PiB7XG4gICAgICAgICAgLy8gcmVtb3ZpbmcgZm9jdXMgYWxzbyBsb2NrcyBpbiB2YWx1ZVxuICAgICAgICAgIGlmICh0eXBpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZCA9IGdldFRzKGRpc3BsYXlWYWx1ZSwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBoYW5kbGVUaW1lc3RhbXAodmFsaWRhdGVkKTtcbiAgICAgICAgICAgICAgc2V0VHlwaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNoYW5nZURpc3BsYXlWYWx1ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZGF0ZVBpY2tlcikge1xuICAgICAgICAgICAgc2V0aW52YWxpZElucHV0KGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIG9uS2V5RG93bj17ZSA9PiB7XG4gICAgICAgICAgaWYgKFsnQXJyb3dEb3duJywgJ0Fycm93VXAnXS5pbmNsdWRlcyhlLmtleSkpIHtcbiAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBpc1NlYXJjaGFibGU9eyFkaXNhYmxlVHlwaW5nfVxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuICApO1xufVxuRGVza3RvcERhdGV0aW1lcGlja2VyLnByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHRpbWVDaG9pY2VzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubnVtYmVyKS5pc1JlcXVpcmVkLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZVR5cGluZzogUHJvcFR5cGVzLmJvb2wsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBkYXRlUGlja2VyOiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJhbnNsYXRpb25TZXR0aW5nczogUHJvcFR5cGVzLnNoYXBlKHsgbG5nOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQgfSksXG59O1xuXG5EZXNrdG9wRGF0ZXRpbWVwaWNrZXIuZGVmYXVsdFByb3BzID0ge1xuICBkaXNhYmxlVHlwaW5nOiBmYWxzZSxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxuICBkYXRlUGlja2VyOiBmYWxzZSxcbiAgdHJhbnNsYXRpb25TZXR0aW5nczogeyBsbmc6ICdmaScgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlc2t0b3BEYXRldGltZXBpY2tlcjtcbiIsImZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVJbmplY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgdG9kYXk6ICdIZXV0ZScsXG4gICAgdG9tb3Jyb3c6ICdNb3JnZW4nLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ1NjaGxpZcOfZSBkaWUgQXVzd2FobCcsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2VkJzogJ0F1c3dhaGwgZ2VzY2hsb3NzZW4nLFxuICAgICdhY2Nlc3NpYmxlLW9wZW4nOiAnw5ZmZm5lIGRpZSBBdXN3YWhsJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuZWQnOiAnQXVzd2FobCBnZcO2ZmZuZXQnLFxuICAgICdhY2Nlc3NpYmxlLXRpdGxlJzogJ0RhdHVtIHVuZCBVaHJ6ZWl0YXVzd2FobCcsXG4gICAgYXJyaXZhbDogJ0Fua3VuZnQnLFxuICAgIGRhdGU6ICdEYXR1bScsXG4gICAgZGVwYXJ0dXJlOiAnQWJmYWhydCcsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnQWJmYWhydCBqZXR6dCcsXG4gICAgJ2Nob29zZS10aW1lJzogJ1plaXQgd8OkaGxlbicsXG4gICAgcmVhZHk6ICdGZXJ0aWcnLFxuICAgIHRpbWU6ICdaZWl0JyxcbiAgICBjYW5jZWw6ICdBYmJyZWNoZW4nLFxuICB9LFxuICBlbjoge1xuICAgIHRvZGF5OiAnVG9kYXknLFxuICAgIHRvbW9ycm93OiAnVG9tb3Jyb3cnLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ0Nsb3NlIHRoZSBwaWNrZXInLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlZCc6ICdUaW1lcGlja2VyIGNsb3NlZCcsXG4gICAgJ2FjY2Vzc2libGUtb3Blbic6ICdPcGVuIHRoZSBwaWNrZXInLFxuICAgICdhY2Nlc3NpYmxlLW9wZW5lZCc6ICdUaW1lcGlja2VyIG9wZW5lZCcsXG4gICAgJ2FjY2Vzc2libGUtdGl0bGUnOiAnRGF0ZSBhbmQgdGltZXBpY2tlcicsXG4gICAgJ2FjY2Vzc2libGUtdXBkYXRlLWluc3RydWN0aW9ucyc6XG4gICAgICAnQ2hhbmdpbmcgdGltZSBwYXJhbWV0ZXJzIHdpbGwgdHJpZ2dlciBhIG5ldyBzZWFyY2guJyxcbiAgICBhcnJpdmFsOiAnQXJyaXZhbCcsXG4gICAgZGF0ZTogJ0RhdGUnLFxuICAgIGRlcGFydHVyZTogJ0RlcGFydHVyZScsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnTGVhdmluZyBub3cnLFxuICAgIHRpbWU6ICdUaW1lJyxcbiAgICAnY2hvb3NlLXRpbWUnOiAnQ2hvb3NlIHRpbWUnLFxuICAgIHJlYWR5OiAnUmVhZHknLFxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgJ2ludmFsaWQtaW5wdXQnOiAnVGhlIHRpbWUgeW91IGVudGVyZWQgaXMgaW52YWxpZCcsXG4gIH0sXG4gIGZpOiB7XG4gICAgdG9kYXk6ICdUw6Ruw6TDpG4nLFxuICAgIHRvbW9ycm93OiAnSHVvbWVubmEnLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ1N1bGplIHZhbGl0c2luJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZWQnOiAnVmFsaXRzaW4gc3VsamV0dHUnLFxuICAgICdhY2Nlc3NpYmxlLW9wZW4nOiAnQXZhYSB2YWxpdHNpbicsXG4gICAgJ2FjY2Vzc2libGUtb3BlbmVkJzogJ1ZhbGl0c2luIGF2YXR0dScsXG4gICAgJ2FjY2Vzc2libGUtdGl0bGUnOiAnQWlrYS0gamEgcMOkaXbDpG3DpMOkcsOkdmFsaXRzaW4nLFxuICAgICdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnOlxuICAgICAgJ0Fpa2F2YWxpbnRvamVuIG11dXR0YW1pbmVuIGxhdWthaXNlZSB1dWRlbiBoYXVuLicsXG4gICAgYXJyaXZhbDogJ1BlcmlsbMOkJyxcbiAgICBkYXRlOiAnUMOkaXbDpCcsXG4gICAgZGVwYXJ0dXJlOiAnTMOkaHTDtmFpa2EnLFxuICAgICdkZXBhcnR1cmUtbm93JzogJ0zDpGh0w7Ygbnl0JyxcbiAgICB0aW1lOiAnQWlrYScsXG4gICAgJ2Nob29zZS10aW1lJzogJ1ZhbGl0c2UgYWlrYScsXG4gICAgcmVhZHk6ICdWYWxtaXMnLFxuICAgIGNhbmNlbDogJ1BlcnV1dGEnLFxuICAgICdpbnZhbGlkLWlucHV0JzogJ1N5w7Z0dMOkbcOkc2kgYWlrYSBvbiB2aXJoZWVsbGluZW4nLFxuICB9LFxuICBwbDoge1xuICAgIHRvZGF5OiAnRHppxZsnLFxuICAgIHRvbW9ycm93OiAnSnV0cm8nLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlJzogJ1phbWtuaWogd3lib3JuaWsnLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlZCc6ICdaYW1rbmnEmXRvIHd5Ym9ybmlrJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuJzogJ090d8Ozcnogd3lib3JuaWsnLFxuICAgICdhY2Nlc3NpYmxlLW9wZW5lZCc6ICdPdHdhcnRvIHd5Ym9ybmlrJyxcbiAgICAnYWNjZXNzaWJsZS10aXRsZSc6ICdXeWLDs3IgZGF0eSBpIGdvZHppbnknLFxuICAgICdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnOlxuICAgICAgJ1ptaWFuYSB3eWJyYW5laiBnb2R6aW55IHd5d2/FgmEgbm93ZSB3eXN6dWtpd2FuaWUuJyxcbiAgICBhcnJpdmFsOiAnUHJ6eWphemQnLFxuICAgIGRhdGU6ICdEYXRhJyxcbiAgICBkZXBhcnR1cmU6ICdXeWphemQnLFxuICAgICdkZXBhcnR1cmUtbm93JzogJ1d5amXFvGTFvGFtIHRlcmF6JyxcbiAgICB0aW1lOiAnR29kemluYScsXG4gICAgJ2Nob29zZS10aW1lJzogJ1d5YmllcnogZ29kemluxJknLFxuICAgIHJlYWR5OiAnR290b3dlJyxcbiAgICBjYW5jZWw6ICdBbnVsdWonLFxuICAgICdpbnZhbGlkLWlucHV0JzogJ1dwcm93YWR6b25hIGdvZHppbmEgamVzdCBuaWVwcmF3aWTFgm93YScsXG4gIH0sXG4gIHN2OiB7XG4gICAgdG9kYXk6ICdJIGRhZycsXG4gICAgdG9tb3Jyb3c6ICdJIG1vcmdvbicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2UnOiAnU3TDpG5nIHbDpGxqYXJlbicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2VkJzogJ1bDpGxqYXJlbiBzdMOkbmdkZScsXG4gICAgJ2FjY2Vzc2libGUtb3Blbic6ICfDlnBwbmEgdsOkbGphcmVuJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuZWQnOiAnVsOkbGphcmVuIMO2cHBuYWRlJyxcbiAgICAnYWNjZXNzaWJsZS10aXRsZSc6ICdUaWQtIG9jaCBkYXR1bXbDpGxqYXJlbicsXG4gICAgJ2FjY2Vzc2libGUtdXBkYXRlLWluc3RydWN0aW9ucyc6XG4gICAgICAnT20gZHUgw6RuZHJhciB0aWRlcm5hLCBzdGFydGFzIGVuIG55IHPDtmtuaW5nIGF1dG9tYXRpc2t0LicsXG4gICAgYXJyaXZhbDogJ0FubMOkbmRlcicsXG4gICAgZGF0ZTogJ0RhdHVtJyxcbiAgICBkZXBhcnR1cmU6ICdBdmfDpW5nc3RpZCcsXG4gICAgJ2RlcGFydHVyZS1ub3cnOiAnQXZnw6VyIG51JyxcbiAgICB0aW1lOiAnVGlkJyxcbiAgICAnY2hvb3NlLXRpbWUnOiAnVsOkbGogdGlkJyxcbiAgICByZWFkeTogJ0bDpHJkaWcnLFxuICAgIGNhbmNlbDogJ0F2YnJ5dCcsXG4gICAgJ2ludmFsaWQtaW5wdXQnOiAnVGlkZW4gZHUgYW5nYXYgw6RyIGZlbGFrdGlnJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRyYW5zbGF0aW9ucztcbiIsIi8qKlxuICogIERldGVjdCBpZiB1c2VyIGlzIG9uIGEgbW9iaWxlIGRldmljZSBieSBwYXJzaW5nIHVzZXJBZ2VudC4gVGhpcyBpcyBub3QgMTAwJSByZWxpYWJsZSBidXQgY2xvc2UgZW5vdWdoLlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzTW9iaWxlKCkge1xuICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgd2luZG93Lm9wZXJhO1xuICBjb25zdCBtb2JpbGUgPVxuICAgIC8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyBjZXx4ZGF8eGlpbm8vaS50ZXN0KFxuICAgICAgdXNlckFnZW50LFxuICAgICk7XG4gIHJldHVybiBtb2JpbGU7XG59XG5cbi8qKlxuICogRGV0ZWN0IGlmIHVzZXIgaXMgb24gYW4gYW5kcm9pZCBkZXZpY2UuIE5vdCAxMDAlIHJlbGlhYmxlLlxuICovXG5mdW5jdGlvbiBpc0FuZHJvaWQoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHVzZXJBZ2VudC5pbmRleE9mKCdhbmRyb2lkJykgPiAtMTtcbn1cblxuZXhwb3J0IHsgaXNNb2JpbGUsIGlzQW5kcm9pZCB9O1xuIiwiaW1wb3J0IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuICB2YXIga2V5LCBpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldO1xuICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuICBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59IiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgQXV0b3N1Z2dlc3QgZnJvbSAncmVhY3QtYXV0b3N1Z2dlc3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB7IGlzQW5kcm9pZCB9IGZyb20gJy4vbW9iaWxlRGV0ZWN0aW9uJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIGRhdGUgaW5wdXQgb24gbW9iaWxlXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZURhdGVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgZ2V0RGlzcGxheSxcbiAgb25DaGFuZ2UsXG4gIGl0ZW1Db3VudCxcbiAgc3RhcnRUaW1lLFxuICBpZCxcbiAgbGFiZWwsXG4gIGljb24sXG4gIHRpbWVab25lLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG5cbiAgY29uc3QgW29wZW4sIGNoYW5nZU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzY3JvbGxSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGRhdGVDaG9pY2VzID0gQXJyYXkoaXRlbUNvdW50KVxuICAgIC5maWxsKClcbiAgICAubWFwKChfLCBpKSA9PiBtb21lbnQoc3RhcnRUaW1lKS5hZGQoaSwgJ2RheScpLnZhbHVlT2YoKSk7XG4gIGNvbnN0IG1pbnV0ZSA9IDEwMDAgKiA2MDtcbiAgY29uc3QgZGlmZnMgPSBkYXRlQ2hvaWNlcy5tYXAodCA9PiB2YWx1ZSAtIHQpO1xuICBjb25zdCBzY3JvbGxJbmRleCA9IGRpZmZzLmZpbmRJbmRleCh0ID0+IHQgPCBtaW51dGUpOyAvLyB3aGVuIHRpbWUgaXMgbm93LCB0aGUgdGltZXMgbWlnaHQgZGlmZmVyIGJ5IGxlc3MgdGhhbiBvbmUgbWludXRlXG4gIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSA1MDtcbiAgLy8gc2Nyb2xsIHRvIHNlbGVjdGVkIHRpbWUgd2hlbiBkcm9wZG93biBpcyBvcGVuZWRcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlbiAmJiBzY3JvbGxSZWYuY3VycmVudCkge1xuICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gZWxlbWVudEhlaWdodCAqIHNjcm9sbEluZGV4O1xuICAgIH1cbiAgfSwgW3ZhbHVlLCBvcGVuXSk7XG4gIGNvbnN0IG5hdGl2ZUlucHV0ID0gIWlzQW5kcm9pZCgpO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydpbnB1dC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICA8c3Bhbj57aWNvbn08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtuYXRpdmVJbnB1dCA/IChcbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydtb2JpbGUtaW5wdXQtZGlzcGxheSddfVxuICAgICAgICAgIG9uQ2hhbmdlPXtlID0+IG9uQ2hhbmdlKE51bWJlcihlLnRhcmdldC52YWx1ZSkpfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgPlxuICAgICAgICAgIHtkYXRlQ2hvaWNlcy5tYXAoZGF0ZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8b3B0aW9uIGtleT17ZGF0ZX0gdmFsdWU9e2RhdGV9PlxuICAgICAgICAgICAgICAgIHtnZXREaXNwbGF5KGRhdGUpfVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgKSA6IChcbiAgICAgICAgPEF1dG9zdWdnZXN0XG4gICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgIHN1Z2dlc3Rpb25zPXtkYXRlQ2hvaWNlc31cbiAgICAgICAgICBnZXRTdWdnZXN0aW9uVmFsdWU9e3MgPT4gcy50b1N0cmluZygpfVxuICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb249e3MgPT4gZ2V0RGlzcGxheShzKX1cbiAgICAgICAgICBvblN1Z2dlc3Rpb25zRmV0Y2hSZXF1ZXN0ZWQ9eygpID0+IG51bGx9XG4gICAgICAgICAgc2hvdWxkUmVuZGVyU3VnZ2VzdGlvbnM9eygpID0+IHRydWV9XG4gICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgdmFsdWU6IGdldERpc3BsYXkodmFsdWUpLFxuICAgICAgICAgICAgb25DaGFuZ2U6IChfLCB7IG5ld1ZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UoTnVtYmVyKG5ld1ZhbHVlKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Gb2N1czogKCkgPT4ge1xuICAgICAgICAgICAgICBjaGFuZ2VPcGVuKHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogbGFiZWxJZCxcbiAgICAgICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJyxcbiAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrPXtmYWxzZX1cbiAgICAgICAgICBvblN1Z2dlc3Rpb25zQ2xlYXJSZXF1ZXN0ZWQ9eygpID0+IG51bGx9XG4gICAgICAgICAgcmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXI9eyh7IGNvbnRhaW5lclByb3BzLCBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICAgICAgICAvLyBzZXQgcmVmcyBmb3IgYXV0b3N1Z2dlc3QgbGlicmFyeSBhbmQgc2Nyb2xsYmFyIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICBjb25zdCB7IHJlZiwgLi4ub3RoZXJSZWZzIH0gPSBjb250YWluZXJQcm9wcztcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IGVsZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgIHNjcm9sbFJlZi5jdXJyZW50ID0gZWxlbTtcbiAgICAgICAgICAgICAgICByZWYoZWxlbSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8ZGl2IHRhYkluZGV4PVwiLTFcIiB7Li4ub3RoZXJSZWZzfSByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICB0aGVtZT17c3R5bGVzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2xhYmVsPlxuICApO1xufVxuTW9iaWxlRGF0ZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpdGVtQ291bnQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgc3RhcnRUaW1lOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGljb246IFByb3BUeXBlcy5ub2RlLFxuICBkYXRlVGltZUNvbWJpbmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5Nb2JpbGVEYXRlcGlja2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgaWNvbjogbnVsbCxcbiAgZGF0ZVRpbWVDb21iaW5lZDogZmFsc2UsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZURhdGVwaWNrZXI7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNlTGF5b3V0RWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuc2Nzcyc7XG5pbXBvcnQgeyBwYXJzZVR5cGVkVGltZSwgZ2V0VHMsIHZhbGlkYXRlSW5wdXQgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIHRpbWUgaW5wdXQgb24gbW9iaWxlXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZVRpbWVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgZ2V0RGlzcGxheSxcbiAgb25DaGFuZ2UsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbiAgdGltZVpvbmUsXG59KSB7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBjaGFuZ2VJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgY29uc3QgW2lzVmFsaWRJbnB1dCwgc2V0VmFsaWRJbnB1dF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIGNvbnN0IHRpbWVJbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGltZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHRpbWVJbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbXSk7XG4gIGNvbnN0IHNob3dFcnJvciA9ICFpc1ZhbGlkSW5wdXQ7XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydpbnB1dC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICA8c3Bhbj57aWNvbn08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBpZD17aW5wdXRJZH1cbiAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgbWF4TGVuZ3RoPVwiNlwiXG4gICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgc3R5bGVzWyd0aW1lLWlucHV0LW1vYmlsZSddLFxuICAgICAgICAgIHNob3dFcnJvciA/ICdtb2JpbGUtZGF0ZXRpbWVwaWNrZXItaW52YWxpZC1pbnB1dCcgOiAnJyxcbiAgICAgICAgKX1cbiAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIG9uRm9jdXM9e2UgPT4ge1xuICAgICAgICAgIGUudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKDAsIDApOyAvLyBzZXQgY2FyZXQgdG8gc3RhcnQgb2YgaW5wdXRcbiAgICAgICAgfX1cbiAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IHtcbiAgICAgICAgICBsZXQgbmV3VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWUucmVwbGFjZSgnLicsICc6Jyk7XG5cbiAgICAgICAgICBjb25zdCB2YWxpZCA9IHZhbGlkYXRlSW5wdXQobmV3VmFsdWUpO1xuICAgICAgICAgIHNldFZhbGlkSW5wdXQodmFsaWQpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIC8vIG51bWJlciB0eXBlZCBhcyBmaXJzdCBjaGFyID0+IGNsZWFyIHJlc3Qgb2YgdGhlIGlucHV0XG4gICAgICAgICAgICBuZXdWYWx1ZS5tYXRjaCgvWzAtOV17M306WzAtOV17Mn0vKSAmJlxuICAgICAgICAgICAgbmV3VmFsdWUuc2xpY2UoMSkgPT09IGlucHV0VmFsdWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUuY2hhckF0KDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmV3VmFsdWUubGVuZ3RoID4gNSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhY3R1YWwgPSBwYXJzZVR5cGVkVGltZShuZXdWYWx1ZSk7XG4gICAgICAgICAgY2hhbmdlSW5wdXRWYWx1ZShhY3R1YWwpO1xuICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IGdldFRzKGFjdHVhbCwgdmFsdWUpO1xuICAgICAgICAgIGlmICh0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKHRpbWVzdGFtcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICByZWY9e3RpbWVJbnB1dFJlZn1cbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cbiAgKTtcbn1cbk1vYmlsZVRpbWVwaWNrZXIucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXREaXNwbGF5OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuTW9iaWxlVGltZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGljb246IG51bGwsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZVRpbWVwaWNrZXI7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2ZpJztcbmltcG9ydCAnbW9tZW50L2xvY2FsZS9zdic7XG5pbXBvcnQgJ21vbWVudC9sb2NhbGUvZGUnO1xuaW1wb3J0IHVuaXF1ZUlkIGZyb20gJ2xvZGFzaC91bmlxdWVJZCc7XG5pbXBvcnQgaTE4bmV4dCBmcm9tICdpMThuZXh0JztcbmltcG9ydCBNb2RhbCBmcm9tICdyZWFjdC1tb2RhbCc7XG5pbXBvcnQgSWNvbiBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1pY29uJztcbmltcG9ydCBNb2JpbGVEYXRlcGlja2VyIGZyb20gJy4vTW9iaWxlRGF0ZXBpY2tlcic7XG5pbXBvcnQgTW9iaWxlVGltZXBpY2tlciBmcm9tICcuL01vYmlsZVRpbWVwaWNrZXInO1xuaW1wb3J0IHRyYW5zbGF0aW9ucyBmcm9tICcuL3RyYW5zbGF0aW9ucyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLnNjc3MnO1xuXG5tb21lbnQubG9jYWxlKCdlbicpO1xuaTE4bmV4dC5pbml0KHsgbG5nOiAnZW4nLCByZXNvdXJjZXM6IHt9IH0pO1xuT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5mb3JFYWNoKGxhbmcgPT5cbiAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5nLCAndHJhbnNsYXRpb24nLCB0cmFuc2xhdGlvbnNbbGFuZ10pLFxuKTtcblxuLyoqXG4gKiBUT0RPXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZVBpY2tlck1vZGFsKHtcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsLFxuICBvbk5vd0NsaWNrLFxuICBsYW5nLFxuICBjb2xvcixcbiAgdGltZVpvbmUsXG4gIG9uU3VibWl0LFxuICBvbkNhbmNlbCxcbiAgdGltZXN0YW1wLFxuICBnZXRUaW1lRGlzcGxheSxcbiAgZGF0ZVNlbGVjdEl0ZW1Db3VudCxcbiAgZ2V0RGF0ZURpc3BsYXksXG4gIGZvbnRXZWlnaHRzLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG4gIGNvbnN0IHRyYW5zbGF0aW9uU2V0dGluZ3MgPSB7IGxuZzogbGFuZyB9O1xuXG4gIGNvbnN0IFtkaXNwbGF5VGltZXN0YW1wLCBjaGFuZ2VUaW1lc3RhbXBdID0gdXNlU3RhdGUodGltZXN0YW1wKTtcblxuICBjb25zdCBbZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCwgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsXSA9XG4gICAgdXNlU3RhdGUoZGVwYXJ0dXJlT3JBcnJpdmFsKTtcblxuICBmdW5jdGlvbiBvbkFycml2YWxDbGljaygpIHtcbiAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwoJ2Fycml2YWwnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRGVwYXJ0dXJlQ2xpY2soKSB7XG4gICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKCdkZXBhcnR1cmUnKTtcbiAgfVxuXG4gIC8vIGZvciBpbnB1dCBsYWJlbHNcbiAgY29uc3QgW2h0bWxJZF0gPSB1c2VTdGF0ZSh1bmlxdWVJZCgnZGF0ZXRpbWVwaWNrZXItJykpO1xuICBjb25zdCBkYXRlU2VsZWN0U3RhcnRUaW1lID0gbW9tZW50KClcbiAgICAuc3RhcnRPZignZGF5JylcbiAgICAuaG91cihtb21lbnQoZGlzcGxheVRpbWVzdGFtcCkuaG91cigpKVxuICAgIC5taW51dGUobW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLm1pbnV0ZSgpKVxuICAgIC52YWx1ZU9mKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8TW9kYWxcbiAgICAgIGFwcEVsZW1lbnQ9e2RvY3VtZW50ID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2FwcCcpIDogdW5kZWZpbmVkfVxuICAgICAgaXNPcGVuXG4gICAgICBjbGFzc05hbWU9e3N0eWxlc1snbW9iaWxlLW1vZGFsLWNvbnRlbnQnXX1cbiAgICAgIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1snbW9iaWxlLW1vZGFsLW92ZXJsYXknXX1cbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgJy0tY29sb3InOiBgJHtjb2xvcn1gLFxuICAgICAgICAgICctLWZvbnQtd2VpZ2h0LW1lZGl1bSc6IGZvbnRXZWlnaHRzLm1lZGl1bSxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1sndG9wLXJvdyddfT5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXNbJ21vZGFsLXRpdGxlJ119PlxuICAgICAgICAgICAge2kxOG5leHQudCgnY2hvb3NlLXRpbWUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2RlcGFydHVyZS1ub3ctYnV0dG9uJ119XG4gICAgICAgICAgICBvbkNsaWNrPXtvbk5vd0NsaWNrfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2RlcGFydHVyZS1ub3cnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3RhYi1yb3cnXX0+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPXtgJHtodG1sSWR9LW1vZGFsLWRlcGFydHVyZWB9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1sncmFkaW8tdGFiLWxhYmVsJ119XG4gICAgICAgICAgICAgICAgJHtcbiAgICAgICAgICAgICAgICAgIHN0eWxlc1tcbiAgICAgICAgICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCA9PT0gJ2RlcGFydHVyZSdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdhY3RpdmUnXG4gICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdkZXBhcnR1cmUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1tb2RhbC1kZXBhcnR1cmVgfVxuICAgICAgICAgICAgICBuYW1lPVwiZGVwYXJ0dXJlT3JBcnJpdmFsXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJkZXBhcnR1cmVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbiddfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uRGVwYXJ0dXJlQ2xpY2soKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCA9PT0gJ2RlcGFydHVyZSd9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPXtgJHtodG1sSWR9LW1vZGFsLWFycml2YWxgfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRhYi1sYWJlbCddfVxuICAgICAgICAgICAgICAgICR7XG4gICAgICAgICAgICAgICAgICBzdHlsZXNbXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQgPT09ICdhcnJpdmFsJ1xuICAgICAgICAgICAgICAgICAgICAgID8gJ2FjdGl2ZSdcbiAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2Fycml2YWwnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1tb2RhbC1hcnJpdmFsYH1cbiAgICAgICAgICAgICAgbmFtZT1cImRlcGFydHVyZU9yQXJyaXZhbFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIHZhbHVlPVwiYXJyaXZhbFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydyYWRpby10ZXh0YnV0dG9uJ119XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgb25BcnJpdmFsQ2xpY2soKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCA9PT0gJ2Fycml2YWwnfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snaW5wdXQtcm93J119PlxuICAgICAgICAgIDxNb2JpbGVEYXRlcGlja2VyXG4gICAgICAgICAgICB2YWx1ZT17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGdldERpc3BsYXk9e2dldERhdGVEaXNwbGF5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2NoYW5nZVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGl0ZW1Db3VudD17ZGF0ZVNlbGVjdEl0ZW1Db3VudH1cbiAgICAgICAgICAgIHN0YXJ0VGltZT17ZGF0ZVNlbGVjdFN0YXJ0VGltZX1cbiAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LWRhdGVgfVxuICAgICAgICAgICAgbGFiZWw9e2kxOG5leHQudCgnZGF0ZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ2RhdGUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJjYWxlbmRhclwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPE1vYmlsZVRpbWVwaWNrZXJcbiAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0VGltZURpc3BsYXl9XG4gICAgICAgICAgICBvbkNoYW5nZT17Y2hhbmdlVGltZXN0YW1wfVxuICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tdGltZWB9XG4gICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCd0aW1lJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snY29tYm9ib3gtaWNvbiddfSAke3N0eWxlc1sndGltZS1pbnB1dC1pY29uJ119YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRpbWVcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snYnV0dG9ucy1yb3cnXX0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmVhZHktYnV0dG9uJ119XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICBvblN1Ym1pdChkaXNwbGF5VGltZXN0YW1wLCBkZXBhcnR1cmVPckFycml2YWxDdXJyZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ3JlYWR5JywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snY2FuY2VsLWJ1dHRvbiddfVxuICAgICAgICAgICAgb25DbGljaz17b25DYW5jZWx9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnY2FuY2VsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9Nb2RhbD5cbiAgKTtcbn1cblxuTW9iaWxlUGlja2VyTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aW1lWm9uZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsOiBQcm9wVHlwZXMub25lT2YoWydkZXBhcnR1cmUnLCAnYXJyaXZhbCddKS5pc1JlcXVpcmVkLFxuICBvbk5vd0NsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DYW5jZWw6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXRUaW1lRGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZGF0ZVNlbGVjdEl0ZW1Db3VudDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXREYXRlRGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG59O1xuXG5Nb2JpbGVQaWNrZXJNb2RhbC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNvbG9yOiAnIzAwN2FjOScsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZVBpY2tlck1vZGFsO1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgJ21vbWVudC9sb2NhbGUvZmknO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL3N2JztcbmltcG9ydCAnbW9tZW50L2xvY2FsZS9kZSc7XG5pbXBvcnQgdW5pcXVlSWQgZnJvbSAnbG9kYXNoL3VuaXF1ZUlkJztcbmltcG9ydCBpMThuZXh0IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgRGVza3RvcERhdGV0aW1lcGlja2VyIGZyb20gJy4vRGVza3RvcERhdGV0aW1lcGlja2VyJztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi9tb2JpbGVEZXRlY3Rpb24nO1xuaW1wb3J0IGRhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCBmcm9tICcuL2RhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCc7XG5pbXBvcnQgTW9iaWxlUGlja2VyTW9kYWwgZnJvbSAnLi9Nb2JpbGVQaWNrZXJNb2RhbCc7XG5cbm1vbWVudC5sb2NhbGUoJ2VuJyk7XG5pMThuZXh0LmluaXQoe1xuICBsbmc6ICdmaScsXG4gIGZhbGxiYWNrTG5nOiAnZmknLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICB9LFxufSk7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgcmVuZGVycyBjb21ib2JveCBzdHlsZSBpbnB1dHMgZm9yIHNlbGVjdGluZyBkYXRlIGFuZCB0aW1lLiBUaGlzIGlzIGEgY29udHJvbGxlZCBjb21wb25lbnQsIHRpbWVzdGFtcCBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBib3RoIGlucHV0cy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBwcm9wcy50aW1lc3RhbXAgICAgICBDdXJyZW50bHkgc2VsZWN0ZWQgdGltZSBhcyBhIHVuaXggdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcy4gU2V0IHRvIG51bGwgdG8gc2lnbmlmeSB0aGF0IFwibm93XCIgaXMgc2VsZWN0ZWQuIERpc3BsYXllZCB0aW1lIGlzIHVwZGF0ZWQgaW4gcmVhbHRpbWUgd2hlbiBzZXQgdG8gbnVsbFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25UaW1lQ2hhbmdlICAgICAgIENhbGxlZCB3aXRoIG5ldyB0aW1lc3RhbXAgd2hlbiB0aW1lIGlucHV0IGNoYW5nZXNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uRGF0ZUNoYW5nZSAgICAgICBDYWxsZWQgd2l0aCBuZXcgdGltZXN0YW1wIHdoZW4gZGF0ZSBpbnB1dCBjaGFuZ2VzXG4gKiBAcGFyYW0geydhcnJpdmFsJ3wnZGVwYXJ0dXJlJ30gcHJvcHMuZGVwYXJ0dXJlT3JBcnJpdmFsICAgRGV0ZXJtaW5lIGlmIGlucHV0IGlzIHNldCB0byBjaG9vc2UgZGVwYXJ0dXJlIG9yIGFycml2YWwgdGltZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25Ob3dDbGljayAgICAgICAgIENhbGxlZCB3aGVuIFwiZGVwYXJ0IG5vd1wiIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRlcGFydHVyZUNsaWNrICAgQ2FsbGVkIHdoZW4gXCJkZXBhcnR1cmVcIiBidXR0b24gaXMgY2xpY2tlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25BcnJpdmFsQ2xpY2sgICAgIENhbGxlZCB3aGVuIFwiYXJyaXZhbFwiIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAcGFyYW0ge25vZGV9IHByb3BzLmVtYmVkV2hlbkNsb3NlZCAgICAgICAgSlNYIGVsZW1lbnQgdG8gcmVuZGVyIGluIHRoZSBjb3JuZXIgd2hlbiBpbnB1dCBpcyBjbG9zZWRcbiAqIEBwYXJhbSB7bm9kZX0gcHJvcHMuZW1iZWRXaGVuT3BlbiAgICAgICAgICBKU1ggZWxlbWVudCB0byByZW5kZXIgd2hlbiBpbnB1dCBpcyBvcGVuXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMubGFuZyAgICAgICAgICAgICAgICAgTGFuZ3VhZ2Ugc2VsZWN0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2VydmljZVRpbWVSYW5nZSAgICAgICAgICAgRGV0ZXJtaW5lIG51bWJlciBvZiBkYXlzIHNob3duIGluIHRpbWVwaWNrZXIuIE9wdGlvbmFsLiBkZWZhdWx0IGlzIDMwLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25PcGVuICAgICAgICAgICAgICAgICAgIERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGltZXBpY2tlciBpcyBvcGVuLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2xvc2UgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgY2xvc2VkLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9wZW5QaWNrZXIgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgdGltZXBpY2tlciBzaG91bGQgYmUgb3BlbiBpbiBpbnRpYWwgcmVuZGVyLiBPcHRpb25hbC4gRGVmYXVsdCBpcyB1bmRlZmluZWQuXG4gKlxuICpcbiAqIEBleGFtcGxlXG4gKiA8RGF0ZXRpbWVwaWNrZXJcbiAqICAgdGltZXN0YW1wPXsxNTkwMTMzODIzMDAwfVxuICogICBvblRpbWVDaGFuZ2U9eyhuZXdUaW1lc3RhbXApID0+IHVwZGF0ZShuZXdUaW1lc3RhbXApfVxuICogICBvbkRhdGVDaGFuZ2U9eyhuZXdUaW1lc3RhbXApID0+IHVwZGF0ZShuZXdUaW1lc3RhbXApfVxuICogICBkZXBhcnR1cmVPckFycml2YWw9eydkZXBhcnR1cmUnfVxuICogICBvbk5vd0NsaWNrPXsoKSA9PiBzZXRUaW1lc3RhbXBUb051bGwoKX1cbiAqICAgb25EZXBhcnR1cmVDbGljaz17KCkgPT4gZGVwYXJ0dXJlQ2xpY2tlZCgpfVxuICogICBvbkFycml2YWxDbGljaz17KCkgPT4gYXJyaXZhbENsaWNrZWQoKX1cbiAqICAgZW1iZWRXaGVuQ2xvc2VkPXs8YnV0dG9uIC8+fVxuICogICBsYW5nPXsnZW4nfVxuICogICBzZXJ2aWNlVGltZVJhbmdlPXsxNX1cbiAqIC8+XG4gKi9cbmZ1bmN0aW9uIERhdGV0aW1lcGlja2VyKHtcbiAgdGltZXN0YW1wLFxuICBvblRpbWVDaGFuZ2UsXG4gIG9uRGF0ZUNoYW5nZSxcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsLFxuICBvbk5vd0NsaWNrLFxuICBvbkRlcGFydHVyZUNsaWNrLFxuICBvbkFycml2YWxDbGljayxcbiAgZW1iZWRXaGVuQ2xvc2VkLFxuICBlbWJlZFdoZW5PcGVuLFxuICBsYW5nLFxuICBjb2xvcixcbiAgdGltZVpvbmUsXG4gIG9uTW9kYWxTdWJtaXQsXG4gIGZvbnRXZWlnaHRzLFxuICBzZXJ2aWNlVGltZVJhbmdlLFxuICBvbk9wZW4sXG4gIG9uQ2xvc2UsXG4gIG9wZW5QaWNrZXIsXG59KSB7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgW2lzT3BlbiwgY2hhbmdlT3Blbl0gPSB1c2VTdGF0ZShvcGVuUGlja2VyIHx8IGZhbHNlKTtcbiAgY29uc3QgW2Rpc3BsYXlUaW1lc3RhbXAsIGNoYW5nZURpc3BsYXlUaW1lc3RhbXBdID0gdXNlU3RhdGUoXG4gICAgdGltZXN0YW1wIHx8IG1vbWVudCgpLnZhbHVlT2YoKSxcbiAgKTtcbiAgLy8gdGltZXIgZm9yIHVwZGF0aW5nIGRpc3BsYXlUaW1lc3RhbXAgaW4gcmVhbCB0aW1lXG4gIGNvbnN0IFt0aW1lcklkLCBzZXRUaW1lcl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgLy8gZm9yIGlucHV0IGxhYmVsc1xuICBjb25zdCBbaHRtbElkXSA9IHVzZVN0YXRlKHVuaXF1ZUlkKCdkYXRldGltZXBpY2tlci0nKSk7XG4gIGNvbnN0IFt1c2VNb2JpbGVJbnB1dHNdID0gdXNlU3RhdGUoaXNNb2JpbGUoKSAmJiBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQoKSk7XG4gIGNvbnN0IG9wZW5QaWNrZXJSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgYWxlcnRSZWYgPSB1c2VSZWYoKTtcblxuICBjb25zdCB0cmFuc2xhdGlvblNldHRpbmdzID0geyBsbmc6IGxhbmcgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIE9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5ndWFnZSA9PlxuICAgICAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5ndWFnZSwgJ3RyYW5zbGF0aW9uJywgdHJhbnNsYXRpb25zW2xhbmddKSxcbiAgICApO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBtb21lbnQubG9jYWxlKGxhbmcpO1xuICB9LCBbbGFuZ10pO1xuXG4gIGNvbnN0IG5vd1NlbGVjdGVkID0gdGltZXN0YW1wID09PSBudWxsO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChub3dTZWxlY3RlZCkge1xuICAgICAgY2hhbmdlRGlzcGxheVRpbWVzdGFtcChtb21lbnQoKS52YWx1ZU9mKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjbGVhciB0aW1lclxuICAgICAgaWYgKHRpbWVySWQpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcklkKTtcbiAgICAgICAgc2V0VGltZXIobnVsbCk7XG4gICAgICB9XG4gICAgICBjaGFuZ2VEaXNwbGF5VGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gICAgfVxuICB9LCBbdGltZXN0YW1wXSk7XG5cbiAgLy8gc2V0IHRpbWVyIHRvIHVwZGF0ZSBkaXNwbGF5VGltZXN0YW1wIHdoZW4gbWludXRlIGNoYW5nZXMgaWYgbm93U2VsZWN0ZWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW5vd1NlbGVjdGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGltZXJJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcklkKTtcbiAgICB9XG4gICAgY29uc3QgbmV3SWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG4gICAgICBjb25zdCBzYW1lTWludXRlID0gbW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLmlzU2FtZShub3csICdtaW51dGUnKTtcbiAgICAgIGlmICghc2FtZU1pbnV0ZSkge1xuICAgICAgICBjbGVhckludGVydmFsKG5ld0lkKTtcbiAgICAgICAgc2V0VGltZXIobnVsbCk7XG4gICAgICAgIGNoYW5nZURpc3BsYXlUaW1lc3RhbXAobm93KTtcbiAgICAgIH1cbiAgICB9LCA1MDAwKTtcbiAgICBzZXRUaW1lcihuZXdJZCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwobmV3SWQpO1xuICB9LCBbZGlzcGxheVRpbWVzdGFtcF0pO1xuXG4gIGNvbnN0IHByZXZJc09wZW5SZWYgPSB1c2VSZWYoKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBwcmV2SXNPcGVuUmVmLmN1cnJlbnQgPSBpc09wZW47XG4gIH0pO1xuXG4gIC8vIHBhcmFtIGRhdGUgaXMgdGltZXN0YW1wXG4gIGNvbnN0IGdldERhdGVEaXNwbGF5ID0gZGF0ZSA9PiB7XG4gICAgY29uc3QgdGltZSA9IG1vbWVudChkYXRlKTtcbiAgICBsZXQgZm9ybWF0dGVkO1xuICAgIGlmICh0aW1lLmlzU2FtZShtb21lbnQoKSwgJ2RheScpKSB7XG4gICAgICBmb3JtYXR0ZWQgPSBpMThuZXh0LnQoJ3RvZGF5JywgdHJhbnNsYXRpb25TZXR0aW5ncyk7XG4gICAgfSBlbHNlIGlmICh0aW1lLmlzU2FtZShtb21lbnQoKS5hZGQoMSwgJ2RheScpLCAnZGF5JykpIHtcbiAgICAgIGZvcm1hdHRlZCA9IGkxOG5leHQudCgndG9tb3Jyb3cnLCB0cmFuc2xhdGlvblNldHRpbmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybWF0dGVkID0gdGltZS5mb3JtYXQoJ2RkIEQuTS4nKTtcbiAgICB9XG4gICAgZm9ybWF0dGVkID0gYCR7Zm9ybWF0dGVkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7Zm9ybWF0dGVkLnNsaWNlKDEpfWA7XG4gICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgfTtcblxuICAvLyBwYXJhbSB0aW1lIGlzIHRpbWVzdGFtcFxuICBjb25zdCBnZXRUaW1lRGlzcGxheSA9IHRpbWUgPT4ge1xuICAgIHJldHVybiBtb21lbnQodGltZSkuZm9ybWF0KCdISDptbScpO1xuICB9O1xuXG4gIGNvbnN0IHNlbGVjdGVkTW9tZW50ID0gbW9tZW50KGRpc3BsYXlUaW1lc3RhbXApO1xuICBjb25zdCB0aW1lU2VsZWN0U3RhcnRUaW1lID0gbW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcbiAgbGV0IHRpbWVDaG9pY2VzID0gW107XG4gIGNvbnN0IGN1cnJlbnQgPSBtb21lbnQodGltZVNlbGVjdFN0YXJ0VGltZSk7XG4gIHdoaWxlIChjdXJyZW50LmlzU2FtZSh0aW1lU2VsZWN0U3RhcnRUaW1lLCAnZGF5JykpIHtcbiAgICB0aW1lQ2hvaWNlcy5wdXNoKGN1cnJlbnQudmFsdWVPZigpKTtcbiAgICBpZiAoaXNNb2JpbGUoKSkge1xuICAgICAgY3VycmVudC5hZGQoMTUsICdtaW51dGVzJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnQuYWRkKDEsICdtaW51dGVzJyk7XG4gICAgfVxuICB9XG4gIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAvLyBpZiB0aW1lIGlzIHNldCB0byBub3dcbiAgICAvLyBhZGQgdGltZXMgaW4gNSBtaW4gaW50ZXJ2YWxzIGZvciBuZXh0IDMwIG1pbnNcbiAgICBjb25zdCBmaXZlTWludXRlcyA9IDEwMDAgKiA2MCAqIDU7XG4gICAgY29uc3QgbmV4dEZpdmVNaW4gPSBNYXRoLmNlaWwoZGlzcGxheVRpbWVzdGFtcCAvIGZpdmVNaW51dGVzKSAqIGZpdmVNaW51dGVzO1xuICAgIGNvbnN0IHRpbWVzVG9BZGQgPSBBcnJheSg3KVxuICAgICAgLmZpbGwoKVxuICAgICAgLm1hcCgoXywgaSkgPT4gbmV4dEZpdmVNaW4gKyBpICogZml2ZU1pbnV0ZXMpO1xuICAgIGNvbnN0IGNsb3Nlc3RJbmRleEFmdGVyID0gdGltZUNob2ljZXNcbiAgICAgIC5tYXAodCA9PiBkaXNwbGF5VGltZXN0YW1wIC0gdClcbiAgICAgIC5maW5kSW5kZXgodCA9PiB0IDw9IDApO1xuICAgIHRpbWVDaG9pY2VzLnNwbGljZShjbG9zZXN0SW5kZXhBZnRlciwgMCwgLi4udGltZXNUb0FkZCk7XG4gICAgdGltZUNob2ljZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQodGltZUNob2ljZXMpKTsgLy8gcmVtb3ZlIGR1cGxpY2F0ZXNcbiAgfVxuXG4gIGNvbnN0IGRhdGVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoKVxuICAgIC5zdGFydE9mKCdkYXknKVxuICAgIC5ob3VyKHNlbGVjdGVkTW9tZW50LmhvdXIoKSlcbiAgICAubWludXRlKHNlbGVjdGVkTW9tZW50Lm1pbnV0ZSgpKVxuICAgIC52YWx1ZU9mKCk7XG4gIGNvbnN0IGRhdGVDaG9pY2VzID0gQXJyYXkoc2VydmljZVRpbWVSYW5nZSlcbiAgICAuZmlsbCgpXG4gICAgLm1hcCgoXywgaSkgPT4gbW9tZW50KGRhdGVTZWxlY3RTdGFydFRpbWUpLmFkZChpLCAnZGF5JykudmFsdWVPZigpKTtcblxuICBmdW5jdGlvbiBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpIHtcbiAgICBpZiAoYWxlcnRSZWYuY3VycmVudCkge1xuICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBpMThuZXh0LnQoXG4gICAgICAgICdhY2Nlc3NpYmxlLWNsb3NlZCcsXG4gICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3MsXG4gICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGFsZXJ0UmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2hvd1NjcmVlbnJlYWRlck9wZW5BbGVydCgpIHtcbiAgICBpZiAoYWxlcnRSZWYuY3VycmVudCkge1xuICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBpMThuZXh0LnQoXG4gICAgICAgICdhY2Nlc3NpYmxlLW9wZW5lZCcsXG4gICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3MsXG4gICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGFsZXJ0UmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVuZGVyT3BlbigpIHtcbiAgICBpZiAodXNlTW9iaWxlSW5wdXRzKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBpc09wZW4gJiYgKFxuICAgICAgICAgIDxNb2JpbGVQaWNrZXJNb2RhbFxuICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsPXtkZXBhcnR1cmVPckFycml2YWx9XG4gICAgICAgICAgICBvbk5vd0NsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICBvbk5vd0NsaWNrKCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgbGFuZz17bGFuZ31cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgIG9uU3VibWl0PXsobmV3VGltZXN0YW1wLCBuZXdEZXBhcnR1cmVPckFycml2YWwpID0+IHtcbiAgICAgICAgICAgICAgb25Nb2RhbFN1Ym1pdChuZXdUaW1lc3RhbXAsIG5ld0RlcGFydHVyZU9yQXJyaXZhbCk7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGdldFRpbWVEaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgICAgICAgIHRpbWVzdGFtcD17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGdldERhdGVEaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgIGRhdGVTZWxlY3RJdGVtQ291bnQ9e3NlcnZpY2VUaW1lUmFuZ2V9XG4gICAgICAgICAgICBnZXREaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIGZvbnRXZWlnaHRzPXtmb250V2VpZ2h0c31cbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2RhdGV0aW1lcGlja2VyLW9wZW4tY29udGFpbmVyJ119ICR7XG4gICAgICAgICAgICAhaXNPcGVuID8gc3R5bGVzLmhpZGRlbiA6ICcnXG4gICAgICAgICAgfWB9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgICBpc09wZW5cbiAgICAgICAgICAgICAgICA/IGAke3N0eWxlc1sndG9wLXJvdy1jb250YWluZXInXX0gZGF0ZXRpbWVwaWNrZXItdG9wLXJvd2BcbiAgICAgICAgICAgICAgICA6IGAke3N0eWxlcy5oaWRkZW59IGRhdGV0aW1lcGlja2VyLXRvcC1yb3dgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgeycgJ31cbiAgICAgICAgICAgIDxzcGFuIHJvbGU9XCJhbGVydFwiIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119IHJlZj17YWxlcnRSZWZ9IC8+XG4gICAgICAgICAgICA8c3BhbiAvPlxuICAgICAgICAgICAgey8qIFRoaXMgZW1wdHkgc3BhbiBwcmV2ZW50cyBhIHdlaXJkIGZvY3VzIGJ1ZyBvbiBjaHJvbWUgKi99XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snZGVwYXJ0dXJlLW9yLWFycml2YWwtY29udGFpbmVyJ119PlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBodG1sRm9yPXtgJHtodG1sSWR9LWRlcGFydHVyZWB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24tbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnID8gJ2FjdGl2ZScgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtpMThuZXh0LnQoJ2RlcGFydHVyZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiZGVwYXJ0dXJlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydyYWRpby10ZXh0YnV0dG9uJ119XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvbkRlcGFydHVyZUNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnZGVwYXJ0dXJlJ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBodG1sRm9yPXtgJHtodG1sSWR9LWFycml2YWxgfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydyYWRpby10ZXh0YnV0dG9uLWxhYmVsJ119XG4gICAgICAgICAgICAgICAgJHtcbiAgICAgICAgICAgICAgICAgIHN0eWxlc1tcbiAgICAgICAgICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCcgPyAnYWN0aXZlJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2kxOG5leHQudCgnYXJyaXZhbCcsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tYXJyaXZhbGB9XG4gICAgICAgICAgICAgICAgICBuYW1lPVwiZGVwYXJ0dXJlT3JBcnJpdmFsXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cImFycml2YWxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uQXJyaXZhbENsaWNrKCk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tbm93YH1cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydkZXBhcnR1cmUtbm93LWJ1dHRvbiddfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2hvd1NjcmVlbnJlYWRlckNsb3NlQWxlcnQoKTtcbiAgICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvbk5vd0NsaWNrKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtpMThuZXh0LnQoJ2RlcGFydHVyZS1ub3cnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3JpZ2h0LWVkZ2UnXX0+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snY2xvc2UtYnV0dG9uJ119XG4gICAgICAgICAgICAgICAgYXJpYS1jb250cm9scz17YCR7aHRtbElkfS1yb290YH1cbiAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICAgICAgaWYgKG9uQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snY2xvc2UtaWNvbiddfT5cbiAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cImNsb3NlXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfT5cbiAgICAgICAgICAgICAgICAgIHtpMThuZXh0LnQoJ2FjY2Vzc2libGUtY2xvc2UnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgICAgIGlzT3BlblxuICAgICAgICAgICAgICAgID8gYCR7c3R5bGVzWydwaWNrZXItY29udGFpbmVyJ119YFxuICAgICAgICAgICAgICAgIDogYCR7c3R5bGVzLmhpZGRlbn0gZGF0ZXRpbWVwaWNrZXItdG9wLXJvd2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtbGVmdCddfT5cbiAgICAgICAgICAgICAgPERlc2t0b3BEYXRldGltZXBpY2tlclxuICAgICAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtuZXdWYWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICBvbkRhdGVDaGFuZ2UobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0RGF0ZURpc3BsYXl9XG4gICAgICAgICAgICAgICAgdGltZUNob2ljZXM9e2RhdGVDaG9pY2VzfVxuICAgICAgICAgICAgICAgIHZhbGlkYXRlPXsoKSA9PiBudWxsfVxuICAgICAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ2RhdGUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cImNhbGVuZGFyXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1kYXRlYH1cbiAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCdkYXRlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZVR5cGluZ1xuICAgICAgICAgICAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgICAgICAgICAgICBkYXRlUGlja2VyXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtcmlnaHQnXX0+XG4gICAgICAgICAgICAgIDxEZXNrdG9wRGF0ZXRpbWVwaWNrZXJcbiAgICAgICAgICAgICAgICB2YWx1ZT17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17bmV3VmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UaW1lQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGdldERpc3BsYXk9e2dldFRpbWVEaXNwbGF5fVxuICAgICAgICAgICAgICAgIHRpbWVDaG9pY2VzPXt0aW1lQ2hvaWNlc31cbiAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWyd0aW1lLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS10aW1lYH1cbiAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCd0aW1lJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3M9e3RyYW5zbGF0aW9uU2V0dGluZ3N9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2lzT3BlbiA/ICcnIDogc3R5bGVzLmhpZGRlbn0+e2VtYmVkV2hlbk9wZW59PC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17aXNPcGVuID8gJ2RhdGV0aW1lcGlja2VyLWJvdHRvbS1yb3ctb3BlbicgOiAnJ30gLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2R0LWRhdGV0aW1lcGlja2VyJ119XG4gICAgICBpZD17YCR7aHRtbElkfS1yb290YH1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgICctLWNvbG9yJzogYCR7Y29sb3J9YCxcbiAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8bGVnZW5kIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLXRpdGxlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAhaXNPcGVuXG4gICAgICAgICAgICA/IGAke3N0eWxlc1sndG9wLXJvdy1jb250YWluZXInXX0gJHtzdHlsZXMuY2xvc2VkfSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgOiBgJHtzdHlsZXMuaGlkZGVufSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICB9XG4gICAgICA+XG4gICAgICAgIDxsYWJlbCBjbGFzc05hbWU9e3N0eWxlc1snbGFiZWwtb3BlbiddfSBodG1sRm9yPXtgJHtodG1sSWR9LW9wZW5gfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sndGltZS1pY29uJ119PlxuICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLW9wZW4nLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gcm9sZT1cImFsZXJ0XCIgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0gcmVmPXthbGVydFJlZn0gLz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBpZD17YCR7aHRtbElkfS1vcGVuYH1cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMudGV4dGJ1dHRvbn0gJHtzdHlsZXMuYWN0aXZlfSAke3N0eWxlc1snb3Blbi1idXR0b24nXX1gfVxuICAgICAgICAgICAgYXJpYS1jb250cm9scz17YCR7aHRtbElkfS1yb290YH1cbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4odHJ1ZSk7XG4gICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJPcGVuQWxlcnQoKTtcbiAgICAgICAgICAgICAgaWYgKG9uT3Blbikge1xuICAgICAgICAgICAgICAgIG9uT3BlbigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcmVmPXtvcGVuUGlja2VyUmVmfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICB7bm93U2VsZWN0ZWQgJiYgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnZGVwYXJ0dXJlJyA/IChcbiAgICAgICAgICAgICAgICBpMThuZXh0LnQoJ2RlcGFydHVyZS1ub3cnLCB0cmFuc2xhdGlvblNldHRpbmdzKVxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICB7aTE4bmV4dC50KFxuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnZGVwYXJ0dXJlJ1xuICAgICAgICAgICAgICAgICAgICAgIDogJ2Fycml2YWwnLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHtgICR7XG4gICAgICAgICAgICAgICAgICAgIG1vbWVudCgpLmlzU2FtZShtb21lbnQoZGlzcGxheVRpbWVzdGFtcCksICdkYXknKVxuICAgICAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgICAgICA6IGdldERhdGVEaXNwbGF5KGRpc3BsYXlUaW1lc3RhbXApLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgIH0gJHtnZXRUaW1lRGlzcGxheShkaXNwbGF5VGltZXN0YW1wKX1gfVxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ2Ryb3Bkb3duLWljb24nXX0+XG4gICAgICAgICAgICAgIDxJY29uIGltZz1cImFycm93LWRyb3Bkb3duXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sncmlnaHQtZWRnZSddfT57ZW1iZWRXaGVuQ2xvc2VkfTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAvPlxuICAgICAge3JlbmRlck9wZW4oKX1cbiAgICA8L2ZpZWxkc2V0PlxuICApO1xufVxuXG5EYXRldGltZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlcixcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uVGltZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25EYXRlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBkZXBhcnR1cmVPckFycml2YWw6IFByb3BUeXBlcy5vbmVPZihbJ2RlcGFydHVyZScsICdhcnJpdmFsJ10pLmlzUmVxdWlyZWQsXG4gIG9uTm93Q2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRGVwYXJ0dXJlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQXJyaXZhbENsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBlbWJlZFdoZW5DbG9zZWQ6IFByb3BUeXBlcy5ub2RlLFxuICBlbWJlZFdoZW5PcGVuOiBQcm9wVHlwZXMubm9kZSxcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25Nb2RhbFN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgb25PcGVuOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9wZW5QaWNrZXI6IFByb3BUeXBlcy5ib29sLFxufTtcblxuRGF0ZXRpbWVwaWNrZXIuZGVmYXVsdFByb3BzID0ge1xuICB0aW1lc3RhbXA6IG51bGwsXG4gIGVtYmVkV2hlbkNsb3NlZDogbnVsbCxcbiAgZW1iZWRXaGVuT3BlbjogbnVsbCxcbiAgY29sb3I6ICcjMDA3YWM5JyxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxuICBvbk9wZW46IG51bGwsXG4gIG9uQ2xvc2U6IG51bGwsXG4gIG9wZW5QaWNrZXI6IHVuZGVmaW5lZCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhdGV0aW1lcGlja2VyO1xuIiwiLyoqXG4gKiBEZXRlY3QgaWYgaW5wdXQgdHlwZT1cImRhdGVcIiBhbmQgdHlwZT1cInRpbWVcIiBhcmUgc3VwcG9ydGVkIGluIGJ5IHRoZSBicm93c2VyXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkKCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgd2luZG93ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICBlbGVtLnR5cGUgPSAnZGF0ZSc7XG4gIGlmIChlbGVtLnR5cGUgIT09ICdkYXRlJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBlbGVtLnR5cGUgPSAndGltZSc7XG4gIGlmIChlbGVtLnR5cGUgIT09ICd0aW1lJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkO1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5pbXBvcnQgRGF0ZXRpbWVwaWNrZXIgZnJvbSAnLi9oZWxwZXJzL0RhdGV0aW1lcGlja2VyJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCByZW5kZXJzIGFuIGlucHV0IHRvIGNob29zZSBhIGRhdGUgYW5kIHRpbWUuIFJlbmRlcnMgc2VwYXJhdGUgaW5wdXQgZmllbGRzIGZvciBkYXRlIGFuZCB0aW1lIHNlbGVjdGlvbi4gVmFsdWVzIGZvciB0aW1lc3RhbXAgYW5kIGFycml2ZUJ5IGNvcnJlc3BvbmQgdG8gRGlnaXRyYW5zaXQgcXVlcnkgcGFyYW1zIHRpbWUgYW5kIGFycml2ZUJ5LiBUaGlzIGNvbXBvbmVudCB3aWxsIGRpc3BsYXkgYSBuYXRpdmUgZGF0ZSBpbnB1dCBvbiBtb2JpbGUgYW5kIGEgY3VzdG9tIG9uZSBmb3IgZGVza3RvcC4gTW9iaWxlIGRldGVjdGlvbiBpcyBkb25lIGJ5IHBhcnNpbmcgdXNlciBhZ2VudC5cbiAqXG4gKiBAYWxpYXMgRGF0ZXRpbWVwaWNrZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHNcbiAqXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHByb3BzLnJlYWx0aW1lICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGlmIHNlbGVjdGVkIHRpbWUgc2hvdWxkIGJlIHVwZGF0ZWQgaW4gcmVhbHRpbWUgd2hlbiAnbm93JyBpcyBzZWxlY3RlZC5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwcm9wcy5pbml0aWFsVGltZXN0YW1wICAgICAgICAgICBJbml0aWFsIHZhbHVlIGZvciBzZWxlY3RlZCB0aW1lLiBVbml4IHRpbWVzdGFtcCBpbiBzZWNvbmRzLiBVcGRhdGluZyB0aGlzIHdpbGwgY2hhbmdlIHRpbWVwaWNrZXIgdmFsdWUgYnV0IHRoZSBjb3JyZWN0IHZhbHVlIGlzIGtlcHQgaW4gY29tcG9uZW50IHN0YXRlIGV2ZW4gaWYgdGhpcyBpcyBub3QgdXBkYXRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMuaW5pdGlhbEFycml2ZUJ5ICAgICAgICAgICBJbml0aWFsIHZhbHVlIGZvciBhcnJpdmVCeS4gRGV0ZXJtaW5lcyBpZiBwaWNrZXIgaXMgaW4gYXJyaXZhbCBtb2RlICh0cnVlKSBvciBkZXBhcnR1cmUgbW9kZSAoZmFsc2UpLiBDb3JyZWN0IHZhbHVlIGlzIGtlcHQgaW4gY29tcG9uZW50IHN0YXRlIGV2ZW4gaWYgdGhpcyBpcyBub3QgdXBkYXRlZC4gQ2hhbmdpbmcgdGhpcyB3aWxsIGFsc28gdHJpZ2dlciBjaGFuZ2UgaW4gdGhlIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uVGltZUNoYW5nZSAgICAgICAgICAgICBDYWxsZWQgd2l0aCAodGltZSwgYXJyaXZlQnkpIHdoZW4gdGltZSBpbnB1dCBjaGFuZ2VzLiB0aW1lIGlzIG51bWJlciB0aW1lc3RhbXAgaW4gc2Vjb25kcywgYXJyaXZlQnkgaXMgYm9vbGVhblxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25EYXRlQ2hhbmdlICAgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lLCBhcnJpdmVCeSkgd2hlbiBkYXRlIGlucHV0IGNoYW5nZXMuIHRpbWUgaXMgbnVtYmVyIHRpbWVzdGFtcCBpbiBzZWNvbmRzLCBhcnJpdmVCeSBpcyBib29sZWFuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbk5vd0NsaWNrICAgICAgICAgICAgICAgQ2FsbGVkIHdoZW4gXCJkZXBhcnQgbm93XCIgYnV0dG9uIGlzIGNsaWNrZWQuIHRpbWUgaXMgY3VycmVudCBpbnB1dCB2YWx1ZSBpbiBzZWNvbmRzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRlcGFydHVyZUNsaWNrICAgICAgICAgQ2FsbGVkIHdpdGggKHRpbWUpIHdoZW4gXCJkZXBhcnR1cmVcIiBidXR0b24gaXMgY2xpY2tlZC4gdGltZSBpcyBjdXJyZW50IGlucHV0IHZhbHVlIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQXJyaXZhbENsaWNrICAgICAgICAgICBDYWxsZWQgd2l0aCAodGltZSkgd2hlbiBcImFycml2YWxcIiBidXR0b24gaXMgY2xpY2tlZC4gdGltZSBpcyBjdXJyZW50IGlucHV0IHZhbHVlIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7bm9kZX0gcHJvcHMuZW1iZWRXaGVuQ2xvc2VkICAgICAgICAgICAgICBKU1ggZWxlbWVudCB0byByZW5kZXIgaW4gdGhlIGNvcm5lciB3aGVuIGlucHV0IGlzIGNsb3NlZFxuICogQHBhcmFtIHtub2RlfSBwcm9wcy5lbWJlZFdoZW5PcGVuICAgICAgICAgICAgICAgIEpTWCBlbGVtZW50IHRvIHJlbmRlciB3aGVuIGlucHV0IGlzIG9wZW5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5sYW5nICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZSBzZWxlY3Rpb24uIERlZmF1bHQgJ2VuJ1xuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnNlcnZpY2VUaW1lUmFuZ2UgICAgICAgICAgIERldGVybWluZSBudW1iZXIgb2YgZGF5cyBzaG93biBpbiB0aW1lcGlja2VyLiBPcHRpb25hbC4gZGVmYXVsdCBpcyAzMC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uT3BlbiAgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgb3Blbi4gT3B0aW9uYWwuIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkNsb3NlICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIHdoYXQgdG8gZG8gd2hlbiB0aW1lcGlja2VyIGlzIGNsb3NlZC4gT3B0aW9uYWwuIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vcGVuUGlja2VyICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGlmIHRpbWVwaWNrZXIgc2hvdWxkIGJlIG9wZW4gaW4gaW50aWFsIHJlbmRlci4gT3B0aW9uYWwuIERlZmF1bHQgaXMgdW5kZWZpbmVkLlxuICogQGV4YW1wbGVcbiAqIDxEYXRldGltZXBpY2tlclxuICogICByZWFsdGltZT17dHJ1ZX1cbiAqICAgaW5pdGlhbFRpbWVzdGFtcD17MTU5MDEzMzgyM31cbiAqICAgaW5pdGlhbEFycml2ZUJ5PXtmYWxzZX1cbiAqICAgb25UaW1lQ2hhbmdlPXsodGltZSwgYXJyaXZlQnkpID0+IGNoYW5nZVVybCh0aW1lLCBhcnJpdmVCeSl9XG4gKiAgIG9uRGF0ZUNoYW5nZT17KHRpbWUsIGFycml2ZUJ5KSA9PiBjaGFuZ2VVcmwodGltZSwgYXJyaXZlQnkpfVxuICogICBvbk5vd0NsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHVuZGVmaW5lZCwgdW5kZWZpbmVkKX1cbiAqICAgb25EZXBhcnR1cmVDbGljaz17KHRpbWUpID0+IGNoYW5nZVVybCh0aW1lLCAndHJ1ZScpfVxuICogICBvbkFycml2YWxDbGljaz17KHRpbWUpID0+IGNoYW5nZVVybCh0aW1lLCB1bmRlZmluZWQpfVxuICogICBlbWJlZFdoZW5DbG9zZWQ9ezxidXR0b24gLz59XG4gKiAgIGxhbmc9eydlbid9XG4gKiAgIHNlcnZpY2VUaW1lUmFuZ2U9ezE1fVxuICogLz5cbiAqL1xuZnVuY3Rpb24gRGF0ZXRpbWVwaWNrZXJTdGF0ZUNvbnRhaW5lcih7XG4gIHJlYWx0aW1lLFxuICBpbml0aWFsQXJyaXZlQnksXG4gIGluaXRpYWxUaW1lc3RhbXAsXG4gIG9uRGVwYXJ0dXJlQ2xpY2ssXG4gIG9uQXJyaXZhbENsaWNrLFxuICBvblRpbWVDaGFuZ2UsXG4gIG9uRGF0ZUNoYW5nZSxcbiAgb25Ob3dDbGljayxcbiAgZW1iZWRXaGVuQ2xvc2VkLFxuICBlbWJlZFdoZW5PcGVuLFxuICBsYW5nLFxuICBjb2xvcixcbiAgdGltZVpvbmUsXG4gIGZvbnRXZWlnaHRzLFxuICBzZXJ2aWNlVGltZVJhbmdlLFxuICBvbk9wZW4sXG4gIG9uQ2xvc2UsXG4gIG9wZW5QaWNrZXIsXG59KSB7XG4gIG1vbWVudC5sb2NhbGUobGFuZyk7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgaW5pdGlhbE5vdyA9IHJlYWx0aW1lID8gbnVsbCA6IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgY29uc3QgW3RpbWVzdGFtcCwgY2hhbmdlVGltZXN0YW1wU3RhdGVdID0gdXNlU3RhdGUoXG4gICAgaW5pdGlhbFRpbWVzdGFtcCA/IGluaXRpYWxUaW1lc3RhbXAgKiAxMDAwIDogaW5pdGlhbE5vdyxcbiAgKTtcbiAgY29uc3QgW2RlcGFydHVyZU9yQXJyaXZhbCwgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsXSA9IHVzZVN0YXRlKFxuICAgIGluaXRpYWxBcnJpdmVCeSA9PT0gdHJ1ZSA/ICdhcnJpdmFsJyA6ICdkZXBhcnR1cmUnLFxuICApO1xuXG4gIC8vIHVwZGF0ZSBzdGF0ZSBpZiBwcm9wcyBjaGFuZ2VcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBib3RoTnVsbCA9IHRpbWVzdGFtcCA9PT0gbnVsbCAmJiBpbml0aWFsVGltZXN0YW1wID09PSB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb25lTnVsbCA9IHRpbWVzdGFtcCA9PT0gbnVsbCB8fCBpbml0aWFsVGltZXN0YW1wID09PSB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2FtZVRpbWUgPSBNYXRoLnJvdW5kKHRpbWVzdGFtcCAvIDEwMDApID09PSBpbml0aWFsVGltZXN0YW1wO1xuICAgIGNvbnN0IHRpbWVzdGFtcENoYW5nZWQgPSAhYm90aE51bGwgJiYgKG9uZU51bGwgfHwgIXNhbWVUaW1lKTtcbiAgICBpZiAodGltZXN0YW1wQ2hhbmdlZCkge1xuICAgICAgaWYgKGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKGluaXRpYWxUaW1lc3RhbXAgKiAxMDAwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpbml0aWFsQXJyaXZlQnkgPT09IChkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJykpIHtcbiAgICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbChcbiAgICAgICAgaW5pdGlhbEFycml2ZUJ5ID09PSB0cnVlID8gJ2Fycml2YWwnIDogJ2RlcGFydHVyZScsXG4gICAgICApO1xuICAgIH1cbiAgfSwgW2luaXRpYWxUaW1lc3RhbXAsIGluaXRpYWxBcnJpdmVCeV0pO1xuXG4gIGNvbnN0IHRpbWVDaGFuZ2VkID0gZGVib3VuY2UobmV3VGltZSA9PiB7XG4gICAgaWYgKG5ld1RpbWUgPT09IG51bGwpIHtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG1vbWVudCgpLnZhbHVlT2YoKSk7XG4gICAgICBvblRpbWVDaGFuZ2UoXG4gICAgICAgIE1hdGgucm91bmQobW9tZW50KCkudmFsdWVPZigpIC8gMTAwMCksXG4gICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobmV3VGltZSk7XG4gICAgb25UaW1lQ2hhbmdlKE1hdGgucm91bmQobmV3VGltZSAvIDEwMDApLCBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyk7XG4gIH0sIDEwKTtcblxuICBjb25zdCBkYXRlQ2hhbmdlZCA9IGRlYm91bmNlKG5ld0RhdGUgPT4ge1xuICAgIGlmIChuZXdEYXRlID09PSBudWxsKSB7XG4gICAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShtb21lbnQoKS52YWx1ZU9mKCkpO1xuICAgICAgb25EYXRlQ2hhbmdlKFxuICAgICAgICBNYXRoLnJvdW5kKG1vbWVudCgpLnZhbHVlT2YoKSAvIDEwMDApLFxuICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5ld0RhdGUpO1xuICAgIG9uRGF0ZUNoYW5nZShNYXRoLnJvdW5kKG5ld0RhdGUgLyAxMDAwKSwgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCcpO1xuICB9LCAxMCk7XG5cbiAgY29uc3Qgbm93Q2xpY2tlZCA9ICgpID0+IHtcbiAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwoJ2RlcGFydHVyZScpO1xuICAgIGNvbnN0IG5ld1RpbWVzdGFtcCA9IHJlYWx0aW1lID8gbnVsbCA6IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShuZXdUaW1lc3RhbXApO1xuICAgIG9uTm93Q2xpY2soTWF0aC5yb3VuZChuZXdUaW1lc3RhbXAgLyAxMDAwKSk7XG4gIH07XG5cbiAgY29uc3QgZGVwYXJ0dXJlQ2xpY2tlZCA9ICgpID0+IHtcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGxldCBuZXdUaW1lID0gdGltZXN0YW1wO1xuICAgIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5vdyk7XG4gICAgICBuZXdUaW1lID0gbm93O1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChkZXBhcnR1cmVPckFycml2YWwgIT09ICdkZXBhcnR1cmUnKSB7XG4gICAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwoJ2RlcGFydHVyZScpO1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICBvbkRlcGFydHVyZUNsaWNrKE1hdGgucm91bmQobmV3VGltZSAvIDEwMDApKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYXJyaXZhbENsaWNrZWQgPSAoKSA9PiB7XG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICBsZXQgbmV3VGltZSA9IHRpbWVzdGFtcDtcbiAgICBpZiAodGltZXN0YW1wID09PSBudWxsKSB7XG4gICAgICBjb25zdCBub3cgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG4gICAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShub3cpO1xuICAgICAgbmV3VGltZSA9IG5vdztcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZGVwYXJ0dXJlT3JBcnJpdmFsICE9PSAnYXJyaXZhbCcpIHtcbiAgICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnYXJyaXZhbCcpO1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICBvbkFycml2YWxDbGljayhNYXRoLnJvdW5kKG5ld1RpbWUgLyAxMDAwKSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbk1vZGFsU3VibWl0ID0gKHRpbWUsIG1vZGUpID0+IHtcbiAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZSh0aW1lKTtcbiAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwobW9kZSk7XG4gICAgb25UaW1lQ2hhbmdlKE1hdGgucm91bmQodGltZSAvIDEwMDApLCBtb2RlID09PSAnYXJyaXZhbCcsIHRydWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPERhdGV0aW1lcGlja2VyXG4gICAgICB0aW1lc3RhbXA9e3RpbWVzdGFtcH1cbiAgICAgIG9uVGltZUNoYW5nZT17dGltZUNoYW5nZWR9XG4gICAgICBvbkRhdGVDaGFuZ2U9e2RhdGVDaGFuZ2VkfVxuICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsPXtkZXBhcnR1cmVPckFycml2YWx9XG4gICAgICBvbk5vd0NsaWNrPXtub3dDbGlja2VkfVxuICAgICAgb25EZXBhcnR1cmVDbGljaz17ZGVwYXJ0dXJlQ2xpY2tlZH1cbiAgICAgIG9uQXJyaXZhbENsaWNrPXthcnJpdmFsQ2xpY2tlZH1cbiAgICAgIGVtYmVkV2hlbkNsb3NlZD17ZW1iZWRXaGVuQ2xvc2VkfVxuICAgICAgZW1iZWRXaGVuT3Blbj17ZW1iZWRXaGVuT3Blbn1cbiAgICAgIGxhbmc9e2xhbmd9XG4gICAgICBjb2xvcj17Y29sb3J9XG4gICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICBvbk1vZGFsU3VibWl0PXtvbk1vZGFsU3VibWl0fVxuICAgICAgZm9udFdlaWdodHM9e2ZvbnRXZWlnaHRzfVxuICAgICAgc2VydmljZVRpbWVSYW5nZT17c2VydmljZVRpbWVSYW5nZX1cbiAgICAgIG9uT3Blbj17b25PcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIG9wZW5QaWNrZXI9e29wZW5QaWNrZXJ9XG4gICAgLz5cbiAgKTtcbn1cblxuRGF0ZXRpbWVwaWNrZXJTdGF0ZUNvbnRhaW5lci5wcm9wVHlwZXMgPSB7XG4gIHJlYWx0aW1lOiBQcm9wVHlwZXMuYm9vbCxcbiAgaW5pdGlhbFRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlcixcbiAgaW5pdGlhbEFycml2ZUJ5OiBQcm9wVHlwZXMuYm9vbCxcbiAgb25EZXBhcnR1cmVDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25BcnJpdmFsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uVGltZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25EYXRlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbk5vd0NsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBlbWJlZFdoZW5DbG9zZWQ6IFByb3BUeXBlcy5ub2RlLFxuICBlbWJlZFdoZW5PcGVuOiBQcm9wVHlwZXMubm9kZSxcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBmb250V2VpZ2h0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZWRpdW06IFByb3BUeXBlcy5udW1iZXIsXG4gIH0pLFxuICBzZXJ2aWNlVGltZVJhbmdlOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvbk9wZW46IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3BlblBpY2tlcjogUHJvcFR5cGVzLmJvb2wsXG59O1xuXG5EYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyLmRlZmF1bHRQcm9wcyA9IHtcbiAgcmVhbHRpbWU6IGZhbHNlLFxuICBpbml0aWFsQXJyaXZlQnk6IHVuZGVmaW5lZCxcbiAgaW5pdGlhbFRpbWVzdGFtcDogdW5kZWZpbmVkLFxuICBlbWJlZFdoZW5DbG9zZWQ6IG51bGwsXG4gIGVtYmVkV2hlbk9wZW46IG51bGwsXG4gIGxhbmc6ICdlbicsXG4gIGNvbG9yOiAnIzAwN2FjOScsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbiAgZm9udFdlaWdodHM6IHtcbiAgICBtZWRpdW06IDUwMCxcbiAgfSxcbiAgb25PcGVuOiBudWxsLFxuICBvbkNsb3NlOiBudWxsLFxuICBvcGVuUGlja2VyOiB1bmRlZmluZWQsXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IDMwLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZXRpbWVwaWNrZXJTdGF0ZUNvbnRhaW5lcjtcbiJdLCJuYW1lcyI6WyJfYXJyYXlMaWtlVG9BcnJheSIsImFyciIsImxlbiIsImxlbmd0aCIsImkiLCJhcnIyIiwiQXJyYXkiLCJfc2xpY2VkVG9BcnJheSIsImlzQXJyYXkiLCJhcnJheVdpdGhIb2xlcyIsInIiLCJsIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiZSIsIm4iLCJ1IiwiYSIsImYiLCJvIiwiY2FsbCIsIm5leHQiLCJPYmplY3QiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiaXRlcmFibGVUb0FycmF5TGltaXQiLCJtaW5MZW4iLCJhcnJheUxpa2VUb0FycmF5IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwidW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJUeXBlRXJyb3IiLCJub25JdGVyYWJsZVJlc3QiLCJwYXJzZVR5cGVkVGltZSIsInR5cGVkVmFsdWUiLCJhY3R1YWxWYWx1ZSIsInNwbGl0IiwiZXZlcnkiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJ2YWxpZGF0ZUNsb2NrIiwiaG91cnMiLCJtaW51dGVzIiwiaG91cnNWYWxpZCIsImlzTmFOIiwibWludXRlc1ZhbGlkIiwidmFsaWRhdGVJbnB1dCIsImlucHV0VmFsdWUiLCJpbmNsdWRlcyIsIl9pbnB1dFZhbHVlJHNwbGl0MiIsInN0YXJ0c1dpdGgiLCJ2YWx1ZXMiLCJfcmVmIiwiY29uY2F0IiwiX3JlZjIiLCJfcmVmMyIsIl9yZWY0Iiwic3Vic3RyaW5nIiwiZ2V0VHMiLCJjdXJyZW50VGltZXN0YW1wIiwidHJpbW1lZCIsInRyaW0iLCJtYXRjaCIsInNwbGl0dGVyIiwibW9tZW50IiwidmFsdWVPZiIsIkRlc2t0b3BEYXRldGltZXBpY2tlciIsIm9uQ2hhbmdlIiwiZ2V0RGlzcGxheSIsInRpbWVDaG9pY2VzIiwiaWQiLCJsYWJlbCIsImljb24iLCJkaXNhYmxlVHlwaW5nIiwidGltZVpvbmUiLCJkYXRlUGlja2VyIiwidHJhbnNsYXRpb25TZXR0aW5ncyIsInR6Iiwic2V0RGVmYXVsdCIsIl91c2VTdGF0ZTIiLCJ1c2VTdGF0ZSIsImRpc3BsYXlWYWx1ZSIsImNoYW5nZURpc3BsYXlWYWx1ZSIsIl91c2VTdGF0ZTQiLCJ0eXBpbmciLCJzZXRUeXBpbmciLCJfdXNlU3RhdGU2Iiwic2hvd0FsbE9wdGlvbnMiLCJzZXRTaG93QWxsT3B0aW9ucyIsIl91c2VTdGF0ZTgiLCJpbnZhbGlkSW5wdXQiLCJzZXRpbnZhbGlkSW5wdXQiLCJ1c2VFZmZlY3QiLCJoYW5kbGVUaW1lc3RhbXAiLCJuZXdWYWx1ZSIsImFzTnVtYmVyIiwiaXNWYWxpZCIsIm9wdGlvbnMiLCJtYXAiLCJjbG9zZXN0T3B0aW9ucyIsImZpbHRlciIsImNsb3Nlc3RPcHRpb24iLCJyZWR1Y2UiLCJiIiwiTWF0aCIsImFicyIsInVuZGVmaW5lZCIsImlucHV0SWQiLCJsYWJlbElkIiwiYXJpYUVycm9yIiwiaTE4bmV4dCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInN0eWxlcyIsImh0bWxGb3IiLCJTZWxlY3QiLCJhcmlhTGl2ZU1lc3NhZ2VzIiwiZ3VpZGFuY2UiLCJjb250ZXh0IiwiaXNEaXNhYmxlZCIsIm9uRmlsdGVyIiwib25Gb2N1cyIsIml0ZW1MYWJlbCIsInRpbWUiLCJjdXJyZW50VGltZSIsImZvcm1hdCIsInRzIiwiY29tcG9uZW50cyIsIkluZGljYXRvcnNDb250YWluZXIiLCJjeCIsImNsYXNzTmFtZVByZWZpeCIsIm9uSW5wdXRDaGFuZ2UiLCJhY3Rpb24iLCJzdHIiLCJ2YWxpZCIsImlzaW52YWxpZElucHV0IiwidmFsaWRhdGVkIiwibm9PcHRpb25zTWVzc2FnZSIsImZpbHRlck9wdGlvbiIsIm9wdGlvbiIsImlucHV0IiwiX2lucHV0JHNwbGl0JCIsImNvbXBsZXRlSW5wdXQiLCJpc01vZDE1IiwibWludXRlSW5wdXQiLCJpbnB1dEgiLCJpbnB1dE0iLCJvcHRIIiwib3B0TSIsInRvdGFsIiwiZmlsdGVyT3B0aW9ucyIsImhvdXIiLCJpc1ZhbGlkSG91ciIsImNvbXAiLCJjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUiLCJ0YWJTZWxlY3RzVmFsdWUiLCJwbGFjZWhvbGRlciIsInRhcmdldCIsInNlbGVjdCIsIm9uQmx1ciIsIm9uS2V5RG93biIsImtleSIsImlzU2VhcmNoYWJsZSIsImNzcyIsInJlZiIsImluc2VydEF0IiwiZG9jdW1lbnQiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzdHlsZSIsInR5cGUiLCJmaXJzdENoaWxkIiwiaW5zZXJ0QmVmb3JlIiwiYXBwZW5kQ2hpbGQiLCJzdHlsZVNoZWV0IiwiY3NzVGV4dCIsImNyZWF0ZVRleHROb2RlIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwibnVtYmVyIiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJhcnJheU9mIiwic3RyaW5nIiwibm9kZSIsImJvb2wiLCJzaGFwZSIsImxuZyIsImRlZmF1bHRQcm9wcyIsInRyYW5zbGF0aW9ucyIsImRlIiwidG9kYXkiLCJ0b21vcnJvdyIsImFycml2YWwiLCJkYXRlIiwiZGVwYXJ0dXJlIiwicmVhZHkiLCJjYW5jZWwiLCJlbiIsImZpIiwicGwiLCJzdiIsImlzTW9iaWxlIiwidXNlckFnZW50IiwibmF2aWdhdG9yIiwidmVuZG9yIiwid2luZG93Iiwib3BlcmEiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInNvdXJjZUtleXMiLCJrZXlzIiwiaW5kZXhPZiIsIm9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJNb2JpbGVEYXRlcGlja2VyIiwiaXRlbUNvdW50Iiwic3RhcnRUaW1lIiwib3BlbiIsImNoYW5nZU9wZW4iLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJkYXRlQ2hvaWNlcyIsImZpbGwiLCJfIiwiYWRkIiwic2Nyb2xsSW5kZXgiLCJmaW5kSW5kZXgiLCJ1c2VMYXlvdXRFZmZlY3QiLCJjdXJyZW50Iiwic2Nyb2xsVG9wIiwibmF0aXZlSW5wdXQiLCJ0b0xvd2VyQ2FzZSIsIkF1dG9zdWdnZXN0Iiwic3VnZ2VzdGlvbnMiLCJnZXRTdWdnZXN0aW9uVmFsdWUiLCJzIiwicmVuZGVyU3VnZ2VzdGlvbiIsIm9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZCIsInNob3VsZFJlbmRlclN1Z2dlc3Rpb25zIiwiaW5wdXRQcm9wcyIsInJlYWRPbmx5IiwiZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrIiwib25TdWdnZXN0aW9uc0NsZWFyUmVxdWVzdGVkIiwicmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXIiLCJjb250YWluZXJQcm9wcyIsImNoaWxkcmVuIiwib3RoZXJSZWZzIiwiX2V4Y2x1ZGVkIiwiYXNzaWduIiwidGFiSW5kZXgiLCJlbGVtIiwidGhlbWUiLCJNb2JpbGVUaW1lcGlja2VyIiwiY2hhbmdlSW5wdXRWYWx1ZSIsImlzVmFsaWRJbnB1dCIsInNldFZhbGlkSW5wdXQiLCJ0aW1lSW5wdXRSZWYiLCJmb2N1cyIsInNob3dFcnJvciIsImlucHV0TW9kZSIsIm1heExlbmd0aCIsInNldFNlbGVjdGlvblJhbmdlIiwiZXZlbnQiLCJyZXBsYWNlIiwiY2hhckF0IiwiYWN0dWFsIiwidGltZXN0YW1wIiwiTW9iaWxlUGlja2VyTW9kYWwiLCJkZXBhcnR1cmVPckFycml2YWwiLCJvbk5vd0NsaWNrIiwibGFuZyIsImNvbG9yIiwib25TdWJtaXQiLCJvbkNhbmNlbCIsImdldFRpbWVEaXNwbGF5IiwiZGF0ZVNlbGVjdEl0ZW1Db3VudCIsImdldERhdGVEaXNwbGF5IiwiZm9udFdlaWdodHMiLCJkaXNwbGF5VGltZXN0YW1wIiwiY2hhbmdlVGltZXN0YW1wIiwiZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCIsImNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCIsImh0bWxJZCIsInVuaXF1ZUlkIiwiZGF0ZVNlbGVjdFN0YXJ0VGltZSIsInN0YXJ0T2YiLCJtaW51dGUiLCJNb2RhbCIsImFwcEVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiaXNPcGVuIiwib3ZlcmxheUNsYXNzTmFtZSIsIm1lZGl1bSIsIm9uQ2xpY2siLCJjaGVja2VkIiwiSWNvbiIsImltZyIsIkRhdGV0aW1lcGlja2VyIiwib25UaW1lQ2hhbmdlIiwib25EYXRlQ2hhbmdlIiwib25EZXBhcnR1cmVDbGljayIsIm9uQXJyaXZhbENsaWNrIiwiZW1iZWRXaGVuQ2xvc2VkIiwiZW1iZWRXaGVuT3BlbiIsIm9uTW9kYWxTdWJtaXQiLCJzZXJ2aWNlVGltZVJhbmdlIiwib25PcGVuIiwib25DbG9zZSIsIm9wZW5QaWNrZXIiLCJjaGFuZ2VEaXNwbGF5VGltZXN0YW1wIiwidGltZXJJZCIsInNldFRpbWVyIiwidXNlTW9iaWxlSW5wdXRzIiwiZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkIiwib3BlblBpY2tlclJlZiIsImlucHV0UmVmIiwiYWxlcnRSZWYiLCJmb3JFYWNoIiwibGFuZ3VhZ2UiLCJhZGRSZXNvdXJjZUJ1bmRsZSIsImxvY2FsZSIsIm5vd1NlbGVjdGVkIiwiY2xlYXJJbnRlcnZhbCIsIm5ld0lkIiwic2V0SW50ZXJ2YWwiLCJub3ciLCJpc1NhbWUiLCJwcmV2SXNPcGVuUmVmIiwiZm9ybWF0dGVkIiwidG9VcHBlckNhc2UiLCJzZWxlY3RlZE1vbWVudCIsInRpbWVTZWxlY3RTdGFydFRpbWUiLCJmaXZlTWludXRlcyIsIm5leHRGaXZlTWluIiwiY2VpbCIsInRpbWVzVG9BZGQiLCJjbG9zZXN0SW5kZXhBZnRlciIsInNwbGljZSIsIlNldCIsInNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0IiwiaW5uZXJIVE1MIiwic2V0VGltZW91dCIsImhpZGRlbiIsImNsb3NlZCIsInJvbGUiLCJ0ZXh0YnV0dG9uIiwiYWN0aXZlIiwiRnJhZ21lbnQiLCJuZXdUaW1lc3RhbXAiLCJuZXdEZXBhcnR1cmVPckFycml2YWwiLCJ2YWxpZGF0ZSIsIkRhdGV0aW1lcGlja2VyU3RhdGVDb250YWluZXIiLCJyZWFsdGltZSIsImluaXRpYWxBcnJpdmVCeSIsImluaXRpYWxUaW1lc3RhbXAiLCJpbml0aWFsTm93IiwiY2hhbmdlVGltZXN0YW1wU3RhdGUiLCJib3RoTnVsbCIsIm9uZU51bGwiLCJzYW1lVGltZSIsInJvdW5kIiwidGltZUNoYW5nZWQiLCJkZWJvdW5jZSIsIm5ld1RpbWUiLCJkYXRlQ2hhbmdlZCIsIm5ld0RhdGUiLCJub3dDbGlja2VkIiwiZGVwYXJ0dXJlQ2xpY2tlZCIsImNoYW5nZWQiLCJhcnJpdmFsQ2xpY2tlZCIsIm1vZGUiLCJkYXRlVGltZUNvbWJpbmVkIiwiaTE4bmV4dF9fZGVmYXVsdCIsImluaXQiLCJyZXNvdXJjZXMiLCJvbmVPZiIsImZhbGxiYWNrTG5nIiwiZGVmYXVsdE5TIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIl0sIm1hcHBpbmdzIjoicXRDQUFlLFNBQVNBLEVBQWtCQyxFQUFLQyxJQUNsQyxNQUFQQSxHQUFlQSxFQUFNRCxFQUFJRSxVQUFRRCxFQUFNRCxFQUFJRSxRQUMvQyxJQUFLLElBQUlDLEVBQUksRUFBR0MsRUFBTyxJQUFJQyxNQUFNSixHQUFNRSxFQUFJRixFQUFLRSxJQUFLQyxFQUFLRCxHQUFLSCxFQUFJ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
|