@neysf/qiyu-web-sdk 1.1.1 → 1.1.3
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/dist/index.d.ts +48 -3
- package/dist/index.js +29 -29
- package/es/index.d.ts +48 -3
- package/es/index.js +26 -26
- package/package.json +1 -1
- package/static/demo.d389deb7.js +2 -0
- package/static/index.html +1 -1
- package/static/demo.40afc4a1.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(){var t={8129:function(t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var e={test:"qytest.netease.com",release:"qiyukf.netease.com",online:"qiyukf.com",overseas:"servehub.aiconn.com"},n={init:function(t,r,n){try{(new Image).src="https://qiyukf.com/sdk/res/img/loading.gif?t="+(new Date).getTime()+"&k="+t}catch(t){console.log(t)}return new Promise((function(o,i){t||i(new Error("appKey必填")),"[object Object]"!==Object.prototype.toString.call(r)&&i(new Error("参数类型错误,第二个参数应该是object"));var c=[];if(r)for(var u in r)console.log(u),c.push(u+"="+r[u]);var s,a=c.length?"?"+c.join("&"):"",f=document.getElementsByTagName("head")[0],p=document.createElement("script");function v(r,e){p.onerror=null,p.onload=null;var n="";if(clearTimeout(s),window.ysf)window.ysf("onready",(function(){o(window.ysf)}));else{"loaderror"===r||"onload"===r?(console.log(e),n="SDK_LOAD_ERROR"):n="SDK_LOADING_TIMEOUT";try{(new Image).src="https://qiyukf.com/sdk/res/img/loading.gif?t="+(new Date).getTime()+"&k="+t+"&error="+n}catch(t){console.log(t)}i(new Error(n))}}p.type="text/javascript",p.async=!0,p.src=n&&!e[n]?"//"+n+"/script/"+t+".js"+a:"//"+e[n||"online"]+"/script/"+t+".js"+a,s=setTimeout((function(){return v("timeout")}),3e4),p.onerror=function(t){return v("loaderror",t)},p.onload=function(t){return v("onload",t)},f.appendChild(p)}))}};r.default=n},4994:function(t){t.exports=function(t){return t&&t.__esModule?t:{default:t}},t.exports.__esModule=!0,t.exports.default=t.exports},9306:function(t,r,e){"use strict";var n=e(4901),o=e(6823),i=TypeError;t.exports=function(t){if(n(t))return t;throw new i(o(t)+" is not a function")}},5548:function(t,r,e){"use strict";var n=e(3517),o=e(6823),i=TypeError;t.exports=function(t){if(n(t))return t;throw new i(o(t)+" is not a constructor")}},3506:function(t,r,e){"use strict";var n=e(3925),o=String,i=TypeError;t.exports=function(t){if(n(t))return t;throw new i("Can't set "+o(t)+" as a prototype")}},679:function(t,r,e){"use strict";var n=e(1625),o=TypeError;t.exports=function(t,r){if(n(r,t))return t;throw new o("Incorrect invocation")}},8551:function(t,r,e){"use strict";var n=e(34),o=String,i=TypeError;t.exports=function(t){if(n(t))return t;throw new i(o(t)+" is not an object")}},9617:function(t,r,e){"use strict";var n=e(5397),o=e(5610),i=e(6198),c=function(t){return function(r,e,c){var u=n(r),s=i(u);if(0===s)return!t&&-1;var a,f=o(c,s);if(t&&e!=e){for(;s>f;)if((a=u[f++])!=a)return!0}else for(;s>f;f++)if((t||f in u)&&u[f]===e)return t||f||0;return!t&&-1}};t.exports={includes:c(!0),indexOf:c(!1)}},7680:function(t,r,e){"use strict";var n=e(9504);t.exports=n([].slice)},4428:function(t,r,e){"use strict";var n=e(8227)("iterator"),o=!1;try{var i=0,c={next:function(){return{done:!!i++}},return:function(){o=!0}};c[n]=function(){return this},Array.from(c,(function(){throw 2}))}catch(t){}t.exports=function(t,r){try{if(!r&&!o)return!1}catch(t){return!1}var e=!1;try{var i={};i[n]=function(){return{next:function(){return{done:e=!0}}}},t(i)}catch(t){}return e}},4576:function(t,r,e){"use strict";var n=e(9504),o=n({}.toString),i=n("".slice);t.exports=function(t){return i(o(t),8,-1)}},6955:function(t,r,e){"use strict";var n=e(2140),o=e(4901),i=e(4576),c=e(8227)("toStringTag"),u=Object,s="Arguments"===i(function(){return arguments}());t.exports=n?i:function(t){var r,e,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(e=function(t,r){try{return t[r]}catch(t){}}(r=u(t),c))?e:s?i(r):"Object"===(n=i(r))&&o(r.callee)?"Arguments":n}},7740:function(t,r,e){"use strict";var n=e(9297),o=e(5031),i=e(7347),c=e(4913);t.exports=function(t,r,e){for(var u=o(r),s=c.f,a=i.f,f=0;f<u.length;f++){var p=u[f];n(t,p)||e&&n(e,p)||s(t,p,a(r,p))}}},6699:function(t,r,e){"use strict";var n=e(3724),o=e(4913),i=e(6980);t.exports=n?function(t,r,e){return o.f(t,r,i(1,e))}:function(t,r,e){return t[r]=e,t}},6980:function(t){"use strict";t.exports=function(t,r){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:r}}},2106:function(t,r,e){"use strict";var n=e(283),o=e(4913);t.exports=function(t,r,e){return e.get&&n(e.get,r,{getter:!0}),e.set&&n(e.set,r,{setter:!0}),o.f(t,r,e)}},6840:function(t,r,e){"use strict";var n=e(4901),o=e(4913),i=e(283),c=e(9433);t.exports=function(t,r,e,u){u||(u={});var s=u.enumerable,a=void 0!==u.name?u.name:r;if(n(e)&&i(e,a,u),u.global)s?t[r]=e:c(r,e);else{try{u.unsafe?t[r]&&(s=!0):delete t[r]}catch(t){}s?t[r]=e:o.f(t,r,{value:e,enumerable:!1,configurable:!u.nonConfigurable,writable:!u.nonWritable})}return t}},9433:function(t,r,e){"use strict";var n=e(4475),o=Object.defineProperty;t.exports=function(t,r){try{o(n,t,{value:r,configurable:!0,writable:!0})}catch(e){n[t]=r}return r}},3724:function(t,r,e){"use strict";var n=e(9039);t.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4055:function(t,r,e){"use strict";var n=e(4475),o=e(34),i=n.document,c=o(i)&&o(i.createElement);t.exports=function(t){return c?i.createElement(t):{}}},7290:function(t,r,e){"use strict";var n=e(516),o=e(9088);t.exports=!n&&!o&&"object"==typeof window&&"object"==typeof document},516:function(t){"use strict";t.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},28:function(t,r,e){"use strict";var n=e(9392);t.exports=/ipad|iphone|ipod/i.test(n)&&"undefined"!=typeof Pebble},8119:function(t,r,e){"use strict";var n=e(9392);t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},9088:function(t,r,e){"use strict";var n=e(4475),o=e(4576);t.exports="process"===o(n.process)},6765:function(t,r,e){"use strict";var n=e(9392);t.exports=/web0s(?!.*chrome)/i.test(n)},9392:function(t){"use strict";t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},7388:function(t,r,e){"use strict";var n,o,i=e(4475),c=e(9392),u=i.process,s=i.Deno,a=u&&u.versions||s&&s.version,f=a&&a.v8;f&&(o=(n=f.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!o&&c&&(!(n=c.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=c.match(/Chrome\/(\d+)/))&&(o=+n[1]),t.exports=o},8727:function(t){"use strict";t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6518:function(t,r,e){"use strict";var n=e(4475),o=e(7347).f,i=e(6699),c=e(6840),u=e(9433),s=e(7740),a=e(2796);t.exports=function(t,r){var e,f,p,v,l,h=t.target,d=t.global,y=t.stat;if(e=d?n:y?n[h]||u(h,{}):n[h]&&n[h].prototype)for(f in r){if(v=r[f],p=t.dontCallGetSet?(l=o(e,f))&&l.value:e[f],!a(d?f:h+(y?".":"#")+f,t.forced)&&void 0!==p){if(typeof v==typeof p)continue;s(v,p)}(t.sham||p&&p.sham)&&i(v,"sham",!0),c(e,f,v,t)}}},9039:function(t){"use strict";t.exports=function(t){try{return!!t()}catch(t){return!0}}},8745:function(t,r,e){"use strict";var n=e(616),o=Function.prototype,i=o.apply,c=o.call;t.exports="object"==typeof Reflect&&Reflect.apply||(n?c.bind(i):function(){return c.apply(i,arguments)})},6080:function(t,r,e){"use strict";var n=e(7476),o=e(9306),i=e(616),c=n(n.bind);t.exports=function(t,r){return o(t),void 0===r?t:i?c(t,r):function(){return t.apply(r,arguments)}}},616:function(t,r,e){"use strict";var n=e(9039);t.exports=!n((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},9565:function(t,r,e){"use strict";var n=e(616),o=Function.prototype.call;t.exports=n?o.bind(o):function(){return o.apply(o,arguments)}},350:function(t,r,e){"use strict";var n=e(3724),o=e(9297),i=Function.prototype,c=n&&Object.getOwnPropertyDescriptor,u=o(i,"name"),s=u&&"something"===function(){}.name,a=u&&(!n||n&&c(i,"name").configurable);t.exports={EXISTS:u,PROPER:s,CONFIGURABLE:a}},6706:function(t,r,e){"use strict";var n=e(9504),o=e(9306);t.exports=function(t,r,e){try{return n(o(Object.getOwnPropertyDescriptor(t,r)[e]))}catch(t){}}},7476:function(t,r,e){"use strict";var n=e(4576),o=e(9504);t.exports=function(t){if("Function"===n(t))return o(t)}},9504:function(t,r,e){"use strict";var n=e(616),o=Function.prototype,i=o.call,c=n&&o.bind.bind(i,i);t.exports=n?c:function(t){return function(){return i.apply(t,arguments)}}},7751:function(t,r,e){"use strict";var n=e(4475),o=e(4901);t.exports=function(t,r){return arguments.length<2?(e=n[t],o(e)?e:void 0):n[t]&&n[t][r];var e}},851:function(t,r,e){"use strict";var n=e(6955),o=e(5966),i=e(4117),c=e(6269),u=e(8227)("iterator");t.exports=function(t){if(!i(t))return o(t,u)||o(t,"@@iterator")||c[n(t)]}},81:function(t,r,e){"use strict";var n=e(9565),o=e(9306),i=e(8551),c=e(6823),u=e(851),s=TypeError;t.exports=function(t,r){var e=arguments.length<2?u(t):r;if(o(e))return i(n(e,t));throw new s(c(t)+" is not iterable")}},5966:function(t,r,e){"use strict";var n=e(9306),o=e(4117);t.exports=function(t,r){var e=t[r];return o(e)?void 0:n(e)}},4475:function(t,r,e){"use strict";var n=function(t){return t&&t.Math===Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e.g&&e.g)||n("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:function(t,r,e){"use strict";var n=e(9504),o=e(8981),i=n({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,r){return i(o(t),r)}},421:function(t){"use strict";t.exports={}},3138:function(t){"use strict";t.exports=function(t,r){try{1===arguments.length?console.error(t):console.error(t,r)}catch(t){}}},397:function(t,r,e){"use strict";var n=e(7751);t.exports=n("document","documentElement")},5917:function(t,r,e){"use strict";var n=e(3724),o=e(9039),i=e(4055);t.exports=!n&&!o((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},7055:function(t,r,e){"use strict";var n=e(9504),o=e(9039),i=e(4576),c=Object,u=n("".split);t.exports=o((function(){return!c("z").propertyIsEnumerable(0)}))?function(t){return"String"===i(t)?u(t,""):c(t)}:c},3706:function(t,r,e){"use strict";var n=e(9504),o=e(4901),i=e(7629),c=n(Function.toString);o(i.inspectSource)||(i.inspectSource=function(t){return c(t)}),t.exports=i.inspectSource},1181:function(t,r,e){"use strict";var n,o,i,c=e(8622),u=e(4475),s=e(34),a=e(6699),f=e(9297),p=e(7629),v=e(6119),l=e(421),h="Object already initialized",d=u.TypeError,y=u.WeakMap;if(c||p.state){var m=p.state||(p.state=new y);m.get=m.get,m.has=m.has,m.set=m.set,n=function(t,r){if(m.has(t))throw new d(h);return r.facade=t,m.set(t,r),r},o=function(t){return m.get(t)||{}},i=function(t){return m.has(t)}}else{var g=v("state");l[g]=!0,n=function(t,r){if(f(t,g))throw new d(h);return r.facade=t,a(t,g,r),r},o=function(t){return f(t,g)?t[g]:{}},i=function(t){return f(t,g)}}t.exports={set:n,get:o,has:i,enforce:function(t){return i(t)?o(t):n(t,{})},getterFor:function(t){return function(r){var e;if(!s(r)||(e=o(r)).type!==t)throw new d("Incompatible receiver, "+t+" required");return e}}}},4209:function(t,r,e){"use strict";var n=e(8227),o=e(6269),i=n("iterator"),c=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||c[i]===t)}},4901:function(t){"use strict";var r="object"==typeof document&&document.all;t.exports=void 0===r&&void 0!==r?function(t){return"function"==typeof t||t===r}:function(t){return"function"==typeof t}},3517:function(t,r,e){"use strict";var n=e(9504),o=e(9039),i=e(4901),c=e(6955),u=e(7751),s=e(3706),a=function(){},f=u("Reflect","construct"),p=/^\s*(?:class|function)\b/,v=n(p.exec),l=!p.test(a),h=function(t){if(!i(t))return!1;try{return f(a,[],t),!0}catch(t){return!1}},d=function(t){if(!i(t))return!1;switch(c(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return l||!!v(p,s(t))}catch(t){return!0}};d.sham=!0,t.exports=!f||o((function(){var t;return h(h.call)||!h(Object)||!h((function(){t=!0}))||t}))?d:h},2796:function(t,r,e){"use strict";var n=e(9039),o=e(4901),i=/#|\.prototype\./,c=function(t,r){var e=s[u(t)];return e===f||e!==a&&(o(r)?n(r):!!r)},u=c.normalize=function(t){return String(t).replace(i,".").toLowerCase()},s=c.data={},a=c.NATIVE="N",f=c.POLYFILL="P";t.exports=c},4117:function(t){"use strict";t.exports=function(t){return null==t}},34:function(t,r,e){"use strict";var n=e(4901);t.exports=function(t){return"object"==typeof t?null!==t:n(t)}},3925:function(t,r,e){"use strict";var n=e(34);t.exports=function(t){return n(t)||null===t}},6395:function(t){"use strict";t.exports=!1},757:function(t,r,e){"use strict";var n=e(7751),o=e(4901),i=e(1625),c=e(7040),u=Object;t.exports=c?function(t){return"symbol"==typeof t}:function(t){var r=n("Symbol");return o(r)&&i(r.prototype,u(t))}},2652:function(t,r,e){"use strict";var n=e(6080),o=e(9565),i=e(8551),c=e(6823),u=e(4209),s=e(6198),a=e(1625),f=e(81),p=e(851),v=e(9539),l=TypeError,h=function(t,r){this.stopped=t,this.result=r},d=h.prototype;t.exports=function(t,r,e){var y,m,g,b,x,w,j,O=e&&e.that,S=!(!e||!e.AS_ENTRIES),E=!(!e||!e.IS_RECORD),T=!(!e||!e.IS_ITERATOR),P=!(!e||!e.INTERRUPTED),R=n(r,O),_=function(t){return y&&v(y,"normal",t),new h(!0,t)},C=function(t){return S?(i(t),P?R(t[0],t[1],_):R(t[0],t[1])):P?R(t,_):R(t)};if(E)y=t.iterator;else if(T)y=t;else{if(!(m=p(t)))throw new l(c(t)+" is not iterable");if(u(m)){for(g=0,b=s(t);b>g;g++)if((x=C(t[g]))&&a(d,x))return x;return new h(!1)}y=f(t,m)}for(w=E?t.next:y.next;!(j=o(w,y)).done;){try{x=C(j.value)}catch(t){v(y,"throw",t)}if("object"==typeof x&&x&&a(d,x))return x}return new h(!1)}},9539:function(t,r,e){"use strict";var n=e(9565),o=e(8551),i=e(5966);t.exports=function(t,r,e){var c,u;o(t);try{if(!(c=i(t,"return"))){if("throw"===r)throw e;return e}c=n(c,t)}catch(t){u=!0,c=t}if("throw"===r)throw e;if(u)throw c;return o(c),e}},6269:function(t){"use strict";t.exports={}},6198:function(t,r,e){"use strict";var n=e(8014);t.exports=function(t){return n(t.length)}},283:function(t,r,e){"use strict";var n=e(9504),o=e(9039),i=e(4901),c=e(9297),u=e(3724),s=e(350).CONFIGURABLE,a=e(3706),f=e(1181),p=f.enforce,v=f.get,l=String,h=Object.defineProperty,d=n("".slice),y=n("".replace),m=n([].join),g=u&&!o((function(){return 8!==h((function(){}),"length",{value:8}).length})),b=String(String).split("String"),x=t.exports=function(t,r,e){"Symbol("===d(l(r),0,7)&&(r="["+y(l(r),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),e&&e.getter&&(r="get "+r),e&&e.setter&&(r="set "+r),(!c(t,"name")||s&&t.name!==r)&&(u?h(t,"name",{value:r,configurable:!0}):t.name=r),g&&e&&c(e,"arity")&&t.length!==e.arity&&h(t,"length",{value:e.arity});try{e&&c(e,"constructor")&&e.constructor?u&&h(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var n=p(t);return c(n,"source")||(n.source=m(b,"string"==typeof r?r:"")),t};Function.prototype.toString=x((function(){return i(this)&&v(this).source||a(this)}),"toString")},741:function(t){"use strict";var r=Math.ceil,e=Math.floor;t.exports=Math.trunc||function(t){var n=+t;return(n>0?e:r)(n)}},1955:function(t,r,e){"use strict";var n,o,i,c,u,s=e(4475),a=e(3389),f=e(6080),p=e(9225).set,v=e(8265),l=e(8119),h=e(28),d=e(6765),y=e(9088),m=s.MutationObserver||s.WebKitMutationObserver,g=s.document,b=s.process,x=s.Promise,w=a("queueMicrotask");if(!w){var j=new v,O=function(){var t,r;for(y&&(t=b.domain)&&t.exit();r=j.get();)try{r()}catch(t){throw j.head&&n(),t}t&&t.enter()};l||y||d||!m||!g?!h&&x&&x.resolve?((c=x.resolve(void 0)).constructor=x,u=f(c.then,c),n=function(){u(O)}):y?n=function(){b.nextTick(O)}:(p=f(p,s),n=function(){p(O)}):(o=!0,i=g.createTextNode(""),new m(O).observe(i,{characterData:!0}),n=function(){i.data=o=!o}),w=function(t){j.head||n(),j.add(t)}}t.exports=w},6043:function(t,r,e){"use strict";var n=e(9306),o=TypeError,i=function(t){var r,e;this.promise=new t((function(t,n){if(void 0!==r||void 0!==e)throw new o("Bad Promise constructor");r=t,e=n})),this.resolve=n(r),this.reject=n(e)};t.exports.f=function(t){return new i(t)}},4913:function(t,r,e){"use strict";var n=e(3724),o=e(5917),i=e(8686),c=e(8551),u=e(6969),s=TypeError,a=Object.defineProperty,f=Object.getOwnPropertyDescriptor,p="enumerable",v="configurable",l="writable";r.f=n?i?function(t,r,e){if(c(t),r=u(r),c(e),"function"==typeof t&&"prototype"===r&&"value"in e&&l in e&&!e[l]){var n=f(t,r);n&&n[l]&&(t[r]=e.value,e={configurable:v in e?e[v]:n[v],enumerable:p in e?e[p]:n[p],writable:!1})}return a(t,r,e)}:a:function(t,r,e){if(c(t),r=u(r),c(e),o)try{return a(t,r,e)}catch(t){}if("get"in e||"set"in e)throw new s("Accessors not supported");return"value"in e&&(t[r]=e.value),t}},7347:function(t,r,e){"use strict";var n=e(3724),o=e(9565),i=e(8773),c=e(6980),u=e(5397),s=e(6969),a=e(9297),f=e(5917),p=Object.getOwnPropertyDescriptor;r.f=n?p:function(t,r){if(t=u(t),r=s(r),f)try{return p(t,r)}catch(t){}if(a(t,r))return c(!o(i.f,t,r),t[r])}},8480:function(t,r,e){"use strict";var n=e(1828),o=e(8727).concat("length","prototype");r.f=Object.getOwnPropertyNames||function(t){return n(t,o)}},3717:function(t,r){"use strict";r.f=Object.getOwnPropertySymbols},1625:function(t,r,e){"use strict";var n=e(9504);t.exports=n({}.isPrototypeOf)},1828:function(t,r,e){"use strict";var n=e(9504),o=e(9297),i=e(5397),c=e(9617).indexOf,u=e(421),s=n([].push);t.exports=function(t,r){var e,n=i(t),a=0,f=[];for(e in n)!o(u,e)&&o(n,e)&&s(f,e);for(;r.length>a;)o(n,e=r[a++])&&(~c(f,e)||s(f,e));return f}},8773:function(t,r){"use strict";var e={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,o=n&&!e.call({1:2},1);r.f=o?function(t){var r=n(this,t);return!!r&&r.enumerable}:e},2967:function(t,r,e){"use strict";var n=e(6706),o=e(34),i=e(7750),c=e(3506);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,r=!1,e={};try{(t=n(Object.prototype,"__proto__","set"))(e,[]),r=e instanceof Array}catch(t){}return function(e,n){return i(e),c(n),o(e)?(r?t(e,n):e.__proto__=n,e):e}}():void 0)},4270:function(t,r,e){"use strict";var n=e(9565),o=e(4901),i=e(34),c=TypeError;t.exports=function(t,r){var e,u;if("string"===r&&o(e=t.toString)&&!i(u=n(e,t)))return u;if(o(e=t.valueOf)&&!i(u=n(e,t)))return u;if("string"!==r&&o(e=t.toString)&&!i(u=n(e,t)))return u;throw new c("Can't convert object to primitive value")}},5031:function(t,r,e){"use strict";var n=e(7751),o=e(9504),i=e(8480),c=e(3717),u=e(8551),s=o([].concat);t.exports=n("Reflect","ownKeys")||function(t){var r=i.f(u(t)),e=c.f;return e?s(r,e(t)):r}},1103:function(t){"use strict";t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},916:function(t,r,e){"use strict";var n=e(4475),o=e(550),i=e(4901),c=e(2796),u=e(3706),s=e(8227),a=e(7290),f=e(516),p=e(6395),v=e(7388),l=o&&o.prototype,h=s("species"),d=!1,y=i(n.PromiseRejectionEvent),m=c("Promise",(function(){var t=u(o),r=t!==String(o);if(!r&&66===v)return!0;if(p&&(!l.catch||!l.finally))return!0;if(!v||v<51||!/native code/.test(t)){var e=new o((function(t){t(1)})),n=function(t){t((function(){}),(function(){}))};if((e.constructor={})[h]=n,!(d=e.then((function(){}))instanceof n))return!0}return!r&&(a||f)&&!y}));t.exports={CONSTRUCTOR:m,REJECTION_EVENT:y,SUBCLASSING:d}},550:function(t,r,e){"use strict";var n=e(4475);t.exports=n.Promise},3438:function(t,r,e){"use strict";var n=e(8551),o=e(34),i=e(6043);t.exports=function(t,r){if(n(t),o(r)&&r.constructor===t)return r;var e=i.f(t);return(0,e.resolve)(r),e.promise}},537:function(t,r,e){"use strict";var n=e(550),o=e(4428),i=e(916).CONSTRUCTOR;t.exports=i||!o((function(t){n.all(t).then(void 0,(function(){}))}))},8265:function(t){"use strict";var r=function(){this.head=null,this.tail=null};r.prototype={add:function(t){var r={item:t,next:null},e=this.tail;e?e.next=r:this.head=r,this.tail=r},get:function(){var t=this.head;if(t)return null===(this.head=t.next)&&(this.tail=null),t.item}},t.exports=r},7750:function(t,r,e){"use strict";var n=e(4117),o=TypeError;t.exports=function(t){if(n(t))throw new o("Can't call method on "+t);return t}},3389:function(t,r,e){"use strict";var n=e(4475),o=e(3724),i=Object.getOwnPropertyDescriptor;t.exports=function(t){if(!o)return n[t];var r=i(n,t);return r&&r.value}},7633:function(t,r,e){"use strict";var n=e(7751),o=e(2106),i=e(8227),c=e(3724),u=i("species");t.exports=function(t){var r=n(t);c&&r&&!r[u]&&o(r,u,{configurable:!0,get:function(){return this}})}},687:function(t,r,e){"use strict";var n=e(4913).f,o=e(9297),i=e(8227)("toStringTag");t.exports=function(t,r,e){t&&!e&&(t=t.prototype),t&&!o(t,i)&&n(t,i,{configurable:!0,value:r})}},6119:function(t,r,e){"use strict";var n=e(5745),o=e(3392),i=n("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},7629:function(t,r,e){"use strict";var n=e(6395),o=e(4475),i=e(9433),c="__core-js_shared__",u=t.exports=o[c]||i(c,{});(u.versions||(u.versions=[])).push({version:"3.36.1",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:function(t,r,e){"use strict";var n=e(7629);t.exports=function(t,r){return n[t]||(n[t]=r||{})}},2293:function(t,r,e){"use strict";var n=e(8551),o=e(5548),i=e(4117),c=e(8227)("species");t.exports=function(t,r){var e,u=n(t).constructor;return void 0===u||i(e=n(u)[c])?r:o(e)}},4495:function(t,r,e){"use strict";var n=e(7388),o=e(9039),i=e(4475).String;t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol("symbol detection");return!i(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},9225:function(t,r,e){"use strict";var n,o,i,c,u=e(4475),s=e(8745),a=e(6080),f=e(4901),p=e(9297),v=e(9039),l=e(397),h=e(7680),d=e(4055),y=e(2812),m=e(8119),g=e(9088),b=u.setImmediate,x=u.clearImmediate,w=u.process,j=u.Dispatch,O=u.Function,S=u.MessageChannel,E=u.String,T=0,P={},R="onreadystatechange";v((function(){n=u.location}));var _=function(t){if(p(P,t)){var r=P[t];delete P[t],r()}},C=function(t){return function(){_(t)}},I=function(t){_(t.data)},N=function(t){u.postMessage(E(t),n.protocol+"//"+n.host)};b&&x||(b=function(t){y(arguments.length,1);var r=f(t)?t:O(t),e=h(arguments,1);return P[++T]=function(){s(r,void 0,e)},o(T),T},x=function(t){delete P[t]},g?o=function(t){w.nextTick(C(t))}:j&&j.now?o=function(t){j.now(C(t))}:S&&!m?(c=(i=new S).port2,i.port1.onmessage=I,o=a(c.postMessage,c)):u.addEventListener&&f(u.postMessage)&&!u.importScripts&&n&&"file:"!==n.protocol&&!v(N)?(o=N,u.addEventListener("message",I,!1)):o=R in d("script")?function(t){l.appendChild(d("script"))[R]=function(){l.removeChild(this),_(t)}}:function(t){setTimeout(C(t),0)}),t.exports={set:b,clear:x}},5610:function(t,r,e){"use strict";var n=e(1291),o=Math.max,i=Math.min;t.exports=function(t,r){var e=n(t);return e<0?o(e+r,0):i(e,r)}},5397:function(t,r,e){"use strict";var n=e(7055),o=e(7750);t.exports=function(t){return n(o(t))}},1291:function(t,r,e){"use strict";var n=e(741);t.exports=function(t){var r=+t;return r!=r||0===r?0:n(r)}},8014:function(t,r,e){"use strict";var n=e(1291),o=Math.min;t.exports=function(t){var r=n(t);return r>0?o(r,9007199254740991):0}},8981:function(t,r,e){"use strict";var n=e(7750),o=Object;t.exports=function(t){return o(n(t))}},2777:function(t,r,e){"use strict";var n=e(9565),o=e(34),i=e(757),c=e(5966),u=e(4270),s=e(8227),a=TypeError,f=s("toPrimitive");t.exports=function(t,r){if(!o(t)||i(t))return t;var e,s=c(t,f);if(s){if(void 0===r&&(r="default"),e=n(s,t,r),!o(e)||i(e))return e;throw new a("Can't convert object to primitive value")}return void 0===r&&(r="number"),u(t,r)}},6969:function(t,r,e){"use strict";var n=e(2777),o=e(757);t.exports=function(t){var r=n(t,"string");return o(r)?r:r+""}},2140:function(t,r,e){"use strict";var n={};n[e(8227)("toStringTag")]="z",t.exports="[object z]"===String(n)},6823:function(t){"use strict";var r=String;t.exports=function(t){try{return r(t)}catch(t){return"Object"}}},3392:function(t,r,e){"use strict";var n=e(9504),o=0,i=Math.random(),c=n(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+c(++o+i,36)}},7040:function(t,r,e){"use strict";var n=e(4495);t.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:function(t,r,e){"use strict";var n=e(3724),o=e(9039);t.exports=n&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},2812:function(t){"use strict";var r=TypeError;t.exports=function(t,e){if(t<e)throw new r("Not enough arguments");return t}},8622:function(t,r,e){"use strict";var n=e(4475),o=e(4901),i=n.WeakMap;t.exports=o(i)&&/native code/.test(String(i))},8227:function(t,r,e){"use strict";var n=e(4475),o=e(5745),i=e(9297),c=e(3392),u=e(4495),s=e(7040),a=n.Symbol,f=o("wks"),p=s?a.for||a:a&&a.withoutSetter||c;t.exports=function(t){return i(f,t)||(f[t]=u&&i(a,t)?a[t]:p("Symbol."+t)),f[t]}},6499:function(t,r,e){"use strict";var n=e(6518),o=e(9565),i=e(9306),c=e(6043),u=e(1103),s=e(2652);n({target:"Promise",stat:!0,forced:e(537)},{all:function(t){var r=this,e=c.f(r),n=e.resolve,a=e.reject,f=u((function(){var e=i(r.resolve),c=[],u=0,f=1;s(t,(function(t){var i=u++,s=!1;f++,o(e,r,t).then((function(t){s||(s=!0,c[i]=t,--f||n(c))}),a)})),--f||n(c)}));return f.error&&a(f.value),e.promise}})},2003:function(t,r,e){"use strict";var n=e(6518),o=e(6395),i=e(916).CONSTRUCTOR,c=e(550),u=e(7751),s=e(4901),a=e(6840),f=c&&c.prototype;if(n({target:"Promise",proto:!0,forced:i,real:!0},{catch:function(t){return this.then(void 0,t)}}),!o&&s(c)){var p=u("Promise").prototype.catch;f.catch!==p&&a(f,"catch",p,{unsafe:!0})}},436:function(t,r,e){"use strict";var n,o,i,c=e(6518),u=e(6395),s=e(9088),a=e(4475),f=e(9565),p=e(6840),v=e(2967),l=e(687),h=e(7633),d=e(9306),y=e(4901),m=e(34),g=e(679),b=e(2293),x=e(9225).set,w=e(1955),j=e(3138),O=e(1103),S=e(8265),E=e(1181),T=e(550),P=e(916),R=e(6043),_="Promise",C=P.CONSTRUCTOR,I=P.REJECTION_EVENT,N=P.SUBCLASSING,k=E.getterFor(_),M=E.set,D=T&&T.prototype,A=T,F=D,L=a.TypeError,U=a.document,z=a.process,G=R.f,q=G,B=!!(U&&U.createEvent&&a.dispatchEvent),K="unhandledrejection",W=function(t){var r;return!(!m(t)||!y(r=t.then))&&r},V=function(t,r){var e,n,o,i=r.value,c=1===r.state,u=c?t.ok:t.fail,s=t.resolve,a=t.reject,p=t.domain;try{u?(c||(2===r.rejection&&Y(r),r.rejection=1),!0===u?e=i:(p&&p.enter(),e=u(i),p&&(p.exit(),o=!0)),e===t.promise?a(new L("Promise-chain cycle")):(n=W(e))?f(n,e,s,a):s(e)):a(i)}catch(t){p&&!o&&p.exit(),a(t)}},J=function(t,r){t.notified||(t.notified=!0,w((function(){for(var e,n=t.reactions;e=n.get();)V(e,t);t.notified=!1,r&&!t.rejection&&H(t)})))},$=function(t,r,e){var n,o;B?((n=U.createEvent("Event")).promise=r,n.reason=e,n.initEvent(t,!1,!0),a.dispatchEvent(n)):n={promise:r,reason:e},!I&&(o=a["on"+t])?o(n):t===K&&j("Unhandled promise rejection",e)},H=function(t){f(x,a,(function(){var r,e=t.facade,n=t.value;if(X(t)&&(r=O((function(){s?z.emit("unhandledRejection",n,e):$(K,e,n)})),t.rejection=s||X(t)?2:1,r.error))throw r.value}))},X=function(t){return 1!==t.rejection&&!t.parent},Y=function(t){f(x,a,(function(){var r=t.facade;s?z.emit("rejectionHandled",r):$("rejectionhandled",r,t.value)}))},Q=function(t,r,e){return function(n){t(r,n,e)}},Z=function(t,r,e){t.done||(t.done=!0,e&&(t=e),t.value=r,t.state=2,J(t,!0))},tt=function(t,r,e){if(!t.done){t.done=!0,e&&(t=e);try{if(t.facade===r)throw new L("Promise can't be resolved itself");var n=W(r);n?w((function(){var e={done:!1};try{f(n,r,Q(tt,e,t),Q(Z,e,t))}catch(r){Z(e,r,t)}})):(t.value=r,t.state=1,J(t,!1))}catch(r){Z({done:!1},r,t)}}};if(C&&(F=(A=function(t){g(this,F),d(t),f(n,this);var r=k(this);try{t(Q(tt,r),Q(Z,r))}catch(t){Z(r,t)}}).prototype,(n=function(t){M(this,{type:_,done:!1,notified:!1,parent:!1,reactions:new S,rejection:!1,state:0,value:void 0})}).prototype=p(F,"then",(function(t,r){var e=k(this),n=G(b(this,A));return e.parent=!0,n.ok=!y(t)||t,n.fail=y(r)&&r,n.domain=s?z.domain:void 0,0===e.state?e.reactions.add(n):w((function(){V(n,e)})),n.promise})),o=function(){var t=new n,r=k(t);this.promise=t,this.resolve=Q(tt,r),this.reject=Q(Z,r)},R.f=G=function(t){return t===A||void 0===t?new o(t):q(t)},!u&&y(T)&&D!==Object.prototype)){i=D.then,N||p(D,"then",(function(t,r){var e=this;return new A((function(t,r){f(i,e,t,r)})).then(t,r)}),{unsafe:!0});try{delete D.constructor}catch(t){}v&&v(D,F)}c({global:!0,constructor:!0,wrap:!0,forced:C},{Promise:A}),l(A,_,!1,!0),h(_)},3362:function(t,r,e){"use strict";e(436),e(6499),e(2003),e(7743),e(1481),e(280)},7743:function(t,r,e){"use strict";var n=e(6518),o=e(9565),i=e(9306),c=e(6043),u=e(1103),s=e(2652);n({target:"Promise",stat:!0,forced:e(537)},{race:function(t){var r=this,e=c.f(r),n=e.reject,a=u((function(){var c=i(r.resolve);s(t,(function(t){o(c,r,t).then(e.resolve,n)}))}));return a.error&&n(a.value),e.promise}})},1481:function(t,r,e){"use strict";var n=e(6518),o=e(6043);n({target:"Promise",stat:!0,forced:e(916).CONSTRUCTOR},{reject:function(t){var r=o.f(this);return(0,r.reject)(t),r.promise}})},280:function(t,r,e){"use strict";var n=e(6518),o=e(7751),i=e(6395),c=e(550),u=e(916).CONSTRUCTOR,s=e(3438),a=o("Promise"),f=i&&!u;n({target:"Promise",stat:!0,forced:i||u},{resolve:function(t){return s(f&&this===a?c:this,t)}})}},r={};function e(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={exports:{}};return t[n].call(i.exports,i,i.exports,e),i.exports}e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),function(){"use strict";var t=e(4994)(e(8129));e(3362),t.default.init("e6786b9cf507566b11c623d3c0f03b62",{templateId:123,shuntId:11},"overseas").then((function(t){t("open")})).catch((function(t){console.log("sdk加载失败---",t)}))}()}();
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUV0VCxPQUFRLFVBQVdvRCxNQUFNLEVBQU1FLE9BQVE0SyxHQUFXTyxHQUE4QixDQUNsRnhVLFFBQVMsU0FBaUJrUSxHQUN4QixPQUFPOE0sRUFBZUUsR0FBaUIzWSxPQUFTMFksRUFBNEJsSixFQUEyQnhQLEtBQU0yTCxFQUMvRyxHLEdDZkVpTixFQUEyQixDQUFDLEVBR2hDLFNBQVNDLEVBQW9CQyxHQUU1QixJQUFJQyxFQUFlSCxFQUF5QkUsR0FDNUMsUUFBcUI5WCxJQUFqQitYLEVBQ0gsT0FBT0EsRUFBYXRiLFFBR3JCLElBQUlDLEVBQVNrYixFQUF5QkUsR0FBWSxDQUdqRHJiLFFBQVMsQ0FBQyxHQU9YLE9BSEF1YixFQUFvQkYsR0FBVS9jLEtBQUsyQixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTb2IsR0FHcEVuYixFQUFPRCxPQUNmLENDdEJBb2IsRUFBb0IvUixFQUFJLFdBQ3ZCLEdBQTBCLGlCQUFmRixXQUF5QixPQUFPQSxXQUMzQyxJQUNDLE9BQU81RyxNQUFRLElBQUlrRixTQUFTLGNBQWIsRUFDaEIsQ0FBRSxNQUFPK1QsR0FDUixHQUFzQixpQkFBWDliLE9BQXFCLE9BQU9BLE1BQ3hDLENBQ0EsQ0FQdUIsRyw0QkNBeEIrYixFLE9BQUFDLENBQUFDLEVBQUEsT0FFQUEsRUFBQSxNQUdJdmUsRUFBQUEsUUFBSXdlLEtBQUssbUNBQW9DLENBQ3pDQyxXQUFZLElBQ1pDLFFBQVMsSUFFVixZQUNFdE4sTUFBSyxTQUFDN08sR0FDUEEsRUFBSSxPQUNSLElBQ0tvYyxPQUFNLFNBQUNuZSxHQUNSQyxRQUFRQyxJQUFJLGFBQWNGLEVBQzlCLEciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AeXNmL3Nkay8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1wb3NzaWJsZS1wcm90b3R5cGUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4taW5zdGFuY2UuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNsaWNlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1icm93c2VyLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1kZW5vLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MtcGViYmxlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLXdlYm9zLXdlYmtpdC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbi5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1hcHBseS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1hY2Nlc3Nvci5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtY2xhdXNlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ob3N0LXJlcG9ydC1lcnJvcnMuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaHRtbC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wb3NzaWJsZS1wcm90b3R5cGUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1zeW1ib2wuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0ZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1jbG9zZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbi5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXRoLXRydW5jLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21pY3JvdGFzay5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BlcmZvcm0uanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb21pc2Utc3RhdGljcy1pbmNvcnJlY3QtaXRlcmF0aW9uLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3F1ZXVlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zYWZlLWdldC1idWlsdC1pbi5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc3BlY2llcy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1zdG9yZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Rhc2suanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmFsbC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5jYXRjaC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5yYWNlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLnJlamVjdC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5yZXNvbHZlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0B5c2Yvc2RrL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9kZW1vL2FwcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtYXBFbnYgPSB7XG4gICAgdGVzdDogJ3F5dGVzdC5uZXRlYXNlLmNvbScsXG4gICAgcmVsZWFzZTogJ3FpeXVrZi5uZXRlYXNlLmNvbScsXG4gICAgb25saW5lOiAncWl5dWtmLmNvbScsXG4gICAgb3ZlcnNlYXM6ICdzZXJ2ZWh1Yi5haWNvbm4uY29tJyxcbn07XG5jb25zdCBUSU1FT1VUID0gMzAwMDA7XG5jb25zdCBZU0YgPSB7fTtcbllTRi5pbml0ID0gKGFwcEtleSwgb2JqUGFyYW1zLCBlbnYpID0+IHtcbiAgICB0cnkge1xuICAgICAgICAvLyDml6Xlv5fkuIrmiqVcbiAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgIC8vIHVh5L+h5oGv5ZyocmVxdWVzdCBoZWFkZXJz5Lit5pyJ5bim6L+H5Y6777yM5LiN6ZyA6KaB5Zyo6ZO+5o6l6YeN5paw5Lyg5LqG772eXG4gICAgICAgIGltZy5zcmMgPSBgaHR0cHM6Ly9xaXl1a2YuY29tL3Nkay9yZXMvaW1nL2xvYWRpbmcuZ2lmP3Q9JHtuZXcgRGF0ZSgpLmdldFRpbWUoKX0maz0ke2FwcEtleX1gO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGF0L2NvbXBhdFxuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGlmICghYXBwS2V5KSB7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdhcHBLZXnlv4XloasnKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmpQYXJhbXMpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcign5Y+C5pWw57G75Z6L6ZSZ6K+vLOesrOS6jOS4quWPguaVsOW6lOivpeaYr29iamVjdCcpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXQgPSBbXTtcbiAgICAgICAgaWYgKG9ialBhcmFtcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIGluIG9ialBhcmFtcykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldC5wdXNoKGAke2l0ZW19PSR7b2JqUGFyYW1zW2l0ZW1dfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHJldC5sZW5ndGggPyBgPyR7cmV0LmpvaW4oJyYnKX1gIDogJyc7XG4gICAgICAgIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICAgICAgaWYgKGVudiAmJiAhbWFwRW52W2Vudl0pIHtcbiAgICAgICAgICAgIHNjcmlwdC5zcmMgPSBgLy8ke2Vudn0vc2NyaXB0LyR7YXBwS2V5fS5qcyR7cGFyYW1zfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzY3JpcHQuc3JjID0gYC8vJHttYXBFbnZbZW52IHx8ICdvbmxpbmUnXX0vc2NyaXB0LyR7YXBwS2V5fS5qcyR7cGFyYW1zfWA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgICBsZXQgdGltZW91dDtcbiAgICAgICAgZnVuY3Rpb24gb25TY3JpcHRDb21wbGV0ZShlcnJUeXBlLCBldmVudCkge1xuICAgICAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IG51bGw7XG4gICAgICAgICAgICBsZXQgZXJyb3JNc2cgPSAnJztcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgIC8vIOWKoOi9veaIkOWKn1xuICAgICAgICAgICAgaWYgKHdpbmRvdy55c2YpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cueXNmKCdvbnJlYWR5JywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBzZGvmiafooYzlrozmiJBcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh3aW5kb3cueXNmKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOWkhOeQhuWKoOi9veWksei0peaKpemUmVxuICAgICAgICAgICAgICAgIGlmIChlcnJUeXBlID09PSAnbG9hZGVycm9yJyB8fCBlcnJUeXBlID09PSAnb25sb2FkJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBvbmVycm9y55qE5oql6ZSZ5L+h5oGvXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JNc2cgPSAnU0RLX0xPQURfRVJST1InO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGltZW91dCBlcnJvclxuICAgICAgICAgICAgICAgICAgICBlcnJvck1zZyA9ICdTREtfTE9BRElOR19USU1FT1VUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8g5LiK5oql6ZSZ6K+v5L+h5oGvXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIGltZy5zcmMgPSBgaHR0cHM6Ly9xaXl1a2YuY29tL3Nkay9yZXMvaW1nL2xvYWRpbmcuZ2lmP3Q9JHtuZXcgRGF0ZSgpLmdldFRpbWUoKX0maz0ke2FwcEtleX0mZXJyb3I9JHtlcnJvck1zZ31gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGVycm9yTXNnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gb25TY3JpcHRDb21wbGV0ZSgndGltZW91dCcpLCBUSU1FT1VUKTtcbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoZXZlbnQpID0+IG9uU2NyaXB0Q29tcGxldGUoJ2xvYWRlcnJvcicsIGV2ZW50KTtcbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IChldmVudCkgPT4gb25TY3JpcHRDb21wbGV0ZSgnb25sb2FkJywgZXZlbnQpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59O1xuZXhwb3J0IGRlZmF1bHQgWVNGO1xuIiwiZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICBcImRlZmF1bHRcIjogb2JqXG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IElzQ2FsbGFibGUoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGNvbnN0cnVjdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzUG9zc2libGVQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcG9zc2libGUtcHJvdG90eXBlJyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc1Bvc3NpYmxlUHJvdG90eXBlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IHNldCBcIiArICRTdHJpbmcoYXJndW1lbnQpICsgJyBhcyBhIHByb3RvdHlwZScpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBQcm90b3R5cGUpIHtcbiAgaWYgKGlzUHJvdG90eXBlT2YoUHJvdG90eXBlLCBpdCkpIHJldHVybiBpdDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0luY29ycmVjdCBpbnZvY2F0aW9uJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCRTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBpbmRleE9mLCBpbmNsdWRlcyB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIGlmIChsZW5ndGggPT09IDApIHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9PSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgICAgaWYgKHZhbHVlICE9PSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiAgaW5jbHVkZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuICBpbmRleE9mOiBjcmVhdGVNZXRob2QoZmFsc2UpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzKFtdLnNsaWNlKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgY2FsbGVkID0gMDtcbiAgdmFyIGl0ZXJhdG9yV2l0aFJldHVybiA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4geyBkb25lOiAhIWNhbGxlZCsrIH07XG4gICAgfSxcbiAgICAncmV0dXJuJzogZnVuY3Rpb24gKCkge1xuICAgICAgU0FGRV9DTE9TSU5HID0gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIGl0ZXJhdG9yV2l0aFJldHVybltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1mcm9tLCBuby10aHJvdy1saXRlcmFsIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIEFycmF5LmZyb20oaXRlcmF0b3JXaXRoUmV0dXJuLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBTS0lQX0NMT1NJTkcpIHtcbiAgdHJ5IHtcbiAgICBpZiAoIVNLSVBfQ0xPU0lORyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IHJldHVybiBmYWxzZTsgfSAvLyB3b3JrYXJvdW5kIG9mIG9sZCBXZWJLaXQgKyBgZXZhbGAgYnVnXG4gIHZhciBJVEVSQVRJT05fU1VQUE9SVCA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBvYmplY3QgPSB7fTtcbiAgICBvYmplY3RbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7IGRvbmU6IElURVJBVElPTl9TVVBQT1JUID0gdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgZXhlYyhvYmplY3QpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBJVEVSQVRJT05fU1VQUE9SVDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKHt9LnRvU3RyaW5nKTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHN0cmluZ1NsaWNlKHRvU3RyaW5nKGl0KSwgOCwgLTEpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNsYXNzb2ZSYXcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBDT1JSRUNUX0FSR1VNRU5UUyA9IGNsYXNzb2ZSYXcoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG4vLyBnZXR0aW5nIHRhZyBmcm9tIEVTNisgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IGNsYXNzb2ZSYXcgOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSAkT2JqZWN0KGl0KSwgVE9fU1RSSU5HX1RBRykpID09ICdzdHJpbmcnID8gdGFnXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBDT1JSRUNUX0FSR1VNRU5UUyA/IGNsYXNzb2ZSYXcoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAocmVzdWx0ID0gY2xhc3NvZlJhdyhPKSkgPT09ICdPYmplY3QnICYmIGlzQ2FsbGFibGUoTy5jYWxsZWUpID8gJ0FyZ3VtZW50cycgOiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSwgZXhjZXB0aW9ucykge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkgJiYgIShleGNlcHRpb25zICYmIGhhc093bihleGNlcHRpb25zLCBrZXkpKSkge1xuICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgIH1cbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIG1ha2VCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcikge1xuICBpZiAoZGVzY3JpcHRvci5nZXQpIG1ha2VCdWlsdEluKGRlc2NyaXB0b3IuZ2V0LCBuYW1lLCB7IGdldHRlcjogdHJ1ZSB9KTtcbiAgaWYgKGRlc2NyaXB0b3Iuc2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLnNldCwgbmFtZSwgeyBzZXR0ZXI6IHRydWUgfSk7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eS5mKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgbWFrZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMuZW51bWVyYWJsZTtcbiAgdmFyIG5hbWUgPSBvcHRpb25zLm5hbWUgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubmFtZSA6IGtleTtcbiAgaWYgKGlzQ2FsbGFibGUodmFsdWUpKSBtYWtlQnVpbHRJbih2YWx1ZSwgbmFtZSwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLmdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lR2xvYmFsUHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghb3B0aW9ucy51bnNhZmUpIGRlbGV0ZSBPW2tleV07XG4gICAgICBlbHNlIGlmIChPW2tleV0pIHNpbXBsZSA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihPLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiAhb3B0aW9ucy5ub25Db25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogIW9wdGlvbnMubm9uV3JpdGFibGVcbiAgICB9KTtcbiAgfSByZXR1cm4gTztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbCwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgSVNfREVOTyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtZGVubycpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhSVNfREVOTyAmJiAhSVNfTk9ERVxuICAmJiB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnXG4gICYmIHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JztcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGdsb2JhbCBEZW5vIC0tIERlbm8gY2FzZSAqL1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgRGVubyA9PSAnb2JqZWN0JyAmJiBEZW5vICYmIHR5cGVvZiBEZW5vLnZlcnNpb24gPT0gJ29iamVjdCc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gL2lwYWR8aXBob25lfGlwb2QvaS50ZXN0KHVzZXJBZ2VudCkgJiYgdHlwZW9mIFBlYmJsZSAhPSAndW5kZWZpbmVkJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZG9zL25vLXZ1bG5lcmFibGUgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSAvKD86aXBhZHxpcGhvbmV8aXBvZCkuKmFwcGxld2Via2l0L2kudGVzdCh1c2VyQWdlbnQpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3NvZihnbG9iYWwucHJvY2VzcykgPT09ICdwcm9jZXNzJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAvd2ViMHMoPyEuKmNocm9tZSkvaS50ZXN0KHVzZXJBZ2VudCk7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gJ3VuZGVmaW5lZCcgJiYgU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpIHx8ICcnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBEZW5vID0gZ2xvYmFsLkRlbm87XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnMgfHwgRGVubyAmJiBEZW5vLnZlcnNpb247XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52ODtcbnZhciBtYXRjaCwgdmVyc2lvbjtcblxuaWYgKHY4KSB7XG4gIG1hdGNoID0gdjguc3BsaXQoJy4nKTtcbiAgLy8gaW4gb2xkIENocm9tZSwgdmVyc2lvbnMgb2YgVjggaXNuJ3QgVjggPSBDaHJvbWUgLyAxMFxuICAvLyBidXQgdGhlaXIgY29ycmVjdCB2ZXJzaW9ucyBhcmUgbm90IGludGVyZXN0aW5nIGZvciB1c1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPiAwICYmIG1hdGNoWzBdIDwgNCA/IDEgOiArKG1hdGNoWzBdICsgbWF0Y2hbMV0pO1xufVxuXG4vLyBCcm93c2VyRlMgTm9kZUpTIGBwcm9jZXNzYCBwb2x5ZmlsbCBpbmNvcnJlY3RseSBzZXQgYC52OGAgdG8gYDAuMGBcbi8vIHNvIGNoZWNrIGB1c2VyQWdlbnRgIGV2ZW4gaWYgYC52OGAgZXhpc3RzLCBidXQgMFxuaWYgKCF2ZXJzaW9uICYmIHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9ICttYXRjaFsxXTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcnNpb247XG4iLCIndXNlIHN0cmljdCc7XG4vLyBJRTgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b0xvY2FsZVN0cmluZycsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJ1xuXTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgICAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLmRvbnRDYWxsR2V0U2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuICBvcHRpb25zLm5hbWUgICAgICAgICAgIC0gdGhlIC5uYW1lIG9mIHRoZSBmdW5jdGlvbiBpZiBpdCBkb2VzIG5vdCBtYXRjaCB0aGUga2V5XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdIHx8IGRlZmluZUdsb2JhbFByb3BlcnR5KFRBUkdFVCwge30pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdICYmIGdsb2JhbFtUQVJHRVRdLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLmRvbnRDYWxsR2V0U2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT0gdHlwZW9mIHRhcmdldFByb3BlcnR5KSBjb250aW51ZTtcbiAgICAgIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5KTtcbiAgICB9XG4gICAgLy8gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICAgIGlmIChvcHRpb25zLnNoYW0gfHwgKHRhcmdldFByb3BlcnR5ICYmIHRhcmdldFByb3BlcnR5LnNoYW0pKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIGRlZmluZUJ1aWx0SW4odGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIGFwcGx5ID0gRnVuY3Rpb25Qcm90b3R5cGUuYXBwbHk7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1yZWZsZWN0IC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIFJlZmxlY3QgPT0gJ29iamVjdCcgJiYgUmVmbGVjdC5hcHBseSB8fCAoTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoYXBwbHkpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShhcHBseSwgYXJndW1lbnRzKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1jbGF1c2UnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBiaW5kID0gdW5jdXJyeVRoaXModW5jdXJyeVRoaXMuYmluZCk7XG5cbi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQpIHtcbiAgYUNhbGxhYmxlKGZuKTtcbiAgcmV0dXJuIHRoYXQgPT09IHVuZGVmaW5lZCA/IGZuIDogTkFUSVZFX0JJTkQgPyBiaW5kKGZuLCB0aGF0KSA6IGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWZ1bmN0aW9uLXByb3RvdHlwZS1iaW5kIC0tIHNhZmVcbiAgdmFyIHRlc3QgPSAoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KS5iaW5kKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gdHlwZW9mIHRlc3QgIT0gJ2Z1bmN0aW9uJyB8fCB0ZXN0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBjYWxsID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoY2FsbCkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGNhbGwsIGFyZ3VtZW50cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG52YXIgRVhJU1RTID0gaGFzT3duKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpO1xuLy8gYWRkaXRpb25hbCBwcm90ZWN0aW9uIGZyb20gbWluaWZpZWQgLyBtYW5nbGVkIC8gZHJvcHBlZCBmdW5jdGlvbiBuYW1lc1xudmFyIFBST1BFUiA9IEVYSVNUUyAmJiAoZnVuY3Rpb24gc29tZXRoaW5nKCkgeyAvKiBlbXB0eSAqLyB9KS5uYW1lID09PSAnc29tZXRoaW5nJztcbnZhciBDT05GSUdVUkFCTEUgPSBFWElTVFMgJiYgKCFERVNDUklQVE9SUyB8fCAoREVTQ1JJUFRPUlMgJiYgZ2V0RGVzY3JpcHRvcihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKS5jb25maWd1cmFibGUpKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEVYSVNUUzogRVhJU1RTLFxuICBQUk9QRVI6IFBST1BFUixcbiAgQ09ORklHVVJBQkxFOiBDT05GSUdVUkFCTEVcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBrZXksIG1ldGhvZCkge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbiAgICByZXR1cm4gdW5jdXJyeVRoaXMoYUNhbGxhYmxlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBrZXkpW21ldGhvZF0pKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjbGFzc29mUmF3ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuKSB7XG4gIC8vIE5hc2hvcm4gYnVnOlxuICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xMTI4XG4gIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzExMzBcbiAgaWYgKGNsYXNzb2ZSYXcoZm4pID09PSAnRnVuY3Rpb24nKSByZXR1cm4gdW5jdXJyeVRoaXMoZm4pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG52YXIgdW5jdXJyeVRoaXNXaXRoQmluZCA9IE5BVElWRV9CSU5EICYmIEZ1bmN0aW9uUHJvdG90eXBlLmJpbmQuYmluZChjYWxsLCBjYWxsKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IHVuY3VycnlUaGlzV2l0aEJpbmQgOiBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FsbC5hcHBseShmbiwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNDYWxsYWJsZShhcmd1bWVudCkgPyBhcmd1bWVudCA6IHVuZGVmaW5lZDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGFGdW5jdGlvbihnbG9iYWxbbmFtZXNwYWNlXSkgOiBnbG9iYWxbbmFtZXNwYWNlXSAmJiBnbG9iYWxbbmFtZXNwYWNlXVttZXRob2RdO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNOdWxsT3JVbmRlZmluZWQoaXQpKSByZXR1cm4gZ2V0TWV0aG9kKGl0LCBJVEVSQVRPUilcbiAgICB8fCBnZXRNZXRob2QoaXQsICdAQGl0ZXJhdG9yJylcbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCwgdXNpbmdJdGVyYXRvcikge1xuICB2YXIgaXRlcmF0b3JNZXRob2QgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGdldEl0ZXJhdG9yTWV0aG9kKGFyZ3VtZW50KSA6IHVzaW5nSXRlcmF0b3I7XG4gIGlmIChhQ2FsbGFibGUoaXRlcmF0b3JNZXRob2QpKSByZXR1cm4gYW5PYmplY3QoY2FsbChpdGVyYXRvck1ldGhvZCwgYXJndW1lbnQpKTtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgaXRlcmFibGUnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG4vLyBgR2V0TWV0aG9kYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0bWV0aG9kXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChWLCBQKSB7XG4gIHZhciBmdW5jID0gVltQXTtcbiAgcmV0dXJuIGlzTnVsbE9yVW5kZWZpbmVkKGZ1bmMpID8gdW5kZWZpbmVkIDogYUNhbGxhYmxlKGZ1bmMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIGNoZWNrKHR5cGVvZiB0aGlzID09ICdvYmplY3QnICYmIHRoaXMpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSBmYWxsYmFja1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWhhc293biAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYSwgYikge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlIC0tIHNhZmVcbiAgICBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gY29uc29sZS5lcnJvcihhKSA6IGNvbnNvbGUuZXJyb3IoYSwgYik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdkb2N1bWVudCcsICdkb2N1bWVudEVsZW1lbnQnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG4vLyBUaGFua3MgdG8gSUU4IGZvciBpdHMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KCdkaXYnKSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9XG4gIH0pLmEgIT09IDc7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuICEkT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT09ICdTdHJpbmcnID8gc3BsaXQoaXQsICcnKSA6ICRPYmplY3QoaXQpO1xufSA6ICRPYmplY3Q7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uLnRvU3RyaW5nKTtcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKCFpc0NhbGxhYmxlKHN0b3JlLmluc3BlY3RTb3VyY2UpKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZyhpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfV0VBS19NQVAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEID0gJ09iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQIHx8IHNoYXJlZC5zdGF0ZSkge1xuICB2YXIgc3RvcmUgPSBzaGFyZWQuc3RhdGUgfHwgKHNoYXJlZC5zdGF0ZSA9IG5ldyBXZWFrTWFwKCkpO1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHN0b3JlLmdldCA9IHN0b3JlLmdldDtcbiAgc3RvcmUuaGFzID0gc3RvcmUuaGFzO1xuICBzdG9yZS5zZXQgPSBzdG9yZS5zZXQ7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKHN0b3JlLmhhcyhpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHN0b3JlLnNldChpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmdldChpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5oYXMoaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b3R5cGVbSVRFUkFUT1JdID09PSBpdCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdFxudmFyIGRvY3VtZW50QWxsID0gdHlwZW9mIGRvY3VtZW50ID09ICdvYmplY3QnICYmIGRvY3VtZW50LmFsbDtcblxuLy8gYElzQ2FsbGFibGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby10eXBlb2YtdW5kZWZpbmVkIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBkb2N1bWVudEFsbCA9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudEFsbCAhPT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJyB8fCBhcmd1bWVudCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG5cbnZhciBub29wID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIGNvbnN0cnVjdCA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnY29uc3RydWN0Jyk7XG52YXIgY29uc3RydWN0b3JSZWdFeHAgPSAvXlxccyooPzpjbGFzc3xmdW5jdGlvbilcXGIvO1xudmFyIGV4ZWMgPSB1bmN1cnJ5VGhpcyhjb25zdHJ1Y3RvclJlZ0V4cC5leGVjKTtcbnZhciBJTkNPUlJFQ1RfVE9fU1RSSU5HID0gIWNvbnN0cnVjdG9yUmVnRXhwLnRlc3Qobm9vcCk7XG5cbnZhciBpc0NvbnN0cnVjdG9yTW9kZXJuID0gZnVuY3Rpb24gaXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkge1xuICBpZiAoIWlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3RydWN0KG5vb3AsIFtdLCBhcmd1bWVudCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG52YXIgaXNDb25zdHJ1Y3RvckxlZ2FjeSA9IGZ1bmN0aW9uIGlzQ29uc3RydWN0b3IoYXJndW1lbnQpIHtcbiAgaWYgKCFpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGZhbHNlO1xuICBzd2l0Y2ggKGNsYXNzb2YoYXJndW1lbnQpKSB7XG4gICAgY2FzZSAnQXN5bmNGdW5jdGlvbic6XG4gICAgY2FzZSAnR2VuZXJhdG9yRnVuY3Rpb24nOlxuICAgIGNhc2UgJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nOiByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyB3ZSBjYW4ndCBjaGVjayAucHJvdG90eXBlIHNpbmNlIGNvbnN0cnVjdG9ycyBwcm9kdWNlZCBieSAuYmluZCBoYXZlbid0IGl0XG4gICAgLy8gYEZ1bmN0aW9uI3RvU3RyaW5nYCB0aHJvd3Mgb24gc29tZSBidWlsdC1pdCBmdW5jdGlvbiBpbiBzb21lIGxlZ2FjeSBlbmdpbmVzXG4gICAgLy8gKGZvciBleGFtcGxlLCBgRE9NUXVhZGAgYW5kIHNpbWlsYXIgaW4gRkY0MS0pXG4gICAgcmV0dXJuIElOQ09SUkVDVF9UT19TVFJJTkcgfHwgISFleGVjKGNvbnN0cnVjdG9yUmVnRXhwLCBpbnNwZWN0U291cmNlKGFyZ3VtZW50KSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG5cbmlzQ29uc3RydWN0b3JMZWdhY3kuc2hhbSA9IHRydWU7XG5cbi8vIGBJc0NvbnN0cnVjdG9yYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjb25zdHJ1Y3RvclxubW9kdWxlLmV4cG9ydHMgPSAhY29uc3RydWN0IHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNhbGxlZDtcbiAgcmV0dXJuIGlzQ29uc3RydWN0b3JNb2Rlcm4oaXNDb25zdHJ1Y3Rvck1vZGVybi5jYWxsKVxuICAgIHx8ICFpc0NvbnN0cnVjdG9yTW9kZXJuKE9iamVjdClcbiAgICB8fCAhaXNDb25zdHJ1Y3Rvck1vZGVybihmdW5jdGlvbiAoKSB7IGNhbGxlZCA9IHRydWU7IH0pXG4gICAgfHwgY2FsbGVkO1xufSkgPyBpc0NvbnN0cnVjdG9yTGVnYWN5IDogaXNDb25zdHJ1Y3Rvck1vZGVybjtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PT0gTkFUSVZFID8gZmFsc2VcbiAgICA6IGlzQ2FsbGFibGUoZGV0ZWN0aW9uKSA/IGZhaWxzKGRldGVjdGlvbilcbiAgICA6ICEhZGV0ZWN0aW9uO1xufTtcblxudmFyIG5vcm1hbGl6ZSA9IGlzRm9yY2VkLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVwbGFjZW1lbnQsICcuJykudG9Mb3dlckNhc2UoKTtcbn07XG5cbnZhciBkYXRhID0gaXNGb3JjZWQuZGF0YSA9IHt9O1xudmFyIE5BVElWRSA9IGlzRm9yY2VkLk5BVElWRSA9ICdOJztcbnZhciBQT0xZRklMTCA9IGlzRm9yY2VkLlBPTFlGSUxMID0gJ1AnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRm9yY2VkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gd2UgY2FuJ3QgdXNlIGp1c3QgYGl0ID09IG51bGxgIHNpbmNlIG9mIGBkb2N1bWVudC5hbGxgIHNwZWNpYWwgY2FzZVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdC1hZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gbnVsbCB8fCBpdCA9PT0gdW5kZWZpbmVkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGFyZ3VtZW50KSB8fCBhcmd1bWVudCA9PT0gbnVsbDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZhbHNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVTRV9TWU1CT0xfQVNfVUlEID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciAkU3ltYm9sID0gZ2V0QnVpbHRJbignU3ltYm9sJyk7XG4gIHJldHVybiBpc0NhbGxhYmxlKCRTeW1ib2wpICYmIGlzUHJvdG90eXBlT2YoJFN5bWJvbC5wcm90b3R5cGUsICRPYmplY3QoaXQpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG52YXIgaXNBcnJheUl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGl0ZXJhdG9yQ2xvc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbnZhciBSZXN1bHQgPSBmdW5jdGlvbiAoc3RvcHBlZCwgcmVzdWx0KSB7XG4gIHRoaXMuc3RvcHBlZCA9IHN0b3BwZWQ7XG4gIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xufTtcblxudmFyIFJlc3VsdFByb3RvdHlwZSA9IFJlc3VsdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCB1bmJvdW5kRnVuY3Rpb24sIG9wdGlvbnMpIHtcbiAgdmFyIHRoYXQgPSBvcHRpb25zICYmIG9wdGlvbnMudGhhdDtcbiAgdmFyIEFTX0VOVFJJRVMgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuQVNfRU5UUklFUyk7XG4gIHZhciBJU19SRUNPUkQgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuSVNfUkVDT1JEKTtcbiAgdmFyIElTX0lURVJBVE9SID0gISEob3B0aW9ucyAmJiBvcHRpb25zLklTX0lURVJBVE9SKTtcbiAgdmFyIElOVEVSUlVQVEVEID0gISEob3B0aW9ucyAmJiBvcHRpb25zLklOVEVSUlVQVEVEKTtcbiAgdmFyIGZuID0gYmluZCh1bmJvdW5kRnVuY3Rpb24sIHRoYXQpO1xuICB2YXIgaXRlcmF0b3IsIGl0ZXJGbiwgaW5kZXgsIGxlbmd0aCwgcmVzdWx0LCBuZXh0LCBzdGVwO1xuXG4gIHZhciBzdG9wID0gZnVuY3Rpb24gKGNvbmRpdGlvbikge1xuICAgIGlmIChpdGVyYXRvcikgaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ25vcm1hbCcsIGNvbmRpdGlvbik7XG4gICAgcmV0dXJuIG5ldyBSZXN1bHQodHJ1ZSwgY29uZGl0aW9uKTtcbiAgfTtcblxuICB2YXIgY2FsbEZuID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgaWYgKEFTX0VOVFJJRVMpIHtcbiAgICAgIGFuT2JqZWN0KHZhbHVlKTtcbiAgICAgIHJldHVybiBJTlRFUlJVUFRFRCA/IGZuKHZhbHVlWzBdLCB2YWx1ZVsxXSwgc3RvcCkgOiBmbih2YWx1ZVswXSwgdmFsdWVbMV0pO1xuICAgIH0gcmV0dXJuIElOVEVSUlVQVEVEID8gZm4odmFsdWUsIHN0b3ApIDogZm4odmFsdWUpO1xuICB9O1xuXG4gIGlmIChJU19SRUNPUkQpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhYmxlLml0ZXJhdG9yO1xuICB9IGVsc2UgaWYgKElTX0lURVJBVE9SKSB7XG4gICAgaXRlcmF0b3IgPSBpdGVyYWJsZTtcbiAgfSBlbHNlIHtcbiAgICBpdGVyRm4gPSBnZXRJdGVyYXRvck1ldGhvZChpdGVyYWJsZSk7XG4gICAgaWYgKCFpdGVyRm4pIHRocm93IG5ldyAkVHlwZUVycm9yKHRyeVRvU3RyaW5nKGl0ZXJhYmxlKSArICcgaXMgbm90IGl0ZXJhYmxlJyk7XG4gICAgLy8gb3B0aW1pc2F0aW9uIGZvciBhcnJheSBpdGVyYXRvcnNcbiAgICBpZiAoaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJGbikpIHtcbiAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShpdGVyYWJsZSk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIHJlc3VsdCA9IGNhbGxGbihpdGVyYWJsZVtpbmRleF0pO1xuICAgICAgICBpZiAocmVzdWx0ICYmIGlzUHJvdG90eXBlT2YoUmVzdWx0UHJvdG90eXBlLCByZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICAgICAgfSByZXR1cm4gbmV3IFJlc3VsdChmYWxzZSk7XG4gICAgfVxuICAgIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoaXRlcmFibGUsIGl0ZXJGbik7XG4gIH1cblxuICBuZXh0ID0gSVNfUkVDT1JEID8gaXRlcmFibGUubmV4dCA6IGl0ZXJhdG9yLm5leHQ7XG4gIHdoaWxlICghKHN0ZXAgPSBjYWxsKG5leHQsIGl0ZXJhdG9yKSkuZG9uZSkge1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBjYWxsRm4oc3RlcC52YWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICd0aHJvdycsIGVycm9yKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT0gJ29iamVjdCcgJiYgcmVzdWx0ICYmIGlzUHJvdG90eXBlT2YoUmVzdWx0UHJvdG90eXBlLCByZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICB9IHJldHVybiBuZXcgUmVzdWx0KGZhbHNlKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGtpbmQsIHZhbHVlKSB7XG4gIHZhciBpbm5lclJlc3VsdCwgaW5uZXJFcnJvcjtcbiAgYW5PYmplY3QoaXRlcmF0b3IpO1xuICB0cnkge1xuICAgIGlubmVyUmVzdWx0ID0gZ2V0TWV0aG9kKGl0ZXJhdG9yLCAncmV0dXJuJyk7XG4gICAgaWYgKCFpbm5lclJlc3VsdCkge1xuICAgICAgaWYgKGtpbmQgPT09ICd0aHJvdycpIHRocm93IHZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpbm5lclJlc3VsdCA9IGNhbGwoaW5uZXJSZXN1bHQsIGl0ZXJhdG9yKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpbm5lckVycm9yID0gdHJ1ZTtcbiAgICBpbm5lclJlc3VsdCA9IGVycm9yO1xuICB9XG4gIGlmIChraW5kID09PSAndGhyb3cnKSB0aHJvdyB2YWx1ZTtcbiAgaWYgKGlubmVyRXJyb3IpIHRocm93IGlubmVyUmVzdWx0O1xuICBhbk9iamVjdChpbm5lclJlc3VsdCk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xuXG4vLyBgTGVuZ3RoT2ZBcnJheUxpa2VgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1sZW5ndGhvZmFycmF5bGlrZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB0b0xlbmd0aChvYmoubGVuZ3RoKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5DT05GSUdVUkFCTEU7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIGpvaW4gPSB1bmN1cnJ5VGhpcyhbXS5qb2luKTtcblxudmFyIENPTkZJR1VSQUJMRV9MRU5HVEggPSBERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAnbGVuZ3RoJywgeyB2YWx1ZTogOCB9KS5sZW5ndGggIT09IDg7XG59KTtcblxudmFyIFRFTVBMQVRFID0gU3RyaW5nKFN0cmluZykuc3BsaXQoJ1N0cmluZycpO1xuXG52YXIgbWFrZUJ1aWx0SW4gPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh2YWx1ZSwgbmFtZSwgb3B0aW9ucykge1xuICBpZiAoc3RyaW5nU2xpY2UoJFN0cmluZyhuYW1lKSwgMCwgNykgPT09ICdTeW1ib2woJykge1xuICAgIG5hbWUgPSAnWycgKyByZXBsYWNlKCRTdHJpbmcobmFtZSksIC9eU3ltYm9sXFwoKFteKV0qKVxcKS4qJC8sICckMScpICsgJ10nO1xuICB9XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZ2V0dGVyKSBuYW1lID0gJ2dldCAnICsgbmFtZTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zZXR0ZXIpIG5hbWUgPSAnc2V0ICcgKyBuYW1lO1xuICBpZiAoIWhhc093bih2YWx1ZSwgJ25hbWUnKSB8fCAoQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgJiYgdmFsdWUubmFtZSAhPT0gbmFtZSkpIHtcbiAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KHZhbHVlLCAnbmFtZScsIHsgdmFsdWU6IG5hbWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICBlbHNlIHZhbHVlLm5hbWUgPSBuYW1lO1xuICB9XG4gIGlmIChDT05GSUdVUkFCTEVfTEVOR1RIICYmIG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdhcml0eScpICYmIHZhbHVlLmxlbmd0aCAhPT0gb3B0aW9ucy5hcml0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KHZhbHVlLCAnbGVuZ3RoJywgeyB2YWx1ZTogb3B0aW9ucy5hcml0eSB9KTtcbiAgfVxuICB0cnkge1xuICAgIGlmIChvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnY29uc3RydWN0b3InKSAmJiBvcHRpb25zLmNvbnN0cnVjdG9yKSB7XG4gICAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KHZhbHVlLCAncHJvdG90eXBlJywgeyB3cml0YWJsZTogZmFsc2UgfSk7XG4gICAgLy8gaW4gVjggfiBDaHJvbWUgNTMsIHByb3RvdHlwZXMgb2Ygc29tZSBtZXRob2RzLCBsaWtlIGBBcnJheS5wcm90b3R5cGUudmFsdWVzYCwgYXJlIG5vbi13cml0YWJsZVxuICAgIH0gZWxzZSBpZiAodmFsdWUucHJvdG90eXBlKSB2YWx1ZS5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgdmFyIHN0YXRlID0gZW5mb3JjZUludGVybmFsU3RhdGUodmFsdWUpO1xuICBpZiAoIWhhc093bihzdGF0ZSwgJ3NvdXJjZScpKSB7XG4gICAgc3RhdGUuc291cmNlID0gam9pbihURU1QTEFURSwgdHlwZW9mIG5hbWUgPT0gJ3N0cmluZycgPyBuYW1lIDogJycpO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG5cbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dGVuZC1uYXRpdmUgLS0gcmVxdWlyZWRcbkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IG1ha2VCdWlsdEluKGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gaXNDYWxsYWJsZSh0aGlzKSAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBpbnNwZWN0U291cmNlKHRoaXMpO1xufSwgJ3RvU3RyaW5nJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBNYXRoLnRydW5jYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC50cnVuY1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtdHJ1bmMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLnRydW5jIHx8IGZ1bmN0aW9uIHRydW5jKHgpIHtcbiAgdmFyIG4gPSAreDtcbiAgcmV0dXJuIChuID4gMCA/IGZsb29yIDogY2VpbCkobik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzYWZlR2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zYWZlLWdldC1idWlsdC1pbicpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Rhc2snKS5zZXQ7XG52YXIgUXVldWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcXVldWUnKTtcbnZhciBJU19JT1MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcycpO1xudmFyIElTX0lPU19QRUJCTEUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcy1wZWJibGUnKTtcbnZhciBJU19XRUJPU19XRUJLSVQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLXdlYm9zLXdlYmtpdCcpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIE11dGF0aW9uT2JzZXJ2ZXIgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xudmFyIG1pY3JvdGFzayA9IHNhZmVHZXRCdWlsdEluKCdxdWV1ZU1pY3JvdGFzaycpO1xudmFyIG5vdGlmeSwgdG9nZ2xlLCBub2RlLCBwcm9taXNlLCB0aGVuO1xuXG4vLyBtb2Rlcm4gZW5naW5lcyBoYXZlIHF1ZXVlTWljcm90YXNrIG1ldGhvZFxuaWYgKCFtaWNyb3Rhc2spIHtcbiAgdmFyIHF1ZXVlID0gbmV3IFF1ZXVlKCk7XG5cbiAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChJU19OT0RFICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGZuID0gcXVldWUuZ2V0KCkpIHRyeSB7XG4gICAgICBmbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAocXVldWUuaGVhZCkgbm90aWZ5KCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMzOVxuICAvLyBhbHNvIGV4Y2VwdCBXZWJPUyBXZWJraXQgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg5OFxuICBpZiAoIUlTX0lPUyAmJiAhSVNfTk9ERSAmJiAhSVNfV0VCT1NfV0VCS0lUICYmIE11dGF0aW9uT2JzZXJ2ZXIgJiYgZG9jdW1lbnQpIHtcbiAgICB0b2dnbGUgPSB0cnVlO1xuICAgIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9ICF0b2dnbGU7XG4gICAgfTtcbiAgLy8gZW52aXJvbm1lbnRzIHdpdGggbWF5YmUgbm9uLWNvbXBsZXRlbHkgY29ycmVjdCwgYnV0IGV4aXN0ZW50IFByb21pc2VcbiAgfSBlbHNlIGlmICghSVNfSU9TX1BFQkJMRSAmJiBQcm9taXNlICYmIFByb21pc2UucmVzb2x2ZSkge1xuICAgIC8vIFByb21pc2UucmVzb2x2ZSB3aXRob3V0IGFuIGFyZ3VtZW50IHRocm93cyBhbiBlcnJvciBpbiBMRyBXZWJPUyAyXG4gICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIC8vIHdvcmthcm91bmQgb2YgV2ViS2l0IH4gaU9TIFNhZmFyaSAxMC4xIGJ1Z1xuICAgIHByb21pc2UuY29uc3RydWN0b3IgPSBQcm9taXNlO1xuICAgIHRoZW4gPSBiaW5kKHByb21pc2UudGhlbiwgcHJvbWlzZSk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gTm9kZS5qcyB3aXRob3V0IHByb21pc2VzXG4gIH0gZWxzZSBpZiAoSVNfTk9ERSkge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ2VcbiAgLy8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcbiAgLy8gLSBzZXRUaW1lb3V0XG4gIH0gZWxzZSB7XG4gICAgLy8gYHdlYnBhY2tgIGRldiBzZXJ2ZXIgYnVnIG9uIElFIGdsb2JhbCBtZXRob2RzIC0gdXNlIGJpbmQoZm4sIGdsb2JhbClcbiAgICBtYWNyb3Rhc2sgPSBiaW5kKG1hY3JvdGFzaywgZ2xvYmFsKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBtYWNyb3Rhc2soZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICBtaWNyb3Rhc2sgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICBpZiAoIXF1ZXVlLmhlYWQpIG5vdGlmeSgpO1xuICAgIHF1ZXVlLmFkZChmbik7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWljcm90YXNrO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG52YXIgUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IG5ldyAkVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuICAgIHJlc29sdmUgPSAkJHJlc29sdmU7XG4gICAgcmVqZWN0ID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhQ2FsbGFibGUocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ID0gYUNhbGxhYmxlKHJlamVjdCk7XG59O1xuXG4vLyBgTmV3UHJvbWlzZUNhcGFiaWxpdHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1uZXdwcm9taXNlY2FwYWJpbGl0eVxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIChDKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIEVOVU1FUkFCTEUgPSAnZW51bWVyYWJsZSc7XG52YXIgQ09ORklHVVJBQkxFID0gJ2NvbmZpZ3VyYWJsZSc7XG52YXIgV1JJVEFCTEUgPSAnd3JpdGFibGUnO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAodHlwZW9mIE8gPT09ICdmdW5jdGlvbicgJiYgUCA9PT0gJ3Byb3RvdHlwZScgJiYgJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgdmFyIGN1cnJlbnQgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnRbV1JJVEFCTEVdKSB7XG4gICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogQ09ORklHVVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0NPTkZJR1VSQUJMRV0gOiBjdXJyZW50W0NPTkZJR1VSQUJMRV0sXG4gICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9IHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG59IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXNPd24oTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIWNhbGwocHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZiwgTywgUCksIE9bUF0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcyh7fS5pc1Byb3RvdHlwZU9mKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGluZGV4T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmRleE9mO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhc093bihoaWRkZW5LZXlzLCBrZXkpICYmIGhhc093bihPLCBrZXkpICYmIHB1c2gocmVzdWx0LCBrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzT3duKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHB1c2gocmVzdWx0LCBrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICEkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAtLSBzYWZlICovXG52YXIgdW5jdXJyeVRoaXNBY2Nlc3NvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3InKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGFQb3NzaWJsZVByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LnNldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnNldHByb3RvdHlwZW9mXG4vLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3Qtc2V0cHJvdG90eXBlb2YgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gZnVuY3Rpb24gKCkge1xuICB2YXIgQ09SUkVDVF9TRVRURVIgPSBmYWxzZTtcbiAgdmFyIHRlc3QgPSB7fTtcbiAgdmFyIHNldHRlcjtcbiAgdHJ5IHtcbiAgICBzZXR0ZXIgPSB1bmN1cnJ5VGhpc0FjY2Vzc29yKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nLCAnc2V0Jyk7XG4gICAgc2V0dGVyKHRlc3QsIFtdKTtcbiAgICBDT1JSRUNUX1NFVFRFUiA9IHRlc3QgaW5zdGFuY2VvZiBBcnJheTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHtcbiAgICByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKE8pO1xuICAgIGFQb3NzaWJsZVByb3RvdHlwZShwcm90byk7XG4gICAgaWYgKCFpc09iamVjdChPKSkgcmV0dXJuIE87XG4gICAgaWYgKENPUlJFQ1RfU0VUVEVSKSBzZXR0ZXIoTywgcHJvdG8pO1xuICAgIGVsc2UgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICByZXR1cm4gTztcbiAgfTtcbn0oKSA6IHVuZGVmaW5lZCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYE9yZGluYXJ5VG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKHByZWYgPT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChwcmVmICE9PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxudmFyIGNvbmNhdCA9IHVuY3VycnlUaGlzKFtdLmNvbmNhdCk7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBjb25jYXQoa2V5cywgZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBlcnJvcjogZmFsc2UsIHZhbHVlOiBleGVjKCkgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgdmFsdWU6IGVycm9yIH07XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvcicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSVNfQlJPV1NFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtYnJvd3NlcicpO1xudmFyIElTX0RFTk8gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWRlbm8nKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG5cbnZhciBOYXRpdmVQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIFNVQkNMQVNTSU5HID0gZmFsc2U7XG52YXIgTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UID0gaXNDYWxsYWJsZShnbG9iYWwuUHJvbWlzZVJlamVjdGlvbkV2ZW50KTtcblxudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gaXNGb3JjZWQoJ1Byb21pc2UnLCBmdW5jdGlvbiAoKSB7XG4gIHZhciBQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSA9IGluc3BlY3RTb3VyY2UoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKTtcbiAgdmFyIEdMT0JBTF9DT1JFX0pTX1BST01JU0UgPSBQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSAhPT0gU3RyaW5nKE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvcik7XG4gIC8vIFY4IDYuNiAoTm9kZSAxMCBhbmQgQ2hyb21lIDY2KSBoYXZlIGEgYnVnIHdpdGggcmVzb2x2aW5nIGN1c3RvbSB0aGVuYWJsZXNcbiAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gIC8vIFdlIGNhbid0IGRldGVjdCBpdCBzeW5jaHJvbm91c2x5LCBzbyBqdXN0IGNoZWNrIHZlcnNpb25zXG4gIGlmICghR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSAmJiBWOF9WRVJTSU9OID09PSA2NikgcmV0dXJuIHRydWU7XG4gIC8vIFdlIG5lZWQgUHJvbWlzZSN7IGNhdGNoLCBmaW5hbGx5IH0gaW4gdGhlIHB1cmUgdmVyc2lvbiBmb3IgcHJldmVudGluZyBwcm90b3R5cGUgcG9sbHV0aW9uXG4gIGlmIChJU19QVVJFICYmICEoTmF0aXZlUHJvbWlzZVByb3RvdHlwZVsnY2F0Y2gnXSAmJiBOYXRpdmVQcm9taXNlUHJvdG90eXBlWydmaW5hbGx5J10pKSByZXR1cm4gdHJ1ZTtcbiAgLy8gV2UgY2FuJ3QgdXNlIEBAc3BlY2llcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbiAgLy8gZGVvcHRpbWl6YXRpb24gYW5kIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82NzlcbiAgaWYgKCFWOF9WRVJTSU9OIHx8IFY4X1ZFUlNJT04gPCA1MSB8fCAhL25hdGl2ZSBjb2RlLy50ZXN0KFBST01JU0VfQ09OU1RSVUNUT1JfU09VUkNFKSkge1xuICAgIC8vIERldGVjdCBjb3JyZWN0bmVzcyBvZiBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gICAgdmFyIHByb21pc2UgPSBuZXcgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUoMSk7IH0pO1xuICAgIHZhciBGYWtlUHJvbWlzZSA9IGZ1bmN0aW9uIChleGVjKSB7XG4gICAgICBleGVjKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbiAgICB9O1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IHByb21pc2UuY29uc3RydWN0b3IgPSB7fTtcbiAgICBjb25zdHJ1Y3RvcltTUEVDSUVTXSA9IEZha2VQcm9taXNlO1xuICAgIFNVQkNMQVNTSU5HID0gcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZTtcbiAgICBpZiAoIVNVQkNMQVNTSU5HKSByZXR1cm4gdHJ1ZTtcbiAgLy8gVW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICB9IHJldHVybiAhR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSAmJiAoSVNfQlJPV1NFUiB8fCBJU19ERU5PKSAmJiAhTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBDT05TVFJVQ1RPUjogRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IsXG4gIFJFSkVDVElPTl9FVkVOVDogTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5ULFxuICBTVUJDTEFTU0lORzogU1VCQ0xBU1NJTkdcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3InKTtcbnZhciBjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2hlY2stY29ycmVjdG5lc3Mtb2YtaXRlcmF0aW9uJyk7XG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKS5DT05TVFJVQ1RPUjtcblxubW9kdWxlLmV4cG9ydHMgPSBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiB8fCAhY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uKGZ1bmN0aW9uIChpdGVyYWJsZSkge1xuICBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IuYWxsKGl0ZXJhYmxlKS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIFF1ZXVlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhlYWQgPSBudWxsO1xuICB0aGlzLnRhaWwgPSBudWxsO1xufTtcblxuUXVldWUucHJvdG90eXBlID0ge1xuICBhZGQ6IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGVudHJ5ID0geyBpdGVtOiBpdGVtLCBuZXh0OiBudWxsIH07XG4gICAgdmFyIHRhaWwgPSB0aGlzLnRhaWw7XG4gICAgaWYgKHRhaWwpIHRhaWwubmV4dCA9IGVudHJ5O1xuICAgIGVsc2UgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgdGhpcy50YWlsID0gZW50cnk7XG4gIH0sXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbnRyeSA9IHRoaXMuaGVhZDtcbiAgICBpZiAoZW50cnkpIHtcbiAgICAgIHZhciBuZXh0ID0gdGhpcy5oZWFkID0gZW50cnkubmV4dDtcbiAgICAgIGlmIChuZXh0ID09PSBudWxsKSB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgcmV0dXJuIGVudHJ5Lml0ZW07XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFF1ZXVlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChpdCkpIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBBdm9pZCBOb2RlSlMgZXhwZXJpbWVudGFsIHdhcm5pbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFERVNDUklQVE9SUykgcmV0dXJuIGdsb2JhbFtuYW1lXTtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCBuYW1lKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09OU1RSVUNUT1JfTkFNRSkge1xuICB2YXIgQ29uc3RydWN0b3IgPSBnZXRCdWlsdEluKENPTlNUUlVDVE9SX05BTUUpO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiBDb25zdHJ1Y3RvciAmJiAhQ29uc3RydWN0b3JbU1BFQ0lFU10pIHtcbiAgICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoQ29uc3RydWN0b3IsIFNQRUNJRVMsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICAgIH0pO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIFRBRywgU1RBVElDKSB7XG4gIGlmICh0YXJnZXQgJiYgIVNUQVRJQykgdGFyZ2V0ID0gdGFyZ2V0LnByb3RvdHlwZTtcbiAgaWYgKHRhcmdldCAmJiAhaGFzT3duKHRhcmdldCwgVE9fU1RSSU5HX1RBRykpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIFRPX1NUUklOR19UQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogVEFHIH0pO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXNbU0hBUkVEXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShTSEFSRUQsIHt9KTtcblxuKHN0b3JlLnZlcnNpb25zIHx8IChzdG9yZS52ZXJzaW9ucyA9IFtdKSkucHVzaCh7XG4gIHZlcnNpb246ICczLjM2LjEnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTQtMjAyNCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KScsXG4gIGxpY2Vuc2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM2LjEvTElDRU5TRScsXG4gIHNvdXJjZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzJ1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSB8fCB7fSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGFDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNvbnN0cnVjdG9yJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxuLy8gYFNwZWNpZXNDb25zdHJ1Y3RvcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXNwZWNpZXNjb25zdHJ1Y3RvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgZGVmYXVsdENvbnN0cnVjdG9yKSB7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3I7XG4gIHZhciBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IGlzTnVsbE9yVW5kZWZpbmVkKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPyBkZWZhdWx0Q29uc3RydWN0b3IgOiBhQ29uc3RydWN0b3IoUyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgJFN0cmluZyA9IGdsb2JhbC5TdHJpbmc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgc3ltYm9sID0gU3ltYm9sKCdzeW1ib2wgZGV0ZWN0aW9uJyk7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGBnZXQtb3duLXByb3BlcnR5LXN5bWJvbHNgIHBvbHlmaWxsIHN5bWJvbHMgY29udmVydGVkIHRvIG9iamVjdCBhcmUgbm90IFN5bWJvbCBpbnN0YW5jZXNcbiAgLy8gbmI6IERvIG5vdCBjYWxsIGBTdHJpbmdgIGRpcmVjdGx5IHRvIGF2b2lkIHRoaXMgYmVpbmcgb3B0aW1pemVkIG91dCB0byBgc3ltYm9sKycnYCB3aGljaCB3aWxsLFxuICAvLyBvZiBjb3Vyc2UsIGZhaWwuXG4gIHJldHVybiAhJFN0cmluZyhzeW1ib2wpIHx8ICEoT2JqZWN0KHN5bWJvbCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8XG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgYXBwbHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHknKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9odG1sJyk7XG52YXIgYXJyYXlTbGljZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zbGljZScpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG52YXIgSVNfSU9TID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MnKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlJyk7XG5cbnZhciBzZXQgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyID0gZ2xvYmFsLmNsZWFySW1tZWRpYXRlO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBGdW5jdGlvbiA9IGdsb2JhbC5GdW5jdGlvbjtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBTdHJpbmcgPSBnbG9iYWwuU3RyaW5nO1xudmFyIGNvdW50ZXIgPSAwO1xudmFyIHF1ZXVlID0ge307XG52YXIgT05SRUFEWVNUQVRFQ0hBTkdFID0gJ29ucmVhZHlzdGF0ZWNoYW5nZSc7XG52YXIgJGxvY2F0aW9uLCBkZWZlciwgY2hhbm5lbCwgcG9ydDtcblxuZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBEZW5vIHRocm93cyBhIFJlZmVyZW5jZUVycm9yIG9uIGBsb2NhdGlvbmAgYWNjZXNzIHdpdGhvdXQgYC0tbG9jYXRpb25gIGZsYWdcbiAgJGxvY2F0aW9uID0gZ2xvYmFsLmxvY2F0aW9uO1xufSk7XG5cbnZhciBydW4gPSBmdW5jdGlvbiAoaWQpIHtcbiAgaWYgKGhhc093bihxdWV1ZSwgaWQpKSB7XG4gICAgdmFyIGZuID0gcXVldWVbaWRdO1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gICAgZm4oKTtcbiAgfVxufTtcblxudmFyIHJ1bm5lciA9IGZ1bmN0aW9uIChpZCkge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJ1bihpZCk7XG4gIH07XG59O1xuXG52YXIgZXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCkge1xuICBydW4oZXZlbnQuZGF0YSk7XG59O1xuXG52YXIgZ2xvYmFsUG9zdE1lc3NhZ2VEZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAvLyBvbGQgZW5naW5lcyBoYXZlIG5vdCBsb2NhdGlvbi5vcmlnaW5cbiAgZ2xvYmFsLnBvc3RNZXNzYWdlKFN0cmluZyhpZCksICRsb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyAkbG9jYXRpb24uaG9zdCk7XG59O1xuXG4vLyBOb2RlLmpzIDAuOSsgJiBJRTEwKyBoYXMgc2V0SW1tZWRpYXRlLCBvdGhlcndpc2U6XG5pZiAoIXNldCB8fCAhY2xlYXIpIHtcbiAgc2V0ID0gZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGhhbmRsZXIpIHtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgZm4gPSBpc0NhbGxhYmxlKGhhbmRsZXIpID8gaGFuZGxlciA6IEZ1bmN0aW9uKGhhbmRsZXIpO1xuICAgIHZhciBhcmdzID0gYXJyYXlTbGljZShhcmd1bWVudHMsIDEpO1xuICAgIHF1ZXVlWysrY291bnRlcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBhcHBseShmbiwgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICB9O1xuICAgIGRlZmVyKGNvdW50ZXIpO1xuICAgIHJldHVybiBjb3VudGVyO1xuICB9O1xuICBjbGVhciA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKSB7XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgfTtcbiAgLy8gTm9kZS5qcyAwLjgtXG4gIGlmIChJU19OT0RFKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2socnVubmVyKGlkKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhydW5uZXIoaWQpKTtcbiAgICB9O1xuICAvLyBCcm93c2VycyB3aXRoIE1lc3NhZ2VDaGFubmVsLCBpbmNsdWRlcyBXZWJXb3JrZXJzXG4gIC8vIGV4Y2VwdCBpT1MgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjI0XG4gIH0gZWxzZSBpZiAoTWVzc2FnZUNoYW5uZWwgJiYgIUlTX0lPUykge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGV2ZW50TGlzdGVuZXI7XG4gICAgZGVmZXIgPSBiaW5kKHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJlxuICAgIGlzQ2FsbGFibGUoZ2xvYmFsLnBvc3RNZXNzYWdlKSAmJlxuICAgICFnbG9iYWwuaW1wb3J0U2NyaXB0cyAmJlxuICAgICRsb2NhdGlvbiAmJiAkbG9jYXRpb24ucHJvdG9jb2wgIT09ICdmaWxlOicgJiZcbiAgICAhZmFpbHMoZ2xvYmFsUG9zdE1lc3NhZ2VEZWZlcilcbiAgKSB7XG4gICAgZGVmZXIgPSBnbG9iYWxQb3N0TWVzc2FnZURlZmVyO1xuICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnRMaXN0ZW5lciwgZmFsc2UpO1xuICAvLyBJRTgtXG4gIH0gZWxzZSBpZiAoT05SRUFEWVNUQVRFQ0hBTkdFIGluIGNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGh0bWwuYXBwZW5kQ2hpbGQoY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bihpZCk7XG4gICAgICB9O1xuICAgIH07XG4gIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG4gIH0gZWxzZSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHNldFRpbWVvdXQocnVubmVyKGlkKSwgMCk7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGNsZWFyOiBjbGVhclxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBIZWxwZXIgZm9yIGEgcG9wdWxhciByZXBlYXRpbmcgY2FzZSBvZiB0aGUgc3BlYzpcbi8vIExldCBpbnRlZ2VyIGJlID8gVG9JbnRlZ2VyKGluZGV4KS5cbi8vIElmIGludGVnZXIgPCAwLCBsZXQgcmVzdWx0IGJlIG1heCgobGVuZ3RoICsgaW50ZWdlciksIDApOyBlbHNlIGxldCByZXN1bHQgYmUgbWluKGludGVnZXIsIGxlbmd0aCkuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdHJ1bmMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC10cnVuYycpO1xuXG4vLyBgVG9JbnRlZ2VyT3JJbmZpbml0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW50ZWdlcm9yaW5maW5pdHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBudW1iZXIgPSArYXJndW1lbnQ7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gIHJldHVybiBudW1iZXIgIT09IG51bWJlciB8fCBudW1iZXIgPT09IDAgPyAwIDogdHJ1bmMobnVtYmVyKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gYFRvTGVuZ3RoYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9sZW5ndGhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBsZW4gPSB0b0ludGVnZXJPckluZmluaXR5KGFyZ3VtZW50KTtcbiAgcmV0dXJuIGxlbiA+IDAgPyBtaW4obGVuLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gJE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgb3JkaW5hcnlUb1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG52YXIgVE9fUFJJTUlUSVZFID0gd2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkgfHwgaXNTeW1ib2woaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBleG90aWNUb1ByaW0gPSBnZXRNZXRob2QoaW5wdXQsIFRPX1BSSU1JVElWRSk7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChleG90aWNUb1ByaW0pIHtcbiAgICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ2RlZmF1bHQnO1xuICAgIHJlc3VsdCA9IGNhbGwoZXhvdGljVG9QcmltLCBpbnB1dCwgcHJlZik7XG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpIHx8IGlzU3ltYm9sKHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG4gIH1cbiAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdudW1iZXInO1xuICByZXR1cm4gb3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgcHJlZik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IGtleSArICcnO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgdGVzdCA9IHt9O1xuXG50ZXN0W1RPX1NUUklOR19UQUddID0gJ3onO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmluZyh0ZXN0KSA9PT0gJ1tvYmplY3Qgel0nO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFY4IH4gQ2hyb21lIDM2LVxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzMzNFxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdwcm90b3R5cGUnLCB7XG4gICAgdmFsdWU6IDQyLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KS5wcm90b3R5cGUgIT09IDQyO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFzc2VkLCByZXF1aXJlZCkge1xuICBpZiAocGFzc2VkIDwgcmVxdWlyZWQpIHRocm93IG5ldyAkVHlwZUVycm9yKCdOb3QgZW5vdWdoIGFyZ3VtZW50cycpO1xuICByZXR1cm4gcGFzc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQ2FsbGFibGUoV2Vha01hcCkgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhXZWFrTWFwKSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sWydmb3InXSB8fCBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzT3duKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkpIHtcbiAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIGhhc093bihTeW1ib2wsIG5hbWUpXG4gICAgICA/IFN5bWJvbFtuYW1lXVxuICAgICAgOiBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbicpO1xuXG4vLyBgUHJvbWlzZS5hbGxgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLmFsbFxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OIH0sIHtcbiAgYWxsOiBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHByb21pc2VSZXNvbHZlID0gYUNhbGxhYmxlKEMucmVzb2x2ZSk7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgY291bnRlciA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGNvdW50ZXIrKztcbiAgICAgICAgdmFyIGFscmVhZHlDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgcmVtYWluaW5nKys7XG4gICAgICAgIGNhbGwoJHByb21pc2VSZXNvbHZlLCBDLCBwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzW2luZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKS5DT05TVFJVQ1RPUjtcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3InKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xuXG52YXIgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciAmJiBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG4vLyBgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2hgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnByb3RvdHlwZS5jYXRjaFxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiwgcmVhbDogdHJ1ZSB9LCB7XG4gICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuICB9XG59KTtcblxuLy8gbWFrZXMgc3VyZSB0aGF0IG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXMgYFByb21pc2UjY2F0Y2hgIHByb3Blcmx5IHdvcmtzIHdpdGggcGF0Y2hlZCBgUHJvbWlzZSN0aGVuYFxuaWYgKCFJU19QVVJFICYmIGlzQ2FsbGFibGUoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKSkge1xuICB2YXIgbWV0aG9kID0gZ2V0QnVpbHRJbignUHJvbWlzZScpLnByb3RvdHlwZVsnY2F0Y2gnXTtcbiAgaWYgKE5hdGl2ZVByb21pc2VQcm90b3R5cGVbJ2NhdGNoJ10gIT09IG1ldGhvZCkge1xuICAgIGRlZmluZUJ1aWx0SW4oTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgJ2NhdGNoJywgbWV0aG9kLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgdGFzayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90YXNrJykuc2V0O1xudmFyIG1pY3JvdGFzayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9taWNyb3Rhc2snKTtcbnZhciBob3N0UmVwb3J0RXJyb3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hvc3QtcmVwb3J0LWVycm9ycycpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xudmFyIFF1ZXVlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3F1ZXVlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvcicpO1xudmFyIFByb21pc2VDb25zdHJ1Y3RvckRldGVjdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSBQcm9taXNlQ29uc3RydWN0b3JEZXRlY3Rpb24uQ09OU1RSVUNUT1I7XG52YXIgTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UID0gUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uLlJFSkVDVElPTl9FVkVOVDtcbnZhciBOQVRJVkVfUFJPTUlTRV9TVUJDTEFTU0lORyA9IFByb21pc2VDb25zdHJ1Y3RvckRldGVjdGlvbi5TVUJDTEFTU0lORztcbnZhciBnZXRJbnRlcm5hbFByb21pc2VTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFBST01JU0UpO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBOYXRpdmVQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG52YXIgUHJvbWlzZUNvbnN0cnVjdG9yID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yO1xudmFyIFByb21pc2VQcm90b3R5cGUgPSBOYXRpdmVQcm9taXNlUHJvdG90eXBlO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcbnZhciBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eTtcblxudmFyIERJU1BBVENIX0VWRU5UID0gISEoZG9jdW1lbnQgJiYgZG9jdW1lbnQuY3JlYXRlRXZlbnQgJiYgZ2xvYmFsLmRpc3BhdGNoRXZlbnQpO1xudmFyIFVOSEFORExFRF9SRUpFQ1RJT04gPSAndW5oYW5kbGVkcmVqZWN0aW9uJztcbnZhciBSRUpFQ1RJT05fSEFORExFRCA9ICdyZWplY3Rpb25oYW5kbGVkJztcbnZhciBQRU5ESU5HID0gMDtcbnZhciBGVUxGSUxMRUQgPSAxO1xudmFyIFJFSkVDVEVEID0gMjtcbnZhciBIQU5ETEVEID0gMTtcbnZhciBVTkhBTkRMRUQgPSAyO1xuXG52YXIgSW50ZXJuYWwsIE93blByb21pc2VDYXBhYmlsaXR5LCBQcm9taXNlV3JhcHBlciwgbmF0aXZlVGhlbjtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgaXNDYWxsYWJsZSh0aGVuID0gaXQudGhlbikgPyB0aGVuIDogZmFsc2U7XG59O1xuXG52YXIgY2FsbFJlYWN0aW9uID0gZnVuY3Rpb24gKHJlYWN0aW9uLCBzdGF0ZSkge1xuICB2YXIgdmFsdWUgPSBzdGF0ZS52YWx1ZTtcbiAgdmFyIG9rID0gc3RhdGUuc3RhdGUgPT09IEZVTEZJTExFRDtcbiAgdmFyIGhhbmRsZXIgPSBvayA/IHJlYWN0aW9uLm9rIDogcmVhY3Rpb24uZmFpbDtcbiAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICB2YXIgZG9tYWluID0gcmVhY3Rpb24uZG9tYWluO1xuICB2YXIgcmVzdWx0LCB0aGVuLCBleGl0ZWQ7XG4gIHRyeSB7XG4gICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgIGlmICghb2spIHtcbiAgICAgICAgaWYgKHN0YXRlLnJlamVjdGlvbiA9PT0gVU5IQU5ETEVEKSBvbkhhbmRsZVVuaGFuZGxlZChzdGF0ZSk7XG4gICAgICAgIHN0YXRlLnJlamVjdGlvbiA9IEhBTkRMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoaGFuZGxlciA9PT0gdHJ1ZSkgcmVzdWx0ID0gdmFsdWU7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgIHJlc3VsdCA9IGhhbmRsZXIodmFsdWUpOyAvLyBjYW4gdGhyb3dcbiAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgZXhpdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCA9PT0gcmVhY3Rpb24ucHJvbWlzZSkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS1jaGFpbiBjeWNsZScpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICBjYWxsKHRoZW4sIHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgfSBlbHNlIHJlamVjdCh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGRvbWFpbiAmJiAhZXhpdGVkKSBkb21haW4uZXhpdCgpO1xuICAgIHJlamVjdChlcnJvcik7XG4gIH1cbn07XG5cbnZhciBub3RpZnkgPSBmdW5jdGlvbiAoc3RhdGUsIGlzUmVqZWN0KSB7XG4gIGlmIChzdGF0ZS5ub3RpZmllZCkgcmV0dXJuO1xuICBzdGF0ZS5ub3RpZmllZCA9IHRydWU7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlYWN0aW9ucyA9IHN0YXRlLnJlYWN0aW9ucztcbiAgICB2YXIgcmVhY3Rpb247XG4gICAgd2hpbGUgKHJlYWN0aW9uID0gcmVhY3Rpb25zLmdldCgpKSB7XG4gICAgICBjYWxsUmVhY3Rpb24ocmVhY3Rpb24sIHN0YXRlKTtcbiAgICB9XG4gICAgc3RhdGUubm90aWZpZWQgPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXN0YXRlLnJlamVjdGlvbikgb25VbmhhbmRsZWQoc3RhdGUpO1xuICB9KTtcbn07XG5cbnZhciBkaXNwYXRjaEV2ZW50ID0gZnVuY3Rpb24gKG5hbWUsIHByb21pc2UsIHJlYXNvbikge1xuICB2YXIgZXZlbnQsIGhhbmRsZXI7XG4gIGlmIChESVNQQVRDSF9FVkVOVCkge1xuICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgZXZlbnQucHJvbWlzZSA9IHByb21pc2U7XG4gICAgZXZlbnQucmVhc29uID0gcmVhc29uO1xuICAgIGV2ZW50LmluaXRFdmVudChuYW1lLCBmYWxzZSwgdHJ1ZSk7XG4gICAgZ2xvYmFsLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9IGVsc2UgZXZlbnQgPSB7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogcmVhc29uIH07XG4gIGlmICghTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UICYmIChoYW5kbGVyID0gZ2xvYmFsWydvbicgKyBuYW1lXSkpIGhhbmRsZXIoZXZlbnQpO1xuICBlbHNlIGlmIChuYW1lID09PSBVTkhBTkRMRURfUkVKRUNUSU9OKSBob3N0UmVwb3J0RXJyb3JzKCdVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24nLCByZWFzb24pO1xufTtcblxudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIGNhbGwodGFzaywgZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBzdGF0ZS5mYWNhZGU7XG4gICAgdmFyIHZhbHVlID0gc3RhdGUudmFsdWU7XG4gICAgdmFyIElTX1VOSEFORExFRCA9IGlzVW5oYW5kbGVkKHN0YXRlKTtcbiAgICB2YXIgcmVzdWx0O1xuICAgIGlmIChJU19VTkhBTkRMRUQpIHtcbiAgICAgIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoSVNfTk9ERSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgZGlzcGF0Y2hFdmVudChVTkhBTkRMRURfUkVKRUNUSU9OLCBwcm9taXNlLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBzdGF0ZS5yZWplY3Rpb24gPSBJU19OT0RFIHx8IGlzVW5oYW5kbGVkKHN0YXRlKSA/IFVOSEFORExFRCA6IEhBTkRMRUQ7XG4gICAgICBpZiAocmVzdWx0LmVycm9yKSB0aHJvdyByZXN1bHQudmFsdWU7XG4gICAgfVxuICB9KTtcbn07XG5cbnZhciBpc1VuaGFuZGxlZCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUucmVqZWN0aW9uICE9PSBIQU5ETEVEICYmICFzdGF0ZS5wYXJlbnQ7XG59O1xuXG52YXIgb25IYW5kbGVVbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgY2FsbCh0YXNrLCBnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IHN0YXRlLmZhY2FkZTtcbiAgICBpZiAoSVNfTk9ERSkge1xuICAgICAgcHJvY2Vzcy5lbWl0KCdyZWplY3Rpb25IYW5kbGVkJywgcHJvbWlzZSk7XG4gICAgfSBlbHNlIGRpc3BhdGNoRXZlbnQoUkVKRUNUSU9OX0hBTkRMRUQsIHByb21pc2UsIHN0YXRlLnZhbHVlKTtcbiAgfSk7XG59O1xuXG52YXIgYmluZCA9IGZ1bmN0aW9uIChmbiwgc3RhdGUsIHVud3JhcCkge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgZm4oc3RhdGUsIHZhbHVlLCB1bndyYXApO1xuICB9O1xufTtcblxudmFyIGludGVybmFsUmVqZWN0ID0gZnVuY3Rpb24gKHN0YXRlLCB2YWx1ZSwgdW53cmFwKSB7XG4gIGlmIChzdGF0ZS5kb25lKSByZXR1cm47XG4gIHN0YXRlLmRvbmUgPSB0cnVlO1xuICBpZiAodW53cmFwKSBzdGF0ZSA9IHVud3JhcDtcbiAgc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgc3RhdGUuc3RhdGUgPSBSRUpFQ1RFRDtcbiAgbm90aWZ5KHN0YXRlLCB0cnVlKTtcbn07XG5cbnZhciBpbnRlcm5hbFJlc29sdmUgPSBmdW5jdGlvbiAoc3RhdGUsIHZhbHVlLCB1bndyYXApIHtcbiAgaWYgKHN0YXRlLmRvbmUpIHJldHVybjtcbiAgc3RhdGUuZG9uZSA9IHRydWU7XG4gIGlmICh1bndyYXApIHN0YXRlID0gdW53cmFwO1xuICB0cnkge1xuICAgIGlmIChzdGF0ZS5mYWNhZGUgPT09IHZhbHVlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGZcIik7XG4gICAgdmFyIHRoZW4gPSBpc1RoZW5hYmxlKHZhbHVlKTtcbiAgICBpZiAodGhlbikge1xuICAgICAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHdyYXBwZXIgPSB7IGRvbmU6IGZhbHNlIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY2FsbCh0aGVuLCB2YWx1ZSxcbiAgICAgICAgICAgIGJpbmQoaW50ZXJuYWxSZXNvbHZlLCB3cmFwcGVyLCBzdGF0ZSksXG4gICAgICAgICAgICBiaW5kKGludGVybmFsUmVqZWN0LCB3cmFwcGVyLCBzdGF0ZSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGludGVybmFsUmVqZWN0KHdyYXBwZXIsIGVycm9yLCBzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgc3RhdGUuc3RhdGUgPSBGVUxGSUxMRUQ7XG4gICAgICBub3RpZnkoc3RhdGUsIGZhbHNlKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaW50ZXJuYWxSZWplY3QoeyBkb25lOiBmYWxzZSB9LCBlcnJvciwgc3RhdGUpO1xuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gIFByb21pc2VDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsIFByb21pc2VQcm90b3R5cGUpO1xuICAgIGFDYWxsYWJsZShleGVjdXRvcik7XG4gICAgY2FsbChJbnRlcm5hbCwgdGhpcyk7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGJpbmQoaW50ZXJuYWxSZXNvbHZlLCBzdGF0ZSksIGJpbmQoaW50ZXJuYWxSZWplY3QsIHN0YXRlKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGludGVybmFsUmVqZWN0KHN0YXRlLCBlcnJvcik7XG4gICAgfVxuICB9O1xuXG4gIFByb21pc2VQcm90b3R5cGUgPSBQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgICAgdHlwZTogUFJPTUlTRSxcbiAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgbm90aWZpZWQ6IGZhbHNlLFxuICAgICAgcGFyZW50OiBmYWxzZSxcbiAgICAgIHJlYWN0aW9uczogbmV3IFF1ZXVlKCksXG4gICAgICByZWplY3Rpb246IGZhbHNlLFxuICAgICAgc3RhdGU6IFBFTkRJTkcsXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkXG4gICAgfSk7XG4gIH07XG5cbiAgLy8gYFByb21pc2UucHJvdG90eXBlLnRoZW5gIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucHJvdG90eXBlLnRoZW5cbiAgSW50ZXJuYWwucHJvdG90eXBlID0gZGVmaW5lQnVpbHRJbihQcm9taXNlUHJvdG90eXBlLCAndGhlbicsIGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFByb21pc2VTdGF0ZSh0aGlzKTtcbiAgICB2YXIgcmVhY3Rpb24gPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgUHJvbWlzZUNvbnN0cnVjdG9yKSk7XG4gICAgc3RhdGUucGFyZW50ID0gdHJ1ZTtcbiAgICByZWFjdGlvbi5vayA9IGlzQ2FsbGFibGUob25GdWxmaWxsZWQpID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgIHJlYWN0aW9uLmZhaWwgPSBpc0NhbGxhYmxlKG9uUmVqZWN0ZWQpICYmIG9uUmVqZWN0ZWQ7XG4gICAgcmVhY3Rpb24uZG9tYWluID0gSVNfTk9ERSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgIGlmIChzdGF0ZS5zdGF0ZSA9PT0gUEVORElORykgc3RhdGUucmVhY3Rpb25zLmFkZChyZWFjdGlvbik7XG4gICAgZWxzZSBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbFJlYWN0aW9uKHJlYWN0aW9uLCBzdGF0ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gIH0pO1xuXG4gIE93blByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gbmV3IEludGVybmFsKCk7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUocHJvbWlzZSk7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgICB0aGlzLnJlc29sdmUgPSBiaW5kKGludGVybmFsUmVzb2x2ZSwgc3RhdGUpO1xuICAgIHRoaXMucmVqZWN0ID0gYmluZChpbnRlcm5hbFJlamVjdCwgc3RhdGUpO1xuICB9O1xuXG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09IFByb21pc2VDb25zdHJ1Y3RvciB8fCBDID09PSBQcm9taXNlV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xuXG4gIGlmICghSVNfUFVSRSAmJiBpc0NhbGxhYmxlKE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvcikgJiYgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSkge1xuICAgIG5hdGl2ZVRoZW4gPSBOYXRpdmVQcm9taXNlUHJvdG90eXBlLnRoZW47XG5cbiAgICBpZiAoIU5BVElWRV9QUk9NSVNFX1NVQkNMQVNTSU5HKSB7XG4gICAgICAvLyBtYWtlIGBQcm9taXNlI3RoZW5gIHJldHVybiBhIHBvbHlmaWxsZWQgYFByb21pc2VgIGZvciBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzXG4gICAgICBkZWZpbmVCdWlsdEluKE5hdGl2ZVByb21pc2VQcm90b3R5cGUsICd0aGVuJywgZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUNvbnN0cnVjdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBjYWxsKG5hdGl2ZVRoZW4sIHRoYXQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpO1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY0MFxuICAgICAgfSwgeyB1bnNhZmU6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLy8gbWFrZSBgLmNvbnN0cnVjdG9yID09PSBQcm9taXNlYCB3b3JrIGZvciBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzXG4gICAgdHJ5IHtcbiAgICAgIGRlbGV0ZSBOYXRpdmVQcm9taXNlUHJvdG90eXBlLmNvbnN0cnVjdG9yO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cblxuICAgIC8vIG1ha2UgYGluc3RhbmNlb2YgUHJvbWlzZWAgd29yayBmb3IgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJc1xuICAgIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgICAgc2V0UHJvdG90eXBlT2YoTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgUHJvbWlzZVByb3RvdHlwZSk7XG4gICAgfVxuICB9XG59XG5cbiQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCB3cmFwOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIH0sIHtcbiAgUHJvbWlzZTogUHJvbWlzZUNvbnN0cnVjdG9yXG59KTtcblxuc2V0VG9TdHJpbmdUYWcoUHJvbWlzZUNvbnN0cnVjdG9yLCBQUk9NSVNFLCBmYWxzZSwgdHJ1ZSk7XG5zZXRTcGVjaWVzKFBST01JU0UpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIHRoaXMgbW9kdWxlIGZyb20gYGNvcmUtanNANGAgc2luY2UgaXQncyBzcGxpdCB0byBtb2R1bGVzIGxpc3RlZCBiZWxvd1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLmNvbnN0cnVjdG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UuYWxsJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UuY2F0Y2gnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5yYWNlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UucmVqZWN0Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UucmVzb2x2ZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1zdGF0aWNzLWluY29ycmVjdC1pdGVyYXRpb24nKTtcblxuLy8gYFByb21pc2UucmFjZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucmFjZVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OIH0sIHtcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYoQyk7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkcHJvbWlzZVJlc29sdmUgPSBhQ2FsbGFibGUoQy5yZXNvbHZlKTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIGNhbGwoJHByb21pc2VSZXNvbHZlLCBDLCBwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uJykuQ09OU1RSVUNUT1I7XG5cbi8vIGBQcm9taXNlLnJlamVjdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucmVqZWN0XG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgfSwge1xuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKHRoaXMpO1xuICAgIHZhciBjYXBhYmlsaXR5UmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgY2FwYWJpbGl0eVJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yJyk7XG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKS5DT05TVFJVQ1RPUjtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXJlc29sdmUnKTtcblxudmFyIFByb21pc2VDb25zdHJ1Y3RvcldyYXBwZXIgPSBnZXRCdWlsdEluKCdQcm9taXNlJyk7XG52YXIgQ0hFQ0tfV1JBUFBFUiA9IElTX1BVUkUgJiYgIUZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SO1xuXG4vLyBgUHJvbWlzZS5yZXNvbHZlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5yZXNvbHZlXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB8fCBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiB9LCB7XG4gIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoeCkge1xuICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDSEVDS19XUkFQUEVSICYmIHRoaXMgPT09IFByb21pc2VDb25zdHJ1Y3RvcldyYXBwZXIgPyBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJpbXBvcnQgWVNGIGZyb20gJy4uL3NyYy9pbmRleCc7XG4vLyDmiJHku6zmmK/kvp3otZZQcm9taXNl55qE77yM6K+36Ieq6KGM6YWN572ucG9seWZpbGzllpTjgIJcbmltcG9ydCAnY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UnO1xuZnVuY3Rpb24gRGVtbygpIHtcbiAgICAvLyBoZGRkMeS8geS4mlxuICAgIFlTRi5pbml0KCdlNjc4NmI5Y2Y1MDc1NjZiMTFjNjIzZDNjMGYwM2I2MicsIHtcbiAgICAgICAgdGVtcGxhdGVJZDogMTIzLFxuICAgICAgICBzaHVudElkOiAxMSxcbiAgICAgICAgLy8gaGlkZGVuOiAxXG4gICAgfSwgJ292ZXJzZWFzJylcbiAgICAgICAgLnRoZW4oKHlzZikgPT4ge1xuICAgICAgICB5c2YoJ29wZW4nKTtcbiAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdzZGvliqDovb3lpLHotKUtLS0nLCBlcnJvcik7XG4gICAgfSk7XG59XG5EZW1vKCk7XG4vLyBSZWFjdERPTS5yZW5kZXIoPERlbW8gLz4sIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdqLXJvb3QnKSk7XG4iXSwibmFtZXMiOlsibWFwRW52IiwidGVzdCIsInJlbGVhc2UiLCJvbmxpbmUiLCJvdmVyc2VhcyIsIllTRiIsImFwcEtleSIsIm9ialBhcmFtcyIsImVudiIsIkltYWdlIiwic3JjIiwiRGF0ZSIsImdldFRpbWUiLCJlcnJvciIsImNvbnNvbGUiLCJsb2ciLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIkVycm9yIiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwicmV0IiwiaXRlbSIsInB1c2giLCJ0aW1lb3V0IiwicGFyYW1zIiwibGVuZ3RoIiwiam9pbiIsImhlYWQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwic2NyaXB0IiwiY3JlYXRlRWxlbWVudCIsIm9uU2NyaXB0Q29tcGxldGUiLCJlcnJUeXBlIiwiZXZlbnQiLCJvbmVycm9yIiwib25sb2FkIiwiZXJyb3JNc2ciLCJjbGVhclRpbWVvdXQiLCJ3aW5kb3ciLCJ5c2YiLCJ0eXBlIiwiYXN5bmMiLCJzZXRUaW1lb3V0IiwiYXBwZW5kQ2hpbGQiLCJleHBvcnRzIiwibW9kdWxlIiwib2JqIiwiX19lc01vZHVsZSIsImlzQ2FsbGFibGUiLCJ0cnlUb1N0cmluZyIsIiRUeXBlRXJyb3IiLCJUeXBlRXJyb3IiLCJhcmd1bWVudCIsImlzQ29uc3RydWN0b3IiLCJpc1Bvc3NpYmxlUHJvdG90eXBlIiwiJFN0cmluZyIsIlN0cmluZyIsImlzUHJvdG90eXBlT2YiLCJpdCIsIlByb3RvdHlwZSIsImlzT2JqZWN0IiwidG9JbmRleGVkT2JqZWN0IiwidG9BYnNvbHV0ZUluZGV4IiwibGVuZ3RoT2ZBcnJheUxpa2UiLCJjcmVhdGVNZXRob2QiLCJJU19JTkNMVURFUyIsIiR0aGlzIiwiZWwiLCJmcm9tSW5kZXgiLCJPIiwidmFsdWUiLCJpbmRleCIsImluY2x1ZGVzIiwiaW5kZXhPZiIsInVuY3VycnlUaGlzIiwic2xpY2UiLCJJVEVSQVRPUiIsIndlbGxLbm93blN5bWJvbCIsIlNBRkVfQ0xPU0lORyIsImNhbGxlZCIsIml0ZXJhdG9yV2l0aFJldHVybiIsIm5leHQiLCJkb25lIiwidGhpcyIsIkFycmF5IiwiZnJvbSIsImV4ZWMiLCJTS0lQX0NMT1NJTkciLCJJVEVSQVRJT05fU1VQUE9SVCIsIm9iamVjdCIsInN0cmluZ1NsaWNlIiwiVE9fU1RSSU5HX1RBR19TVVBQT1JUIiwiY2xhc3NvZlJhdyIsIlRPX1NUUklOR19UQUciLCIkT2JqZWN0IiwiQ09SUkVDVF9BUkdVTUVOVFMiLCJhcmd1bWVudHMiLCJ0YWciLCJyZXN1bHQiLCJ1bmRlZmluZWQiLCJrZXkiLCJ0cnlHZXQiLCJjYWxsZWUiLCJoYXNPd24iLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlIiwiZGVmaW5lUHJvcGVydHlNb2R1bGUiLCJ0YXJnZXQiLCJzb3VyY2UiLCJleGNlcHRpb25zIiwia2V5cyIsImRlZmluZVByb3BlcnR5IiwiZiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImkiLCJERVNDUklQVE9SUyIsImNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciIsImJpdG1hcCIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIm1ha2VCdWlsdEluIiwibmFtZSIsImRlc2NyaXB0b3IiLCJnZXQiLCJnZXR0ZXIiLCJzZXQiLCJzZXR0ZXIiLCJkZWZpbmVHbG9iYWxQcm9wZXJ0eSIsIm9wdGlvbnMiLCJzaW1wbGUiLCJnbG9iYWwiLCJ1bnNhZmUiLCJub25Db25maWd1cmFibGUiLCJub25Xcml0YWJsZSIsImZhaWxzIiwiRVhJU1RTIiwiSVNfREVOTyIsIklTX05PREUiLCJEZW5vIiwidmVyc2lvbiIsInVzZXJBZ2VudCIsIlBlYmJsZSIsImNsYXNzb2YiLCJwcm9jZXNzIiwibmF2aWdhdG9yIiwibWF0Y2giLCJ2ZXJzaW9ucyIsInY4Iiwic3BsaXQiLCJjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkiLCJkZWZpbmVCdWlsdEluIiwiY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyIsImlzRm9yY2VkIiwidGFyZ2V0UHJvcGVydHkiLCJzb3VyY2VQcm9wZXJ0eSIsIlRBUkdFVCIsIkdMT0JBTCIsIlNUQVRJQyIsInN0YXQiLCJkb250Q2FsbEdldFNldCIsImZvcmNlZCIsInNoYW0iLCJOQVRJVkVfQklORCIsIkZ1bmN0aW9uUHJvdG90eXBlIiwiRnVuY3Rpb24iLCJhcHBseSIsIlJlZmxlY3QiLCJiaW5kIiwiYUNhbGxhYmxlIiwiZm4iLCJ0aGF0IiwiaGFzT3duUHJvcGVydHkiLCJnZXREZXNjcmlwdG9yIiwiUFJPUEVSIiwiQ09ORklHVVJBQkxFIiwibWV0aG9kIiwidW5jdXJyeVRoaXNXaXRoQmluZCIsIm5hbWVzcGFjZSIsImdldE1ldGhvZCIsImlzTnVsbE9yVW5kZWZpbmVkIiwiSXRlcmF0b3JzIiwiYW5PYmplY3QiLCJnZXRJdGVyYXRvck1ldGhvZCIsInVzaW5nSXRlcmF0b3IiLCJpdGVyYXRvck1ldGhvZCIsIlYiLCJQIiwiZnVuYyIsImNoZWNrIiwiTWF0aCIsImdsb2JhbFRoaXMiLCJzZWxmIiwiZyIsInRvT2JqZWN0IiwiYSIsImIiLCJnZXRCdWlsdEluIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzdG9yZSIsImZ1bmN0aW9uVG9TdHJpbmciLCJpbnNwZWN0U291cmNlIiwiaGFzIiwiTkFUSVZFX1dFQUtfTUFQIiwic2hhcmVkIiwic2hhcmVkS2V5IiwiaGlkZGVuS2V5cyIsIk9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEIiwiV2Vha01hcCIsInN0YXRlIiwibWV0YWRhdGEiLCJmYWNhZGUiLCJTVEFURSIsImVuZm9yY2UiLCJnZXR0ZXJGb3IiLCJUWVBFIiwiQXJyYXlQcm90b3R5cGUiLCJkb2N1bWVudEFsbCIsImFsbCIsIm5vb3AiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvclJlZ0V4cCIsIklOQ09SUkVDVF9UT19TVFJJTkciLCJpc0NvbnN0cnVjdG9yTW9kZXJuIiwiaXNDb25zdHJ1Y3RvckxlZ2FjeSIsInJlcGxhY2VtZW50IiwiZmVhdHVyZSIsImRldGVjdGlvbiIsImRhdGEiLCJub3JtYWxpemUiLCJQT0xZRklMTCIsIk5BVElWRSIsInN0cmluZyIsInJlcGxhY2UiLCJ0b0xvd2VyQ2FzZSIsIlVTRV9TWU1CT0xfQVNfVUlEIiwiJFN5bWJvbCIsImlzQXJyYXlJdGVyYXRvck1ldGhvZCIsImdldEl0ZXJhdG9yIiwiaXRlcmF0b3JDbG9zZSIsIlJlc3VsdCIsInN0b3BwZWQiLCJSZXN1bHRQcm90b3R5cGUiLCJpdGVyYWJsZSIsInVuYm91bmRGdW5jdGlvbiIsIml0ZXJhdG9yIiwiaXRlckZuIiwic3RlcCIsIkFTX0VOVFJJRVMiLCJJU19SRUNPUkQiLCJJU19JVEVSQVRPUiIsIklOVEVSUlVQVEVEIiwic3RvcCIsImNvbmRpdGlvbiIsImNhbGxGbiIsImtpbmQiLCJpbm5lclJlc3VsdCIsImlubmVyRXJyb3IiLCJ0b0xlbmd0aCIsIkNPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FIiwiSW50ZXJuYWxTdGF0ZU1vZHVsZSIsImVuZm9yY2VJbnRlcm5hbFN0YXRlIiwiZ2V0SW50ZXJuYWxTdGF0ZSIsIkNPTkZJR1VSQUJMRV9MRU5HVEgiLCJURU1QTEFURSIsImFyaXR5IiwiY29uc3RydWN0b3IiLCJjZWlsIiwiZmxvb3IiLCJ0cnVuYyIsIngiLCJuIiwibm90aWZ5IiwidG9nZ2xlIiwibm9kZSIsInByb21pc2UiLCJ0aGVuIiwic2FmZUdldEJ1aWx0SW4iLCJtYWNyb3Rhc2siLCJRdWV1ZSIsIklTX0lPUyIsIklTX0lPU19QRUJCTEUiLCJJU19XRUJPU19XRUJLSVQiLCJNdXRhdGlvbk9ic2VydmVyIiwiV2ViS2l0TXV0YXRpb25PYnNlcnZlciIsIm1pY3JvdGFzayIsInF1ZXVlIiwiZmx1c2giLCJwYXJlbnQiLCJkb21haW4iLCJleGl0IiwiZW50ZXIiLCJuZXh0VGljayIsImNyZWF0ZVRleHROb2RlIiwib2JzZXJ2ZSIsImNoYXJhY3RlckRhdGEiLCJhZGQiLCJQcm9taXNlQ2FwYWJpbGl0eSIsIkMiLCIkJHJlc29sdmUiLCIkJHJlamVjdCIsIklFOF9ET01fREVGSU5FIiwiVjhfUFJPVE9UWVBFX0RFRklORV9CVUciLCJ0b1Byb3BlcnR5S2V5IiwiJGRlZmluZVByb3BlcnR5IiwiJGdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkVOVU1FUkFCTEUiLCJXUklUQUJMRSIsIkF0dHJpYnV0ZXMiLCJjdXJyZW50IiwicHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUiLCJpbnRlcm5hbE9iamVjdEtleXMiLCJjb25jYXQiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibmFtZXMiLCIkcHJvcGVydHlJc0VudW1lcmFibGUiLCJOQVNIT1JOX0JVRyIsInVuY3VycnlUaGlzQWNjZXNzb3IiLCJyZXF1aXJlT2JqZWN0Q29lcmNpYmxlIiwiYVBvc3NpYmxlUHJvdG90eXBlIiwic2V0UHJvdG90eXBlT2YiLCJDT1JSRUNUX1NFVFRFUiIsInByb3RvIiwiX19wcm90b19fIiwiaW5wdXQiLCJwcmVmIiwidmFsIiwidmFsdWVPZiIsImdldE93blByb3BlcnR5TmFtZXNNb2R1bGUiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUiLCJOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IiLCJJU19CUk9XU0VSIiwiSVNfUFVSRSIsIlY4X1ZFUlNJT04iLCJOYXRpdmVQcm9taXNlUHJvdG90eXBlIiwiU1BFQ0lFUyIsIlNVQkNMQVNTSU5HIiwiTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UIiwiUHJvbWlzZVJlamVjdGlvbkV2ZW50IiwiRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IiLCJQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSIsIkdMT0JBTF9DT1JFX0pTX1BST01JU0UiLCJGYWtlUHJvbWlzZSIsIkNPTlNUUlVDVE9SIiwiUkVKRUNUSU9OX0VWRU5UIiwibmV3UHJvbWlzZUNhcGFiaWxpdHkiLCJwcm9taXNlQ2FwYWJpbGl0eSIsImNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbiIsInRhaWwiLCJlbnRyeSIsImRlZmluZUJ1aWx0SW5BY2Nlc3NvciIsIkNPTlNUUlVDVE9SX05BTUUiLCJDb25zdHJ1Y3RvciIsIlRBRyIsInVpZCIsIlNIQVJFRCIsIm1vZGUiLCJjb3B5cmlnaHQiLCJsaWNlbnNlIiwiYUNvbnN0cnVjdG9yIiwiZGVmYXVsdENvbnN0cnVjdG9yIiwiUyIsInN5bWJvbCIsIlN5bWJvbCIsIiRsb2NhdGlvbiIsImRlZmVyIiwiY2hhbm5lbCIsInBvcnQiLCJodG1sIiwiYXJyYXlTbGljZSIsInZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoIiwic2V0SW1tZWRpYXRlIiwiY2xlYXIiLCJjbGVhckltbWVkaWF0ZSIsIkRpc3BhdGNoIiwiTWVzc2FnZUNoYW5uZWwiLCJjb3VudGVyIiwiT05SRUFEWVNUQVRFQ0hBTkdFIiwibG9jYXRpb24iLCJydW4iLCJpZCIsInJ1bm5lciIsImV2ZW50TGlzdGVuZXIiLCJnbG9iYWxQb3N0TWVzc2FnZURlZmVyIiwicG9zdE1lc3NhZ2UiLCJwcm90b2NvbCIsImhvc3QiLCJoYW5kbGVyIiwiYXJncyIsIm5vdyIsInBvcnQyIiwicG9ydDEiLCJvbm1lc3NhZ2UiLCJhZGRFdmVudExpc3RlbmVyIiwiaW1wb3J0U2NyaXB0cyIsInJlbW92ZUNoaWxkIiwidG9JbnRlZ2VyT3JJbmZpbml0eSIsIm1heCIsIm1pbiIsImludGVnZXIiLCJJbmRleGVkT2JqZWN0IiwibnVtYmVyIiwibGVuIiwiaXNTeW1ib2wiLCJvcmRpbmFyeVRvUHJpbWl0aXZlIiwiVE9fUFJJTUlUSVZFIiwiZXhvdGljVG9QcmltIiwidG9QcmltaXRpdmUiLCJwb3N0Zml4IiwicmFuZG9tIiwiTkFUSVZFX1NZTUJPTCIsInBhc3NlZCIsInJlcXVpcmVkIiwiV2VsbEtub3duU3ltYm9sc1N0b3JlIiwiY3JlYXRlV2VsbEtub3duU3ltYm9sIiwid2l0aG91dFNldHRlciIsIiQiLCJuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSIsInBlcmZvcm0iLCJpdGVyYXRlIiwiY2FwYWJpbGl0eSIsIiRwcm9taXNlUmVzb2x2ZSIsInZhbHVlcyIsInJlbWFpbmluZyIsImFscmVhZHlDYWxsZWQiLCJyZWFsIiwib25SZWplY3RlZCIsIkludGVybmFsIiwiT3duUHJvbWlzZUNhcGFiaWxpdHkiLCJuYXRpdmVUaGVuIiwic2V0VG9TdHJpbmdUYWciLCJzZXRTcGVjaWVzIiwiYW5JbnN0YW5jZSIsInNwZWNpZXNDb25zdHJ1Y3RvciIsInRhc2siLCJob3N0UmVwb3J0RXJyb3JzIiwiUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uIiwiUFJPTUlTRSIsIk5BVElWRV9QUk9NSVNFX1NVQkNMQVNTSU5HIiwiZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUiLCJzZXRJbnRlcm5hbFN0YXRlIiwiUHJvbWlzZUNvbnN0cnVjdG9yIiwiUHJvbWlzZVByb3RvdHlwZSIsIm5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSIsIkRJU1BBVENIX0VWRU5UIiwiY3JlYXRlRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiVU5IQU5ETEVEX1JFSkVDVElPTiIsImlzVGhlbmFibGUiLCJjYWxsUmVhY3Rpb24iLCJyZWFjdGlvbiIsImV4aXRlZCIsIm9rIiwiZmFpbCIsInJlamVjdGlvbiIsIm9uSGFuZGxlVW5oYW5kbGVkIiwiaXNSZWplY3QiLCJub3RpZmllZCIsInJlYWN0aW9ucyIsIm9uVW5oYW5kbGVkIiwicmVhc29uIiwiaW5pdEV2ZW50IiwiaXNVbmhhbmRsZWQiLCJlbWl0IiwidW53cmFwIiwiaW50ZXJuYWxSZWplY3QiLCJpbnRlcm5hbFJlc29sdmUiLCJ3cmFwcGVyIiwiZXhlY3V0b3IiLCJvbkZ1bGZpbGxlZCIsIlByb21pc2VXcmFwcGVyIiwid3JhcCIsInJhY2UiLCJyIiwiY2FwYWJpbGl0eVJlamVjdCIsInByb21pc2VSZXNvbHZlIiwiUHJvbWlzZUNvbnN0cnVjdG9yV3JhcHBlciIsIkNIRUNLX1dSQVBQRVIiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZSIsIl9pbmRleCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiaW5pdCIsInRlbXBsYXRlSWQiLCJzaHVudElkIiwiY2F0Y2giXSwic291cmNlUm9vdCI6IiJ9
|
package/static/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html><head><title>@ysf/sdk</title><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=0"><link rel="stylesheet" href="https://res.qiyukf.net/static/wisdemo/reset.css"><script defer="defer" src="https://res.qiyukf.net/static/wisdemo/sdk/demo.
|
|
1
|
+
<!doctype html><html><head><title>@ysf/sdk</title><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=0"><link rel="stylesheet" href="https://res.qiyukf.net/static/wisdemo/reset.css"><script defer="defer" src="https://res.qiyukf.net/static/wisdemo/sdk/demo.d389deb7.js"></script></head><body><div id="j-root"></div></body></html>
|