weal
Version:
Web interface for terminal
2 lines • 49.4 kB
JavaScript
(()=>{var e,t,r,n,o,a={3964:(e,t,r)=>{const n=r(7294),{ProgressBar:o}=r(1607),a=r(2671),{LIGHT_THEME_KEY:i}=r(4224);e.exports=({msg:e})=>{const{theme:t}=a(),r=t===i;return n.createElement("div",{className:"loader-container "+(r?"light":"dark")},n.createElement(o,{height:"80",width:"80",ariaLabel:"progress-bar-loading",wrapperStyle:{},wrapperClass:"progress-bar-wrapper",borderColor:r?"#000":"#FFF",barColor:r?"#000":"#FFF"}),n.createElement("span",{className:"loader-container-msg "+(r?"light":"dark")},e))}},4224:e=>{e.exports={APP_NAME:"Weal",KEY_MODE:"mode",KEY_CLEAR:"clear",CMD_MODE_LIGHT:"mode --light",CMD_MODE_DARK:"mode --dark",LIGHT_THEME:"light",DARK_THEME:"dark",LIGHT_THEME_KEY:0,DARK_THEME_KEY:1,DEFAULT_OUTPUTS_LIST:["Welcome to weal interface","-------------------------","The following example commands are provided:","`mode --light`` will change to light theme.","`mode --dark`` will change to dark theme.","`clear` will clear the terminal."],KEY_CODE_ARROW_UP:38,TERMINAL_HEIGHT:500,KEY_THEME:"theme",KEY_HISTORY:"history",BASIC_CMDS:["mode --light","mode --dark","clear"],DEFAULT_PROMPT:"$",CURRENT_DIR_CMD:"current-dir",APP_LOADER_MSG:"Checking process is ready...",FALLBACK_LOADER_MSG:"Sorry, please re-open directory we encountered an error",HEALTH_CMD:"health"}},2671:(e,t,r)=>{const n=r(7294),{getSessionStorage:o,setSessionStorage:a}=r(4222),{defaultTheme:i}=r(5656),{KEY_THEME:l}=r(4224);e.exports=()=>{const[e,t]=n.useState(null);return n.useEffect((()=>{void 0!==o(l)?t(o(l)):t(i)}),[o(l)]),{theme:e,setThemeOnStateAndSession:e=>{a(l,e)}}}},1285:(e,t,r)=>{const n=r(7294),{createRoot:o}=r(745),a=r(3964),{FALLBACK_LOADER_MSG:i}=r(4224);r(5004);const l=o(document.getElementById("root")),s=n.lazy((()=>r.e(238).then(r.t.bind(r,7238,23))));l.render(n.createElement(n.Suspense,{fallback:n.createElement(a,{msg:i})},n.createElement(s,null)))},4222:e=>{e.exports={getLocalStorage:e=>JSON.parse(localStorage.getItem(e)),setLocalStorage:(e,t)=>{localStorage.setItem(e,JSON.stringify(t))},getSessionStorage:e=>JSON.parse(sessionStorage.getItem(e)),setSessionStorage:(e,t)=>{sessionStorage.setItem(e,JSON.stringify(t))}}},5656:(e,t,r)=>{const{ColorMode:n}=r(3794),{CMD_MODE_LIGHT:o,CMD_MODE_DARK:a,LIGHT_THEME:i,DARK_THEME:l}=r(4224),s=Object.freeze({light:n.Light,dark:n.Dark}),c=s[i];e.exports={defaultTheme:c,switchTheme:e=>{let t=i;return e.toLocaleLowerCase().trim()===o?t=i:e.toLocaleLowerCase().trim()===a&&(t=l),s[t]}}},5289:(e,t,r)=>{"use strict";r.d(t,{Z:()=>l});var n=r(7537),o=r.n(n),a=r(3645),i=r.n(a)()(o());i.push([e.id,"@import url(https://fonts.googleapis.com/css2?family=Poppins&display=swap);"]),i.push([e.id,"body {\n margin: 0;\n padding: 0;\n font-family: Poppins, sans-serif;\n}\n\n.react-terminal-wrapper {\n border-radius: 0 !important;\n height: 100vh !important;\n font-size: 14px !important;\n}\n\n.react-terminal:last-child {\n padding-bottom: 50px;\n}\n\n.loader-container {\n width: 100%;\n height: 100vh;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n}\n\n.loader-container.dark {\n background-color: #252a33;\n}\n\n.loader-container.light {\n background-color: #ddd;\n}\n\n.loader-container-msg.dark {\n color: #fff;\n}\n\n.loader-container-msg.light {\n color: #000;\n}\n","",{version:3,sources:["webpack://./interfaces/styles/main.css"],names:[],mappings:"AAEA;EACE,SAAS;EACT,UAAU;EACV,gCAAgC;AAClC;;AAEA;EACE,2BAA2B;EAC3B,wBAAwB;EACxB,0BAA0B;AAC5B;;AAEA;EACE,oBAAoB;AACtB;;AAEA;EACE,WAAW;EACX,aAAa;EACb,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB,sBAAsB;AACxB;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,WAAW;AACb",sourcesContent:['@import url("https://fonts.googleapis.com/css2?family=Poppins&display=swap");\n\nbody {\n margin: 0;\n padding: 0;\n font-family: Poppins, sans-serif;\n}\n\n.react-terminal-wrapper {\n border-radius: 0 !important;\n height: 100vh !important;\n font-size: 14px !important;\n}\n\n.react-terminal:last-child {\n padding-bottom: 50px;\n}\n\n.loader-container {\n width: 100%;\n height: 100vh;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n}\n\n.loader-container.dark {\n background-color: #252a33;\n}\n\n.loader-container.light {\n background-color: #ddd;\n}\n\n.loader-container-msg.dark {\n color: #fff;\n}\n\n.loader-container-msg.light {\n color: #000;\n}\n'],sourceRoot:""}]);const l=i},5004:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>E});var n=r(3379),o=r.n(n),a=r(7795),i=r.n(a),l=r(569),s=r.n(l),c=r(3565),d=r.n(c),A=r(9216),p=r.n(A),m=r(4589),u=r.n(m),g=r(5289),f={};f.styleTagTransform=u(),f.setAttributes=d(),f.insert=s().bind(null,"head"),f.domAPI=i(),f.insertStyleElement=p(),o()(g.Z,f);const E=g.Z&&g.Z.locals?g.Z.locals:void 0}},i={};function l(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={id:e,exports:{}};return a[e].call(r.exports,r,r.exports,l),r.exports}l.m=a,e=[],l.O=(t,r,n,o)=>{if(!r){var a=1/0;for(d=0;d<e.length;d++){for(var[r,n,o]=e[d],i=!0,s=0;s<r.length;s++)(!1&o||a>=o)&&Object.keys(l.O).every((e=>l.O[e](r[s])))?r.splice(s--,1):(i=!1,o<a&&(a=o));if(i){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[r,n,o]},l.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return l.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.t=function(e,n){if(1&n&&(e=this(e)),8&n)return e;if("object"==typeof e&&e){if(4&n&&e.__esModule)return e;if(16&n&&"function"==typeof e.then)return e}var o=Object.create(null);l.r(o);var a={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach((t=>a[t]=()=>e[t]));return a.default=()=>e,l.d(o,a),o},l.d=(e,t)=>{for(var r in t)l.o(t,r)&&!l.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce(((t,r)=>(l.f[r](e,t),t)),[])),l.u=e=>e+".bundle.js",l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},o="weal:",l.l=(e,t,r,a)=>{if(n[e])n[e].push(t);else{var i,s;if(void 0!==r)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var A=c[d];if(A.getAttribute("src")==e||A.getAttribute("data-webpack")==o+r){i=A;break}}i||(s=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,l.nc&&i.setAttribute("nonce",l.nc),i.setAttribute("data-webpack",o+r),i.src=e),n[e]=[t];var p=(t,r)=>{i.onerror=i.onload=null,clearTimeout(m);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(r))),t)return t(r)},m=setTimeout(p.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),s&&document.head.appendChild(i)}},l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;l.g.importScripts&&(e=l.g.location+"");var t=l.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),l.p=e})(),(()=>{var e={179:0};l.f.j=(t,r)=>{var n=l.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var a=l.p+l.u(t),i=new Error;l.l(a,(r=>{if(l.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;i.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",i.name="ChunkLoadError",i.type=o,i.request=a,n[1](i)}}),"chunk-"+t,t)}},l.O.j=t=>0===e[t];var t=(t,r)=>{var n,o,[a,i,s]=r,c=0;if(a.some((t=>0!==e[t]))){for(n in i)l.o(i,n)&&(l.m[n]=i[n]);if(s)var d=s(l)}for(t&&t(r);c<a.length;c++)o=a[c],l.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return l.O(d)},r=self.webpackChunkweal=self.webpackChunkweal||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),l.nc=void 0;var s=l.O(void 0,[256],(()=>l(1285)));s=l.O(s)})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDQyxFQUE0QkMsS0FDdkQsSUFHSTdHLEVBQVU2QyxHQUhUdEMsRUFBVXVHLEVBQWFDLEdBQVdGLEVBR2hCakcsRUFBSSxFQUMzQixHQUFHTCxFQUFTeUcsTUFBTXpILEdBQWdDLElBQXhCeUcsRUFBZ0J6RyxLQUFhLENBQ3RELElBQUlTLEtBQVk4RyxFQUNaL0csRUFBb0J3QyxFQUFFdUUsRUFBYTlHLEtBQ3JDRCxFQUFvQkssRUFBRUosR0FBWThHLEVBQVk5RyxJQUdoRCxHQUFHK0csRUFBUyxJQUFJekcsRUFBU3lHLEVBQVFoSCxFQUNsQyxDQUVBLElBREc2RyxHQUE0QkEsRUFBMkJDLEdBQ3JEakcsRUFBSUwsRUFBU00sT0FBUUQsSUFDekJpQyxFQUFVdEMsRUFBU0ssR0FDaEJiLEVBQW9Cd0MsRUFBRXlELEVBQWlCbkQsSUFBWW1ELEVBQWdCbkQsSUFDckVtRCxFQUFnQm5ELEdBQVMsS0FFMUJtRCxFQUFnQm5ELEdBQVcsRUFFNUIsT0FBTzlDLEVBQW9CTSxFQUFFQyxFQUFPLEVBR2pDMkcsRUFBcUJDLEtBQXVCLGlCQUFJQSxLQUF1QixrQkFBSyxHQUNoRkQsRUFBbUI1RSxRQUFRc0UsRUFBcUJ6QixLQUFLLEtBQU0sSUFDM0QrQixFQUFtQjNILEtBQU9xSCxFQUFxQnpCLEtBQUssS0FBTStCLEVBQW1CM0gsS0FBSzRGLEtBQUsrQixHLEtDckZ2RmxILEVBQW9Cc0UsUUFBS2xILEVDR3pCLElBQUlnSyxFQUFzQnBILEVBQW9CTSxPQUFFbEQsRUFBVyxDQUFDLE1BQU0sSUFBTzRDLEVBQW9CLFFBQzdGb0gsRUFBc0JwSCxFQUFvQk0sRUFBRThHLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93ZWFsL3dlYnBhY2svcnVudGltZS9jaHVuayBsb2FkZWQiLCJ3ZWJwYWNrOi8vd2VhbC93ZWJwYWNrL3J1bnRpbWUvY3JlYXRlIGZha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly93ZWFsL3dlYnBhY2svcnVudGltZS9sb2FkIHNjcmlwdCIsIndlYnBhY2s6Ly93ZWFsLy4vaW50ZXJmYWNlcy9jb21wb25lbnRzL2xvYWRlci5qcyIsIndlYnBhY2s6Ly93ZWFsLy4vaW50ZXJmYWNlcy9jb25zdGFudHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2VhbC8uL2ludGVyZmFjZXMvaG9va3MvdXNlVGhlbWUuanMiLCJ3ZWJwYWNrOi8vd2VhbC8uL2ludGVyZmFjZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2VhbC8uL2ludGVyZmFjZXMvdXRpbHMvc3RvcmFnZS5qcyIsIndlYnBhY2s6Ly93ZWFsLy4vaW50ZXJmYWNlcy91dGlscy90aGVtZXMuanMiLCJ3ZWJwYWNrOi8vd2VhbC8uL2ludGVyZmFjZXMvc3R5bGVzL21haW4uY3NzIiwid2VicGFjazovL3dlYWwvLi9pbnRlcmZhY2VzL3N0eWxlcy9tYWluLmNzcz9hZTIxIiwid2VicGFjazovL3dlYWwvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vd2VhbC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly93ZWFsL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly93ZWFsL3dlYnBhY2svcnVudGltZS9lbnN1cmUgY2h1bmsiLCJ3ZWJwYWNrOi8vd2VhbC93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vd2VhbC93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL3dlYWwvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly93ZWFsL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vd2VhbC93ZWJwYWNrL3J1bnRpbWUvcHVibGljUGF0aCIsIndlYnBhY2s6Ly93ZWFsL3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL3dlYWwvd2VicGFjay9ydW50aW1lL25vbmNlIiwid2VicGFjazovL3dlYWwvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkZWZlcnJlZCA9IFtdO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5PID0gKHJlc3VsdCwgY2h1bmtJZHMsIGZuLCBwcmlvcml0eSkgPT4ge1xuXHRpZihjaHVua0lkcykge1xuXHRcdHByaW9yaXR5ID0gcHJpb3JpdHkgfHwgMDtcblx0XHRmb3IodmFyIGkgPSBkZWZlcnJlZC5sZW5ndGg7IGkgPiAwICYmIGRlZmVycmVkW2kgLSAxXVsyXSA+IHByaW9yaXR5OyBpLS0pIGRlZmVycmVkW2ldID0gZGVmZXJyZWRbaSAtIDFdO1xuXHRcdGRlZmVycmVkW2ldID0gW2NodW5rSWRzLCBmbiwgcHJpb3JpdHldO1xuXHRcdHJldHVybjtcblx0fVxuXHR2YXIgbm90RnVsZmlsbGVkID0gSW5maW5pdHk7XG5cdGZvciAodmFyIGkgPSAwOyBpIDwgZGVmZXJyZWQubGVuZ3RoOyBpKyspIHtcblx0XHR2YXIgW2NodW5rSWRzLCBmbiwgcHJpb3JpdHldID0gZGVmZXJyZWRbaV07XG5cdFx0dmFyIGZ1bGZpbGxlZCA9IHRydWU7XG5cdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBjaHVua0lkcy5sZW5ndGg7IGorKykge1xuXHRcdFx0aWYgKChwcmlvcml0eSAmIDEgPT09IDAgfHwgbm90RnVsZmlsbGVkID49IHByaW9yaXR5KSAmJiBPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLk8pLmV2ZXJ5KChrZXkpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fLk9ba2V5XShjaHVua0lkc1tqXSkpKSkge1xuXHRcdFx0XHRjaHVua0lkcy5zcGxpY2Uoai0tLCAxKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZ1bGZpbGxlZCA9IGZhbHNlO1xuXHRcdFx0XHRpZihwcmlvcml0eSA8IG5vdEZ1bGZpbGxlZCkgbm90RnVsZmlsbGVkID0gcHJpb3JpdHk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKGZ1bGZpbGxlZCkge1xuXHRcdFx0ZGVmZXJyZWQuc3BsaWNlKGktLSwgMSlcblx0XHRcdHZhciByID0gZm4oKTtcblx0XHRcdGlmIChyICE9PSB1bmRlZmluZWQpIHJlc3VsdCA9IHI7XG5cdFx0fVxuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59OyIsInZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiA/IChvYmopID0+IChPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSkgOiAob2JqKSA9PiAob2JqLl9fcHJvdG9fXyk7XG52YXIgbGVhZlByb3RvdHlwZXM7XG4vLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLy8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4vLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8vIG1vZGUgJiAxNjogcmV0dXJuIHZhbHVlIHdoZW4gaXQncyBQcm9taXNlLWxpa2Vcbi8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbl9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG5cdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IHRoaXModmFsdWUpO1xuXHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuXHRpZih0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlKSB7XG5cdFx0aWYoKG1vZGUgJiA0KSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG5cdFx0aWYoKG1vZGUgJiAxNikgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicpIHJldHVybiB2YWx1ZTtcblx0fVxuXHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuXHR2YXIgZGVmID0ge307XG5cdGxlYWZQcm90b3R5cGVzID0gbGVhZlByb3RvdHlwZXMgfHwgW251bGwsIGdldFByb3RvKHt9KSwgZ2V0UHJvdG8oW10pLCBnZXRQcm90byhnZXRQcm90byldO1xuXHRmb3IodmFyIGN1cnJlbnQgPSBtb2RlICYgMiAmJiB2YWx1ZTsgdHlwZW9mIGN1cnJlbnQgPT0gJ29iamVjdCcgJiYgIX5sZWFmUHJvdG90eXBlcy5pbmRleE9mKGN1cnJlbnQpOyBjdXJyZW50ID0gZ2V0UHJvdG8oY3VycmVudCkpIHtcblx0XHRPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjdXJyZW50KS5mb3JFYWNoKChrZXkpID0+IChkZWZba2V5XSA9ICgpID0+ICh2YWx1ZVtrZXldKSkpO1xuXHR9XG5cdGRlZlsnZGVmYXVsdCddID0gKCkgPT4gKHZhbHVlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBkZWYpO1xuXHRyZXR1cm4gbnM7XG59OyIsInZhciBpblByb2dyZXNzID0ge307XG52YXIgZGF0YVdlYnBhY2tQcmVmaXggPSBcIndlYWw6XCI7XG4vLyBsb2FkU2NyaXB0IGZ1bmN0aW9uIHRvIGxvYWQgYSBzY3JpcHQgdmlhIHNjcmlwdCB0YWdcbl9fd2VicGFja19yZXF1aXJlX18ubCA9ICh1cmwsIGRvbmUsIGtleSwgY2h1bmtJZCkgPT4ge1xuXHRpZihpblByb2dyZXNzW3VybF0pIHsgaW5Qcm9ncmVzc1t1cmxdLnB1c2goZG9uZSk7IHJldHVybjsgfVxuXHR2YXIgc2NyaXB0LCBuZWVkQXR0YWNoO1xuXHRpZihrZXkgIT09IHVuZGVmaW5lZCkge1xuXHRcdHZhciBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIik7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBzID0gc2NyaXB0c1tpXTtcblx0XHRcdGlmKHMuZ2V0QXR0cmlidXRlKFwic3JjXCIpID09IHVybCB8fCBzLmdldEF0dHJpYnV0ZShcImRhdGEtd2VicGFja1wiKSA9PSBkYXRhV2VicGFja1ByZWZpeCArIGtleSkgeyBzY3JpcHQgPSBzOyBicmVhazsgfVxuXHRcdH1cblx0fVxuXHRpZighc2NyaXB0KSB7XG5cdFx0bmVlZEF0dGFjaCA9IHRydWU7XG5cdFx0c2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG5cblx0XHRzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7XG5cdFx0c2NyaXB0LnRpbWVvdXQgPSAxMjA7XG5cdFx0aWYgKF9fd2VicGFja19yZXF1aXJlX18ubmMpIHtcblx0XHRcdHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBfX3dlYnBhY2tfcmVxdWlyZV9fLm5jKTtcblx0XHR9XG5cdFx0c2NyaXB0LnNldEF0dHJpYnV0ZShcImRhdGEtd2VicGFja1wiLCBkYXRhV2VicGFja1ByZWZpeCArIGtleSk7XG5cdFx0c2NyaXB0LnNyYyA9IHVybDtcblx0fVxuXHRpblByb2dyZXNzW3VybF0gPSBbZG9uZV07XG5cdHZhciBvblNjcmlwdENvbXBsZXRlID0gKHByZXYsIGV2ZW50KSA9PiB7XG5cdFx0Ly8gYXZvaWQgbWVtIGxlYWtzIGluIElFLlxuXHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9IG51bGw7XG5cdFx0Y2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuXHRcdHZhciBkb25lRm5zID0gaW5Qcm9ncmVzc1t1cmxdO1xuXHRcdGRlbGV0ZSBpblByb2dyZXNzW3VybF07XG5cdFx0c2NyaXB0LnBhcmVudE5vZGUgJiYgc2NyaXB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2NyaXB0KTtcblx0XHRkb25lRm5zICYmIGRvbmVGbnMuZm9yRWFjaCgoZm4pID0+IChmbihldmVudCkpKTtcblx0XHRpZihwcmV2KSByZXR1cm4gcHJldihldmVudCk7XG5cdH1cblx0dmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KG9uU2NyaXB0Q29tcGxldGUuYmluZChudWxsLCB1bmRlZmluZWQsIHsgdHlwZTogJ3RpbWVvdXQnLCB0YXJnZXQ6IHNjcmlwdCB9KSwgMTIwMDAwKTtcblx0c2NyaXB0Lm9uZXJyb3IgPSBvblNjcmlwdENvbXBsZXRlLmJpbmQobnVsbCwgc2NyaXB0Lm9uZXJyb3IpO1xuXHRzY3JpcHQub25sb2FkID0gb25TY3JpcHRDb21wbGV0ZS5iaW5kKG51bGwsIHNjcmlwdC5vbmxvYWQpO1xuXHRuZWVkQXR0YWNoICYmIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbn07IiwiY29uc3QgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpXG5cbmNvbnN0IHsgUHJvZ3Jlc3NCYXIgfSA9IHJlcXVpcmUoJ3JlYWN0LWxvYWRlci1zcGlubmVyJylcblxuY29uc3QgdXNlVGhlbWUgPSByZXF1aXJlKCcuLi9ob29rcy91c2VUaGVtZScpXG5cbmNvbnN0IHsgTElHSFRfVEhFTUVfS0VZIH0gPSByZXF1aXJlKCcuLi9jb25zdGFudHMnKVxuXG5jb25zdCBMb2FkZXIgPSAoeyBtc2cgfSkgPT4ge1xuICBjb25zdCB7IHRoZW1lIH0gPSB1c2VUaGVtZSgpXG4gIGNvbnN0IGlzTGlnaHRUaGVtZSA9IHRoZW1lID09PSBMSUdIVF9USEVNRV9LRVlcblxuICBjb25zdCBsb2FkZXIgPSAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2Bsb2FkZXItY29udGFpbmVyICR7aXNMaWdodFRoZW1lID8gJ2xpZ2h0JyA6ICdkYXJrJ31gfT5cbiAgICAgIDxQcm9ncmVzc0JhclxuICAgICAgICBoZWlnaHQ9JzgwJ1xuICAgICAgICB3aWR0aD0nODAnXG4gICAgICAgIGFyaWFMYWJlbD0ncHJvZ3Jlc3MtYmFyLWxvYWRpbmcnXG4gICAgICAgIHdyYXBwZXJTdHlsZT17e319XG4gICAgICAgIHdyYXBwZXJDbGFzcz0ncHJvZ3Jlc3MtYmFyLXdyYXBwZXInXG4gICAgICAgIGJvcmRlckNvbG9yPXtpc0xpZ2h0VGhlbWUgPyAnIzAwMCcgOiAnI0ZGRid9XG4gICAgICAgIGJhckNvbG9yPXtpc0xpZ2h0VGhlbWUgPyAnIzAwMCcgOiAnI0ZGRid9XG4gICAgICAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgbG9hZGVyLWNvbnRhaW5lci1tc2cgJHtpc0xpZ2h0VGhlbWUgPyAnbGlnaHQnIDogJ2RhcmsnfWB9Pnttc2d9PC9zcGFuPlxuICAgIDwvZGl2PlxuICApXG5cbiAgcmV0dXJuIGxvYWRlclxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IExvYWRlclxuIiwiY29uc3QgQVBQX05BTUUgPSAnV2VhbCdcblxuY29uc3QgS0VZX01PREUgPSAnbW9kZSdcbmNvbnN0IEtFWV9DTEVBUiA9ICdjbGVhcidcblxuY29uc3QgQ01EX01PREVfTElHSFQgPSAnbW9kZSAtLWxpZ2h0J1xuY29uc3QgQ01EX01PREVfREFSSyA9ICdtb2RlIC0tZGFyaydcblxuY29uc3QgTElHSFRfVEhFTUUgPSAnbGlnaHQnXG5jb25zdCBEQVJLX1RIRU1FID0gJ2RhcmsnXG5cbmNvbnN0IExJR0hUX1RIRU1FX0tFWSA9IDBcbmNvbnN0IERBUktfVEhFTUVfS0VZID0gMVxuXG5jb25zdCBERUZBVUxUX09VVFBVVFNfTElTVCA9IFtcbiAgJ1dlbGNvbWUgdG8gd2VhbCBpbnRlcmZhY2UnLFxuICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScsXG4gICdUaGUgZm9sbG93aW5nIGV4YW1wbGUgY29tbWFuZHMgYXJlIHByb3ZpZGVkOicsXG4gICdgbW9kZSAtLWxpZ2h0YGAgd2lsbCBjaGFuZ2UgdG8gbGlnaHQgdGhlbWUuJyxcbiAgJ2Btb2RlIC0tZGFya2BgIHdpbGwgY2hhbmdlIHRvIGRhcmsgdGhlbWUuJyxcbiAgJ2BjbGVhcmAgd2lsbCBjbGVhciB0aGUgdGVybWluYWwuJ1xuXVxuXG5jb25zdCBLRVlfQ09ERV9BUlJPV19VUCA9IDM4XG5cbmNvbnN0IFRFUk1JTkFMX0hFSUdIVCA9IDUwMFxuXG5jb25zdCBLRVlfVEhFTUUgPSAndGhlbWUnXG5cbmNvbnN0IEtFWV9ISVNUT1JZID0gJ2hpc3RvcnknXG5cbmNvbnN0IEJBU0lDX0NNRFMgPSBbJ21vZGUgLS1saWdodCcsICdtb2RlIC0tZGFyaycsICdjbGVhciddXG5cbmNvbnN0IERFRkFVTFRfUFJPTVBUID0gJyQnXG5cbmNvbnN0IENVUlJFTlRfRElSX0NNRCA9ICdjdXJyZW50LWRpcidcblxuY29uc3QgSEVBTFRIX0NNRCA9ICdoZWFsdGgnXG5cbmNvbnN0IEFQUF9MT0FERVJfTVNHID0gJ0NoZWNraW5nIHByb2Nlc3MgaXMgcmVhZHkuLi4nXG5jb25zdCBGQUxMQkFDS19MT0FERVJfTVNHID0gJ1NvcnJ5LCBwbGVhc2UgcmUtb3BlbiBkaXJlY3Rvcnkgd2UgZW5jb3VudGVyZWQgYW4gZXJyb3InXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBUFBfTkFNRSxcbiAgS0VZX01PREUsXG4gIEtFWV9DTEVBUixcbiAgQ01EX01PREVfTElHSFQsXG4gIENNRF9NT0RFX0RBUkssXG4gIExJR0hUX1RIRU1FLFxuICBEQVJLX1RIRU1FLFxuICBMSUdIVF9USEVNRV9LRVksXG4gIERBUktfVEhFTUVfS0VZLFxuICBERUZBVUxUX09VVFBVVFNfTElTVCxcbiAgS0VZX0NPREVfQVJST1dfVVAsXG4gIFRFUk1JTkFMX0hFSUdIVCxcbiAgS0VZX1RIRU1FLFxuICBLRVlfSElTVE9SWSxcbiAgQkFTSUNfQ01EUyxcbiAgREVGQVVMVF9QUk9NUFQsXG4gIENVUlJFTlRfRElSX0NNRCxcbiAgQVBQX0xPQURFUl9NU0csXG4gIEZBTExCQUNLX0xPQURFUl9NU0csXG4gIEhFQUxUSF9DTURcbn1cbiIsImNvbnN0IFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKVxuXG5jb25zdCB7IGdldFNlc3Npb25TdG9yYWdlLCBzZXRTZXNzaW9uU3RvcmFnZSB9ID0gcmVxdWlyZSgnLi4vdXRpbHMvc3RvcmFnZScpXG5cbmNvbnN0IHsgZGVmYXVsdFRoZW1lIH0gPSByZXF1aXJlKCcuLi91dGlscy90aGVtZXMnKVxuXG5jb25zdCB7IEtFWV9USEVNRSB9ID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzJylcblxuY29uc3QgdXNlVGhlbWUgPSAoKSA9PiB7XG4gIGNvbnN0IFt0aGVtZSwgc2V0VGhlbWVdID0gUmVhY3QudXNlU3RhdGUobnVsbClcblxuICBjb25zdCBzZXRUaGVtZU9uU3RhdGVBbmRTZXNzaW9uID0gKHQpID0+IHtcbiAgICBzZXRTZXNzaW9uU3RvcmFnZShLRVlfVEhFTUUsIHQpXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChnZXRTZXNzaW9uU3RvcmFnZShLRVlfVEhFTUUpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNldFRoZW1lKGdldFNlc3Npb25TdG9yYWdlKEtFWV9USEVNRSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRoZW1lKGRlZmF1bHRUaGVtZSlcbiAgICB9XG4gIH0sIFtnZXRTZXNzaW9uU3RvcmFnZShLRVlfVEhFTUUpXSlcblxuICByZXR1cm4geyB0aGVtZSwgc2V0VGhlbWVPblN0YXRlQW5kU2Vzc2lvbiB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdXNlVGhlbWVcbiIsImNvbnN0IFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKVxuY29uc3QgeyBjcmVhdGVSb290IH0gPSByZXF1aXJlKCdyZWFjdC1kb20vY2xpZW50JylcblxuY29uc3QgTG9hZGVyID0gcmVxdWlyZSgnLi9jb21wb25lbnRzL2xvYWRlcicpXG5cbmNvbnN0IHsgRkFMTEJBQ0tfTE9BREVSX01TRyB9ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuXG5yZXF1aXJlKCcuL3N0eWxlcy9tYWluLmNzcycpXG5cbmNvbnN0IHJvb3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKVxuY29uc3Qgcm9vdCA9IGNyZWF0ZVJvb3Qocm9vdEVsZW1lbnQpXG5cbmNvbnN0IEFwcCA9IFJlYWN0LmxhenkoKCkgPT4gaW1wb3J0KCcuL2FwcCcpKVxuXG5yb290LnJlbmRlcihcbiAgPFJlYWN0LlN1c3BlbnNlIGZhbGxiYWNrPXs8TG9hZGVyIG1zZz17RkFMTEJBQ0tfTE9BREVSX01TR30gLz59PlxuICAgIDxBcHAgLz5cbiAgPC9SZWFjdC5TdXNwZW5zZT5cbilcbiIsImNvbnN0IGdldExvY2FsU3RvcmFnZSA9IChrZXkpID0+IHtcclxuICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKVxyXG59XHJcblxyXG5jb25zdCBzZXRMb2NhbFN0b3JhZ2UgPSAoa2V5LCB2YWwpID0+IHtcclxuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbCkpXHJcbn1cclxuXHJcbmNvbnN0IGdldFNlc3Npb25TdG9yYWdlID0gKGtleSkgPT4ge1xyXG4gIHJldHVybiBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oa2V5KSlcclxufVxyXG5cclxuY29uc3Qgc2V0U2Vzc2lvblN0b3JhZ2UgPSAoa2V5LCB2YWwpID0+IHtcclxuICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsKSlcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7IGdldExvY2FsU3RvcmFnZSwgc2V0TG9jYWxTdG9yYWdlLCBnZXRTZXNzaW9uU3RvcmFnZSwgc2V0U2Vzc2lvblN0b3JhZ2UgfVxyXG4iLCJjb25zdCB7IENvbG9yTW9kZSB9ID0gcmVxdWlyZSgncmVhY3QtdGVybWluYWwtdWknKVxuXG5jb25zdCB7IENNRF9NT0RFX0xJR0hULCBDTURfTU9ERV9EQVJLLCBMSUdIVF9USEVNRSwgREFSS19USEVNRSB9ID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzJylcblxuY29uc3QgdGhlbWVCeU1vZGUgPSBPYmplY3QuZnJlZXplKHtcbiAgbGlnaHQ6IENvbG9yTW9kZS5MaWdodCxcbiAgZGFyazogQ29sb3JNb2RlLkRhcmtcbn0pXG5cbmNvbnN0IGRlZmF1bHRUaGVtZSA9IHRoZW1lQnlNb2RlW0xJR0hUX1RIRU1FXVxuXG5jb25zdCBzd2l0Y2hUaGVtZSA9ICh2YWwpID0+IHtcbiAgbGV0IHRoZW1lID0gTElHSFRfVEhFTUVcblxuICBpZiAodmFsLnRvTG9jYWxlTG93ZXJDYXNlKCkudHJpbSgpID09PSBDTURfTU9ERV9MSUdIVCkge1xuICAgIHRoZW1lID0gTElHSFRfVEhFTUVcbiAgfSBlbHNlIGlmICh2YWwudG9Mb2NhbGVMb3dlckNhc2UoKS50cmltKCkgPT09IENNRF9NT0RFX0RBUkspIHtcbiAgICB0aGVtZSA9IERBUktfVEhFTUVcbiAgfVxuXG4gIHJldHVybiB0aGVtZUJ5TW9kZVt0aGVtZV1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGRlZmF1bHRUaGVtZSwgc3dpdGNoVGhlbWUgfVxuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Qb3BwaW5zJmRpc3BsYXk9c3dhcCk7XCJdKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcImJvZHkge1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMDtcXG4gIGZvbnQtZmFtaWx5OiBQb3BwaW5zLCBzYW5zLXNlcmlmO1xcbn1cXG5cXG4ucmVhY3QtdGVybWluYWwtd3JhcHBlciB7XFxuICBib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuICBoZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnQ7XFxuICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcXG59XFxuXFxuLnJlYWN0LXRlcm1pbmFsOmxhc3QtY2hpbGQge1xcbiAgcGFkZGluZy1ib3R0b206IDUwcHg7XFxufVxcblxcbi5sb2FkZXItY29udGFpbmVyIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDB2aDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cXG4ubG9hZGVyLWNvbnRhaW5lci5kYXJrIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMyNTJhMzM7XFxufVxcblxcbi5sb2FkZXItY29udGFpbmVyLmxpZ2h0IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XFxufVxcblxcbi5sb2FkZXItY29udGFpbmVyLW1zZy5kYXJrIHtcXG4gIGNvbG9yOiAjZmZmO1xcbn1cXG5cXG4ubG9hZGVyLWNvbnRhaW5lci1tc2cubGlnaHQge1xcbiAgY29sb3I6ICMwMDA7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL2ludGVyZmFjZXMvc3R5bGVzL21haW4uY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVBO0VBQ0UsU0FBUztFQUNULFVBQVU7RUFDVixnQ0FBZ0M7QUFDbEM7O0FBRUE7RUFDRSwyQkFBMkI7RUFDM0Isd0JBQXdCO0VBQ3hCLDBCQUEwQjtBQUM1Qjs7QUFFQTtFQUNFLG9CQUFvQjtBQUN0Qjs7QUFFQTtFQUNFLFdBQVc7RUFDWCxhQUFhO0VBQ2IsYUFBYTtFQUNiLHVCQUF1QjtFQUN2QixtQkFBbUI7RUFDbkIsc0JBQXNCO0FBQ3hCOztBQUVBO0VBQ0UseUJBQXlCO0FBQzNCOztBQUVBO0VBQ0Usc0JBQXNCO0FBQ3hCOztBQUVBO0VBQ0UsV0FBVztBQUNiOztBQUVBO0VBQ0UsV0FBVztBQUNiXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgdXJsKFxcXCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVBvcHBpbnMmZGlzcGxheT1zd2FwXFxcIik7XFxuXFxuYm9keSB7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwO1xcbiAgZm9udC1mYW1pbHk6IFBvcHBpbnMsIHNhbnMtc2VyaWY7XFxufVxcblxcbi5yZWFjdC10ZXJtaW5hbC13cmFwcGVyIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcXG4gIGhlaWdodDogMTAwdmggIWltcG9ydGFudDtcXG4gIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVhY3QtdGVybWluYWw6bGFzdC1jaGlsZCB7XFxuICBwYWRkaW5nLWJvdHRvbTogNTBweDtcXG59XFxuXFxuLmxvYWRlci1jb250YWluZXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMHZoO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcblxcbi5sb2FkZXItY29udGFpbmVyLmRhcmsge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI1MmEzMztcXG59XFxuXFxuLmxvYWRlci1jb250YWluZXIubGlnaHQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcXG59XFxuXFxuLmxvYWRlci1jb250YWluZXItbXNnLmRhcmsge1xcbiAgY29sb3I6ICNmZmY7XFxufVxcblxcbi5sb2FkZXItY29udGFpbmVyLW1zZy5saWdodCB7XFxuICBjb2xvcjogIzAwMDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9tYWluLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vbWFpbi5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge307XG4vLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4vLyBUaGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Ncbl9fd2VicGFja19yZXF1aXJlX18uZSA9IChjaHVua0lkKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZSgocHJvbWlzZXMsIGtleSkgPT4ge1xuXHRcdF9fd2VicGFja19yZXF1aXJlX18uZltrZXldKGNodW5rSWQsIHByb21pc2VzKTtcblx0XHRyZXR1cm4gcHJvbWlzZXM7XG5cdH0sIFtdKSk7XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy51ID0gKGNodW5rSWQpID0+IHtcblx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG5cdHJldHVybiBcIlwiICsgY2h1bmtJZCArIFwiLmJ1bmRsZS5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkgc2NyaXB0VXJsID0gc2NyaXB0c1tzY3JpcHRzLmxlbmd0aCAtIDFdLnNyY1xuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vLyB1bmRlZmluZWQgPSBjaHVuayBub3QgbG9hZGVkLCBudWxsID0gY2h1bmsgcHJlbG9hZGVkL3ByZWZldGNoZWRcbi8vIFtyZXNvbHZlLCByZWplY3QsIFByb21pc2VdID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0MTc5OiAwXG59O1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmYuaiA9IChjaHVua0lkLCBwcm9taXNlcykgPT4ge1xuXHRcdC8vIEpTT05QIGNodW5rIGxvYWRpbmcgZm9yIGphdmFzY3JpcHRcblx0XHR2YXIgaW5zdGFsbGVkQ2h1bmtEYXRhID0gX193ZWJwYWNrX3JlcXVpcmVfXy5vKGluc3RhbGxlZENodW5rcywgY2h1bmtJZCkgPyBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gOiB1bmRlZmluZWQ7XG5cdFx0aWYoaW5zdGFsbGVkQ2h1bmtEYXRhICE9PSAwKSB7IC8vIDAgbWVhbnMgXCJhbHJlYWR5IGluc3RhbGxlZFwiLlxuXG5cdFx0XHQvLyBhIFByb21pc2UgbWVhbnMgXCJjdXJyZW50bHkgbG9hZGluZ1wiLlxuXHRcdFx0aWYoaW5zdGFsbGVkQ2h1bmtEYXRhKSB7XG5cdFx0XHRcdHByb21pc2VzLnB1c2goaW5zdGFsbGVkQ2h1bmtEYXRhWzJdKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmKHRydWUpIHsgLy8gYWxsIGNodW5rcyBoYXZlIEpTXG5cdFx0XHRcdFx0Ly8gc2V0dXAgUHJvbWlzZSBpbiBjaHVuayBjYWNoZVxuXHRcdFx0XHRcdHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gKGluc3RhbGxlZENodW5rRGF0YSA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IFtyZXNvbHZlLCByZWplY3RdKSk7XG5cdFx0XHRcdFx0cHJvbWlzZXMucHVzaChpbnN0YWxsZWRDaHVua0RhdGFbMl0gPSBwcm9taXNlKTtcblxuXHRcdFx0XHRcdC8vIHN0YXJ0IGNodW5rIGxvYWRpbmdcblx0XHRcdFx0XHR2YXIgdXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpO1xuXHRcdFx0XHRcdC8vIGNyZWF0ZSBlcnJvciBiZWZvcmUgc3RhY2sgdW53b3VuZCB0byBnZXQgdXNlZnVsIHN0YWNrdHJhY2UgbGF0ZXJcblx0XHRcdFx0XHR2YXIgZXJyb3IgPSBuZXcgRXJyb3IoKTtcblx0XHRcdFx0XHR2YXIgbG9hZGluZ0VuZGVkID0gKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oaW5zdGFsbGVkQ2h1bmtzLCBjaHVua0lkKSkge1xuXHRcdFx0XHRcdFx0XHRpbnN0YWxsZWRDaHVua0RhdGEgPSBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF07XG5cdFx0XHRcdFx0XHRcdGlmKGluc3RhbGxlZENodW5rRGF0YSAhPT0gMCkgaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHRpZihpbnN0YWxsZWRDaHVua0RhdGEpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgZXJyb3JUeXBlID0gZXZlbnQgJiYgKGV2ZW50LnR5cGUgPT09ICdsb2FkJyA/ICdtaXNzaW5nJyA6IGV2ZW50LnR5cGUpO1xuXHRcdFx0XHRcdFx0XHRcdHZhciByZWFsU3JjID0gZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC5zcmM7XG5cdFx0XHRcdFx0XHRcdFx0ZXJyb3IubWVzc2FnZSA9ICdMb2FkaW5nIGNodW5rICcgKyBjaHVua0lkICsgJyBmYWlsZWQuXFxuKCcgKyBlcnJvclR5cGUgKyAnOiAnICsgcmVhbFNyYyArICcpJztcblx0XHRcdFx0XHRcdFx0XHRlcnJvci5uYW1lID0gJ0NodW5rTG9hZEVycm9yJztcblx0XHRcdFx0XHRcdFx0XHRlcnJvci50eXBlID0gZXJyb3JUeXBlO1xuXHRcdFx0XHRcdFx0XHRcdGVycm9yLnJlcXVlc3QgPSByZWFsU3JjO1xuXHRcdFx0XHRcdFx0XHRcdGluc3RhbGxlZENodW5rRGF0YVsxXShlcnJvcik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ubCh1cmwsIGxvYWRpbmdFbmRlZCwgXCJjaHVuay1cIiArIGNodW5rSWQsIGNodW5rSWQpO1xuXHRcdFx0XHR9IGVsc2UgaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcblx0XHRcdH1cblx0XHR9XG59O1xuXG4vLyBubyBwcmVmZXRjaGluZ1xuXG4vLyBubyBwcmVsb2FkZWRcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdFxuXG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8uaiA9IChjaHVua0lkKSA9PiAoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID09PSAwKTtcblxuLy8gaW5zdGFsbCBhIEpTT05QIGNhbGxiYWNrIGZvciBjaHVuayBsb2FkaW5nXG52YXIgd2VicGFja0pzb25wQ2FsbGJhY2sgPSAocGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24sIGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Ly8gYWRkIFwibW9yZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxlcyBvYmplY3QsXG5cdC8vIHRoZW4gZmxhZyBhbGwgXCJjaHVua0lkc1wiIGFzIGxvYWRlZCBhbmQgZmlyZSBjYWxsYmFja1xuXHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwO1xuXHRpZihjaHVua0lkcy5zb21lKChpZCkgPT4gKGluc3RhbGxlZENodW5rc1tpZF0gIT09IDApKSkge1xuXHRcdGZvcihtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcblx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYocnVudGltZSkgdmFyIHJlc3VsdCA9IHJ1bnRpbWUoX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cdH1cblx0aWYocGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24pIHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xuXHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xuXHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oaW5zdGFsbGVkQ2h1bmtzLCBjaHVua0lkKSAmJiBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcblx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXVswXSgpO1xuXHRcdH1cblx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSAwO1xuXHR9XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLk8ocmVzdWx0KTtcbn1cblxudmFyIGNodW5rTG9hZGluZ0dsb2JhbCA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmt3ZWFsXCJdID0gc2VsZltcIndlYnBhY2tDaHVua3dlYWxcIl0gfHwgW107XG5jaHVua0xvYWRpbmdHbG9iYWwuZm9yRWFjaCh3ZWJwYWNrSnNvbnBDYWxsYmFjay5iaW5kKG51bGwsIDApKTtcbmNodW5rTG9hZGluZ0dsb2JhbC5wdXNoID0gd2VicGFja0pzb25wQ2FsbGJhY2suYmluZChudWxsLCBjaHVua0xvYWRpbmdHbG9iYWwucHVzaC5iaW5kKGNodW5rTG9hZGluZ0dsb2JhbCkpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSBkZXBlbmRzIG9uIG90aGVyIGxvYWRlZCBjaHVua3MgYW5kIGV4ZWN1dGlvbiBuZWVkIHRvIGJlIGRlbGF5ZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHVuZGVmaW5lZCwgWzI1Nl0sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDEyODUpKSlcbl9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8oX193ZWJwYWNrX2V4cG9ydHNfXyk7XG4iXSwibmFtZXMiOlsiZGVmZXJyZWQiLCJsZWFmUHJvdG90eXBlcyIsImdldFByb3RvIiwiaW5Qcm9ncmVzcyIsImRhdGFXZWJwYWNrUHJlZml4IiwiUmVhY3QiLCJyZXF1aXJlIiwiUHJvZ3Jlc3NCYXIiLCJ1c2VUaGVtZSIsIkxJR0hUX1RIRU1FX0tFWSIsIm1vZHVsZSIsImV4cG9ydHMiLCJMb2FkZXIiLCJtc2ciLCJ0aGVtZSIsImlzTGlnaHRUaGVtZSIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJoZWlnaHQiLCJ3aWR0aCIsImFyaWFMYWJlbCIsIndyYXBwZXJTdHlsZSIsIndyYXBwZXJDbGFzcyIsImJvcmRlckNvbG9yIiwiYmFyQ29sb3IiLCJBUFBfTkFNRSIsIktFWV9NT0RFIiwiS0VZX0NMRUFSIiwiQ01EX01PREVfTElHSFQiLCJDTURfTU9ERV9EQVJLIiwiTElHSFRfVEhFTUUiLCJEQVJLX1RIRU1FIiwiREFSS19USEVNRV9LRVkiLCJERUZBVUxUX09VVFBVVFNfTElTVCIsIktFWV9DT0RFX0FSUk9XX1VQIiwiVEVSTUlOQUxfSEVJR0hUIiwiS0VZX1RIRU1FIiwiS0VZX0hJU1RPUlkiLCJCQVNJQ19DTURTIiwiREVGQVVMVF9QUk9NUFQiLCJDVVJSRU5UX0RJUl9DTUQiLCJBUFBfTE9BREVSX01TRyIsIkZBTExCQUNLX0xPQURFUl9NU0ciLCJIRUFMVEhfQ01EIiwiZ2V0U2Vzc2lvblN0b3JhZ2UiLCJzZXRTZXNzaW9uU3RvcmFnZSIsImRlZmF1bHRUaGVtZSIsInNldFRoZW1lIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJ1bmRlZmluZWQiLCJzZXRUaGVtZU9uU3RhdGVBbmRTZXNzaW9uIiwidCIsImNyZWF0ZVJvb3QiLCJyb290IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIkFwcCIsImxhenkiLCJyZW5kZXIiLCJTdXNwZW5zZSIsImZhbGxiYWNrIiwiZ2V0TG9jYWxTdG9yYWdlIiwia2V5IiwiSlNPTiIsInBhcnNlIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInNldExvY2FsU3RvcmFnZSIsInZhbCIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJzZXNzaW9uU3RvcmFnZSIsIkNvbG9yTW9kZSIsInRoZW1lQnlNb2RlIiwiT2JqZWN0IiwiZnJlZXplIiwibGlnaHQiLCJMaWdodCIsImRhcmsiLCJEYXJrIiwic3dpdGNoVGhlbWUiLCJ0b0xvY2FsZUxvd2VyQ2FzZSIsInRyaW0iLCJfX19DU1NfTE9BREVSX0VYUE9SVF9fXyIsInB1c2giLCJpZCIsIm9wdGlvbnMiLCJzdHlsZVRhZ1RyYW5zZm9ybSIsInNldEF0dHJpYnV0ZXMiLCJpbnNlcnQiLCJkb21BUEkiLCJpbnNlcnRTdHlsZUVsZW1lbnQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiY2FsbCIsIm0iLCJPIiwicmVzdWx0IiwiY2h1bmtJZHMiLCJmbiIsInByaW9yaXR5Iiwibm90RnVsZmlsbGVkIiwiSW5maW5pdHkiLCJpIiwibGVuZ3RoIiwiZnVsZmlsbGVkIiwiaiIsImtleXMiLCJldmVyeSIsInNwbGljZSIsInIiLCJuIiwiZ2V0dGVyIiwiX19lc01vZHVsZSIsImQiLCJhIiwiZ2V0UHJvdG90eXBlT2YiLCJvYmoiLCJ2YWx1ZSIsIm1vZGUiLCJ0aGlzIiwidGhlbiIsIm5zIiwiY3JlYXRlIiwiZGVmIiwiY3VycmVudCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZm9yRWFjaCIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZiIsImUiLCJjaHVua0lkIiwiUHJvbWlzZSIsImFsbCIsInJlZHVjZSIsInByb21pc2VzIiwidSIsImciLCJnbG9iYWxUaGlzIiwiRnVuY3Rpb24iLCJ3aW5kb3ciLCJwcm9wIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJsIiwidXJsIiwiZG9uZSIsInNjcmlwdCIsIm5lZWRBdHRhY2giLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzIiwiZ2V0QXR0cmlidXRlIiwiY2hhcnNldCIsInRpbWVvdXQiLCJuYyIsInNldEF0dHJpYnV0ZSIsInNyYyIsIm9uU2NyaXB0Q29tcGxldGUiLCJwcmV2IiwiZXZlbnQiLCJvbmVycm9yIiwib25sb2FkIiwiY2xlYXJUaW1lb3V0IiwiZG9uZUZucyIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNldFRpbWVvdXQiLCJiaW5kIiwidHlwZSIsInRhcmdldCIsImhlYWQiLCJhcHBlbmRDaGlsZCIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwic2NyaXB0VXJsIiwiaW1wb3J0U2NyaXB0cyIsImxvY2F0aW9uIiwiY3VycmVudFNjcmlwdCIsIkVycm9yIiwicmVwbGFjZSIsInAiLCJpbnN0YWxsZWRDaHVua3MiLCJpbnN0YWxsZWRDaHVua0RhdGEiLCJwcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImVycm9yIiwiZXJyb3JUeXBlIiwicmVhbFNyYyIsIm1lc3NhZ2UiLCJuYW1lIiwicmVxdWVzdCIsIndlYnBhY2tKc29ucENhbGxiYWNrIiwicGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24iLCJkYXRhIiwibW9yZU1vZHVsZXMiLCJydW50aW1lIiwic29tZSIsImNodW5rTG9hZGluZ0dsb2JhbCIsInNlbGYiLCJfX3dlYnBhY2tfZXhwb3J0c19fIl0sInNvdXJjZVJvb3QiOiIifQ==